#!/usr/bin/env node
import { type OutputFormat } from "../../../toolcraft-design/dist/index.js";
import { type Diagnostic } from "../diagnostics.js";
import { type GeneratedFile } from "../generate.js";
interface GenerateCliFileSystem {
    lstat(targetPath: string): Promise<{
        isDirectory(): boolean;
        isSymbolicLink(): boolean;
    }>;
    mkdir(directoryPath: string, options?: {
        recursive?: boolean;
    }): Promise<unknown>;
    readFile(filePath: string, encoding: BufferEncoding): Promise<string>;
    readdir(directoryPath: string): Promise<string[]>;
    rename(oldPath: string, newPath: string): Promise<unknown>;
    rm(targetPath: string, options?: {
        force?: boolean;
    }): Promise<void>;
    realpath(targetPath: string): Promise<string>;
    unlink(targetPath: string): Promise<void>;
    writeFile(filePath: string, contents: string, options: BufferEncoding | {
        encoding?: BufferEncoding;
        flag?: string;
    }): Promise<void>;
}
interface GenerateCliWriter {
    write(chunk: string | Uint8Array): boolean;
}
interface GenerateCliServices {
    cwd: string;
    fetch: typeof globalThis.fetch;
    fs: GenerateCliFileSystem;
    stderr: GenerateCliWriter;
    stdout: GenerateCliWriter;
}
interface GenerateCliOptions {
    check: boolean;
    diff: boolean;
    input: string;
    inspect: boolean;
    outputFormat: OutputFormat;
    outputDir: string;
}
interface SyncGeneratedClientResult {
    deletedFileCount: number;
    deletedFiles: string[];
    diagnostics: Diagnostic[];
    drifted: boolean;
    specSha: string;
    updatedFiles: UpdatedGeneratedFile[];
    updatedFileCount: number;
}
interface UpdatedGeneratedFile extends GeneratedFile {
    previousContents?: string;
}
export declare function runGenerateCli(argv?: string[], services?: GenerateCliServices): Promise<number>;
export declare function syncGeneratedClient(options: GenerateCliOptions, services: Pick<GenerateCliServices, "cwd" | "fetch" | "fs">): Promise<SyncGeneratedClientResult>;
export {};
