import type { ActiveVoiceGuard } from "../active-owner.ts"; import type { VoiceControllerRuntime } from "./start.ts"; import type { CodexRealtimeConversation } from "../conversation/session.ts"; import type { CodexVoiceSessionMessages } from "../session-messages.ts"; import type { ControllerHandoff } from "./handoff.ts"; /** Serial resource ownership stays in ActiveVoiceGuard; this owner closes each mode and publishes its terminal state. */ export declare class ControllerLifecycle { private readonly runtime; private readonly ownership; private readonly messages; private readonly handoff; private readonly callbacks; constructor(runtime: VoiceControllerRuntime, ownership: ActiveVoiceGuard, messages: CodexVoiceSessionMessages, handoff: ControllerHandoff, callbacks: { cancelRefresh(): void; inputMuted(): boolean; notifyMute(muted: boolean): void; }); endCall(session: CodexRealtimeConversation): Promise; stop(options?: { finishAcceptedWork?: boolean; announce?: boolean; transferring?: boolean; }): Promise; finishDictation(options?: { announce?: boolean; }): Promise; fail(error: Error, failedSession?: CodexRealtimeConversation | undefined): void; }