/**
 * Expression Lexer for Vorion DSL
 *
 * Tokenizes governance rule expressions into a stream of tokens.
 *
 * Grammar (Lexical):
 *   IDENTIFIER  := [a-zA-Z_][a-zA-Z0-9_]*(\.[a-zA-Z_][a-zA-Z0-9_]*)*
 *   STRING      := '"' [^"]* '"' | "'" [^']* "'"
 *   NUMBER      := [0-9]+(\.[0-9]+)?
 *   OPERATOR    := '==' | '!=' | '>=' | '<=' | '>' | '<'
 *   LPAREN      := '('
 *   RPAREN      := ')'
 *   LBRACKET    := '['
 *   RBRACKET    := ']'
 *   COMMA       := ','
 *   AND         := 'AND' (case-insensitive)
 *   OR          := 'OR' (case-insensitive)
 *   NOT         := 'NOT' (case-insensitive)
 *   IN          := 'IN' (case-insensitive)
 *   LIKE        := 'LIKE' (case-insensitive)
 *   TRUE        := 'true' | 'TRUE'
 *   FALSE       := 'false' | 'FALSE'
 *   NULL        := 'null' | 'NULL'
 *
 * @packageDocumentation
 */
/**
 * Token types for the expression DSL
 */
export type TokenType = 'IDENTIFIER' | 'STRING' | 'NUMBER' | 'OPERATOR' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'COMMA' | 'AND' | 'OR' | 'NOT' | 'IN' | 'LIKE' | 'TRUE' | 'FALSE' | 'NULL' | 'EOF';
/**
 * Token representing a single lexeme in the expression
 */
export interface Token {
    /** Type of the token */
    type: TokenType;
    /** Raw string value of the token */
    value: string;
    /** Position in the source string */
    position: number;
}
/**
 * Error thrown during lexical analysis
 */
export declare class LexerError extends Error {
    position: number;
    input: string;
    constructor(message: string, position: number, input: string);
}
/**
 * Tokenize an expression string into an array of tokens
 *
 * @param input - The expression string to tokenize
 * @returns Array of tokens including EOF
 * @throws LexerError if invalid characters or malformed tokens are found
 *
 * @example
 * ```ts
 * const tokens = tokenize("intent.action == 'read'");
 * // Returns: [
 * //   { type: 'IDENTIFIER', value: 'intent.action', position: 0 },
 * //   { type: 'OPERATOR', value: '==', position: 14 },
 * //   { type: 'STRING', value: 'read', position: 17 },
 * //   { type: 'EOF', value: '', position: 23 }
 * // ]
 * ```
 */
export declare function tokenize(input: string): Token[];
//# sourceMappingURL=lexer.d.ts.map