import { IterableStream } from './iterable-stream';
export declare enum TokenType {
    TAG = 0,
    ATTRIBUTE = 1,
    STRING = 2,
    PARENTHESES_OPEN = 3,
    PARENTHESES_CLOSED = 4,
    BRACES_OPEN = 5,
    BRACES_CLOSED = 6,
    BRACKET_OPEN = 7,
    BRACKET_CLOSED = 8,
    ASSIGN = 9,
    ASTERISK = 10,
    HASH = 11,
    EOL = 12,
    WHITESPACE = 13,
    EOF = 14
}
export interface Token {
    type: TokenType;
    data: string;
    start: number;
    end: number;
}
export declare function createTokenStream(input: string): IterableTokenStream;
export declare function createNormalTokenStream(input: string): IterableStream<Token>;
export declare abstract class IterableSkipableStream<T> extends IterableStream<T> {
    abstract shouldSkipEntry(entry: T): boolean;
    step(): T;
    stepBackwards(): void;
}
export declare class IterableTokenStream extends IterableSkipableStream<Token> {
    shouldSkipEntry(entry: Token): boolean;
}
