import { NodeType } from '../../../../constants/constants';
import TokenExecutor from '../../tokenExecutor';
import { ASTNode } from '../../types/nodeTypes';
import '../../../tokenizer/types';

declare abstract class Expression {
    protected _tokenExecutor: TokenExecutor;
    constructor(tokenExecutor: TokenExecutor);
    abstract getExpression(): ASTNode;
    static getExpressionImpl(expressionType: keyof typeof NodeType): Expression;
    protected getBinaryExpression(downstreamExpressionType: keyof typeof NodeType, operatorToken: string): ASTNode;
    protected getLogicalExpression(downstreamExpressionType: keyof typeof NodeType, operatorToken: string): ASTNode;
    private _getExpression;
}

export { Expression as default };
