import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import type{DocumentRef}from'../../../ai/types.js';import{LyraElement}from'../../../internal/lyra-element.js';export interface PromptQueueItem{id:string;value:string;attachments?:readonly DocumentRef[];createdAt?:number; /** Opaque caller metadata preserved in proposed queue and send-now payloads. */ metadata?:Record;}export type PromptQueueChangeReason='edit'|'remove'|'reorder';export interface PromptQueueChangeDetail{items:PromptQueueItem[];reason:PromptQueueChangeReason;itemId:string;}export interface LyraPromptQueueEventMap{'lr-queue-change':CustomEvent>;'lr-send-now':CustomEvent>;} /** * `` — a controlled queue of follow-up prompts that can be edited, reordered, * removed, or sent immediately while another agent turn is active. * Item ids are unique occurrence identities. Empty ids and later duplicate occurrences are * ignored before rendering or proposing a mutation, so every `itemId` remains unambiguous. * When the host accepts a removal while that row's action owns focus, the equivalent action on * the nearest surviving row receives focus; an emptied queue focuses its stable region instead. * Controlled updates never steal focus when the removed row did not own it. * * Public item sequences are bounded, frozen snapshots. Admitted item identities remain opaque only * while a descriptor-safe projection copies the queue's display and proposal fields once; later * rendering and events never reread the source row or its opaque metadata. Create a new collection * and reassign it after changes; mutating an assigned array does not update the view. * * @customElement lr-prompt-queue * @event lr-queue-change - A proposed controlled queue update. `detail: { items, reason, itemId }`. * @event lr-send-now - Immediate send was requested. `detail: { item }`. * @csspart base - The queue wrapper. * @csspart heading - The queue heading. * @csspart list - The ordered queue list. * @csspart item - One queued prompt. * @csspart value - Read-only prompt text when `editable` is false. * @csspart editor - A queued prompt editor. * @csspart attachments - The visible attachment-name list for one prompt. * @csspart attachment - One attachment name. * @csspart actions - One item's action row. * @csspart action - Every item action. * @csspart empty - The empty state. * @status stable * @since 7.0.0 */ export declare class LyraPromptQueue extends LyraElement{protected static readonly ownedCollectionProperties:readonly string[]; /** Queue items may carry opaque host metadata. Keep each admitted source identity only while the * canonical projection copies its closed row schema once, rather than deep-cloning unknown data. */ protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];protected static readonly immutableEventDetails:readonly string[]; /** Queue metadata is opaque caller state. Preserve it through the frozen event envelope instead * of recursively reflecting it after the canonical row projection has admitted it. */ protected static readonly identityEventDetailProperties:Readonly<{'lr-send-now':readonly string[];}>;protected static readonly identityEventDetailCollectionItems:Readonly<{'lr-queue-change':readonly string[];}>; /** Controlled queued prompts. Accessor-backed or malformed rows and attachments are omitted; * duplicate nonblank item ids normalize first-wins after full row validation. */ items:readonly PromptQueueItem[];editable:boolean;disabled:boolean;label:string;accessibleLabel:string|null;private pendingRemovalFocus?;private readonly canonicalItemsBySource;private canonicalItemsFor; /** Never reproject a prior retained collection: a caller may have made its opaque rows hostile * after admission, while focused controlled-update recovery needs only its recorded identities. */ private cachedCanonicalItemsFor;private get effectiveItems();protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private emitChange;private edit;private removeItem;private move;private sendNow;private containNativeEvent;private renderItem;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-prompt-queue':LyraPromptQueue;}}