import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { CodexConversionConfig } from "../../adapter/activation/config.ts"; import { type PreparedRealtimeContext, type RealtimePeerPlan, type VoiceControllerRuntime } from "./start.ts"; import type { CodexRealtimeConversation } from "../conversation/session.ts"; export interface RealtimeContextRefreshOptions { sourceLeafId?: string | undefined; signal?: AbortSignal | undefined; } interface RealtimeContextRefreshCallbacks { inputMuted(): boolean; holdDelegations(): () => void; replace(ctx: ExtensionContext, config: CodexConversionConfig, previous: CodexRealtimeConversation, plan: RealtimePeerPlan | undefined, inputMuted: boolean, prepared: PreparedRealtimeContext, signal: AbortSignal): Promise; } export declare class RealtimeContextRefresh { private readonly pi; private readonly runtime; private readonly callbacks; private abortController; constructor(pi: ExtensionAPI, runtime: VoiceControllerRuntime, callbacks: RealtimeContextRefreshCallbacks); cancel(): void; run(ctx: ExtensionContext, config: CodexConversionConfig, options?: RealtimeContextRefreshOptions): Promise; private isCurrent; } interface ContextReplacementCallbacks { prepareRealtimePrompt(ctx: ExtensionContext): string | undefined; renderStatus(status: string): void; fail(error: Error, previous: CodexRealtimeConversation): void; startReplacement(ctx: ExtensionContext, config: CodexConversionConfig, plan: RealtimePeerPlan | undefined, inputMuted: boolean, prepared: PreparedRealtimeContext, signal: AbortSignal): Promise; } export declare function replaceRealtimeContext({ runtime, callbacks, ctx, config, previous, plan, inputMuted, prepared, signal, }: { runtime: VoiceControllerRuntime; callbacks: ContextReplacementCallbacks; ctx: ExtensionContext; config: CodexConversionConfig; previous: CodexRealtimeConversation; plan: RealtimePeerPlan | undefined; inputMuted: boolean; prepared: PreparedRealtimeContext; signal: AbortSignal; }): Promise; export {};