import { AllowedComponentProps } from 'vue'; import { App } from 'vue'; import { ComponentCustomProps } from 'vue'; import { ComponentOptionsMixin } from 'vue'; import { ComponentProvideOptions } from 'vue'; import { ComputedRef } from 'vue'; import { DefineComponent } from 'vue'; import { MaybeRefOrGetter } from 'vue'; import { PublicProps } from 'vue'; import { Ref } from 'vue'; import { ShallowUnwrapRef } from 'vue'; import { VNode } from 'vue'; import { VNodeProps } from 'vue'; declare const __VLS_component: DefineComponent any; "update-progress-time": (value: string) => any; }, string, PublicProps, Readonly & Readonly<{ "onHover-audio-progress"?: ((hovering: boolean) => any) | undefined; "onUpdate-progress-time"?: ((value: string) => any) | undefined; }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, { player: HTMLAudioElement; }, HTMLDivElement>; declare const __VLS_component_10: DefineComponent & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_11: DefineComponent any; }, string, PublicProps, Readonly & Readonly<{ "onClose-media-preview"?: (() => any) | undefined; }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, { modal: HTMLDivElement; }, any>; declare const __VLS_component_12: DefineComponent any; "message-action-handler": (payload: { action: Action; message: MessageModel; }) => any; "send-message-reaction": (payload: { emoji: string; message: MessageModel; }) => any; "open-file": (payload: { file: MessageFileModel; action: "preview" | "download"; }) => any; "select-message": (message: MessageModel) => any; "open-failed-message": (message: MessageModel) => any; }, string, PublicProps, Readonly & Readonly<{ "onClick-user-tag"?: ((user: User) => any) | undefined; "onMessage-action-handler"?: ((payload: { action: Action; message: MessageModel; }) => any) | undefined; "onSend-message-reaction"?: ((payload: { emoji: string; message: MessageModel; }) => any) | undefined; "onOpen-file"?: ((payload: { file: MessageFileModel; action: "preview" | "download"; }) => any) | undefined; "onSelect-message"?: ((message: MessageModel) => any) | undefined; "onOpen-failed-message"?: ((message: MessageModel) => any) | undefined; }>, { users: User[]; messageSelectionEnabled: boolean; textFormatting: Partial; actions: Action[]; showReactionEmojis: boolean; selected: boolean; }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>; declare const __VLS_component_13: DefineComponent any; "send-message-reaction": (payload: { emoji: string; message: MessageModel; }) => any; }, string, PublicProps, Readonly & Readonly<{ "onMessage-action-handler"?: ((payload: { action: Action; message: MessageModel; }) => any) | undefined; "onSend-message-reaction"?: ((payload: { emoji: string; message: MessageModel; }) => any) | undefined; }>, { actions: Action[]; showReactionEmojis: boolean; }, {}, {}, {}, string, ComponentProvideOptions, false, { reactionTrigger: HTMLButtonElement; reactionMenu: HTMLDivElement; optionsTrigger: HTMLButtonElement; optionsMenu: HTMLDivElement; }, any>; declare const __VLS_component_14: DefineComponent any; }, string, PublicProps, Readonly & Readonly<{ "onOpen-file"?: ((payload: { file: MessageFileModel; action: "preview" | "download"; }) => any) | undefined; }>, { messageSelectionEnabled: boolean; }, {}, {}, {}, string, ComponentProvideOptions, false, { imageRef: HTMLDivElement; }, HTMLDivElement>; declare const __VLS_component_15: DefineComponent any; "open-file": (payload: { file: MessageFileModel; action: "preview" | "download"; }) => any; }, string, PublicProps, Readonly & Readonly<{ "onClick-user-tag"?: ((user: User) => any) | undefined; "onOpen-file"?: ((payload: { file: MessageFileModel; action: "preview" | "download"; }) => any) | undefined; }>, { textFormatting: Partial; }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_16: DefineComponent & Readonly<{}>, { textFormatting: Partial; }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_2: DefineComponent any; "send-message": (payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }) => any; "edit-message": (payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any; "typing-message": (value: string) => any; "invalid-file": (payload: { file: File; reason: "size" | "count"; }) => any; "toggle-chat-list": () => any; "show-chat-info": () => any; "menu-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; "cancel-message-selection": () => any; "message-selection-action-handler": (payload: { chat: ChatModel; action: Action; messages: MessageModel[]; }) => any; "message-action-handler": (payload: { action: Action; message: MessageModel; }) => any; "send-message-reaction": (payload: { emoji: string; message: MessageModel; }) => any; "open-file": (payload: { file: MessageFileModel; action: "preview" | "download"; }) => any; "open-failed-message": (message: MessageModel) => any; "fetch-messages": () => any; }, string, PublicProps, Readonly & Readonly<{ "onClick-user-tag"?: ((user: User) => any) | undefined; "onSend-message"?: ((payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }) => any) | undefined; "onEdit-message"?: ((payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any) | undefined; "onTyping-message"?: ((value: string) => any) | undefined; "onInvalid-file"?: ((payload: { file: File; reason: "size" | "count"; }) => any) | undefined; "onToggle-chat-list"?: (() => any) | undefined; "onShow-chat-info"?: (() => any) | undefined; "onMenu-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; "onCancel-message-selection"?: (() => any) | undefined; "onMessage-selection-action-handler"?: ((payload: { chat: ChatModel; action: Action; messages: MessageModel[]; }) => any) | undefined; "onMessage-action-handler"?: ((payload: { action: Action; message: MessageModel; }) => any) | undefined; "onSend-message-reaction"?: ((payload: { emoji: string; message: MessageModel; }) => any) | undefined; "onOpen-file"?: ((payload: { file: MessageFileModel; action: "preview" | "download"; }) => any) | undefined; "onOpen-failed-message"?: ((message: MessageModel) => any) | undefined; "onFetch-messages"?: (() => any) | undefined; }>, { chat: ChatModel | null; textFormatting: Partial; showSendIcon: boolean; showFiles: boolean; showEmojis: boolean; showFooter: boolean; accept: string; multiple: boolean; capture: "" | "user" | "environment"; maxFiles: number; maxFileSize: number; currentUser: UserReference | null; standalone: boolean; showChatList: boolean; isMobile: boolean; chatInfoEnabled: boolean; selectionActions: Action[]; showReactionEmojis: boolean; messages: MessageModel[]; showNewMessagesDivider: boolean; loadingMessages: boolean; messagesLoaded: boolean; headerActions: Action[]; messageActions: Action[]; composerDisabled: boolean; typingIndicatorPosition: "header" | "composer" | "both" | "none"; autoScroll: { onMount?: boolean; onChatSwitch?: boolean; onSend?: boolean; onReceive?: boolean; }; }, {}, {}, {}, string, ComponentProvideOptions, false, { scrollContainer: HTMLDivElement; }, HTMLDivElement>; declare const __VLS_component_3: DefineComponent any; }, string, PublicProps, Readonly & Readonly<{ "onRemove-file"?: ((index: number) => any) | undefined; }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_4: DefineComponent any; "reset-message": () => any; }, string, PublicProps, Readonly & Readonly<{ "onRemove-file"?: ((index: number) => any) | undefined; "onReset-message"?: (() => any) | undefined; }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>; declare const __VLS_component_5: DefineComponent any; "edit-message": (payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any; "update-edited-message-id": (value: string | null) => any; "typing-message": (value: string) => any; "reset-reply-message": () => any; "reset-edit-message": () => any; "focus-textarea": () => any; "blur-textarea": () => any; "invalid-file": (payload: { file: File; reason: InvalidFileReason; }) => any; }, string, PublicProps, Readonly & Readonly<{ "onSend-message"?: ((payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }) => any) | undefined; "onEdit-message"?: ((payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any) | undefined; "onUpdate-edited-message-id"?: ((value: string | null) => any) | undefined; "onTyping-message"?: ((value: string) => any) | undefined; "onReset-reply-message"?: (() => any) | undefined; "onReset-edit-message"?: (() => any) | undefined; "onFocus-textarea"?: (() => any) | undefined; "onBlur-textarea"?: (() => any) | undefined; "onInvalid-file"?: ((payload: { file: File; reason: InvalidFileReason; }) => any) | undefined; }>, { users: User[]; disabled: boolean; roomMessage: string; showSendIcon: boolean; showFiles: boolean; showEmojis: boolean; showFooter: boolean; initReplyMessage: MessageModel | null; initEditMessage: MessageModel | null; accept: string; multiple: boolean; capture: "" | "user" | "environment"; maxFiles: number; maxFileSize: number; }, {}, {}, {}, string, ComponentProvideOptions, false, { fileInput: HTMLInputElement; }, any>; declare const __VLS_component_6: DefineComponent any; "show-chat-info": () => any; "menu-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; "cancel-message-selection": () => any; "message-selection-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; }, string, PublicProps, Readonly & Readonly<{ "onToggle-chat-list"?: (() => any) | undefined; "onShow-chat-info"?: (() => any) | undefined; "onMenu-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; "onCancel-message-selection"?: (() => any) | undefined; "onMessage-selection-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; }>, { standalone: boolean; showChatList: boolean; isMobile: boolean; chatInfoEnabled: boolean; actions: Array; selectionActions: Array; selectedCount: number; showTypingIndicator: boolean; }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_7: DefineComponent any; "add-chat": () => any; "chat-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; "fetch-more-chats": () => any; "open-chat": (chat: ChatModel) => any; "loading-more-chats": (isLoading: boolean) => any; }, string, PublicProps, Readonly & Readonly<{ "onSearch-chat"?: ((query: string) => any) | undefined; "onAdd-chat"?: (() => any) | undefined; "onChat-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; "onFetch-more-chats"?: (() => any) | undefined; "onOpen-chat"?: ((chat: ChatModel) => any) | undefined; "onLoading-more-chats"?: ((isLoading: boolean) => any) | undefined; }>, { isMobile: boolean; showSearch: boolean; showAddChat: boolean; loadingChats: boolean; chats: Array; showChats: boolean; chatsLoaded: boolean; minimumVisibleChats: number; chatActions: Array; customSearchEnabled: boolean; }, {}, {}, {}, string, ComponentProvideOptions, false, { scrollRootEl: HTMLDivElement; sentinelEl: HTMLDivElement; }, any>; declare const __VLS_component_8: DefineComponent any; }, string, PublicProps, Readonly & Readonly<{ "onChat-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_component_9: DefineComponent any; "add-chat": () => any; }, string, PublicProps, Readonly & Readonly<{ "onSearch-chat"?: ((query: string) => any) | undefined; "onAdd-chat"?: (() => any) | undefined; }>, { showSearch: boolean; showAddChat: boolean; loadingChats: boolean; chats: Array; }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>; declare type __VLS_PrettifyLocal = { [K in keyof T]: T[K]; } & {}; declare function __VLS_template(): { attrs: Partial<{}>; slots: Partial any>> & Partial any>>; refs: { player: HTMLAudioElement; }; rootEl: HTMLDivElement; }; declare function __VLS_template_10(): { attrs: Partial<{}>; slots: { default?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_11(): { attrs: Partial<{}>; slots: { 'preview-close-icon'?(_: {}): any; }; refs: { modal: HTMLDivElement; }; rootEl: any; }; declare function __VLS_template_12(): { attrs: Partial<{}>; slots: Partial any>> & Partial any>> & Partial any>>; refs: {}; rootEl: any; }; declare function __VLS_template_13(): { attrs: Partial<{}>; slots: Partial any>> & Partial any>>; refs: { reactionTrigger: HTMLButtonElement; reactionMenu: HTMLDivElement; optionsTrigger: HTMLButtonElement; optionsMenu: HTMLDivElement; }; rootEl: any; }; declare function __VLS_template_14(): { attrs: Partial<{}>; slots: Partial any>> & Partial any>>; refs: { imageRef: HTMLDivElement; }; rootEl: HTMLDivElement; }; declare function __VLS_template_15(): { attrs: Partial<{}>; slots: { 'document-icon'?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_16(): { attrs: Partial<{}>; slots: { 'file-icon'?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_2(): { attrs: Partial<{}>; slots: { 'no-chat-selected'?(_: {}): any; 'scroll-icon'?(_: {}): any; 'composer-typing'?(_: { typingUsers: string; }): any; }; refs: { scrollContainer: HTMLDivElement; }; rootEl: HTMLDivElement; }; declare function __VLS_template_3(): { attrs: Partial<{}>; slots: { 'image-close-icon'?(_: {}): any; 'file-icon'?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_4(): { attrs: Partial<{}>; slots: { 'files-close-icon'?(_: {}): any; }; refs: {}; rootEl: any; }; declare function __VLS_template_5(): { attrs: Partial<{}>; slots: { 'reply-close-icon'?(_: {}): any; 'edit-close-icon'?(_: {}): any; 'emoji-picker-icon'?(_: {}): any; 'paperclip-icon'?(_: {}): any; 'send-icon'?(_: {}): any; }; refs: { fileInput: HTMLInputElement; }; rootEl: any; }; declare function __VLS_template_6(): { attrs: Partial<{}>; slots: { 'chat-header'?(_: {}): any; 'toggle-icon'?(_: {}): any; 'chat-header-avatar'?(_: {}): any; 'chat-header-info'?(_: {}): any; 'chat-options'?(_: {}): any; 'menu-icon'?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_7(): { attrs: Partial<{}>; slots: { 'chats-header'?(_: {}): any; 'chats-search'?(_: {}): any; 'chats-empty'?(_: {}): any; }; refs: { scrollRootEl: HTMLDivElement; sentinelEl: HTMLDivElement; }; rootEl: any; }; declare function __VLS_template_8(): { attrs: Partial<{}>; slots: Partial any>> & Partial any>> & Partial any>> & Partial any>> & Partial any>> & Partial any>> & Partial any>>; refs: {}; rootEl: HTMLDivElement; }; declare function __VLS_template_9(): { attrs: Partial<{}>; slots: { 'search-icon'?(_: {}): any; 'add-icon'?(_: {}): any; }; refs: {}; rootEl: HTMLDivElement; }; declare type __VLS_TemplateResult = ReturnType; declare type __VLS_TemplateResult_10 = ReturnType; declare type __VLS_TemplateResult_11 = ReturnType; declare type __VLS_TemplateResult_12 = ReturnType; declare type __VLS_TemplateResult_13 = ReturnType; declare type __VLS_TemplateResult_14 = ReturnType; declare type __VLS_TemplateResult_15 = ReturnType; declare type __VLS_TemplateResult_16 = ReturnType; declare type __VLS_TemplateResult_2 = ReturnType; declare type __VLS_TemplateResult_3 = ReturnType; declare type __VLS_TemplateResult_4 = ReturnType; declare type __VLS_TemplateResult_5 = ReturnType; declare type __VLS_TemplateResult_6 = ReturnType; declare type __VLS_TemplateResult_7 = ReturnType; declare type __VLS_TemplateResult_8 = ReturnType; declare type __VLS_TemplateResult_9 = ReturnType; declare type __VLS_WithTemplateSlots = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_10 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_11 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_12 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_13 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_14 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_15 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_16 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_2 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_3 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_4 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_5 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_6 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_7 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_8 = T & { new (): { $slots: S; }; }; declare type __VLS_WithTemplateSlots_9 = T & { new (): { $slots: S; }; }; /** * A user-triggerable action surfaced through one of the dropdown menus * (header, message, chat row, or message-selection toolbar). Identified * by `id` for routing in the consumer's `*-action-handler`; rendered * with `label`. */ export declare interface Action { id: string; label: string; /** * Optional leading icon. Resolves to a built-in `SvgIcon` name when * the value matches one (e.g. `'pencil'`, `'deleted'`, `'send'`); * otherwise consumers can override the icon slot. */ icon?: string; /** * When true, the action only appears on messages sent by the current * user (typical for `edit`/`delete`). */ ownMessageOnly?: boolean; } export declare const AdvancedChat: DefineComponent any; "send-message": (payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }) => any; "edit-message": (payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any; "typing-message": (value: string) => any; "invalid-file": (payload: { file: File; reason: "size" | "count"; }) => any; "show-chat-info": (chat: ChatModel) => any; "menu-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; "cancel-message-selection": () => any; "message-selection-action-handler": (payload: { chat: ChatModel; action: Action; messages: MessageModel[]; }) => any; "message-action-handler": (payload: { action: Action; message: MessageModel; }) => any; "send-message-reaction": (payload: { emoji: string; message: MessageModel; }) => any; "open-file": (payload: { file: MessageFileModel; action: "preview" | "download"; }) => any; "open-failed-message": (message: MessageModel) => any; "fetch-messages": () => any; "search-chat": (query: string) => any; "add-chat": () => any; "chat-action-handler": (payload: { chat: ChatModel; action: Action; }) => any; "fetch-more-chats": () => any; "open-chat": (chat: ChatModel) => any; retry: () => any; }, string, PublicProps, Readonly & Readonly<{ "onClick-user-tag"?: ((user: User) => any) | undefined; "onSend-message"?: ((payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }) => any) | undefined; "onEdit-message"?: ((payload: { messageId: MessageModel["id"]; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }) => any) | undefined; "onTyping-message"?: ((value: string) => any) | undefined; "onInvalid-file"?: ((payload: { file: File; reason: "size" | "count"; }) => any) | undefined; "onShow-chat-info"?: ((chat: ChatModel) => any) | undefined; "onMenu-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; "onCancel-message-selection"?: (() => any) | undefined; "onMessage-selection-action-handler"?: ((payload: { chat: ChatModel; action: Action; messages: MessageModel[]; }) => any) | undefined; "onMessage-action-handler"?: ((payload: { action: Action; message: MessageModel; }) => any) | undefined; "onSend-message-reaction"?: ((payload: { emoji: string; message: MessageModel; }) => any) | undefined; "onOpen-file"?: ((payload: { file: MessageFileModel; action: "preview" | "download"; }) => any) | undefined; "onOpen-failed-message"?: ((message: MessageModel) => any) | undefined; "onFetch-messages"?: (() => any) | undefined; "onSearch-chat"?: ((query: string) => any) | undefined; "onAdd-chat"?: (() => any) | undefined; "onChat-action-handler"?: ((payload: { chat: ChatModel; action: Action; }) => any) | undefined; "onFetch-more-chats"?: (() => any) | undefined; "onOpen-chat"?: ((chat: ChatModel) => any) | undefined; onRetry?: (() => any) | undefined; }>, { height: string; status: "ready" | "loading" | "empty" | "error" | "offline" | "reconnecting" | "permission-denied"; chat: ChatModel | null; textFormatting: Partial; showSendIcon: boolean; showFiles: boolean; showEmojis: boolean; showFooter: boolean; accept: string; multiple: boolean; capture: "" | "user" | "environment"; maxFiles: number; maxFileSize: number; currentUser: UserReference | null; chatInfoEnabled: boolean; selectionActions: Action[]; showReactionEmojis: boolean; messages: MessageModel[]; showNewMessagesDivider: boolean; loadingMessages: boolean; messagesLoaded: boolean; headerActions: Action[]; messageActions: Action[]; composerDisabled: boolean; typingIndicatorPosition: "header" | "composer" | "both" | "none"; autoScroll: { onMount?: boolean; onChatSwitch?: boolean; onSend?: boolean; onReceive?: boolean; }; showSearch: boolean; showAddChat: boolean; loadingChats: boolean; chats: ChatModel[]; showChats: boolean; chatsLoaded: boolean; chatActions: Action[]; customSearchEnabled: boolean; theme: Theme; statusMessage: string; retryLabel: string; }, {}, {}, {}, string, ComponentProvideOptions, false, { container: HTMLDivElement; }, HTMLDivElement>; export declare interface AdvancedChatEvents { /** * Fires on each keystroke in the chats search input. Always emitted; * pair with `customSearchEnabled` to opt out of the built-in local * filter and drive results from your backend. */ (e: 'search-chat', query: string): void; /** Fires when the "add chat" button is clicked. */ (e: 'add-chat'): void; /** Fires when the chats list scrolls near the bottom and more chats should be paginated in. */ (e: 'fetch-more-chats'): void; /** Fires when the messages list scrolls near the top and more messages should be paginated in. */ (e: 'fetch-messages'): void; /** Fires when the user selects a chat from the list. */ (e: 'open-chat', chat: ChatModel): void; /** Fires when the chat header is clicked while `chatInfoEnabled` is `true`. */ (e: 'show-chat-info', chat: ChatModel): void; /** Fires when an item in the chat-header menu is selected. */ (e: 'menu-action-handler', payload: { chat: ChatModel; action: Action; }): void; /** Fires when an item in a message's actions menu is selected. */ (e: 'message-action-handler', payload: { action: Action; message: MessageModel; }): void; /** Fires when a bulk-selection action is invoked, with the currently-selected messages. */ (e: 'message-selection-action-handler', payload: { chat: ChatModel; action: Action; messages: MessageModel[]; }): void; /** Fires when an item in a chat-list item's actions menu is selected. */ (e: 'chat-action-handler', payload: { chat: ChatModel; action: Action; }): void; /** Fires when the user exits message-selection mode. */ (e: 'cancel-message-selection'): void; /** Fires when a message file is clicked; `action` is `'preview'` for media and `'download'` for other files. */ (e: 'open-file', payload: { file: MessageFileModel; action: 'preview' | 'download'; }): void; /** Fires when the user clicks a failed message to retry sending. */ (e: 'open-failed-message', message: MessageModel): void; /** Fires when the viewer adds or removes a reaction; the host should toggle the emoji on the message. */ (e: 'send-message-reaction', payload: { emoji: string; message: MessageModel; }): void; /** Fires when an `@user` tag in a rendered message is clicked. */ (e: 'click-user-tag', user: User): void; /** Fires (debounced) as the viewer types in the composer; emit typing presence upstream. */ (e: 'typing-message', value: string): void; /** Fires when the viewer sends a new message. */ (e: 'send-message', payload: { content: string; files: ChatFileItem[]; mentionedUsers: User[]; reply?: MessageModel | null; }): void; /** Fires when the viewer commits an edit to an existing message. */ (e: 'edit-message', payload: { messageId: MessageModel['id']; content: string; files: ChatFileItem[]; mentionedUsers: User[]; }): void; /** * Re-emitted from `Chat`/`ChatFooter` when a pending file is rejected * by a configured `maxFiles` / `maxFileSize` limit. */ (e: 'invalid-file', payload: { file: File; reason: 'size' | 'count'; }): void; /** Fires when the user activates the retry action in an error state. */ (e: 'retry'): void; } export declare interface AdvancedChatOptions { localization?: Localization; strings?: Partial; } export declare const AdvancedChatPlugin: ({ localization, strings }?: AdvancedChatOptions) => AdvancedChatPluginType; export declare interface AdvancedChatPluginType { install: (app: App) => void; } export declare interface AdvancedChatProps { /** Outer container height as a CSS length. Defaults to `'600px'`. */ height?: string; /** Visual theme. Defaults to `'auto'`, which follows the user's OS preference. */ theme?: Theme; /** Identifies the viewer; required to render most UI. Defaults to `null`. */ currentUser?: UserReference | null; /** Chats shown in the left-hand list. */ chats?: ChatModel[]; /** Initially-active chat; the inner `Chat` switches to this when it changes. */ chat?: ChatModel | null; /** Messages for the active chat. */ messages?: MessageModel[]; /** Shows the chats-list spinner while `true`. */ loadingChats?: boolean; /** Set to `true` once all chats have been delivered to disable further `fetch-more-chats`. */ chatsLoaded?: boolean; /** Shows the messages spinner while `true`. */ loadingMessages?: boolean; /** Set to `true` once all messages for the active chat have been delivered. */ messagesLoaded?: boolean; /** Items rendered in the chat-header overflow menu. */ headerActions?: Action[]; /** Items rendered in each message's actions menu. */ messageActions?: Action[]; /** Items rendered in each chat-list item's actions menu. */ chatActions?: Action[]; /** * Bulk-action items rendered in the message-selection toolbar. Pass * non-empty to enable selection mode; pass empty (the default) to * disable it. Replaces the prior `messageSelectionActions` prop. */ selectionActions?: Action[]; /** Renders the chats sidebar when `true`. Defaults to `true`. */ showChats?: boolean; /** Shows the search input in the chats sidebar. Defaults to `true`. */ showSearch?: boolean; /** Shows the "add chat" button in the chats sidebar. Defaults to `true`. */ showAddChat?: boolean; /** Shows the file-attachment button in the composer. Defaults to `true`. */ showFiles?: boolean; /** Shows the emoji-picker button in the composer. Defaults to `true`. */ showEmojis?: boolean; /** Renders the composer footer. Defaults to `true`. */ showFooter?: boolean; /** Shows the send-icon button in the composer. Defaults to `true`. */ showSendIcon?: boolean; /** Shows the inline emoji-reaction picker on each message. Defaults to `true`. */ showReactionEmojis?: boolean; /** Renders the "new messages" divider above the first unread message. Defaults to `true`. */ showNewMessagesDivider?: boolean; /** * Text-formatting applied to every message body in the active chat. */ textFormatting?: Partial; /** `accept` attribute forwarded to the file input. Defaults to `'*'`. */ accept?: string; /** Allows selecting multiple files in the file picker. Defaults to `true`. */ multiple?: boolean; /** `capture` attribute forwarded to the file input (mobile camera/mic). */ capture?: '' | 'user' | 'environment'; /** Max files in the composer at once. `0` / unset disables. */ maxFiles?: number; /** Max bytes per file. `0` / unset disables. */ maxFileSize?: number; /** * Where to render the typing-users indicator. See `Chat`'s prop for * full semantics. Default `'header'`. */ typingIndicatorPosition?: 'header' | 'composer' | 'both' | 'none'; /** * Auto-scroll policy for the message list. See `Chat`'s prop for * the per-leg semantics. All legs default `true`. */ autoScroll?: { onMount?: boolean; onChatSwitch?: boolean; onSend?: boolean; onReceive?: boolean; }; /** * When `true`, `search-chat` still fires on every keystroke but the * built-in local filter is suppressed — the host renders server-driven * results. */ customSearchEnabled?: boolean; /** When `true`, the header becomes clickable and emits `show-chat-info`. */ chatInfoEnabled?: boolean; /** Operational state shown by the component. Offline states preserve the chat UI. */ status?: 'ready' | 'loading' | 'empty' | 'error' | 'offline' | 'reconnecting' | 'permission-denied'; /** Optional host-provided copy for the operational state. */ statusMessage?: string; /** Optional label for the error-state retry action. */ retryLabel?: string; /** Disables the composer while preserving history and navigation. */ composerDisabled?: boolean; } export declare const AudioControl: DefineComponent any; "change-linehead": (position: number) => any; }, string, PublicProps, Readonly & Readonly<{ "onHover-audio-progress"?: ((hovering: boolean) => any) | undefined; "onChange-linehead"?: ((position: number) => any) | undefined; }>, { percentage: number; }, {}, {}, {}, string, ComponentProvideOptions, false, { progress: HTMLDivElement; }, HTMLDivElement>; export declare interface AudioControlEvents { /** Fires when the cursor enters or leaves the progress bar. */ (e: 'hover-audio-progress', hovering: boolean): void; /** Fires when the user scrubs; `position` is `0`–`1` along the bar. */ (e: 'change-linehead', position: number): void; } export declare interface AudioControlProps { /** Playback position as `0`–`100`. Drives the progress bar fill and dot. Defaults to `0`. */ percentage?: number; /** When `true`, scrubbing is disabled so clicks toggle message selection instead. */ messageSelectionEnabled: boolean; } export declare const AudioPlayer: __VLS_WithTemplateSlots; export declare interface AudioPlayerEvents { /** Fires when the cursor enters or leaves the progress bar. */ (e: 'hover-audio-progress', hovering: boolean): void; /** Fires as playback advances; payload is the current `mm:ss` time, or total duration before playback starts. */ (e: 'update-progress-time', value: string): void; } export declare interface AudioPlayerProps { /** Owning message; its `id` namespaces the underlying `