export type InterruptSubAgentMode = "pause" | "cancel" | "handoff" | "diagnostic";
export type InterruptSubAgentBoundary = "input" | "contract" | "governance" | "runtime-state" | "scope";
export type InterruptSubAgentErrorCode = "MISSING_RUNTIME_ID" | "MISSING_PARENT_AGENT_ID" | "MISSING_SUB_AGENT_ID" | "MISSING_INVOCATION_ID" | "MISSING_REASON" | "RUNTIME_NOT_READY" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "SCOPE_DENIED" | "REAL_INTERRUPT_BLOCKED";
export type InterruptSubAgentGate = {
    accepted: boolean;
    reason?: string;
};
export type InterruptSubAgentTrace = {
    correlationId?: string;
    callerId?: string;
    sessionId?: string;
};
export type InterruptSubAgentRequest = {
    runtimeId?: string;
    parentAgentId?: string;
    subAgentId?: string;
    invocationId?: string;
    reason?: string;
    mode?: InterruptSubAgentMode;
    runtimeReady?: boolean;
    dryRun?: boolean;
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    contract?: InterruptSubAgentGate;
    governance?: InterruptSubAgentGate;
    trace?: InterruptSubAgentTrace;
    observedAt?: string;
};
export type InterruptSubAgentEvent = {
    kind: "multiAgent.subAgent.interrupt";
    eventId: string;
    runtimeId: string;
    parentAgentId: string;
    subAgentId: string;
    invocationId: string;
    reason: string;
    mode: InterruptSubAgentMode;
    requestedScopes: readonly string[];
    grantedScopes: readonly string[];
    deniedScopes: readonly string[];
    trace: InterruptSubAgentTrace;
    observedAt: string;
    dryRun: true;
    subAgentInterrupted: false;
    unsafeSideEffects: false;
};
export type InterruptSubAgentError = {
    code: InterruptSubAgentErrorCode;
    message: string;
    boundary: InterruptSubAgentBoundary;
    publicSafe: true;
};
export type InterruptSubAgentResult = {
    ok: true;
    event: InterruptSubAgentEvent;
    events: readonly string[];
} | {
    ok: false;
    error: InterruptSubAgentError;
    events: readonly string[];
};
export declare function exposeInterruptSubAgentEvent(request?: InterruptSubAgentRequest): InterruptSubAgentResult;
