import type { Component, MaybeRef } from 'vue'; /** Stable string key, also compatible with hosts providing the literal key. */ export declare const CHAT_COMPOSER_EXTENSION_KEY = "chat-composer-extension"; /** A synchronous, per-send snapshot owned by the host application. */ export interface ChatPreparedSend { content: string; /** Called only after acceptance, including acceptance into the outbound queue. */ commit?: () => void; /** Read after rejection. Defaults to the original composer text when omitted. */ retryContent?: () => string; } /** Local action listed under "Comandos" in the composer's "/" dropdown. */ export interface ChatComposerCommand { /** Name matched against the text typed after "/", e.g. `templates`. */ id: string; label: string; description?: string; /** Icon class rendered in the dropdown. Defaults to `i-ph-terminal-window`. */ icon?: string; /** Runs after the typed "/query" is removed from the draft. */ run: () => void; } /** Provide above MeistrariChatEmbed to extend its composer without replacing it. */ export interface ChatComposerExtension { /** Action next to the file menu. Receives the composer's `disabled` state. */ component?: Component; /** Items inside the shared attachment strip. Receives `disabled` as well. */ attachmentsComponent?: Component; /** Controls attachment-strip visibility and the textarea's flush layout. */ hasAttachments?: MaybeRef; /** Prepare without consuming host state; commit after the send is accepted. */ prepareSend?: (content: string) => ChatPreparedSend | null | undefined; /** Host commands offered alongside skills when the user types "/". */ commands?: readonly ChatComposerCommand[]; }