import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import type{CitationSelectEventDetail,MessagePart}from'../../../ai/types.js';import type{LyraThinkingPanelEventMap}from'../../agent-tools/thinking-panel/thinking-panel.class.js';import type{LyraToolCallChipEventMap}from'../../agent-tools/tool-call-chip/tool-call-chip.class.js';import type{LyraToolResultViewEventMap}from'../../agent-tools/tool-result-view/tool-result-view.class.js';import type{LyraAttachmentChipEventMap}from'../../media/attachment-chip/attachment-chip.class.js';import type{LyraCitationBadgeEventMap}from'../../retrieval/citation-badge/citation-badge.class.js';import type{LyraJsonViewerEventMap}from'../../utility/json-viewer/json-viewer.class.js';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraMarkdownEventMap}from'../markdown/markdown.class.js';import type{LyraWidgetRendererEventMap}from'../widget-renderer/widget-renderer.class.js';export type MessagePartRenderer=(part:MessagePart,index:number)=>unknown; /** Rendering mode for text and reasoning message parts. */ export type MessagePartsContentMode='plain'|'markdown';export interface LyraMessagePartsEventMap extends Omit,LyraThinkingPanelEventMap,LyraToolCallChipEventMap,Omit,LyraAttachmentChipEventMap,Omit,LyraJsonViewerEventMap,Omit{'lr-citation-select':CustomEvent>;'lr-part-retry':CustomEvent>;'lr-render-error':CustomEvent<{error:unknown;}|{toolName:string;error:unknown;}>;} /** * `` — renders ordered, interleavable provider-neutral AI message parts. It * composes Lyra's existing Markdown, reasoning, tool, citation, attachment, widget, JSON, and * media primitives while keeping streaming order stable by part id. * Part ids are unique, nonempty occurrence identities. Empty ids are omitted; when malformed * input repeats an id, the first occurrence wins and later duplicates are ignored. Rendering, * citation ranks, retry payloads, and error announcements all consume that same projection. * Streaming text and reasoning parts forward that state into their nested Markdown renderer, so * parsing/highlighting coalesces until the same-id part becomes complete. * Streaming text and reasoning show accumulated plain text; Markdown parsing and syntax * highlighting wait until that part completes. * * Citation ranks are derived in one linear render prepass, including for mixed streaming arrays. * * Public collection properties take bounded, clone-owned readonly snapshots. Create a new * collection and reassign it after changes; mutating the assigned array does not update the view. * * @customElement lr-message-parts * @event lr-citation-select - A citation part was activated. `detail: { citation }`. * @event lr-part-retry - Retry was requested for a retryable error part. `detail: { part }`. * @event lr-toggle - Passthrough from a rendered reasoning panel. * @event lr-tool-call-chip-select - Passthrough from a rendered tool-call chip. The * `lr-tool-chip-select` alias it replaced was removed in 9.0.0. * @event lr-render-error - Passthrough from rendered Markdown, tool-result, or widget content. * @event lr-link-click - Passthrough from rendered Markdown. * @event lr-highlight-activate - Passthrough from rendered Markdown. * @event lr-text-select - Passthrough from rendered Markdown. * @event lr-anchor-result - Passthrough from rendered Markdown. * @event lr-preview-request - Passthrough from a rendered attachment. Not cancelable since 10.0.0. * @event lr-retry - Passthrough from a rendered attachment. * @event lr-remove - Passthrough from a rendered attachment. * @event lr-citation-open - Passthrough from a rendered citation's full-preview action. * @event lr-copy - Passthrough from rendered JSON content. * @event lr-search-change - Passthrough from rendered JSON content. * @event lr-widget-action - Passthrough from a rendered declarative widget. * @event lr-widget-state-change - Passthrough from a rendered controlled widget. * @csspart base - The ordered message-part list. * @csspart part - Every rendered part wrapper. * @csspart part-streaming - Additional part name on a streaming part. * @csspart text - A text part. * @csspart reasoning - A reasoning part. * @csspart tool-call - A tool-call part. * @csspart tool-result - A tool-result part. * @csspart tool-result-error - Error copy for a failed tool-result part. * @csspart citation - A citation part. * @csspart attachment - An attachment part. * @csspart data - A data or widget part. * @csspart audio - An audio part. * @csspart audio-control - The native audio playback control. * @csspart audio-transcript - An audio part's transcript. * @csspart error - An error part. * @csspart retry - A retryable error part's action. * @cssprop [--lr-message-parts-streaming-color=var(--lr-color-text-quiet)] - Text color of a streaming part wrapper. * @cssprop [--lr-message-parts-audio-transcript-color=var(--lr-color-text-quiet)] - Text color of an audio transcript. * @cssprop [--lr-message-parts-error-border-color=var(--lr-color-danger)] - Border color of an error part. * @cssprop [--lr-message-parts-error-background=var(--lr-color-danger-quiet)] - Background color of an error part. * @cssprop [--lr-message-parts-error-color=var(--lr-color-danger)] - Text color of an error part. * @status stable * @since 7.0.0 */ export declare class LyraMessageParts extends LyraElement{protected static readonly ownedCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];protected static readonly immutableEventDetails:readonly string[]; /** Ordered message content. */ parts:readonly MessagePart[];private contentModeValue; /** Text/reasoning rendering mode. Unsupported direct or attribute values normalize and reflect * as `markdown`, including when the current value is already `markdown`. */ get contentMode():MessagePartsContentMode;set contentMode(value:MessagePartsContentMode); /** Include reasoning parts. */ showReasoning:boolean; /** Optional host renderer. Returning `undefined` delegates to the built-in renderer. */ renderPart?:MessagePartRenderer; /** `0` (the default) renders every part -- unbounded, matching every prior release. A positive * value windows rendering to the newest N parts (host `parts` data is untouched); citation * ranks are still computed against the full sequence first, so a badge's number stays stable * even once an earlier citation rolls out of the rendered window. Opt in for a message that can * grow an unusually large number of parts (e.g. a long agentic run with many interleaved * tool-call/tool-result parts), where unbounded live DOM can visibly stall the main thread. */ maxRenderedParts:number; /** Accessible name override for the internal message-part group. */ accessibleLabel:string|null;private knownErrorIds;private errorAnnouncementSink?;private suppressNextErrorAnnouncement;connectedCallback():void;disconnectedCallback():void;private get effectiveParts(); /** `maxRenderedParts`, normalized to a finite non-negative integer (falling back to the * property's own default of `0`) -- a raw `NaN` (e.g. an invalid `max-rendered-parts` * attribute) would otherwise make `maxRenderedParts > 0` always false, which happens to already * match the "render all" fallback, but only by the same accidental-`NaN`-comparison quirk this * guard exists to remove. */ private get effectiveMaxRenderedParts(); /** `effectiveParts`, windowed to the newest `effectiveMaxRenderedParts` entries when that cap is * positive. Never affects citation numbering -- ranks are always derived from the full * `effectiveParts` sequence before this window is applied. */ private get renderedParts();protected willUpdate(changed:PropertyValues):void;protected updated(_changed:PropertyValues):void;private selectCitation;private partNames;private renderBuiltin;private renderOne;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-message-parts':LyraMessageParts;}}