import { MatchedPattern, Morpheme } from '../unit';
import { MorphemeMaker } from '../maker';
import { TonalSyllable } from '../unchange/unit';
import { Allomorph } from '../tonal/tonalres';
import { AlphabeticGrapheme, Sound } from '../unit';
import { TonalCombiningMetaplasm } from '../metaplasm';
/** A syllable and its combining forms. */
export declare class TonalCombiningMorpheme extends Morpheme {
    syllable: TonalSyllable;
    allomorph: Allomorph;
    private metaplasm;
    sounds: Array<Sound>;
    private forms;
    constructor(syllable: TonalSyllable, sounds: Sound[], metaplasm: TonalCombiningMetaplasm);
    getForms(): TonalSyllable[];
    isAy(): boolean;
    private assignAllomorph;
}
/** A syllable and its sound changing forms. */
export declare class TonalSoundChangingMorpheme extends Morpheme {
    syllable: TonalSyllable;
    sounds: Array<Sound>;
    constructor(syllable: TonalSyllable, sounds: Sound[]);
    get lastSecondLetter(): string;
    insertNasal(sound: Sound): TonalSyllable[];
    infect(): TonalSyllable[];
    /** Mutate initial consonants. */
    mutateInitialConsonant(sound: Sound): TonalSyllable[];
    mutateFinalConsonant(sound: Sound): TonalSyllable[];
    private changeFinalTTt;
    private changeFinalHHh;
    private changeFinalPPp;
    private changeWithInitialMnng;
    private changeWithMedial;
    private changeWithInitialBghjl;
    /**
     * Change a final with the beginning letter of the following syllable
     * @param beginning Beginning letter of the following syllable
     */
    changeFinalPtkppttkk(beginning: Sound): TonalSyllable[] | undefined;
    changeFinalN(initial: Sound): Array<TonalSyllable>;
    private voicedFinal;
}
export declare class TonalCombiningMorphemeMaker extends MorphemeMaker {
    private metaplasm;
    constructor(metaplasm: TonalCombiningMetaplasm);
    protected createArray(): TonalCombiningMorpheme[];
    protected createMorpheme(matched: MatchedPattern): TonalCombiningMorpheme;
    private postprocess;
    makeMorphemes(graphemes: Array<AlphabeticGrapheme>): TonalCombiningMorpheme[];
}
export declare class TonalSoundChangingMorphemeMaker extends MorphemeMaker {
    constructor();
    protected createArray(): TonalSoundChangingMorpheme[];
    protected createMorpheme(match: MatchedPattern): TonalSoundChangingMorpheme;
    private postprocess;
    makeMorphemes(graphemes: Array<AlphabeticGrapheme>): TonalSoundChangingMorpheme[];
}
