import { TokenMapper } from "./public-api";
export interface ILexer<T> {
    tokens: T[];
    src: string;
    hasNext: () => boolean;
    getNext: () => T;
    peek: (offset: number) => T | undefined;
    pushBack: (count: number) => void;
    acceptTokenMapper: (visitor: TokenMapper<T>) => void;
}
export declare class Lexer<T> implements ILexer<T> {
    tokens: T[];
    src: string;
    protected pos: number;
    protected buff: string;
    constructor(src: string, args?: {});
    acceptTokenMapper(visitor: TokenMapper<T>): void;
    protected normalize(src: string, args?: {}): string;
    protected stepBuff(count: number): void;
    protected getChar(): string;
    protected peekChar(): string;
    get progress(): number;
    hasNext(): boolean;
    getNext(): T;
    protected setupTokens(args: any): T[];
    protected addToken(token: T): void;
    protected createToken(args: any): T;
    protected hasNextBuff(): boolean;
    peek(offset?: number): T | undefined;
    pushBack(count: number): void;
}
