import { Expression } from './ast';
import { Tokenizer } from './lexer';
import { TokenType } from './token';
export declare type PrecedenceMap = {
    [key in TokenType]?: number;
};
export declare class Parser {
    private lexer;
    private precedenceMap;
    private currentToken;
    private peekToken;
    get currentPrecedence(): number;
    get peekPrecedence(): number;
    private prefixParsers;
    private infixParsers;
    constructor(lexer: Tokenizer, precedenceMap?: PrecedenceMap);
    parse(): Expression;
    private parseExpression;
    private nextToken;
    private currentTokenIs;
    private peekTokenIs;
    private expectPeekToken;
    private parseIdentifier;
    private parseNumber;
    private parseString;
    private parseBoolean;
    private parseGroupedExpression;
    private parseInfixExpression;
    private parseNotExpression;
    private parseInExpression;
    private parseIsExpression;
    private parseBetweenExpression;
    private parseCallExpression;
    private parseCommaExpression;
    private parseCaseExpression;
}
export declare function parse(expression: string): Expression;
