import { type ProcessHost } from './ProcessHost.ts'; /** Minimal structural hosts remain accepted; an exit capability enables hard escalation. */ export type InterruptJoinHost = Pick & Partial>; export interface InterruptJoinOptions { /** Optional synchronous exit boundary when the interrupt host does not expose one. */ readonly exitHost?: Pick; /** Cleanup budget, default 15 seconds. Finite 0..2,147,483,647 ms; zero disables the watchdog. */ readonly shutdownTimeoutMs?: number; } /** A minimal host can settle the join but cannot request process termination. */ export declare class InterruptJoinEscalationError extends Error { readonly exitCode: number; readonly reason: 'interrupt' | 'timeout'; constructor(exitCode: number, reason: 'interrupt' | 'timeout'); } /** Internal owner of one join's process binding, cleanup deadline, and escalation. */ export declare class InterruptJoin { #private; constructor(host: InterruptJoinHost, options?: InterruptJoinOptions); get hasExitCapability(): boolean; beginShutdown(): void; bind(listener: () => Promise | void): void; disposeInterrupt(): void; isEscalation(error: unknown): boolean; run(operation: () => Promise): Promise; wait(promise: Promise): Promise; } //# sourceMappingURL=InterruptJoin.d.ts.map