import type { NLP } from "sortug-ai"; export type ViewLevel = | "text" | "paragraph" | "sentence" | "clause" | "word" | "syllable" | "phoneme"; export interface ViewState { level: ViewLevel; pIndex: number | null; sIndex: number | null; cIndex: number | null; wIndex: number | null; yIndex: number | null; fIndex: number | null; } export interface ViewProps { idx: number; rawText: string; context: Context; doc: NLP.Spacy.SpacyRes; stanza?: NLP.Stanza.StanzaRes | undefined; } export type Context = { parentText: string; segmented: string[]; idx: number; }; export type DBWord = { confidence: number; frequency: number | null; id: number; ipa: string; spelling: string; type: ExpressionType; syllables: number; lang: string; prosody: string; senses_array: string; }; export type WordData = { confidence: number; frequency: number | null; id: number; ipa: Array<{ ipa: string; tags?: string[] }>; spelling: string; type: ExpressionType; syllables: number; lang: string; prosody: Prosody; // This will be SyllableProsody[] senses: Sense[]; }; export type SyllableProsody = { tone: number | null; // Tone for the syllable ipa?: string; // IPA for the syllable // Add other syllable-specific prosodic features if needed }; export type Prosody = SyllableProsody[]; export type ExpressionType = "word" | "expression" | "syllable"; export type Sense = { etymology: string; pos: string; forms: Array<{ form: string; tags: string[] }>; related: Related; senses: SubSense[]; }; export type SubSense = { glosses: string[]; raw_glosses: string[]; categories: string[]; examples: Example[]; links: Array<[string, string]>; synonyms: RelatedEntry[]; tags: string[]; }; export type Example = { ref: string; text: string; type: "quote" }; export type Related = { related: RelatedEntry[]; antonyms: RelatedEntry[]; synonyms: RelatedEntry[]; derived: RelatedEntry[]; }; export type RelatedEntry = { word: string; source?: string }; export type LoadingStatus = "pending" | "loading" | "success" | "error";