"use client"; import type { PublicLanguageModel } from "../lib/public-models.ts"; import type { ChatMessage } from "../lib/chat-message-view.ts"; import type { RectificationCaseSnapshotPayload } from "../lib/rectification-surface-state.ts"; import { RectificationAgenticChat } from "./rectification-agentic-chat.tsx"; export type PersistedRectificationTurn = Readonly<{ id: string; role: "user" | "assistant"; text: string | null; status: string; question?: unknown; offer_result_id?: string | null; receipt?: Readonly<{ status: string; phases: readonly string[]; tool_activities?: readonly Readonly<{ tool: string; status: string; methods?: readonly string[]; started_at?: string | null; elapsed_ms?: number | null; detail?: Readonly> | null; }>[]; tools: readonly string[]; methods?: readonly string[]; skill_name?: string; skill_version?: string; }> | null; }>; export type ConversationalBirthTimeRectificationProps = Readonly<{ caseId: string; sessionId: string; readonly: boolean; shouldStartOpening: boolean; initialTurns: readonly PersistedRectificationTurn[]; /** The Case snapshot read together with the turns before the surface mounted; null when hydration failed. */ initialSnapshot: RectificationCaseSnapshotPayload | null; /** The declared birth minute from the profile, shown on the board before any candidate exists. */ declaredTime: string | null; models: readonly PublicLanguageModel[]; selectedModelId: string; onSelectModel: (modelId: string) => void; onMessagesChange?: (messages: ChatMessage[]) => void; onCompleted?: () => void; onPendingChange?: (pending: boolean) => void; onProfileIncomplete?: () => void; onOpenBilling?: (options?: { source?: string }) => void; onSaved?: (time: string, status: "accepted" | "confirmed") => void; onOpeningConsumed?: () => void; pendingConsultationQuestion?: string | null; onRestart?: () => void; headerSlot: HTMLElement | null; }>; export function ConversationalBirthTimeRectification(props: ConversationalBirthTimeRectificationProps) { return ; }