import React from "react"; import { type AssistantChatProps } from "./AssistantChat.js"; import { type ChatThreadScope } from "./use-chat-threads.js"; export interface ChatTab { id: string; label: string; status: "idle" | "running" | "completed"; /** If this tab is a sub-agent, the parent thread ID */ parentThreadId?: string; /** Short name for sub-agent tabs (e.g. "Research", "Draft email") */ subAgentName?: string; } export interface ChatThreadUrlSyncOptions { /** Query-string parameter used by the generic URL adapter. Default: `thread`. */ paramName?: string; /** * Route-owned thread id. Pass `null` for the create route and a string for * thread routes like `/chat/:threadId`. */ routeThreadId?: string | null; /** Build the URL path for a thread id, or for create mode when id is null. */ getPath?: (threadId: string | null) => string; /** Optional router navigation callback used with `getPath`. */ navigate?: (path: string, options?: { replace?: boolean; }) => void; } export interface MultiTabAssistantChatHeaderProps { tabs: ChatTab[]; activeTabId: string; activeTabMessageCount: number; setActiveTabId: (tabId: string) => void; addTab: () => void; closeTab: (tabId: string) => void; closeOtherTabs: (tabId: string) => void; closeAllTabs: () => void; clearActiveTab: () => void; /** Open the history popover */ showHistory?: boolean; toggleHistory?: () => void; /** Number of open tabs (useful for triggering scroll on tab count change) */ tabCount: number; } export type MultiTabAssistantChatProps = Omit & { /** Show the tab bar. Default: true */ showTabBar?: boolean; /** Optional custom single-row header renderer */ renderHeader?: (props: MultiTabAssistantChatHeaderProps) => React.ReactNode; /** Optional page-level top-bar actions renderer for the active tab. */ renderOverlay?: (props: MultiTabAssistantChatHeaderProps) => React.ReactNode; /** Hide the chat content while keeping the header visible. Used when CLI/resources mode is active. */ contentHidden?: boolean; /** Namespace for localStorage keys — used to isolate chat state per app in the frame. */ storageKey?: string; /** Restore the previously active thread and open tabs from localStorage. */ restoreActiveThread?: boolean; /** Stable browser tab id used for tab-scoped app-state context. */ browserTabId?: string; /** * Keep the active thread in URL state. `true` uses the generic `?thread=id` * adapter; passing `routeThreadId` + `getPath` lets an app bind chats to * route params such as `/chat/:threadId`. */ threadUrlSync?: boolean | ChatThreadUrlSyncOptions; /** Ambient resource context to show as a composer chip. */ scope?: ChatThreadScope | null; /** @deprecated Scope context is now rendered in the composer. */ showScopeBadge?: boolean; }; export declare function MultiTabAssistantChat({ showTabBar, renderHeader, renderOverlay, contentHidden, apiUrl, storageKey, restoreActiveThread, browserTabId, threadUrlSync, scope, ...props }: MultiTabAssistantChatProps): React.JSX.Element; //# sourceMappingURL=MultiTabAssistantChat.d.ts.map