export declare enum TokenClass {
    token = 0,
    keyword = 1,
    reserved = 2
}
export declare class TokenType {
    name: string;
    type: TokenClass;
    rule: RegExp | string;
    constructor(name: string, type: TokenClass, rule: RegExp | string);
    toString(): string;
}
export declare class TokenTypes {
    static readonly none: TokenType;
    static readonly eof: TokenType;
    static readonly reserved: {
        asm: TokenType;
        bf16: TokenType;
        do: TokenType;
        enum: TokenType;
        f16: TokenType;
        f64: TokenType;
        handle: TokenType;
        i8: TokenType;
        i16: TokenType;
        i64: TokenType;
        mat: TokenType;
        premerge: TokenType;
        regardless: TokenType;
        typedef: TokenType;
        u8: TokenType;
        u16: TokenType;
        u64: TokenType;
        unless: TokenType;
        using: TokenType;
        vec: TokenType;
        void: TokenType;
    };
    static readonly keywords: {
        array: TokenType;
        atomic: TokenType;
        bool: TokenType;
        f32: TokenType;
        i32: TokenType;
        mat2x2: TokenType;
        mat2x3: TokenType;
        mat2x4: TokenType;
        mat3x2: TokenType;
        mat3x3: TokenType;
        mat3x4: TokenType;
        mat4x2: TokenType;
        mat4x3: TokenType;
        mat4x4: TokenType;
        ptr: TokenType;
        sampler: TokenType;
        sampler_comparison: TokenType;
        struct: TokenType;
        texture_1d: TokenType;
        texture_2d: TokenType;
        texture_2d_array: TokenType;
        texture_3d: TokenType;
        texture_cube: TokenType;
        texture_cube_array: TokenType;
        texture_multisampled_2d: TokenType;
        texture_storage_1d: TokenType;
        texture_storage_2d: TokenType;
        texture_storage_2d_array: TokenType;
        texture_storage_3d: TokenType;
        texture_depth_2d: TokenType;
        texture_depth_2d_array: TokenType;
        texture_depth_cube: TokenType;
        texture_depth_cube_array: TokenType;
        texture_depth_multisampled_2d: TokenType;
        texture_external: TokenType;
        u32: TokenType;
        vec2: TokenType;
        vec3: TokenType;
        vec4: TokenType;
        bitcast: TokenType;
        block: TokenType;
        break: TokenType;
        case: TokenType;
        continue: TokenType;
        continuing: TokenType;
        default: TokenType;
        diagnostic: TokenType;
        discard: TokenType;
        else: TokenType;
        enable: TokenType;
        fallthrough: TokenType;
        false: TokenType;
        fn: TokenType;
        for: TokenType;
        function: TokenType;
        if: TokenType;
        let: TokenType;
        const: TokenType;
        loop: TokenType;
        while: TokenType;
        private: TokenType;
        read: TokenType;
        read_write: TokenType;
        return: TokenType;
        requires: TokenType;
        storage: TokenType;
        switch: TokenType;
        true: TokenType;
        alias: TokenType;
        type: TokenType;
        uniform: TokenType;
        var: TokenType;
        override: TokenType;
        workgroup: TokenType;
        write: TokenType;
        r8unorm: TokenType;
        r8snorm: TokenType;
        r8uint: TokenType;
        r8sint: TokenType;
        r16uint: TokenType;
        r16sint: TokenType;
        r16float: TokenType;
        rg8unorm: TokenType;
        rg8snorm: TokenType;
        rg8uint: TokenType;
        rg8sint: TokenType;
        r32uint: TokenType;
        r32sint: TokenType;
        r32float: TokenType;
        rg16uint: TokenType;
        rg16sint: TokenType;
        rg16float: TokenType;
        rgba8unorm: TokenType;
        rgba8unorm_srgb: TokenType;
        rgba8snorm: TokenType;
        rgba8uint: TokenType;
        rgba8sint: TokenType;
        bgra8unorm: TokenType;
        bgra8unorm_srgb: TokenType;
        rgb10a2unorm: TokenType;
        rg11b10float: TokenType;
        rg32uint: TokenType;
        rg32sint: TokenType;
        rg32float: TokenType;
        rgba16uint: TokenType;
        rgba16sint: TokenType;
        rgba16float: TokenType;
        rgba32uint: TokenType;
        rgba32sint: TokenType;
        rgba32float: TokenType;
        static_assert: TokenType;
    };
    static readonly tokens: {
        decimal_float_literal: TokenType;
        hex_float_literal: TokenType;
        int_literal: TokenType;
        uint_literal: TokenType;
        name: TokenType;
        ident: TokenType;
        and: TokenType;
        and_and: TokenType;
        arrow: TokenType;
        attr: TokenType;
        forward_slash: TokenType;
        bang: TokenType;
        bracket_left: TokenType;
        bracket_right: TokenType;
        brace_left: TokenType;
        brace_right: TokenType;
        colon: TokenType;
        comma: TokenType;
        equal: TokenType;
        equal_equal: TokenType;
        not_equal: TokenType;
        greater_than: TokenType;
        greater_than_equal: TokenType;
        shift_right: TokenType;
        less_than: TokenType;
        less_than_equal: TokenType;
        shift_left: TokenType;
        modulo: TokenType;
        minus: TokenType;
        minus_minus: TokenType;
        period: TokenType;
        plus: TokenType;
        plus_plus: TokenType;
        or: TokenType;
        or_or: TokenType;
        paren_left: TokenType;
        paren_right: TokenType;
        semicolon: TokenType;
        star: TokenType;
        tilde: TokenType;
        underscore: TokenType;
        xor: TokenType;
        plus_equal: TokenType;
        minus_equal: TokenType;
        times_equal: TokenType;
        division_equal: TokenType;
        modulo_equal: TokenType;
        and_equal: TokenType;
        or_equal: TokenType;
        xor_equal: TokenType;
        shift_right_equal: TokenType;
        shift_left_equal: TokenType;
    };
    static readonly simpleTokens: {
        "@": TokenType;
        "{": TokenType;
        "}": TokenType;
        ":": TokenType;
        ",": TokenType;
        "(": TokenType;
        ")": TokenType;
        ";": TokenType;
    };
    static readonly literalTokens: {
        "&": TokenType;
        "&&": TokenType;
        "->": TokenType;
        "/": TokenType;
        "!": TokenType;
        "[": TokenType;
        "]": TokenType;
        "=": TokenType;
        "==": TokenType;
        "!=": TokenType;
        ">": TokenType;
        ">=": TokenType;
        ">>": TokenType;
        "<": TokenType;
        "<=": TokenType;
        "<<": TokenType;
        "%": TokenType;
        "-": TokenType;
        "--": TokenType;
        ".": TokenType;
        "+": TokenType;
        "++": TokenType;
        "|": TokenType;
        "||": TokenType;
        "*": TokenType;
        "~": TokenType;
        _: TokenType;
        "^": TokenType;
        "+=": TokenType;
        "-=": TokenType;
        "*=": TokenType;
        "/=": TokenType;
        "%=": TokenType;
        "&=": TokenType;
        "|=": TokenType;
        "^=": TokenType;
        ">>=": TokenType;
        "<<=": TokenType;
    };
    static readonly regexTokens: {
        decimal_float_literal: TokenType;
        hex_float_literal: TokenType;
        int_literal: TokenType;
        uint_literal: TokenType;
        ident: TokenType;
    };
    static readonly storage_class: TokenType[];
    static readonly access_mode: TokenType[];
    static readonly sampler_type: TokenType[];
    static readonly sampled_texture_type: TokenType[];
    static readonly multisampled_texture_type: TokenType[];
    static readonly storage_texture_type: TokenType[];
    static readonly depth_texture_type: TokenType[];
    static readonly texture_external_type: TokenType[];
    static readonly any_texture_type: TokenType[];
    static readonly texel_format: TokenType[];
    static readonly const_literal: TokenType[];
    static readonly literal_or_ident: TokenType[];
    static readonly element_count_expression: TokenType[];
    static readonly template_types: TokenType[];
    static readonly attribute_name: TokenType[];
    static readonly assignment_operators: TokenType[];
    static readonly increment_operators: TokenType[];
}
export declare class Token {
    readonly type: TokenType;
    readonly lexeme: string;
    readonly line: number;
    readonly start: number;
    readonly end: number;
    constructor(type: TokenType, lexeme: string, line: number, start: number, end: number);
    toString(): string;
    isTemplateType(): boolean;
    isArrayType(): boolean;
    isArrayOrTemplateType(): boolean;
}
export declare class WgslScanner {
    private _source;
    private _tokens;
    private _start;
    private _current;
    private _line;
    constructor(source?: string);
    scanTokens(): Token[];
    scanToken(): boolean;
    _findType(lexeme: string): TokenType;
    _match(lexeme: string, rule: RegExp): boolean;
    _isAtEnd(): boolean;
    _isAlpha(c: string): boolean;
    _isNumeric(c: string): boolean;
    _isAlphaNumeric(c: string): boolean;
    _isWhitespace(c: string): boolean;
    _advance(amount?: number): string;
    _peekAhead(offset?: number): string;
    _addToken(type: TokenType): void;
}
