import * as UF from '../lib/UF.ts';
import type * as TY from '../types.ts';
import type { Wordform } from './Wordform.ts';
export declare class LemmaDef {
    /** core word, eg. `accede` */ core: TY.Word;
    /** word forms,             */ wordforms: Wordform[];
    /** odd properties          */ tmi: TY.AnyBag;
    /** false if parse failed   */ ok: boolean;
    get words(): string[];
    get stemcores(): string[];
    get suffixes(): string[];
    get poses(): ("adj" | "adv" | "verb" | "noun" | "intj" | "prep" | "conj" | "pron" | "art")[];
    get stemkinds(): UF.Stemkind[];
    get stemsplits(): string[];
    static make<RT extends LemmaDef>(this: {
        new (rawline: string): RT;
    }, rawline: string): RT;
    parseRawLine(): this;
    prettyA({ indent }?: {
        indent?: string;
    }): string;
    get pretty(): string;
    static parseDictStar<RT extends LemmaDef>(this: {
        new (rawline: string): RT;
    }, rawlines: AsyncIterable<string> | Iterable<string>): AsyncGenerator<RT, {
        oopsies: RT[];
        oopsieCount: number;
    }>;
    static slurpLexicon<RT extends LemmaDef>(this: {
        new (rawline: string): RT;
    }, filename: string): Promise<ParseDictResult<RT>>;
    static parseDict<RT extends LemmaDef>(this: {
        make: (rawline: string) => RT;
    }, rawlines: string[]): ParseDictResult<RT>;
}
export interface OppsieResult<RT extends LemmaDef> {
    oopsies: RT[];
    oopsieCount: number;
}
export interface ParseDictResult<RT extends LemmaDef> extends OppsieResult<RT> {
    defs: RT[];
}
export type LemmaDefFactory<RT extends LemmaDef> = {
    new (rawline: string): RT;
    make: (rawline: string) => RT;
    parseDictStar: (rawlines: TY.AnyIterable<string>) => AsyncGenerator<RT, OppsieResult<RT>, any>;
    parseDict: (rawlines: string[]) => ParseDictResult<RT>;
};
//# sourceMappingURL=LemmaDef.d.ts.map