import { type ExpectStatic } from "vitest";
/**
 * Check if the binary exists for the current platform.
 */
export declare function binaryExists(): boolean;
/**
 * Get the binary path for the current platform.
 * Returns null if the platform is not supported.
 */
export declare function getBinaryPath(): string | null;
interface CLI {
    output(): string;
    consumeOutput(): string;
    inputText(text: string): Promise<void>;
    inputEnter(text?: string): Promise<void>;
    inputArrowUp(): Promise<void>;
    inputArrowDown(): Promise<void>;
    inputArrowRight(): Promise<void>;
    inputArrowLeft(): Promise<void>;
    inputCtrlC(): Promise<void>;
    inputSpace(): Promise<void>;
    waitUntilText(text: string, timeout?: number): Promise<void>;
    waitUntilExit(): Promise<number>;
    wait(ms: number): Promise<void>;
    getProjectPath(): string;
    writeFile(path: string, content: string): Promise<void>;
    readFile(path: string): string;
    exists(path: string): boolean;
    readdir(path: string): string[];
    fsSnapshot(path: string): Promise<Snapshot>;
    fsDiff(oldSnap: Snapshot): Promise<{
        added: string[];
        removed: string[];
        modified: string[];
    }>;
    npm(...args: string[]): Promise<number>;
    spawn(command: string, args: string[]): Promise<number>;
}
export declare function testCLI(name: string, template: string | undefined, handler: (cli: Handler, expect: ExpectStatic) => Promise<void>, timeout?: number, skip?: boolean): void;
/**
 * Command types for the CLI handler:
 * - "builderio": Run via Node.js (dist/dev-tools/cli/main.cjs)
 * - "create-builderio": Run via Node.js (dist/create-builderio/index.js)
 * - "binary": Run via compiled pkg binary (dist/fusion-binaries/.../builder-fusion)
 */
export type CLICommand = "builderio" | "create-builderio" | "binary";
type Handler = (cmd: CLICommand, args: string[], options?: {
    debug?: boolean;
}) => CLI;
export declare function createCLI(template: string | undefined, handler: (cli: Handler) => Promise<void>): Promise<void>;
/**
 * A snapshot maps a file's relative path to its hash.
 */
type Snapshot = {
    cwd: string;
    hashes: {
        [file: string]: string;
    };
};
export {};
