import type { ASTNode, Token } from '../types/core';
import type { TokenType } from './tokenizer';
export interface ParserInterface {
    isAtEnd(): boolean;
    check(value: string): boolean;
    checkTokenType(type: TokenType): boolean;
    advance(): Token;
    peek(): Token;
    parsePrimary(): ASTNode;
    parseExpression(): ASTNode;
    isCommand(name: string): boolean;
}
export interface ParseUntilOptions {
    additionalTerminators?: string[];
    allowExpressions?: boolean;
    stopAtCommands?: boolean;
    stopWhen?: (parser: ParserInterface) => boolean;
}
export declare class TokenConsumer {
    private parser;
    constructor(parser: ParserInterface);
    parseArgsUntilTerminator(options?: ParseUntilOptions): ASTNode[];
    private shouldStopParsing;
    consumeOptionalThe(): boolean;
    consumeOptionalArticle(): 'a' | 'an' | null;
    parsePrepositionTarget(preposition: string, parseExpression?: boolean): {
        preposition: string;
        target: ASTNode;
    } | null;
    parseOptionalModifiers(prepositions: Record<string, boolean>): Record<string, ASTNode>;
    isAtCommandSeparator(): boolean;
    consumeOptionalSeparator(): 'then' | 'and' | null;
    tryParseKeywordPhrase(keywords: string[]): string | null;
}
//# sourceMappingURL=token-consumer.d.ts.map