import { LitElement } from "lit"; import type { PropertyValues, TemplateResult } from "lit"; import "../primitives/index.js"; import "../brand-mark/index.js"; import "../button/index.js"; import "../sidebar-item/index.js"; import "../bubble/index.js"; import "../composer/index.js"; import "../artifact/index.js"; import type { BubbleArtifact, BubbleAttachment } from "../bubble/index.js"; export interface ConversationItem { id: string; title: string; active?: boolean; } export interface ConversationGroup { group: string; items: ConversationItem[]; } export interface ThreadMessage { from: "user" | "bot"; text?: string; html?: string; ts?: string; atts?: BubbleAttachment[]; artifact?: BubbleArtifact | null; } /** * @fires artifact-close - Fired when the artifact panel is closed. * @fires artifact-open - Fired when an artifact is opened. * @fires cancel - Fired when the action is cancelled. * @fires send - Fired when the user sends the composed content. */ export declare class XmChatShell extends LitElement { conversations: ConversationGroup[]; thread: ThreadMessage[]; processing: boolean; thinkingLabel: string; topTitle: string; /** Pin the shell to the viewport (height: 100vh). Default is height: 100% so the shell sizes to its container — embedded hosts get correct sizing for free. Full-bleed previews opt in via the `full-viewport` attribute. */ fullViewport: boolean; private _collapsed; private _activeId; private _openArtifact; private _hasEmpty; private _searchValue; private _copiedIdx; private _copiedTimer; private _artifactBodyNodes; private _artifactCodeNodes; private _emptyNodes; createRenderRoot(): HTMLElement | DocumentFragment; connectedCallback(): void; willUpdate(changed: PropertyValues): void; updated(): void; private _toggleCollapsed; private _selectConv; private _onSearchInput; private _onSearchClear; private _onArtifactOpen; private _onArtifactClose; private _onComposerSend; private _onComposerCancel; private _onCopyMessage; private _renderSidebar; private _renderCollapsedList; private _renderExpandedList; private _renderTopBar; private _renderBubbleRow; render(): TemplateResult; } declare global { interface HTMLElementTagNameMap { "xm-chat-shell": XmChatShell; } }