import { Effect } from "effect";
import { QuintNotFoundError } from "./errors.js";
import type { PlatformProcessBoundary } from "./platform-process.js";
import type { TraceGenerationAdapter } from "./trace-adapter.js";
export { buildRunArgs, buildTestArgs } from "./trace-generation-policy.js";
interface QuintProcessResult {
    readonly exitCode: number;
    readonly stderr: string;
}
interface QuintCliAdapterDeps {
    readonly runQuintProcess: (args: ReadonlyArray<string>, verbose: boolean, quintBin?: string | undefined) => Effect.Effect<QuintProcessResult, QuintNotFoundError>;
}
interface QuintProcess {
    readonly pid: number | undefined;
    readonly stdout: {
        readonly resume: () => void;
    };
    readonly stderr: {
        readonly on: (event: "data", listener: (chunk: Buffer) => void) => unknown;
    };
    readonly on: {
        (event: "close", listener: (code: number | null) => void): unknown;
        (event: "error", listener: (e: Error) => void): unknown;
    };
}
type SpawnQuintProcess = (cmd: string, args: ReadonlyArray<string>, options: {
    readonly env: NodeJS.ProcessEnv;
    readonly detached: boolean;
}) => QuintProcess;
export declare const makeRunQuintProcess: (spawnProcess?: SpawnQuintProcess, processBoundary?: PlatformProcessBoundary, getEnvironment?: () => NodeJS.ProcessEnv) => (args: ReadonlyArray<string>, verbose: boolean, quintBin?: string | undefined) => Effect.Effect<QuintProcessResult, QuintNotFoundError>;
export declare const makeQuintCliTraceAdapter: (deps?: QuintCliAdapterDeps) => TraceGenerationAdapter;
export declare const quintCliTraceAdapter: TraceGenerationAdapter;
//# sourceMappingURL=quint-cli-adapter.d.ts.map