import { type ClientOverride } from "../../session-context.js"; import { type ArtifactLabels } from "./artifact-chrome.js"; import { type EditableArtifactRuntimes } from "./editable-artifact-view.js"; import type { SiteToolBridgeFactory } from "./chat-interactive-block.js"; /** An artifact opened from a session: the targets agent links and Site previews name. */ export type SessionArtifactTarget = Readonly<{ kind: "editable-artifact"; artifactId: string; title?: string | undefined; } | { kind: "site"; artifactId: string; title?: string | undefined; }>; /** Every string the viewer shows, including its Site frame and states. */ export type SessionArtifactViewerLabels = Partial; export type SessionArtifactViewerProps = ClientOverride & Readonly<{ /** The conversation the artifact belongs to; the proxy only serves its artifacts. */ sessionId: string; target: SessionArtifactTarget; onClose: () => void; /** Show a Back control, for example to return to the conversation on phones. */ onBack?: (() => void) | undefined; /** Browser kernels and Worker for documents, spreadsheets, and presentations. */ editableRuntimes?: EditableArtifactRuntimes | undefined; theme?: "light" | "dark" | undefined; /** Host-owned Site API access; omit it and Sites render without workspace tools. */ siteToolBridge?: SiteToolBridgeFactory | undefined; labels?: SessionArtifactViewerLabels | undefined; className?: string | undefined; }>; /** * A host-mountable viewer for one editable artifact or Site from a session, * with its own header (title, Back, Close). Mount it in any sized container * (a side panel, a sheet); it fills it. Data flows through the provider's * client and `createSessionProxyHandler({ artifacts: true })`, scoped to * `sessionId`. */ export declare function SessionArtifactViewer({ labels, ...props }: SessionArtifactViewerProps): import("react").JSX.Element;