export type TokenType = 'STRING' | 'NUMBER' | 'BOOLEAN' | 'NULL' | 'IDENTIFIER' | 'KEYWORD' | 'OPERATOR' | 'COMPARISON' | 'LOGICAL' | 'ASSIGNMENT' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'LBRACE' | 'RBRACE' | 'COMMA' | 'DOT' | 'COLON' | 'SEMICOLON' | 'APOSTROPHE' | 'WHITESPACE' | 'NEWLINE' | 'EOF' | 'UNKNOWN';
export interface Token {
    type: TokenType;
    value: string;
    position: number;
    line: number;
    column: number;
}
export type ASTNodeType = 'Literal' | 'Identifier' | 'BinaryExpression' | 'UnaryExpression' | 'CallExpression' | 'MemberExpression' | 'ConditionalExpression' | 'ExpressionStatement' | 'BlockStatement' | 'EventStatement' | 'CommandStatement' | 'EventHandler' | 'Command' | 'Selector' | 'PropertyAccess' | 'PossessiveExpression';
export interface BaseASTNode {
    type: ASTNodeType;
    position: {
        start: number;
        end: number;
        line: number;
        column: number;
    };
}
export interface LiteralNode extends BaseASTNode {
    type: 'Literal';
    value: string | number | boolean | null;
    raw: string;
}
export interface IdentifierNode extends BaseASTNode {
    type: 'Identifier';
    name: string;
}
export interface BinaryExpressionNode extends BaseASTNode {
    type: 'BinaryExpression';
    operator: string;
    left: ASTNode;
    right: ASTNode;
}
export interface UnaryExpressionNode extends BaseASTNode {
    type: 'UnaryExpression';
    operator: string;
    argument: ASTNode;
    prefix: boolean;
}
export interface CallExpressionNode extends BaseASTNode {
    type: 'CallExpression';
    callee: ASTNode;
    arguments: ASTNode[];
}
export interface MemberExpressionNode extends BaseASTNode {
    type: 'MemberExpression';
    object: ASTNode;
    property: ASTNode;
    computed: boolean;
}
export interface EventHandlerNode extends BaseASTNode {
    type: 'EventHandler';
    event: string;
    selector?: string;
    commands: CommandNode[];
}
export interface CommandNode extends BaseASTNode {
    type: 'Command';
    name: string;
    arguments: ASTNode[];
    target?: ASTNode;
}
export interface SelectorNode extends BaseASTNode {
    type: 'Selector';
    value: string;
}
export interface PossessiveExpressionNode extends BaseASTNode {
    type: 'PossessiveExpression';
    object: ASTNode;
    property: ASTNode;
}
export type ASTNode = LiteralNode | IdentifierNode | BinaryExpressionNode | UnaryExpressionNode | CallExpressionNode | MemberExpressionNode | EventHandlerNode | CommandNode | SelectorNode | PossessiveExpressionNode;
export interface ParseResult {
    ast: ASTNode;
    tokens: Token[];
    errors: ParseError[];
}
export interface ParseError {
    name?: string;
    message: string;
    position: number;
    line: number;
    column: number;
    token?: Token;
}
export interface KeywordResolver {
    resolve(token: string): string | undefined;
    isCommand(token: string): boolean;
    isKeyword(token: string): boolean;
}
export interface SemanticAnalyzerInterface {
    analyze(input: string, language: string): {
        confidence: number;
        command?: {
            name: string;
            roles: ReadonlyMap<string, {
                type: string;
                value: string;
            }>;
        };
        errors?: string[];
        tokensConsumed?: number;
    };
    supportsLanguage(language: string): boolean;
    supportedLanguages(): string[];
}
export interface ParserOptions {
    includeWhitespace?: boolean;
    includeComments?: boolean;
    strict?: boolean;
    keywords?: KeywordResolver;
    semanticAnalyzer?: SemanticAnalyzerInterface;
    language?: string;
    semanticConfidenceThreshold?: number;
    registryIntegration?: any;
}
export declare const HYPERSCRIPT_KEYWORDS: Set<string>;
//# sourceMappingURL=types.d.ts.map