import type { AbortSignal } from 'bare-abort-controller'; import type { FitProbeRequest } from './engine-fit.js'; import type { FitRunResult, FitRunUnknownReason } from './fit-outcome.js'; export type IsolatedFitUnknownReason = FitRunUnknownReason; export type IsolatedFitResult = FitRunResult; export interface SpawnContext { command: string; options: { args: string[]; platform: string; arch: string; stdio: string[]; env: Record; }; } export interface RuntimeContext { platform: string; arch: string; isAndroid: boolean; isBrowser: boolean; isIOS: boolean; } export interface RunIsolatedFitOptions { timeoutMs?: number; signal?: AbortSignal; spawnProcess?: (context: SpawnContext) => ChildProcess; runtime?: RuntimeContext; environment?: Record; runnerPath?: string; runnerArgs?: string[]; terminationGraceMs?: number; finalKillGraceMs?: number; drainGraceMs?: number; } export interface ErrorEmitter { on(event: 'error', listener: (error: Error) => void): unknown; off(event: 'error', listener: (error: Error) => void): unknown; } export interface ReadableChildStream { setEncoding(encoding: 'utf8'): void; destroy(): void; on(event: 'error', listener: (error: Error) => void): unknown; on(event: 'data', listener: (chunk: string) => void): unknown; off(event: 'error', listener: (error: Error) => void): unknown; off(event: 'data', listener: (chunk: string) => void): unknown; } export interface WritableChildStream { end(data?: string): void; destroy(): void; on(event: 'error', listener: (error: Error) => void): unknown; off(event: 'error', listener: (error: Error) => void): unknown; } export interface ChildProcess { stdin: WritableChildStream | null; stdout: ReadableChildStream | null; stderr: ReadableChildStream | null; kill(signal?: string): boolean; on(event: 'error', listener: (error: Error) => void): unknown; on(event: 'exit' | 'close', listener: (code: number | null, signal: string | number | null) => void): unknown; off(event: 'error', listener: (error: Error) => void): unknown; off(event: 'exit' | 'close', listener: (code: number | null, signal: string | number | null) => void): unknown; } export declare function runIsolatedFit(probe: FitProbeRequest, options?: RunIsolatedFitOptions): Promise;