import { Options } from "../options";
import BaseParser from "../parser/base";
import { TokContext } from "./context";
import State from "./state";
import { TokenType } from "./types";
export declare enum IdentifierRole {
    Access = 0,
    ExportAccess = 1,
    FunctionScopedDeclaration = 2,
    BlockScopedDeclaration = 3,
    ObjectShorthand = 4,
    ObjectKey = 5,
}
export declare class Token {
    constructor(state: State);
    type: TokenType;
    value: any;
    start: number;
    end: number;
    isType: boolean;
    identifierRole?: IdentifierRole;
    shadowsGlobal?: boolean;
    contextId?: number;
    rhsEndIndex?: number;
    isExpression?: boolean;
}
export default abstract class Tokenizer extends BaseParser {
    abstract unexpected(pos?: number | null, messageOrType?: string | TokenType): never;
    isLookahead: boolean;
    state: State;
    input: string;
    nextContextId: number;
    constructor(options: Options, input: string);
    next(): void;
    runInTypeContext<T>(existingTokensInType: number, func: () => T): T;
    eat(type: TokenType): boolean;
    match(type: TokenType): boolean;
    isKeyword(word: string): boolean;
    lookaheadType(): TokenType;
    lookaheadTypeAndValue(): {
        type: TokenType;
        value: any;
    };
    curContext(): TokContext;
    nextToken(): void;
    readToken(code: number): void;
    fullCharCodeAtPos(): number;
    skipBlockComment(): void;
    skipLineComment(startSkip: number): void;
    skipSpace(): void;
    finishToken(type: TokenType, val?: any): void;
    readToken_dot(): void;
    readToken_slash(): void;
    readToken_mult_modulo(code: number): void;
    readToken_pipe_amp(code: number): void;
    readToken_caret(): void;
    readToken_plus_min(code: number): void;
    readToken_lt_gt(code: number): void;
    readToken_eq_excl(code: number): void;
    readToken_question(): void;
    getTokenFromCode(code: number): void;
    finishOp(type: TokenType, size: number): void;
    readRegexp(): void;
    readInt(radix: number, len?: number): number | null;
    readRadixNumber(radix: number): void;
    readNumber(startsWithDot: boolean): void;
    readCodePoint(throwOnInvalid: boolean): number | null;
    readString(quote: number): void;
    readTmplToken(): void;
    readEscapedChar(inTemplate: boolean): string | null;
    readHexChar(len: number, throwOnInvalid: boolean): number | null;
    readWord1(): string;
    readWord(): void;
    braceIsBlock(prevType: TokenType): boolean;
    updateContext(prevType: TokenType): void;
}
