import { FC } from 'react'; import { VoiceTranscriptTurn } from '../../voice/turnVisibility'; /** * This session's spoken turns, on demand. * * The stage shows only what is happening NOW, which is right for a live * conversation and would otherwise mean the history is simply gone. This is * where it goes: secondary, behind a button, and explicitly a VOICE transcript * rather than the chat thread. * * ★ `z-30` is not decoration: the session container is `z-20` docked and * `z-[60]` expanded, and a child at `z-10` painted BEHIND its own parent — the * drawer opened and was invisible. Stacking contexts are per-parent, so this * only has to beat its siblings, not the overlay itself. * * ★ Renders only the turns it is handed, which are already filtered to the * SPOKEN channel — so it can never resurrect the typed conversation the old * overlay used to paint. Note "spoken", not "this session": the marker is a * boolean, so this is the conversation's whole spoken history. The heading below * says so. */ interface Props { turns: ReadonlyArray; onClose: () => void; /** Download the spoken conversation. Hidden when there is nothing to save. */ onSave?: () => void; /** * Leave a note of this exchange in the typed thread and carry on there. * * ★★ Offered on BOTH mounts. This said "only DURING a live session — opened * from the chat panel the user is already in chat, so the button would be a * no-op with a confident label". That reads it as navigation; it is not. It * WRITES the note summarising what was asked aloud, and ending the session is * the side effect. Withheld here, the trace was obtainable only while the * session was still live. * * ★ Undefined once every turn has already been carried over, so the note * cannot be appended twice from a drawer the user can reopen. */ onContinueInChat?: () => void; /** * ★★ Close on Escape. Set on the POST-SESSION mount only. * * During a live session `AssistantVoiceSession` owns Escape and closes this * drawer itself; two handlers would race for one key. But ending a session * with Escape hands back this drawer with that component unmounted, so * nothing was listening and the gesture that opened it could not close it. */ closeOnEscape?: boolean; } export declare const VoiceTranscriptDrawer: FC; export {}; //# sourceMappingURL=VoiceTranscriptDrawer.d.ts.map