/* Declarations for lib/conjugation.js — the module itself ships unchanged. */ /** Forms that do not fall out of the rules and are simply known. */ export const IRREGULAR_FORMS: Record; /** Dictionary form → 반말 present (해체). Returns null for non-verbs. */ export function haeche(dict: string): string | null; /** 반말 present → 반말 past. 먹어 → 먹었어. */ export function past(present: string | null): string | null; export function polite(present: string | null): string | null; export type IrregularClass = | "ㅡ" | "ㅂ" | "ㄷ" | "르" | "ㅅ" | "ㅎ" | "special" | "regular"; /** Which class a dictionary form belongs to — drives the "why" in feedback. */ export function irregularClass(dict: string): IrregularClass; /** Human explanation of the rule applied — shown when an answer is wrong. */ export function explain(dict: string): string; export interface SurfaceForm { form: string; gloss: string; note: string; } /** * Build-time: every surface form a learner will meet, mapped back to its lemma. */ export function surfaceForms(dict: string, gloss: string): SurfaceForm[]; /* ── reading an inflected form back to its dictionary entry ─────────── */ /** The endings the stripper tries, in the order it tries them. */ export const ENDINGS: string[]; /** Every dictionary form (…다) this surface could plausibly be. Unguarded — pair it with a lexicon check, or 가지 (eggplant) becomes a form of 가다. */ export function deconjugateCandidates(token: string): string[]; /** The first candidate `isVerb` accepts, or null. `isVerb` is required. */ export function deconjugate(token: string, isVerb: (dictionaryForm: string) => boolean): string | null;