export declare class Character {
    character: string;
    constructor(s: string);
}
declare class Characters {
    private carr;
    private o;
    constructor();
    private assign;
    get(key: string): Character;
    get size(): number;
}
export declare const characters: Characters;
export declare abstract class Grapheme {
}
export declare class AlphabeticGrapheme extends Grapheme {
    letter: AlphabeticLetter;
    constructor(letter: AlphabeticLetter);
}
/** Letter is a subword unit. */
export declare class Letter {
    literal: string;
}
export declare class AlphabeticLetter extends Letter {
    characters: Array<Character>;
    constructor(characters: Array<Character>);
    pushCharacter(c: Character): void;
    protected concat(): void;
}
export declare class MatchedSequence {
    characters: Array<Character>;
    get matchedLength(): number;
    toString(): string;
}
export declare class Letters {
    private arr;
    protected o: Map<string, AlphabeticLetter>;
    constructor(larr: string[]);
    private assign;
    handleN(characters: Character[], beginOfLetter: number, listLength: number): MatchedSequence;
    get(key: string): AlphabeticLetter;
    get size(): number;
    get values(): IterableIterator<AlphabeticLetter>;
}
/** Turn a string into graphemes. */
export declare class GraphemeMaker {
    private lowerLetters;
    private listOfLetters;
    constructor(lowerLetters: Letters);
    makeGraphemes(str: string): AlphabeticGrapheme[];
    private getMatchedSequence;
    private make;
}
/** The sound tag of a given letter. */
export declare class Sound {
    name: string;
    characters: Array<Character>;
    toString(): string;
    makeCharacters(str: string): Character[];
}
export declare const soundSequence: (sounds: Sound[]) => {
    sounds: Sound[];
    includes(str: string): boolean;
};
export declare const sgPipe: (...fns: ((sg: SoundGeneration) => SoundGeneration)[]) => (x: SoundGeneration) => SoundGeneration;
/** Sound generation for syllable compositions. */
export declare class SoundGeneration {
    /** The letters to be matched. */
    letters: string[];
    /** Matched sounds accumulator. */
    matchedSounds: Sound[];
    /** flag for syllable matching process. */
    matching: boolean;
}
export declare class MatchedPattern {
    letters: Array<AlphabeticLetter>;
    pattern: Array<Sound>;
    get matchedLength(): number;
    get lastLetter(): AlphabeticLetter;
    get lastSecondLetter(): AlphabeticLetter;
}
export declare abstract class Morpheme {
}
/** Syllable is a subword unit. */
export declare class Syllable {
    literal: string;
    letters: Array<AlphabeticLetter>;
    constructor(letters: Array<AlphabeticLetter>);
    pushLetter(l: AlphabeticLetter): void;
    replaceLetter(i: number, l: AlphabeticLetter): void;
    insertLetter(i: number, l: AlphabeticLetter): void;
    protected concat(): void;
}
export declare function makeMatchedPatterns(letters: Array<AlphabeticLetter>, syllabify: (letters: Array<AlphabeticLetter>, beginOfSyllable: number) => MatchedPattern): MatchedPattern[];
export declare abstract class Lexeme {
}
export declare class Word {
    literal: string;
}
export declare abstract class Phraseme {
}
export declare class Phrase {
    literal: string;
}
export {};
