export enum WordType {
  NOUN = 'NOUN',
  VERB = 'VERB',
  ADJECTIVE = 'ADJECTIVE',
  ADVERB = 'ADVERB',
  PRONOUN = 'PRONOUN',
  PREPOSITION = 'PREPOSITION',
  CONJUNCTION = 'CONJUNCTION',
  INTERJECTION = 'INTERJECTION',
  PHRASE = 'PHRASE',
  OTHER = 'OTHER',
}

export enum CefrLevel {
  A1 = 'A1',
  A2 = 'A2',
  B1 = 'B1',
  B2 = 'B2',
  C1 = 'C1',
  C2 = 'C2',
}

export enum MediaKind {
  VIDEO = 'VIDEO',
  IMAGE = 'IMAGE',
  ILLUSTRATION = 'ILLUSTRATION',
  GIF = 'GIF',
}

export interface TermMedia {
  id: string;
  termId: string;
  kind: MediaKind;
  url: string;
  durationMs?: number;
  width?: number;
  height?: number;
  checksum?: string;
  createdAt: string;
}

export interface TermExample {
  id: string;
  termId: string;
  exampleText: string;
  notes?: string;
  createdAt: string;
}

export interface Term {
  id: string;
  wordText: string;
  normalizedText: string;
  language: string;
  wordType: WordType;
  cefrLevel: CefrLevel;
  shortDescription?: string;
  tags?: string;
  iconAssetId?: string;
  createdAt: string;
  updatedAt: string;
  media?: TermMedia[];
  examples?: TermExample[];
}

export interface TermsResponse {
  terms: Term[];
  pagination: {
    page: number;
    limit: number;
    total: number;
    totalPages: number;
  };
}

export interface TermFilters {
  query?: string;
  wordType?: WordType | '';
  cefrLevel?: CefrLevel | '';
  page?: number;
  limit?: number;
}

