import { Rule } from "../ebnf/Rule.js";
import { DefaultParsedNode } from "./DefaultParsedNode.js";
import { Sym } from "./Symbol.js";
declare abstract class Autocompletion {
    readonly symbolName: string;
    readonly forSymbol: Sym;
    private alreadyEntered;
    constructor(pn: DefaultParsedNode);
    constructor(forSymbol: Sym, symbolName: string);
    abstract getCompletion(purpose: Autocompletion.Purpose): string;
    isEmptyLiteral(): boolean;
    static literal(pn: DefaultParsedNode, literals: string[], prefix?: string, postfix?: string): Autocompletion[];
    static parameterized(pn: DefaultParsedNode, parameterName: string): Autocompletion[];
    static veto(pn: DefaultParsedNode): Autocompletion[];
    static doesAutocomplete(pn: DefaultParsedNode): Autocompletion[];
    getAlreadyEntered(): string;
    setAlreadyEntered(alreadyEntered: string): void;
    asArray(): Autocompletion[];
}
declare namespace Autocompletion {
    class Literal extends Autocompletion {
        private readonly literal;
        constructor(pn: DefaultParsedNode, s: string);
        constructor(forSymbol: Sym, symbolName: string, s: string);
        getCompletion(_purpose: Purpose): string;
    }
    class Parameterized extends Autocompletion {
        private readonly paramName;
        constructor(pn: DefaultParsedNode, paramName: string);
        constructor(forSymbol: Sym, symbolName: string, paramName: string);
        getCompletion(_purpose: Purpose): string;
        getParamName(): string;
    }
    class Veto extends Autocompletion {
        static readonly VETO: string;
        getCompletion(_purpose: Purpose): string;
    }
    class DoesAutocomplete extends Autocompletion {
        getCompletion(_purpose: Purpose): string;
    }
    class EntireSequence extends Autocompletion {
        private readonly sequenceOfCompletions;
        private readonly sequence;
        constructor(pn: DefaultParsedNode);
        constructor(forSymbol: Sym, symbolName: string, sequence: Rule);
        add(completions: Autocompletion[]): void;
        getSequenceOfCompletions(): Autocompletion[][];
        getSequence(): Rule;
        addLiteral(symbol: Sym, name: string, completion: string): void;
        addParameterized(symbol: Sym, name: string, parameter: string): void;
        getCompletion(purpose: Purpose): string;
    }
    enum Purpose {
        FOR_MENU = 0,
        FOR_INSERTION = 1
    }
}
export { Autocompletion };
//# sourceMappingURL=Autocompletion.d.ts.map