import { Token } from './Token';
import { Source } from './Source';
export interface Tokenizer {
    (lexer: Lexer, position: number, code: number): Token | undefined;
}
export declare class Lexer {
    source: Source;
    lastToken: Token;
    token: Token;
    line: number;
    lineStart: number;
    private _tokenizers;
    constructor(source: Source | string);
    get [Symbol.toStringTag](): string;
    add(code: number, tokenizer: Tokenizer): void;
    tokenize(position: number, code: number): Token | undefined;
    advance(): Token;
    lookahead(): Token;
    readNextToken(start: number): Token;
}
