import { Effect } from "effect";
interface ProcessHandle {
    readonly pid?: number | undefined;
}
interface CommandHandle {
    readonly kill: () => unknown;
}
type RunCommand = (command: string, args: ReadonlyArray<string>, callback: (error: Error | null, stdout: string) => void) => CommandHandle;
type RunCommandSync = (command: string, args: ReadonlyArray<string>) => boolean;
interface PlatformProcessDeps {
    readonly platform: NodeJS.Platform;
    readonly runCommand: RunCommand;
    readonly runCommandSync: RunCommandSync;
    readonly killProcess: (pid: number, signal: NodeJS.Signals) => unknown;
    readonly addExitListener: (listener: () => void) => void;
    readonly removeExitListener: (listener: () => void) => void;
    readonly addSignalListener: (signal: NodeJS.Signals, listener: () => void) => void;
    readonly removeSignalListener: (signal: NodeJS.Signals, listener: () => void) => void;
    readonly signalSelf: (signal: NodeJS.Signals) => void;
}
export interface PlatformProcessBoundary {
    /**
     * Rust parity: upstream invokes `quint.cmd` on Windows and `quint` elsewhere.
     * https://github.com/informalsystems/quint-connect/blob/4f018f54fc7dd4cef341d10111427bab59d3b307/connect/src/trace/generator/utils.rs#L3-L9
     */
    readonly commandName: (name: string) => string;
    readonly executableName: (name: string) => string;
    readonly detached: boolean;
    readonly makeLifecycle: (getActiveProcess: () => ProcessHandle) => {
        readonly complete: () => void;
        readonly interrupt: Effect.Effect<void>;
    };
    readonly countEvaluatorProcesses: Effect.Effect<number>;
    readonly evaluatorCleanupHint: string;
}
export declare const makePlatformProcessBoundary: (deps?: PlatformProcessDeps) => PlatformProcessBoundary;
export declare const platformProcess: PlatformProcessBoundary;
export {};
//# sourceMappingURL=platform-process.d.ts.map