import type { AgentLoopEvent } from '../core/core-types.js';
import type { AgentController } from '../core/index.js';
import { type ErrorRecoveryEvent, type ErrorRecoverySleep } from '../core/session/session-error-recovery.js';
import type { AgentEventFunnel } from './agent-event-funnel.js';
import type { ShortcutXLSessionWriter } from './session-store.js';
import type { EmbeddedErrorRecoverySettings } from './settings.js';
export interface EmbeddedRecoveryWiringOptions {
    readonly agent: AgentController;
    readonly continueAgent: () => Promise<void>;
    readonly sessionStore: ShortcutXLSessionWriter;
    readonly funnel: AgentEventFunnel;
    /**
     * Embedded deliberately exposes only `enabled`. Cross-model fallback is
     * not implemented in embedded — provider/backend fallback runs inside the
     * LLM stream proxy. `EmbeddedErrorRecoverySettings` is structurally
     * assignable to `RuntimeErrorRecoverySettings`, so no adapter is needed.
     */
    readonly getSettings: () => EmbeddedErrorRecoverySettings;
    readonly onRecoveryEvent?: (event: ErrorRecoveryEvent) => void;
    /** Test hook for deterministic recovery integration tests. Production uses real timers. */
    readonly recoverySleep?: ErrorRecoverySleep;
}
export interface EmbeddedRecoveryWiring {
    abort(): void;
    handleAgentEnd(event: AgentLoopEvent): Promise<boolean>;
    prepareForAgentEnd(event: AgentLoopEvent): void;
    wait(): Promise<void>;
}
/** Build the embedded equivalent of CLI `SessionErrorRecovery`. */
export declare function createEmbeddedRecoveryWiring(options: EmbeddedRecoveryWiringOptions): EmbeddedRecoveryWiring;
//# sourceMappingURL=recovery-wiring.d.ts.map