import type { DesktopAsyncInteraction, DesktopInteraction, DesktopRequestResponse } from "./desktop-types.js"; type ProjectedQuestion = { question_id: string; title: string; response_kind: string; allow_free_text: boolean; is_secret?: boolean; options: { option_id: string; label: string; }[]; }; export interface ProjectedDesktopInteraction { conversation_id?: string; watch_id?: string; interaction_id: string; kind: DesktopInteraction["kind"]; status: "pending"; native_thread_id: string; native_turn_id: string; delivery_modes?: string[]; expires_at: string; interaction_prompt_fingerprint: string; questions: ProjectedQuestion[]; command?: string; reason?: string; cwd?: string; network?: { host: string; protocol: string; }; file_changes?: { path: string; kind?: string; diff?: string; diffTruncated?: boolean; }[]; available_actions: Record; }>; } export declare function desktopInteractionIsApproval(item: { kind: string; }): boolean; /** Exact request content, never stream revision or elapsed time, defines freshness. */ export declare function desktopInteractionFingerprint(item: DesktopInteraction): string; export declare function desktopInteractionProjection(item: DesktopInteraction, desktopId: string, watchId?: string): ProjectedDesktopInteraction; /** Reconstruct a whitelist after checking exact subject and task; raw request fields never escape. */ export declare function validateDesktopInteractionProjections(value: unknown, desktopId: unknown, watchId?: unknown, turnId?: unknown): ProjectedDesktopInteraction[]; export declare function desktopQuestionAnswer(interaction: DesktopAsyncInteraction, value: unknown): string; /** Answer every question from one exact native request in a single structured response. */ export declare function desktopQuestionResponse(interaction: DesktopInteraction, value: unknown): Extract; export declare function validateDesktopProjectedAnswer(projection: ProjectedDesktopInteraction, value: unknown): void; export {};