import type { CommandNode, ASTNode, Token, ParseError } from '../parser/types';
export interface ParserTestSuccess {
    success: true;
    node: CommandNode;
    tokens: Token[];
    errors?: ParseError[];
}
export interface ParserTestFailure {
    success: false;
    error: Error | ParseError;
    input: string;
    tokens?: Token[];
}
export type ParserTestResult = ParserTestSuccess | ParserTestFailure;
export declare function isParseSuccess(result: ParserTestResult): result is ParserTestSuccess;
export declare function isParseFailure(result: ParserTestResult): result is ParserTestFailure;
export declare function assertParseSuccess(result: ParserTestResult): asserts result is ParserTestSuccess;
export declare function assertParseFailure(result: ParserTestResult): asserts result is ParserTestFailure;
export declare function expectASTStructure(node: ASTNode | CommandNode, expected: Partial<CommandNode | ASTNode>): void;
export declare function expectNodeProperty<T = unknown>(node: ASTNode | CommandNode, property: string, expectedValue?: T): void;
export declare function expectCommandNode(node: ASTNode, expectedName: string): asserts node is CommandNode;
export declare function expectNodeType<T extends ASTNode>(node: ASTNode, expectedType: T['type']): asserts node is T;
export declare function getCommandArguments(node: ASTNode): ASTNode[];
export declare function getCommandTarget(node: ASTNode): ASTNode | undefined;
export declare function getNodeProperty<T = unknown>(node: ASTNode | CommandNode, property: string): T | undefined;
export declare class TestNodeBuilder {
    private node;
    withName(name: string): this;
    withArguments(...args: ASTNode[]): this;
    withTarget(target: ASTNode): this;
    withPosition(start: number, end: number, line?: number, column?: number): this;
    build(): CommandNode;
}
export declare function createTestCommandNode(name: string, args?: ASTNode[]): CommandNode;
export declare function createTestLiteral(value: string | number | boolean | null): ASTNode;
export declare function createTestIdentifier(name: string): ASTNode;
export declare function createTestSelector(selector: string): ASTNode;
//# sourceMappingURL=parser-helpers.d.ts.map