import { Autocompletion } from "./Autocompletion.js";
import { ParsedNodeFactory } from "./ParsedNodeFactory.js";
import { BNF } from "./BNF.js";
import { DefaultParsedNode } from "./DefaultParsedNode.js";
import { Lexer } from "./Lexer.js";
import { Matcher } from "./Matcher.js";
import { Production } from "./Production.js";
import { Sym } from "./Symbol.js";
declare class RDParser {
    private readonly parsedNodeFactory;
    private readonly grammar;
    private readonly lexer;
    constructor(grammar: BNF, lexer: Lexer, parsedNodeFactory: ParsedNodeFactory);
    getLexer(): Lexer;
    getGrammar(): BNF;
    getParsedNodeFactory(): ParsedNodeFactory;
    parse(autocompletions?: Array<Autocompletion | undefined>): DefaultParsedNode;
    private buildAst;
    private collectAutocompletions;
    private collectAutocompletingParents;
    private addAutocompletions;
    private parseRecursive;
    protected createParsedTree(leafSequence: SymbolSequence, retLast: DefaultParsedNode[]): DefaultParsedNode;
    private static notifyExtensionListeners;
    private static matcherFromChildSequence;
}
declare class SymbolSequence {
    readonly sequence: Sym[];
    pos: number;
    readonly parent: SymbolSequence | undefined;
    readonly parsedMatchers: Matcher[];
    readonly production: Production | undefined;
    /**
     * Call it with all three parameter, with the not applicable ones set to undefined
     */
    constructor(start: Sym | undefined, parent: SymbolSequence | undefined, production: Production | undefined);
    getLastMatcher(): Matcher | undefined;
    addMatcher(matcher: Matcher): void;
    getCurrentSymbol(): Sym;
    replaceCurrentSymbol(production: Production): SymbolSequence;
    incrementPosition(): void;
    toString(): string;
}
export { RDParser, SymbolSequence };
//# sourceMappingURL=RDParser.d.ts.map