import { type ExpectStatic } from "vitest";
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>;
    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;
type Handler = (cmd: "builderio" | "create-builderio", 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 {};
