import { TokenType } from "../tokenizer/types";
import LValParser from "./lval";
export default abstract class ExpressionParser extends LValParser {
    abstract parseBlock(allowDirectives?: boolean, isFunctionScope?: boolean, contextId?: number): void;
    abstract parseClass(isStatement: boolean, optionalId?: boolean): void;
    abstract parseDecorators(allowExport?: boolean): void;
    abstract parseFunction(functionStart: number, isStatement: boolean, allowExpressionBody?: boolean, optionalId?: boolean): void;
    abstract parseFunctionParams(allowModifiers?: boolean, funcContextId?: number): void;
    parseExpression(noIn?: boolean): void;
    parseMaybeAssign(noIn?: boolean | null, afterLeftParse?: Function): boolean;
    parseMaybeConditional(noIn: boolean | null): boolean;
    parseConditional(noIn: boolean | null, startPos: number): void;
    parseExprOps(noIn: boolean | null): boolean;
    parseExprOp(minPrec: number, noIn: boolean | null): void;
    parseMaybeUnary(): boolean;
    parseExprSubscripts(): boolean;
    parseSubscripts(startPos: number, noCalls?: boolean | null): void;
    /** Set 'state.stop = true' to indicate that we should stop parsing subscripts. */
    parseSubscript(startPos: number, noCalls: boolean | null, state: {
        stop: boolean;
    }): void;
    atPossibleAsync(): boolean;
    parseCallExpressionArguments(close: TokenType): void;
    shouldParseAsyncArrow(): boolean;
    parseAsyncArrowFromCallExpression(functionStart: number, startTokenIndex: number): void;
    parseNoCallExpr(): void;
    parseExprAtom(): boolean;
    parseMaybePrivateName(): void;
    parseFunctionExpression(): void;
    parseMetaProperty(): void;
    parseImportMetaProperty(): void;
    parseLiteral(): void;
    parseParenExpression(): void;
    parseParenAndDistinguishExpression(canBeArrow: boolean): boolean;
    shouldParseArrow(): boolean;
    parseArrow(): boolean;
    parseParenItem(): void;
    parseNew(): void;
    parseNewArguments(): void;
    parseTemplateElement(isTagged: boolean): void;
    parseTemplate(isTagged: boolean): void;
    parseObj(isPattern: boolean, isBlockScope: boolean): void;
    isGetterOrSetterMethod(isPattern: boolean): boolean;
    parseObjectMethod(isGenerator: boolean, isPattern: boolean, objectContextId: number): boolean;
    parseObjectProperty(isPattern: boolean, isBlockScope: boolean): void;
    parseObjPropValue(isGenerator: boolean, isPattern: boolean, isBlockScope: boolean, objectContextId: number): void;
    parsePropertyName(objectContextId: number): void;
    parseMethod(functionStart: number, isGenerator: boolean, isConstructor: boolean): void;
    parseArrowExpression(functionStart: number, startTokenIndex: number): void;
    parseFunctionBodyAndFinish(functionStart: number, isGenerator: boolean, allowExpressionBody?: boolean | null, funcContextId?: number): void;
    parseFunctionBody(functionStart: number, isGenerator: boolean, allowExpression: boolean | null, funcContextId?: number): void;
    parseExprList(close: TokenType, allowEmpty?: boolean | null): void;
    parseExprListItem(allowEmpty: boolean | null): void;
    parseIdentifier(): void;
    parseAwait(): void;
    parseYield(): void;
}
