@cometchat/chat-uikit-angular 5.0.2 → 5.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,11 @@
1
- import { Observable, Subject, Subscription } from 'rxjs';
2
- import * as _angular_core from '@angular/core';
3
- import { PipeTransform, TemplateRef, Signal, OnDestroy, InjectionToken, WritableSignal, DestroyRef, EventEmitter as EventEmitter$1, AfterViewInit, QueryList, ElementRef, OnChanges, SimpleChanges, OnInit, ChangeDetectorRef, NgZone, DoCheck, Renderer2, ApplicationRef, EnvironmentInjector } from '@angular/core';
1
+ import { Observable, Subject, BehaviorSubject, Subscription } from 'rxjs';
4
2
  import * as _cometchat_chat_sdk_javascript from '@cometchat/chat-sdk-javascript';
5
- import { FlagReason } from '@cometchat/chat-sdk-javascript';
3
+ import { CometChatSettings, FlagReason } from '@cometchat/chat-sdk-javascript';
4
+ import * as _angular_core from '@angular/core';
5
+ import { PipeTransform, TemplateRef, Signal, OnDestroy, InjectionToken, WritableSignal, DestroyRef, EventEmitter as EventEmitter$1, AfterViewInit, QueryList, ElementRef, OnChanges, SimpleChanges, OnInit, ChangeDetectorRef, NgZone, DoCheck, Renderer2, ApplicationRef, EnvironmentInjector, Injector, EffectRef } from '@angular/core';
6
6
  import { Config } from 'dompurify';
7
7
  import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
8
+ import { CometChatCardThemeMode, CometChatCardThemeOverride, CometChatCardActionEvent, CometChatCardAction } from '@cometchat/cards-angular';
8
9
  import { ControlValueAccessor } from '@angular/forms';
9
10
 
10
11
  /**
@@ -646,6 +647,18 @@ declare class CometChatUIKit {
646
647
  getLoggedInUser(): CometChat.User | null;
647
648
  static init(uiKitSettings: UIKitSettings | null): Promise<InitResult> | undefined;
648
649
  init(uiKitSettings: UIKitSettings | null): Promise<InitResult> | undefined;
650
+ /**
651
+ * File-based init for AI agent skills.
652
+ * Accepts a parsed `cometchat-settings.json` object and delegates to the
653
+ * Chat SDK's file-based init, which internally sets
654
+ * `integrationSource = "ai-agent"` for telemetry.
655
+ *
656
+ * This method is independent of `init()` — it does NOT call `init()`.
657
+ * It builds UIKitSettings internally so login/createUser/updateUser keep working.
658
+ *
659
+ * @internal — excluded from public API docs
660
+ */
661
+ static initFromSettings(settings: CometChatSettings): Promise<InitResult>;
649
662
  static isInitialized(): boolean;
650
663
  isInitialized(): boolean;
651
664
  static setLogLevel(level: LogLevel): void;
@@ -685,6 +698,7 @@ declare class CometChatUIKitConstants {
685
698
  call: string;
686
699
  interactive: string;
687
700
  agentic: _cometchat_chat_sdk_javascript.MessageCategory.AGENTIC;
701
+ card: "card";
688
702
  }>;
689
703
  static moderationStatus: Readonly<{
690
704
  pending: _cometchat_chat_sdk_javascript.ModerationStatus.PENDING;
@@ -709,6 +723,21 @@ declare class CometChatUIKitConstants {
709
723
  toolArguments: string;
710
724
  toolResults: string;
711
725
  }>;
726
+ static ExtensionTypes: Readonly<{
727
+ poll: "extension_poll";
728
+ sticker: "extension_sticker";
729
+ whiteboard: "extension_whiteboard";
730
+ document: "extension_document";
731
+ }>;
732
+ static ComposerAttachmentOption: Readonly<{
733
+ image: "image";
734
+ video: "video";
735
+ audio: "audio";
736
+ file: "file";
737
+ poll: "polls";
738
+ collaborativeDocument: "collaborative-document";
739
+ collaborativeWhiteboard: "collaborative-whiteboard";
740
+ }>;
712
741
  static groupMemberAction: Readonly<{
713
742
  ROLE: "role";
714
743
  BLOCK: "block";
@@ -737,7 +766,7 @@ declare class CometChatUIKitConstants {
737
766
  replyInThread: "replyInThread";
738
767
  translateMessage: "translate";
739
768
  reactToMessage: "react";
740
- messageInformation: "messageInformation";
769
+ messageInformation: "info";
741
770
  flagMessage: "flagMessage";
742
771
  copyMessage: "copy";
743
772
  shareMessage: "share";
@@ -2426,6 +2455,55 @@ interface MessageUpdatePayload {
2426
2455
 
2427
2456
  declare var CometChatUIKitCalls: any;
2428
2457
 
2458
+ /**
2459
+ * ConnectionStateService
2460
+ *
2461
+ * A single, root-level service that owns exactly ONE CometChat ConnectionListener
2462
+ * for the entire application. All components and services that need to react to
2463
+ * WebSocket connect/disconnect events should inject this service instead of
2464
+ * registering their own listeners.
2465
+ *
2466
+ * Why one listener?
2467
+ * - The SDK fires the same event to every registered listener simultaneously.
2468
+ * Having N listeners (one per list component) causes N parallel refetches on
2469
+ * reconnect, which is wasteful and can cause race conditions.
2470
+ * - A single shared signal/observable lets any part of the UI (e.g. a
2471
+ * "reconnecting…" banner) read connection state without extra wiring.
2472
+ *
2473
+ * Usage in services:
2474
+ * ```typescript
2475
+ * private connectionState = inject(ConnectionStateService);
2476
+ *
2477
+ * constructor() {
2478
+ * this.connectionState.reconnected$
2479
+ * .pipe(takeUntilDestroyed(this.destroyRef))
2480
+ * .subscribe(() => this.refresh());
2481
+ * }
2482
+ * ```
2483
+ *
2484
+ * Usage in templates:
2485
+ * ```html
2486
+ * @if (connectionState.connected() === false) {
2487
+ * <div class="reconnecting-banner">Reconnecting…</div>
2488
+ * }
2489
+ * ```
2490
+ */
2491
+ declare class ConnectionStateService {
2492
+ private readonly _connected;
2493
+ /** Current connection state as a read-only signal. */
2494
+ readonly connected: _angular_core.Signal<boolean | null>;
2495
+ /**
2496
+ * Observable that emits `true` every time the WebSocket reconnects.
2497
+ * Skips the initial `null → true` transition that happens at app startup
2498
+ * (that is not a reconnect, it is the first connect).
2499
+ */
2500
+ readonly reconnected$: Observable<boolean>;
2501
+ private readonly listenerId;
2502
+ constructor();
2503
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConnectionStateService, never>;
2504
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConnectionStateService>;
2505
+ }
2506
+
2429
2507
  /**
2430
2508
  * ChatStateService
2431
2509
  *
@@ -2537,6 +2615,7 @@ declare class ChatStateService {
2537
2615
  declare class ConversationsService {
2538
2616
  private destroyRef;
2539
2617
  private ngZone;
2618
+ private connectionState;
2540
2619
  private conversationsSignal;
2541
2620
  private loadingStateSignal;
2542
2621
  private errorStateSignal;
@@ -2556,6 +2635,8 @@ declare class ConversationsService {
2556
2635
  readonly hasConversations: _angular_core.Signal<boolean>;
2557
2636
  readonly isLoading: _angular_core.Signal<boolean>;
2558
2637
  readonly hasError: _angular_core.Signal<boolean>;
2638
+ private hasMoreSignal;
2639
+ readonly hasMore: _angular_core.Signal<boolean>;
2559
2640
  private conversationsRequest?;
2560
2641
  private requestBuilder?;
2561
2642
  private messageListenerId;
@@ -2563,6 +2644,8 @@ declare class ConversationsService {
2563
2644
  private groupListenerId;
2564
2645
  private callListenerId;
2565
2646
  private retryAttempts;
2647
+ /** Guard: only re-fetch on reconnect after the first fetch has completed. */
2648
+ private initialFetchDone;
2566
2649
  private ccMessageSentSubscription;
2567
2650
  private ccMessageDeletedSubscription;
2568
2651
  private callEventSubscriptions;
@@ -2573,7 +2656,7 @@ declare class ConversationsService {
2573
2656
  setConversationsRequestBuilder(builder: CometChat.ConversationsRequestBuilder): void;
2574
2657
  setActiveConversation(conversation: CometChat.Conversation | null): void;
2575
2658
  getConversations(): CometChat.Conversation[];
2576
- fetchConversations(builder?: CometChat.ConversationsRequestBuilder): Promise<void>;
2659
+ fetchConversations(builder?: CometChat.ConversationsRequestBuilder, silent?: boolean): Promise<void>;
2577
2660
  fetchNextConversations(): Promise<boolean>;
2578
2661
  deleteConversation(conversationWith: string, conversationType: string): Promise<void>;
2579
2662
  searchConversations(searchText: string): void;
@@ -3062,7 +3145,7 @@ interface MentionSuggestion$1 {
3062
3145
  * Handles sending text/media messages, editing, typing indicators,
3063
3146
  * file upload progress, and mention suggestions.
3064
3147
  *
3065
- * @Injectable providedIn: 'root'
3148
+ * @Injectable provided at component level via CometChatMessageComposerComponent providers
3066
3149
  * @see Requirements 29.1–29.10
3067
3150
  */
3068
3151
  declare class MessageComposerService {
@@ -3449,6 +3532,7 @@ declare class RichTextEditor {
3449
3532
  private ariaLiveRegion;
3450
3533
  private _pendingLinkClick;
3451
3534
  private lastSavedRange;
3535
+ private autofocusTimer;
3452
3536
  private currentFormatState;
3453
3537
  constructor(config: RichTextEditorConfig, element?: HTMLElement);
3454
3538
  private createAriaLiveRegion;
@@ -3830,6 +3914,21 @@ declare class MessageListService {
3830
3914
  flagMessage(message: CometChat.BaseMessage, reasonId: string, remark?: string): Promise<void>;
3831
3915
  }
3832
3916
 
3917
+ /**
3918
+ * Default message types fetched by the MessageList when no custom
3919
+ * `messagesRequestBuilder` is supplied. Exported so consumers can derive their
3920
+ * own type list (e.g. keep all defaults but drop a single extension):
3921
+ *
3922
+ * const types = DEFAULT_MESSAGE_TYPES.filter(t => t !== 'extension_poll');
3923
+ */
3924
+ declare const DEFAULT_MESSAGE_TYPES: readonly string[];
3925
+ /**
3926
+ * Default message categories fetched by the MessageList when no custom
3927
+ * `messagesRequestBuilder` is supplied. Includes the `action` category, which
3928
+ * the MessageList omits at runtime when `hideGroupActionMessages` is set.
3929
+ */
3930
+ declare const DEFAULT_MESSAGE_CATEGORIES: readonly string[];
3931
+
3833
3932
  /**
3834
3933
  * Types for MessageBubbleConfigService.
3835
3934
  */
@@ -4645,7 +4744,12 @@ declare class GroupMembersService {
4645
4744
  private errorCallback;
4646
4745
  private userListenerId;
4647
4746
  private groupListenerId;
4747
+ /** Guard: only re-fetch on reconnect after the first fetch has completed. */
4748
+ private initialFetchDone;
4749
+ private connectionState;
4750
+ private destroyRef;
4648
4751
  private static readonly DEFAULT_LIMIT;
4752
+ constructor();
4649
4753
  setErrorCallback(callback: GroupMembersErrorCallback | null): void;
4650
4754
  /**
4651
4755
  * Initialize the service with a group and optional custom request builder.
@@ -4675,6 +4779,12 @@ declare class GroupMembersService {
4675
4779
  attachListeners(groupGuid: string, hideUserStatus: boolean): void;
4676
4780
  detachListeners(): void;
4677
4781
  cleanup(): void;
4782
+ /**
4783
+ * Called by ConnectionStateService when the WebSocket reconnects.
4784
+ * Silently re-fetches page 1 without clearing the list or showing shimmer.
4785
+ * Resets hasMore to true so pagination works again from the new first page.
4786
+ */
4787
+ private handleReconnect;
4678
4788
  private handleError;
4679
4789
  private toCometchatException;
4680
4790
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupMembersService, never>;
@@ -6384,6 +6494,62 @@ declare class SearchConversationsService {
6384
6494
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<SearchConversationsService>;
6385
6495
  }
6386
6496
 
6497
+ interface NotificationUnreadCountOptions {
6498
+ /** Filter count by category */
6499
+ category?: string;
6500
+ /** Polling interval in ms. Default: 30000 */
6501
+ pollingInterval?: number;
6502
+ }
6503
+ /**
6504
+ * NotificationUnreadCountService
6505
+ *
6506
+ * Injectable Angular service for consuming notification feed unread count.
6507
+ * Provides real-time updates via BehaviorSubject, polling, and WebSocket listener.
6508
+ *
6509
+ * Angular equivalent of React's useNotificationUnreadCount hook.
6510
+ *
6511
+ * NOTE: When used alongside CometChatNotificationFeedComponent, both register
6512
+ * separate NotificationFeedListeners. The ViewModel handles feed item insertion,
6513
+ * while this service handles badge count. Both optimistically update on
6514
+ * onFeedItemReceived — the badge may briefly over-count by 1 until the next
6515
+ * polling re-fetch corrects it (within 1 second). This is by design to avoid
6516
+ * tight coupling between the badge and the feed component.
6517
+ *
6518
+ * @Injectable providedIn: 'root'
6519
+ */
6520
+ declare class NotificationUnreadCountService implements OnDestroy {
6521
+ /** Current unread count */
6522
+ readonly count$: BehaviorSubject<number>;
6523
+ /** Whether the initial fetch is in progress */
6524
+ readonly isLoading$: BehaviorSubject<boolean>;
6525
+ private pollingInterval;
6526
+ private listenerId;
6527
+ private isFetching;
6528
+ private isStarted;
6529
+ private focusHandler;
6530
+ /**
6531
+ * Start tracking unread count.
6532
+ * Fetches initial count, registers WebSocket listener, and starts polling.
6533
+ */
6534
+ start(options?: NotificationUnreadCountOptions): void;
6535
+ /**
6536
+ * Stop tracking unread count.
6537
+ * Removes listener, clears polling, removes focus handler.
6538
+ */
6539
+ stop(): void;
6540
+ /**
6541
+ * Manually refresh the unread count.
6542
+ */
6543
+ refresh(): Promise<void>;
6544
+ ngOnDestroy(): void;
6545
+ private fetchCount;
6546
+ private registerListener;
6547
+ private removeListener;
6548
+ private stopPolling;
6549
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotificationUnreadCountService, never>;
6550
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NotificationUnreadCountService>;
6551
+ }
6552
+
6387
6553
  /**
6388
6554
  * Conversation event subjects for handling actions related to conversations (e.g., conversation deletion)
6389
6555
  */
@@ -6419,6 +6585,27 @@ interface IMessages {
6419
6585
  parentMessageId?: number | null;
6420
6586
  }
6421
6587
 
6588
+ /**
6589
+ * Payload for the `ccCardActionClicked` event (Card Messages).
6590
+ * `message` is the owning message — the `CardMessage` for a developer card or
6591
+ * the `AIAssistantMessage` for a nested agent-card block. `action` is the raw
6592
+ * renderer action object, forwarded untouched (the kit performs no behavior).
6593
+ */
6594
+ interface ICardActionEvent {
6595
+ /**
6596
+ * The owning message — `CardMessage` (developer) or `AIAssistantMessage`
6597
+ * (persisted agent card). `null` only for a card tapped while the agent run is
6598
+ * still streaming (no persisted message exists yet; the persisted bubble that
6599
+ * follows is the source of truth).
6600
+ */
6601
+ message: CometChat.BaseMessage | null;
6602
+ /** The renderer's raw discriminated action (`CometChatCardAction`) — forwarded untouched. */
6603
+ action: unknown;
6604
+ /** The renderer element id that emitted the action (for `customCallback`). */
6605
+ elementId?: string;
6606
+ /** The raw card JSON the action originated from (for `customCallback`). */
6607
+ cardJson?: string;
6608
+ }
6422
6609
  /**
6423
6610
  * Message event subjects for handling actions related to messages (e.g., message sent, edited, deleted, etc.)
6424
6611
  */
@@ -6434,6 +6621,12 @@ declare class CometChatMessageEvents {
6434
6621
  */
6435
6622
  static ccMessageRead: Subject<CometChat.BaseMessage>;
6436
6623
  static ccMessageDeleted: Subject<CometChat.BaseMessage>;
6624
+ /**
6625
+ * Emitted when a user taps an action on a card (developer card or nested
6626
+ * agent-card block). Pure forward — the kit performs no behavior; the app
6627
+ * subscribes once and runs the action.
6628
+ */
6629
+ static ccCardActionClicked: Subject<ICardActionEvent>;
6437
6630
  static onTextMessageReceived: Subject<CometChat.TextMessage>;
6438
6631
  static onMessageModerated: Subject<CometChat.BaseMessage>;
6439
6632
  static onMediaMessageReceived: Subject<CometChat.MediaMessage>;
@@ -6450,7 +6643,7 @@ declare class CometChatMessageEvents {
6450
6643
  static onMessageReactionRemoved: Subject<CometChat.ReactionEvent>;
6451
6644
  static onCustomInteractiveMessageReceived: Subject<CometChat.InteractiveMessage>;
6452
6645
  static onFormMessageReceived: Subject<CometChat.InteractiveMessage>;
6453
- static onCardMessageReceived: Subject<CometChat.InteractiveMessage>;
6646
+ static onCardMessageReceived: Subject<CometChat.CardMessage>;
6454
6647
  static onSchedulerMessageReceived: Subject<CometChat.InteractiveMessage>;
6455
6648
  static onAIAssistantMessageReceived: Subject<CometChat.AIAssistantMessage>;
6456
6649
  static onAIToolResultReceived: Subject<CometChat.AIToolResultMessage>;
@@ -6479,7 +6672,7 @@ declare class CometChatMessageEvents {
6479
6672
  static publishMessageReactionRemoved(event: CometChat.ReactionEvent): void;
6480
6673
  static publishCustomInteractiveMessageReceived(message: CometChat.InteractiveMessage): void;
6481
6674
  static publishFormMessageReceived(message: CometChat.InteractiveMessage): void;
6482
- static publishCardMessageReceived(message: CometChat.InteractiveMessage): void;
6675
+ static publishCardMessageReceived(message: CometChat.CardMessage): void;
6483
6676
  static publishSchedulerMessageReceived(message: CometChat.InteractiveMessage): void;
6484
6677
  static publishAIAssistantMessageReceived(message: CometChat.AIAssistantMessage): void;
6485
6678
  static publishAIToolResultReceived(message: CometChat.AIToolResultMessage): void;
@@ -6506,7 +6699,9 @@ declare class CometChatMessageEvents {
6506
6699
  static subscribeOnMessageReactionRemoved(cb: (data: CometChat.ReactionEvent) => void, destroyRef?: DestroyRef): Subscription;
6507
6700
  static subscribeOnCustomInteractiveMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
6508
6701
  static subscribeOnFormMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
6509
- static subscribeOnCardMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
6702
+ static subscribeOnCardMessageReceived(cb: (data: CometChat.CardMessage) => void, destroyRef?: DestroyRef): Subscription;
6703
+ /** Subscribes to card-action clicks; auto-cleans up when destroyRef is given. */
6704
+ static subscribeOnCardActionClicked(cb: (data: ICardActionEvent) => void, destroyRef?: DestroyRef): Subscription;
6510
6705
  static subscribeOnSchedulerMessageReceived(cb: (data: CometChat.InteractiveMessage) => void, destroyRef?: DestroyRef): Subscription;
6511
6706
  static subscribeOnAIAssistantMessageReceived(cb: (data: CometChat.AIAssistantMessage) => void, destroyRef?: DestroyRef): Subscription;
6512
6707
  static subscribeOnAIToolResultReceived(cb: (data: CometChat.AIToolResultMessage) => void, destroyRef?: DestroyRef): Subscription;
@@ -6892,6 +7087,10 @@ declare class CometChatAvatarComponent implements OnChanges {
6892
7087
  /**
6893
7088
  * Generates an accessible label for screen readers.
6894
7089
  * Describes the avatar content for assistive technologies.
7090
+ *
7091
+ * Falls back to a hardcoded template when the localization service has not
7092
+ * been initialized (e.g., in unit tests) so that the aria-label always
7093
+ * contains the name when one is provided.
6895
7094
  */
6896
7095
  get ariaLabel(): string;
6897
7096
  /**
@@ -7216,7 +7415,7 @@ interface LinkPopoverData {
7216
7415
  *
7217
7416
  * A small popover that appears when clicking on a link in the editor.
7218
7417
  * Shows "Edit" and "Remove" buttons for quick link actions.
7219
- * Positioned absolutely relative to the parent composer element.
7418
+ * Positioned above the clicked link using viewport coordinates.
7220
7419
  *
7221
7420
  * @component
7222
7421
  */
@@ -7231,9 +7430,9 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
7231
7430
  url: string;
7232
7431
  /** The link text */
7233
7432
  text: string;
7234
- /** X coordinate (viewport-relative, i.e. clientX) */
7433
+ /** X coordinate (viewport-relative center of the link element) */
7235
7434
  x: number;
7236
- /** Y coordinate (viewport-relative, i.e. clientY) */
7435
+ /** Y coordinate (viewport-relative top of the link element) */
7237
7436
  y: number;
7238
7437
  /** Emitted when the Edit button is clicked */
7239
7438
  editClick: EventEmitter$1<LinkPopoverData>;
@@ -7259,18 +7458,25 @@ declare class CometChatLinkPopoverComponent implements OnInit, AfterViewInit, On
7259
7458
  ngAfterViewInit(): void;
7260
7459
  ngOnDestroy(): void;
7261
7460
  private handleKeydown;
7461
+ /**
7462
+ * Keeps Tab focus cycling within the popover (dialog focus trap), so the
7463
+ * close button and URL link are reachable instead of Tab closing the popover.
7464
+ */
7465
+ private trapTabFocus;
7262
7466
  private focusNextItem;
7263
7467
  private focusPreviousItem;
7264
7468
  private restoreFocus;
7265
7469
  /**
7266
- * Position the popover centered horizontally, just above the composer.
7267
- * Uses estimated popover height for initial placement before layout.
7268
- * In Storybook docs mode, positions relative to the nearest
7269
- * [data-cometchat-container] ancestor instead of the full viewport.
7470
+ * Initial position estimate using link x/y coordinates.
7471
+ * Uses estimated dimensions before the popover has been laid out.
7472
+ */
7473
+ private positionAboveLink;
7474
+ /**
7475
+ * Fallback positioning: center above the composer element.
7270
7476
  */
7271
7477
  private positionAboveComposer;
7272
7478
  /**
7273
- * After layout, refine position using actual popover dimensions.
7479
+ * Refine position after layout using actual popover dimensions.
7274
7480
  */
7275
7481
  private refinePosition;
7276
7482
  /**
@@ -7334,6 +7540,7 @@ declare class CometChatContextMenuComponent implements OnInit, OnDestroy, AfterV
7334
7540
  private boundHandleResize;
7335
7541
  handleKeydown(event: KeyboardEvent): void;
7336
7542
  private focusItemAtIndex;
7543
+ private originalSubMenuParent;
7337
7544
  private closeSubMenu;
7338
7545
  get topMenu(): ContextMenuItem[];
7339
7546
  get subMenu(): ContextMenuItem[];
@@ -7972,6 +8179,7 @@ declare class CometChatConversationsComponent implements OnInit, OnDestroy {
7972
8179
  handleDeleteCancel(): void;
7973
8180
  handleDialogKeydown(event: KeyboardEvent): void;
7974
8181
  private setupSearchDebouncing;
8182
+ onSearch(value: string): void;
7975
8183
  handleSearchBarClick(): void;
7976
8184
  handleKeydown(event: KeyboardEvent): void;
7977
8185
  private handleSelectionKeyboard;
@@ -8500,6 +8708,7 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
8500
8708
  setComponentState(state: ComponentState): void;
8501
8709
  /**
8502
8710
  * Fetches stickers from the CometChat stickers extension.
8711
+ * Retries once if the first attempt fails (handles SDK not ready after page refresh).
8503
8712
  * @see Requirements 8.4, 8.14, 8.15
8504
8713
  */
8505
8714
  fetchStickers(): Promise<void>;
@@ -8571,6 +8780,14 @@ declare class CometChatStickersKeyboardComponent implements OnInit, OnDestroy {
8571
8780
  getRowIndex(index: number): number;
8572
8781
  /** Gets the 1-based column index for ARIA grid navigation */
8573
8782
  getColIndex(index: number): number;
8783
+ /** Total number of grid rows for the current category (aria-rowcount). */
8784
+ getRowCount(): number;
8785
+ /** Roving tabindex for category tabs: only the focused tab is in tab order. */
8786
+ getTabTabIndex(index: number): number;
8787
+ /** Roving tabindex for sticker cells: focused cell (or first when none) is tabbable. */
8788
+ getStickerTabIndex(index: number): number;
8789
+ /** Keeps the roving anchor in sync when a sticker cell receives focus. */
8790
+ onStickerFocus(index: number): void;
8574
8791
  ngOnDestroy(): void;
8575
8792
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStickersKeyboardComponent, never>;
8576
8793
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatStickersKeyboardComponent, "cometchat-stickers-keyboard", never, { "errorStateText": { "alias": "errorStateText"; "required": false; }; "emptyStateText": { "alias": "emptyStateText"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "trapFocus": { "alias": "trapFocus"; "required": false; }; }, { "stickerClick": "stickerClick"; "closeKeyboard": "closeKeyboard"; }, never, never, true, never>;
@@ -8798,10 +9015,15 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
8798
9015
  maxHeight: number;
8799
9016
  enterKeyBehavior: EnterKeyBehavior;
8800
9017
  attachmentOptions?: CometChatMessageComposerAction[];
9018
+ /** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
8801
9019
  maxAttachments: number;
9020
+ /** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
8802
9021
  allowedFileTypes?: string[];
9022
+ /** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
8803
9023
  maxFileSize?: number;
9024
+ /** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
8804
9025
  showAttachmentPreview: boolean;
9026
+ /** @note kept for future attachment preview/queue support; active flow sends selected files directly. */
8805
9027
  enableDragDrop: boolean;
8806
9028
  hideAttachmentButton: boolean;
8807
9029
  hideImageAttachmentOption: boolean;
@@ -8853,7 +9075,9 @@ declare class CometChatMessageComposerComponent implements OnInit, OnDestroy, On
8853
9075
  sendButtonClick: EventEmitter$1<_cometchat_chat_sdk_javascript.BaseMessage>;
8854
9076
  error: EventEmitter$1<_cometchat_chat_sdk_javascript.CometChatException>;
8855
9077
  closePreview: EventEmitter$1<void>;
9078
+ /** @note currently retained for future use; the active file flow sends selected files directly. */
8856
9079
  attachmentAdded: EventEmitter$1<File>;
9080
+ /** @note currently retained for future use; the active file flow sends selected files directly. */
8857
9081
  attachmentRemoved: EventEmitter$1<File>;
8858
9082
  mentionSelected: EventEmitter$1<_cometchat_chat_sdk_javascript.User | _cometchat_chat_sdk_javascript.GroupMember>;
8859
9083
  textInputRef?: ElementRef<HTMLTextAreaElement>;
@@ -9391,8 +9615,13 @@ type MessagePreviewMode = 'reply' | 'edit';
9391
9615
  * </cometchat-message-preview>
9392
9616
  * ```
9393
9617
  */
9394
- declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit, OnDestroy {
9618
+ declare class CometChatMessagePreviewComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {
9395
9619
  private globalConfig;
9620
+ private readonly htmlSanitizer;
9621
+ private readonly formatterConfig;
9622
+ private readonly cdr;
9623
+ _cachedPreviewHasHtml: boolean;
9624
+ _cachedFormattedPreview: string;
9396
9625
  private textFormattersExplicitlySet;
9397
9626
  private _textFormatters;
9398
9627
  /** Title to display in preview - accepts template */
@@ -9479,6 +9708,24 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
9479
9708
  * @see Requirements 7.1, 7.3
9480
9709
  */
9481
9710
  get messageContentPreview(): string;
9711
+ /**
9712
+ * Returns true when the message preview text should be rendered as HTML
9713
+ * (contains markdown, rich text metadata, or SDK mention tags).
9714
+ */
9715
+ get messagePreviewHasHtml(): boolean;
9716
+ /**
9717
+ * Returns sanitized HTML for the preview when messagePreviewHasHtml is true.
9718
+ * Applies the same formatter pipeline as CometChatConversationItem.
9719
+ * Result is single-line (block elements collapsed to spaces).
9720
+ */
9721
+ get formattedMessagePreview(): string;
9722
+ /** Get active formatters — explicit input takes priority over global config defaults. */
9723
+ private getActiveFormatters;
9724
+ /**
9725
+ * Sanitize HTML to safe inline tags, collapsing block elements to spaces
9726
+ * so the preview stays on a single line with ellipsis truncation.
9727
+ */
9728
+ private sanitizePreviewHtml;
9482
9729
  /**
9483
9730
  * Returns the CSS class for the media type icon.
9484
9731
  * Used to display appropriate icons for media messages.
@@ -9500,6 +9747,7 @@ declare class CometChatMessagePreviewComponent implements OnInit, AfterViewInit,
9500
9747
  */
9501
9748
  get containerClass(): string;
9502
9749
  ngOnInit(): void;
9750
+ ngOnChanges(changes: SimpleChanges): void;
9503
9751
  ngAfterViewInit(): void;
9504
9752
  ngOnDestroy(): void;
9505
9753
  private setupResizeObserver;
@@ -9604,6 +9852,40 @@ declare class CometChatTextBubbleComponent implements OnInit, OnChanges, AfterVi
9604
9852
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatTextBubbleComponent, "cometchat-text-bubble", never, { "message": { "alias": "message"; "required": true; }; "alignment": { "alias": "alignment"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "translatedTextOverride": { "alias": "translatedTextOverride"; "required": false; }; }, { "linkClick": "linkClick"; "mentionClick": "mentionClick"; }, never, never, true, never>;
9605
9853
  }
9606
9854
 
9855
+ /** Payload emitted by the bubble's `onCardAction` output. */
9856
+ interface CardBubbleAction {
9857
+ message: CometChat.CardMessage;
9858
+ action: unknown;
9859
+ }
9860
+ declare class CometChatCardBubbleComponent {
9861
+ /** The developer card message to render. */
9862
+ readonly message: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.CardMessage>;
9863
+ /** Theme mode passed straight to the renderer. */
9864
+ themeMode: CometChatCardThemeMode;
9865
+ /** Optional renderer theme overrides. */
9866
+ themeOverride?: CometChatCardThemeOverride;
9867
+ /** Pure-forward of the raw renderer action (developer-card prop channel). */
9868
+ onCardAction: EventEmitter$1<CardBubbleAction>;
9869
+ /** Stringified raw card payload (`''` when there is nothing drawable). */
9870
+ protected readonly cardJson: _angular_core.Signal<string>;
9871
+ /** Whether a non-empty card payload is present. */
9872
+ protected readonly hasCard: _angular_core.Signal<boolean>;
9873
+ /**
9874
+ * Single-line fallback for the empty/invalid-payload case:
9875
+ * `getFallbackText()` → `getText()` → "Card Message". Lazy — the template only
9876
+ * reads it when `hasCard()` is false.
9877
+ */
9878
+ protected readonly fallbackText: _angular_core.Signal<string>;
9879
+ /**
9880
+ * Forwards the raw renderer action on BOTH channels. The bubble runs
9881
+ * no behavior of its own. Apps should act on one channel only to avoid
9882
+ * double-handling (a stable messageId is available for dedupe).
9883
+ */
9884
+ protected handleAction(event: CometChatCardActionEvent): void;
9885
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatCardBubbleComponent, never>;
9886
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatCardBubbleComponent, "cometchat-card-bubble", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; "themeMode": { "alias": "themeMode"; "required": false; }; "themeOverride": { "alias": "themeOverride"; "required": false; }; }, { "onCardAction": "onCardAction"; }, never, never, true, never>;
9887
+ }
9888
+
9607
9889
  /**
9608
9890
  * CometChatImageBubbleComponent renders image messages with single/multi-image layouts,
9609
9891
  * overflow handling, fullscreen gallery, and keyboard accessibility.
@@ -10017,6 +10299,7 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
10017
10299
  private isFirstFetch;
10018
10300
  private initialLoadComplete;
10019
10301
  private userListenerId;
10302
+ constructor();
10020
10303
  ngOnInit(): void;
10021
10304
  ngOnDestroy(): void;
10022
10305
  private initializeUsersManager;
@@ -10024,7 +10307,6 @@ declare class CometChatUsersComponent implements OnInit, OnDestroy {
10024
10307
  private setupUserListener;
10025
10308
  private removeUserListener;
10026
10309
  private setupUserEventSubscriptions;
10027
- private setupConnectionListener;
10028
10310
  private updateUser;
10029
10311
  private refreshUserList;
10030
10312
  fetchNextAndAppendUsers(): void;
@@ -10173,12 +10455,12 @@ declare class CometChatGroupsComponent implements OnInit, OnDestroy {
10173
10455
  readonly States: typeof States;
10174
10456
  private searchSubject$;
10175
10457
  private isFirstFetch;
10458
+ constructor();
10176
10459
  ngOnInit(): void;
10177
10460
  ngOnDestroy(): void;
10178
10461
  private initializeGroupsManager;
10179
10462
  private setupSearchDebouncing;
10180
10463
  private setupGroupListeners;
10181
- private setupConnectionListener;
10182
10464
  private setupGroupEventSubscriptions;
10183
10465
  private refreshGroupList;
10184
10466
  handleLoadMore(): void;
@@ -10495,6 +10777,7 @@ declare class CometChatGroupMemberItemComponent {
10495
10777
  effectiveHideUserStatus: _angular_core.Signal<boolean>;
10496
10778
  effectiveDisableDefaultContextMenu: _angular_core.Signal<boolean>;
10497
10779
  contextMenuOptions?: CometChatOption[];
10780
+ contextMenuRef?: CometChatContextMenuComponent;
10498
10781
  leadingView?: TemplateRef<{
10499
10782
  $implicit: CometChat.GroupMember;
10500
10783
  }>;
@@ -10521,7 +10804,7 @@ declare class CometChatGroupMemberItemComponent {
10521
10804
  get scopeLabel(): string;
10522
10805
  get accessibleLabel(): string;
10523
10806
  handleMouseDown(event: MouseEvent): void;
10524
- handleClick(): void;
10807
+ handleClick(event?: MouseEvent): void;
10525
10808
  onItemFocus(): void;
10526
10809
  onKeyDown(event: KeyboardEvent): void;
10527
10810
  handleContextMenuOpen(): void;
@@ -10651,6 +10934,7 @@ declare class CometChatGroupItemComponent {
10651
10934
  group: CometChat.Group;
10652
10935
  }>;
10653
10936
  itemFocus: EventEmitter$1<void>;
10937
+ contextMenuRef?: CometChatContextMenuComponent;
10654
10938
  readonly Placement: typeof Placement;
10655
10939
  get groupIcon(): string;
10656
10940
  get groupName(): string;
@@ -11770,6 +12054,7 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
11770
12054
  group?: CometChat.Group;
11771
12055
  parentMessageId?: number;
11772
12056
  isAgentChat: boolean;
12057
+ loadLastAgentConversation: boolean;
11773
12058
  messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
11774
12059
  reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
11775
12060
  set textFormatters(value: CometChatTextFormatter[]);
@@ -12033,6 +12318,10 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
12033
12318
  private safeEmitUnreadCountChange;
12034
12319
  private shouldShowSmartRepliesForMessage;
12035
12320
  handleRetryClick(): void;
12321
+ /** Adds a message to the list (used by parent components for temporary messages). */
12322
+ addMessage(message: CometChat.BaseMessage): void;
12323
+ /** Removes a message from the list by ID (used by parent components to remove temporary messages). */
12324
+ removeMessage(messageId: number): void;
12036
12325
  onUserTyping(): void;
12037
12326
  onMessageSent(): void;
12038
12327
  onSmartReplyClick(reply: string): void;
@@ -12083,8 +12372,9 @@ declare class CometChatMessageListComponent implements OnInit, OnDestroy, OnChan
12083
12372
  trackByItem(_index: number, item: MessageListItem): string;
12084
12373
  trackByMessage(_index: number, message: CometChat.BaseMessage): string | number;
12085
12374
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatMessageListComponent, never>;
12086
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMessageListComponent, "cometchat-message-list", never, { "user": { "alias": "user"; "required": false; }; "group": { "alias": "group"; "required": false; }; "parentMessageId": { "alias": "parentMessageId"; "required": false; }; "isAgentChat": { "alias": "isAgentChat"; "required": false; }; "messagesRequestBuilder": { "alias": "messagesRequestBuilder"; "required": false; }; "reactionsRequestBuilder": { "alias": "reactionsRequestBuilder"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "messageAlignment": { "alias": "messageAlignment"; "required": false; }; "scrollToBottomOnNewMessages": { "alias": "scrollToBottomOnNewMessages"; "required": false; }; "quickOptionsCount": { "alias": "quickOptionsCount"; "required": false; }; "disableSoundForMessages": { "alias": "disableSoundForMessages"; "required": false; }; "customSoundForMessages": { "alias": "customSoundForMessages"; "required": false; }; "goToMessageId": { "alias": "goToMessageId"; "required": false; }; "showScrollbar": { "alias": "showScrollbar"; "required": false; }; "hideReceipts": { "alias": "hideReceipts"; "required": false; }; "hideDateSeparator": { "alias": "hideDateSeparator"; "required": false; }; "hideStickyDate": { "alias": "hideStickyDate"; "required": false; }; "hideAvatar": { "alias": "hideAvatar"; "required": false; }; "hideGroupActionMessages": { "alias": "hideGroupActionMessages"; "required": false; }; "hideError": { "alias": "hideError"; "required": false; }; "hideReplyInThreadOption": { "alias": "hideReplyInThreadOption"; "required": false; }; "hideTranslateMessageOption": { "alias": "hideTranslateMessageOption"; "required": false; }; "hideEditMessageOption": { "alias": "hideEditMessageOption"; "required": false; }; "hideDeleteMessageOption": { "alias": "hideDeleteMessageOption"; "required": false; }; "hideReactionOption": { "alias": "hideReactionOption"; "required": false; }; "hideMessagePrivatelyOption": { "alias": "hideMessagePrivatelyOption"; "required": false; }; "hideCopyMessageOption": { "alias": "hideCopyMessageOption"; "required": false; }; "hideMessageInfoOption": { "alias": "hideMessageInfoOption"; "required": false; }; "additionalOptions": { "alias": "additionalOptions"; "required": false; }; "optionsOverride": { "alias": "optionsOverride"; "required": false; }; "hideModerationView": { "alias": "hideModerationView"; "required": false; }; "hideFlagRemarkField": { "alias": "hideFlagRemarkField"; "required": false; }; "hideFlagMessageOption": { "alias": "hideFlagMessageOption"; "required": false; }; "showMarkAsUnreadOption": { "alias": "showMarkAsUnreadOption"; "required": false; }; "startFromUnreadMessages": { "alias": "startFromUnreadMessages"; "required": false; }; "hideReplyOption": { "alias": "hideReplyOption"; "required": false; }; "disableInteraction": { "alias": "disableInteraction"; "required": false; }; "emptyView": { "alias": "emptyView"; "required": false; }; "errorView": { "alias": "errorView"; "required": false; }; "loadingView": { "alias": "loadingView"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "footerView": { "alias": "footerView"; "required": false; }; "hideTimestamp": { "alias": "hideTimestamp"; "required": false; }; "bubbleFooterView": { "alias": "bubbleFooterView"; "required": false; }; "appendView": { "alias": "appendView"; "required": false; }; "listItemTemplate": { "alias": "listItemTemplate"; "required": false; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; }; "errorStateTemplate": { "alias": "errorStateTemplate"; "required": false; }; "loadingStateTemplate": { "alias": "loadingStateTemplate"; "required": false; }; "separatorDateTimeFormat": { "alias": "separatorDateTimeFormat"; "required": false; }; "stickyDateTimeFormat": { "alias": "stickyDateTimeFormat"; "required": false; }; "messageSentAtDateTimeFormat": { "alias": "messageSentAtDateTimeFormat"; "required": false; }; "messageInfoDateTimeFormat": { "alias": "messageInfoDateTimeFormat"; "required": false; }; "showConversationStarters": { "alias": "showConversationStarters"; "required": false; }; "showSmartReplies": { "alias": "showSmartReplies"; "required": false; }; "smartRepliesKeywords": { "alias": "smartRepliesKeywords"; "required": false; }; "smartRepliesDelayDuration": { "alias": "smartRepliesDelayDuration"; "required": false; }; }, { "error": "error"; "threadRepliesClick": "threadRepliesClick"; "reactionClick": "reactionClick"; "reactionListItemClick": "reactionListItemClick"; "smartReplyClick": "smartReplyClick"; "conversationStarterClick": "conversationStarterClick"; "messagePrivatelyClick": "messagePrivatelyClick"; "replyClick": "replyClick"; }, never, never, true, never>;
12375
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMessageListComponent, "cometchat-message-list", never, { "user": { "alias": "user"; "required": false; }; "group": { "alias": "group"; "required": false; }; "parentMessageId": { "alias": "parentMessageId"; "required": false; }; "isAgentChat": { "alias": "isAgentChat"; "required": false; }; "loadLastAgentConversation": { "alias": "loadLastAgentConversation"; "required": false; }; "messagesRequestBuilder": { "alias": "messagesRequestBuilder"; "required": false; }; "reactionsRequestBuilder": { "alias": "reactionsRequestBuilder"; "required": false; }; "textFormatters": { "alias": "textFormatters"; "required": false; }; "messageAlignment": { "alias": "messageAlignment"; "required": false; }; "scrollToBottomOnNewMessages": { "alias": "scrollToBottomOnNewMessages"; "required": false; }; "quickOptionsCount": { "alias": "quickOptionsCount"; "required": false; }; "disableSoundForMessages": { "alias": "disableSoundForMessages"; "required": false; }; "customSoundForMessages": { "alias": "customSoundForMessages"; "required": false; }; "goToMessageId": { "alias": "goToMessageId"; "required": false; }; "showScrollbar": { "alias": "showScrollbar"; "required": false; }; "hideReceipts": { "alias": "hideReceipts"; "required": false; }; "hideDateSeparator": { "alias": "hideDateSeparator"; "required": false; }; "hideStickyDate": { "alias": "hideStickyDate"; "required": false; }; "hideAvatar": { "alias": "hideAvatar"; "required": false; }; "hideGroupActionMessages": { "alias": "hideGroupActionMessages"; "required": false; }; "hideError": { "alias": "hideError"; "required": false; }; "hideReplyInThreadOption": { "alias": "hideReplyInThreadOption"; "required": false; }; "hideTranslateMessageOption": { "alias": "hideTranslateMessageOption"; "required": false; }; "hideEditMessageOption": { "alias": "hideEditMessageOption"; "required": false; }; "hideDeleteMessageOption": { "alias": "hideDeleteMessageOption"; "required": false; }; "hideReactionOption": { "alias": "hideReactionOption"; "required": false; }; "hideMessagePrivatelyOption": { "alias": "hideMessagePrivatelyOption"; "required": false; }; "hideCopyMessageOption": { "alias": "hideCopyMessageOption"; "required": false; }; "hideMessageInfoOption": { "alias": "hideMessageInfoOption"; "required": false; }; "additionalOptions": { "alias": "additionalOptions"; "required": false; }; "optionsOverride": { "alias": "optionsOverride"; "required": false; }; "hideModerationView": { "alias": "hideModerationView"; "required": false; }; "hideFlagRemarkField": { "alias": "hideFlagRemarkField"; "required": false; }; "hideFlagMessageOption": { "alias": "hideFlagMessageOption"; "required": false; }; "showMarkAsUnreadOption": { "alias": "showMarkAsUnreadOption"; "required": false; }; "startFromUnreadMessages": { "alias": "startFromUnreadMessages"; "required": false; }; "hideReplyOption": { "alias": "hideReplyOption"; "required": false; }; "disableInteraction": { "alias": "disableInteraction"; "required": false; }; "emptyView": { "alias": "emptyView"; "required": false; }; "errorView": { "alias": "errorView"; "required": false; }; "loadingView": { "alias": "loadingView"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "footerView": { "alias": "footerView"; "required": false; }; "hideTimestamp": { "alias": "hideTimestamp"; "required": false; }; "bubbleFooterView": { "alias": "bubbleFooterView"; "required": false; }; "appendView": { "alias": "appendView"; "required": false; }; "listItemTemplate": { "alias": "listItemTemplate"; "required": false; }; "emptyStateTemplate": { "alias": "emptyStateTemplate"; "required": false; }; "errorStateTemplate": { "alias": "errorStateTemplate"; "required": false; }; "loadingStateTemplate": { "alias": "loadingStateTemplate"; "required": false; }; "separatorDateTimeFormat": { "alias": "separatorDateTimeFormat"; "required": false; }; "stickyDateTimeFormat": { "alias": "stickyDateTimeFormat"; "required": false; }; "messageSentAtDateTimeFormat": { "alias": "messageSentAtDateTimeFormat"; "required": false; }; "messageInfoDateTimeFormat": { "alias": "messageInfoDateTimeFormat"; "required": false; }; "showConversationStarters": { "alias": "showConversationStarters"; "required": false; }; "showSmartReplies": { "alias": "showSmartReplies"; "required": false; }; "smartRepliesKeywords": { "alias": "smartRepliesKeywords"; "required": false; }; "smartRepliesDelayDuration": { "alias": "smartRepliesDelayDuration"; "required": false; }; }, { "error": "error"; "threadRepliesClick": "threadRepliesClick"; "reactionClick": "reactionClick"; "reactionListItemClick": "reactionListItemClick"; "smartReplyClick": "smartReplyClick"; "conversationStarterClick": "conversationStarterClick"; "messagePrivatelyClick": "messagePrivatelyClick"; "replyClick": "replyClick"; }, never, never, true, never>;
12087
12376
  static ngAcceptInputType_isAgentChat: unknown;
12377
+ static ngAcceptInputType_loadLastAgentConversation: unknown;
12088
12378
  static ngAcceptInputType_scrollToBottomOnNewMessages: unknown;
12089
12379
  static ngAcceptInputType_disableSoundForMessages: unknown;
12090
12380
  static ngAcceptInputType_showScrollbar: unknown;
@@ -12912,7 +13202,7 @@ declare class CometChatReactionInfoComponent implements OnInit, OnChanges {
12912
13202
  /**
12913
13203
  * Current component state: loading, loaded, or error.
12914
13204
  */
12915
- state: _angular_core.WritableSignal<"error" | "loading" | "loaded">;
13205
+ state: _angular_core.WritableSignal<"loading" | "error" | "loaded">;
12916
13206
  /**
12917
13207
  * Formatted names of users who reacted.
12918
13208
  */
@@ -14225,7 +14515,7 @@ declare class CometChatConversationSummaryComponent implements OnInit {
14225
14515
  * 15. Paragraphs
14226
14516
  * 16. GFM tables | col | col |
14227
14517
  */
14228
- type MarkdownNodeType = 'heading' | 'paragraph' | 'bold' | 'italic' | 'strikethrough' | 'inlineCode' | 'codeBlock' | 'blockquote' | 'orderedList' | 'unorderedList' | 'listItem' | 'link' | 'image' | 'hr' | 'lineBreak' | 'table' | 'text';
14518
+ type MarkdownNodeType = 'heading' | 'paragraph' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'inlineCode' | 'codeBlock' | 'blockquote' | 'orderedList' | 'unorderedList' | 'listItem' | 'link' | 'image' | 'hr' | 'lineBreak' | 'table' | 'text';
14229
14519
  interface MarkdownNode {
14230
14520
  type: MarkdownNodeType;
14231
14521
  content?: string;
@@ -14237,6 +14527,7 @@ interface MarkdownNode {
14237
14527
  rows?: string[][];
14238
14528
  headers?: string[];
14239
14529
  }
14530
+ declare function parseInline(text: string): MarkdownNode[];
14240
14531
  declare class CometChatMarkdownParser {
14241
14532
  parse(text: string, streaming?: boolean): MarkdownNode[];
14242
14533
  }
@@ -14266,6 +14557,19 @@ declare class CometChatMarkdownRenderer {
14266
14557
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatMarkdownRenderer, "cometchat-markdown-renderer", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "streaming": { "alias": "streaming"; "required": false; "isSignal": true; }; }, { "imageClick": "imageClick"; }, never, never, true, never>;
14267
14558
  }
14268
14559
 
14560
+ /**
14561
+ * A normalized content block derived from one `AIAssistantElement`.
14562
+ * `text` blocks carry the assistant prose; `card` blocks carry the stringified raw
14563
+ * card payload (or a fallback string when the payload is empty/invalid).
14564
+ */
14565
+ type AIAssistantContentBlock = {
14566
+ kind: 'text';
14567
+ text: string;
14568
+ } | {
14569
+ kind: 'card';
14570
+ cardJson: string;
14571
+ fallback: string;
14572
+ };
14269
14573
  /**
14270
14574
  * CometChatAIAssistantMessageBubble renders a completed AI assistant message
14271
14575
  * with rich markdown formatting via CometChatMarkdownRenderer.
@@ -14279,7 +14583,14 @@ declare class CometChatAIAssistantMessageBubble {
14279
14583
  readonly message: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.AIAssistantMessage>;
14280
14584
  /** Derived text from the message data — re-computes only when message() changes. */
14281
14585
  readonly messageText: _angular_core.Signal<string>;
14282
- /** Current color scheme, updated via window.matchMedia listener. */
14586
+ /**
14587
+ * Ordered content blocks from `getElements()`, or `null`
14588
+ * when the message has no elements (older messages) — in which case the
14589
+ * template falls back to the existing `getText()` markdown render. The
14590
+ * `agentic/assistant` routing is unchanged; only this content view differs.
14591
+ */
14592
+ readonly blocks: _angular_core.Signal<AIAssistantContentBlock[] | null>;
14593
+ /** Current color scheme, updated via window.matchMedia listener. Also handed to nested card renderers as the theme mode. */
14283
14594
  readonly colorScheme: _angular_core.WritableSignal<"light" | "dark">;
14284
14595
  /** Template ref for the image fullscreen viewer dialog. */
14285
14596
  imageViewerTpl: TemplateRef<unknown>;
@@ -14291,10 +14602,28 @@ declare class CometChatAIAssistantMessageBubble {
14291
14602
  * Opens the image in a dialog via CometChatUIEvents.ccShowDialog.
14292
14603
  */
14293
14604
  onImageClick(url: string): void;
14605
+ /**
14606
+ * Pure-forward of a nested agent-card action. This bubble is
14607
+ * kit-instantiated, so no `(onCardAction)` prop reaches the app — the action is
14608
+ * emitted on the global event bus only, carrying the owning AIAssistantMessage.
14609
+ */
14610
+ onCardAction(event: CometChatCardActionEvent): void;
14294
14611
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantMessageBubble, never>;
14295
14612
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatAIAssistantMessageBubble, "cometchat-ai-assistant-message-bubble", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
14296
14613
  }
14297
14614
 
14615
+ /**
14616
+ * A card streamed live inside the AI bubble. Keyed by `cardId`
14617
+ * so the `card_start` loader is replaced in place by the `card` payload.
14618
+ */
14619
+ interface StreamedCard {
14620
+ cardId: string;
14621
+ status: 'loading' | 'ready';
14622
+ /** Loader label from card_start (executionText), shown while status === 'loading'. */
14623
+ label: string;
14624
+ /** Stringified raw card payload, set on the `card` event. */
14625
+ cardJson: string;
14626
+ }
14298
14627
  /**
14299
14628
  * CometChatStreamMessageBubble renders a live-streaming AI response.
14300
14629
  *
@@ -14315,9 +14644,19 @@ declare class CometChatStreamMessageBubble implements OnInit {
14315
14644
  readonly hasError: _angular_core.WritableSignal<boolean>;
14316
14645
  readonly streamedText: _angular_core.WritableSignal<string>;
14317
14646
  readonly toolExecutionText: _angular_core.WritableSignal<string>;
14647
+ /** Cards streamed in this run (loader → rendered), in arrival order. */
14648
+ readonly streamedCards: _angular_core.WritableSignal<StreamedCard[]>;
14318
14649
  readonly hasStreamedContent: _angular_core.Signal<boolean>;
14319
14650
  ngOnInit(): void;
14320
14651
  private _subscribeToStream;
14652
+ /**
14653
+ * Pure-forward of a streamed-card action. No persisted message
14654
+ * exists yet, so the event carries `message: null`; the persisted bubble that
14655
+ * follows is the source of truth.
14656
+ */
14657
+ protected onCardAction(event: CometChatCardActionEvent): void;
14658
+ /** Inserts a new streamed card or updates the existing one (matched by cardId). */
14659
+ private _upsertCard;
14321
14660
  private _registerOfflineListener;
14322
14661
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatStreamMessageBubble, never>;
14323
14662
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatStreamMessageBubble, "cometchat-stream-message-bubble", never, { "chatId": { "alias": "chatId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -14375,6 +14714,7 @@ declare class CometChatToolCallResultBubble {
14375
14714
  */
14376
14715
  declare class CometChatAIAssistantChatHistory implements OnInit {
14377
14716
  private readonly destroyRef;
14717
+ private readonly hostRef;
14378
14718
  readonly shimmerList: readonly number[];
14379
14719
  readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User | undefined>;
14380
14720
  readonly group: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.Group | undefined>;
@@ -14425,6 +14765,11 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
14425
14765
  /** Emits newChatClick with null. */
14426
14766
  onNewChatClick(): void;
14427
14767
  onKeyDown(event: KeyboardEvent, index: number): void;
14768
+ /**
14769
+ * Updates the roving tabindex anchor and moves DOM focus to that option, so
14770
+ * arrow-key navigation actually moves keyboard focus (not just the tabindex).
14771
+ */
14772
+ private moveFocusTo;
14428
14773
  /** Returns tabindex for a given list item index. */
14429
14774
  getTabIndex(index: number): number;
14430
14775
  formatDate(timestampSeconds: number): string;
@@ -14443,9 +14788,10 @@ declare class CometChatAIAssistantChatHistory implements OnInit {
14443
14788
  * Requirements: 10.1–10.18, 11.1, 12.1, 12.3–12.5, 12.7, 13.1, 13.3, 13.4, 13.7,
14444
14789
  * 13.10, 13.12, 13.13, 16.1
14445
14790
  */
14446
- declare class CometChatAIAssistantChat implements OnInit {
14791
+ declare class CometChatAIAssistantChat implements OnInit, AfterViewInit, OnDestroy {
14447
14792
  readonly streamingService: CometChatAIStreamingService;
14448
14793
  private readonly destroyRef;
14794
+ private readonly bubbleConfigService;
14449
14795
  readonly user: _angular_core.InputSignal<_cometchat_chat_sdk_javascript.User>;
14450
14796
  readonly streamingSpeed: _angular_core.InputSignal<number>;
14451
14797
  readonly aiAssistantTools: _angular_core.InputSignal<CometChatAIAssistantTools | undefined>;
@@ -14474,9 +14820,21 @@ declare class CometChatAIAssistantChat implements OnInit {
14474
14820
  readonly sidebarTriggerEl: _angular_core.WritableSignal<HTMLElement | null>;
14475
14821
  readonly hasComposerText: _angular_core.WritableSignal<boolean>;
14476
14822
  readonly activeRunId: _angular_core.WritableSignal<string | null>;
14823
+ /**
14824
+ * Local mutable copy of loadLastAgentConversation. Set to false after the
14825
+ * first load resolves or when "New Chat" is clicked — prevents the message
14826
+ * list from staying in shimmer state forever.
14827
+ */
14828
+ readonly loadLastAgentConversationState: _angular_core.WritableSignal<boolean>;
14829
+ /** Sentinel message ID used for the temporary streaming placeholder message. */
14830
+ private readonly STREAMING_MESSAGE_ID;
14831
+ /** The currently logged-in user (used in templates for sender checks). */
14832
+ readonly loggedInUser: _angular_core.WritableSignal<_cometchat_chat_sdk_javascript.User | null>;
14477
14833
  sidebarContainerRef?: ElementRef<HTMLElement>;
14478
14834
  agentBubbleFooter?: TemplateRef<any>;
14835
+ streamBubbleViewTpl?: TemplateRef<any>;
14479
14836
  composerRef?: CometChatMessageComposerComponent;
14837
+ messageListRef?: CometChatMessageListComponent;
14480
14838
  /** True while the AI is streaming a response for this user. */
14481
14839
  readonly isStreaming: _angular_core.WritableSignal<boolean>;
14482
14840
  /** Suggestion pills: prefer explicit input, fall back to user metadata. */
@@ -14499,6 +14857,8 @@ declare class CometChatAIAssistantChat implements OnInit {
14499
14857
  }>;
14500
14858
  constructor();
14501
14859
  ngOnInit(): void;
14860
+ ngAfterViewInit(): void;
14861
+ ngOnDestroy(): void;
14502
14862
  /** Handle back button click — emits backClick output. */
14503
14863
  onBackClick(): void;
14504
14864
  /** Start a new chat: reset state, stop streaming, bump key. */
@@ -14525,7 +14885,8 @@ declare class CometChatAIAssistantChat implements OnInit {
14525
14885
  handleRetryClick(): void;
14526
14886
  /**
14527
14887
  * Subscribe to the streaming state observable for this user and keep
14528
- * the isStreaming signal in sync.
14888
+ * the isStreaming signal in sync. When streaming stops, remove the
14889
+ * temporary placeholder message from the list.
14529
14890
  */
14530
14891
  private _subscribeToStreamingState;
14531
14892
  /**
@@ -14539,6 +14900,15 @@ declare class CometChatAIAssistantChat implements OnInit {
14539
14900
  * so the stream bubble disappears and only the final message shows.
14540
14901
  */
14541
14902
  private _subscribeToAIMessageReceived;
14903
+ /**
14904
+ * Adds a temporary placeholder message to the message list that triggers
14905
+ * the streaming bubble view via MessageBubbleConfigService.
14906
+ */
14907
+ private _addStreamingMessage;
14908
+ /**
14909
+ * Removes the temporary streaming placeholder message from the message list.
14910
+ */
14911
+ private _removeStreamingMessage;
14542
14912
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatAIAssistantChat, never>;
14543
14913
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatAIAssistantChat, "cometchat-ai-assistant-chat", never, { "user": { "alias": "user"; "required": true; "isSignal": true; }; "streamingSpeed": { "alias": "streamingSpeed"; "required": false; "isSignal": true; }; "aiAssistantTools": { "alias": "aiAssistantTools"; "required": false; "isSignal": true; }; "loadLastAgentConversation": { "alias": "loadLastAgentConversation"; "required": false; "isSignal": true; }; "showSuggestedMessages": { "alias": "showSuggestedMessages"; "required": false; "isSignal": true; }; "suggestedMessages": { "alias": "suggestedMessages"; "required": false; "isSignal": true; }; "showBackButton": { "alias": "showBackButton"; "required": false; "isSignal": true; }; "greetingTemplate": { "alias": "greetingTemplate"; "required": false; "isSignal": true; }; }, { "backClick": "backClick"; }, never, never, true, never>;
14544
14914
  }
@@ -14806,6 +15176,8 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
14806
15176
  toolArguments: string;
14807
15177
  toolResults: string;
14808
15178
  }>;
15179
+ private readonly htmlSanitizer;
15180
+ private readonly formatterConfig;
14809
15181
  private loggedInUser;
14810
15182
  constructor();
14811
15183
  /** Whether the paginated list is in loading state (initial load only) */
@@ -14825,6 +15197,23 @@ declare class CometChatSearchMessagesListComponent implements OnInit, OnChanges,
14825
15197
  getMessageTitle(message: CometChat.BaseMessage): string;
14826
15198
  shouldShowDateSeparator(index: number): boolean;
14827
15199
  getMessageSubtitle(message: CometChat.BaseMessage): string;
15200
+ /**
15201
+ * Returns true when the subtitle for a text message should be rendered as HTML
15202
+ * (i.e. it contains markdown, rich text metadata, or SDK mention tags).
15203
+ * Mirrors CometChatConversationItem.subtitleHasHtml.
15204
+ */
15205
+ subtitleHasHtml(message: CometChat.BaseMessage): boolean;
15206
+ /**
15207
+ * Returns sanitized HTML for the subtitle when subtitleHasHtml() is true.
15208
+ * Mirrors CometChatConversationItem.formatLastMessageSubtitle.
15209
+ */
15210
+ getMessageSubtitleHtml(message: CometChat.BaseMessage): string;
15211
+ /** Prepend "You: " or "SenderName: " as plain text before the HTML subtitle. */
15212
+ private prependSenderHtml;
15213
+ /** Get the active text formatters — explicit input takes priority over global config. */
15214
+ private getFormattersForSubtitle;
15215
+ /** Sanitize HTML to safe inline tags only for search subtitle — single line, truncated. */
15216
+ private sanitizeSubtitleHtml;
14828
15217
  /**
14829
15218
  * Convert SDK mention tags into plain-text `@DisplayName`.
14830
15219
  * Falls back to the UID when a mentioned user is not hydrated on the message.
@@ -14895,5 +15284,469 @@ declare function hasValidSearchCriteria(keyword: string, filters: CometChatSearc
14895
15284
  */
14896
15285
  declare function hasValidMessageSearchCriteria(keyword: string, filters: CometChatSearchFilter[], uid?: string, guid?: string): boolean;
14897
15286
 
14898
- export { AuxiliaryButtonAlignment, ButtonAction, COMETCHAT_GLOBAL_CONFIG, CalendarDatePipe, CallAnnouncerService, CallButtonsService, CallLogsService, CallWorkflow, ChatStateService, CometChatAIAssistantChat, CometChatAIAssistantChatHistory, CometChatAIAssistantMessageBubble, CometChatAIAssistantTools, CometChatAIStreamingService, CometChatActionBubbleComponent, CometChatActionSheetComponent, CometChatActions, CometChatActionsIcon, CometChatActionsView, CometChatAudioBubbleComponent, CometChatAvatarComponent, CometChatButtonComponent, CometChatCallBubbleComponent, CometChatCallButtonsComponent, CometChatCallEvents, CometChatCallLogsComponent, CometChatChangeScopeComponent, CometChatCheckboxComponent, CometChatCollaborativeDocumentBubbleComponent, CometChatCollaborativeWhiteboardBubbleComponent, CometChatConfirmDialogComponent, CometChatContextMenuComponent, CometChatConversationEvents, CometChatConversationItemComponent, CometChatConversationStarterComponent, CometChatConversationSummaryComponent, CometChatConversationsComponent, CometChatCreatePollComponent, CometChatDateComponent, CometChatDeleteBubbleComponent, CometChatDropDownComponent, CometChatEmojiFormatter, CometChatEmojiKeyboardComponent, CometChatErrorBoundaryComponent, CometChatFileBubbleComponent, CometChatFlagMessageDialogComponent, CometChatFullScreenViewerComponent, CometChatGroupEvents, CometChatGroupItemComponent, CometChatGroupMemberItemComponent, CometChatGroupMembersComponent, CometChatGroupsComponent, CometChatImageBubbleComponent, CometChatIncomingCallComponent, CometChatLinkDialogComponent, CometChatLinkPopoverComponent, CometChatListItemComponent, CometChatLocalize, CometChatLogger, CometChatMarkdownFormatter, CometChatMarkdownParser, CometChatMarkdownRenderer, CometChatMediaRecorderComponent, CometChatMentionsFormatter, CometChatMessageBubbleComponent, CometChatMessageComposerAction, CometChatMessageComposerComponent, CometChatMessageEvents, CometChatMessageHeaderComponent, CometChatMessageInformationComponent, CometChatMessageListComponent, CometChatMessagePreviewComponent, CometChatOngoingCallComponent, CometChatOption, CometChatOutgoingCallComponent, CometChatPaginatedListComponent, CometChatPollBubbleComponent, CometChatPopoverComponent, CometChatRadioButtonComponent, CometChatReactionInfoComponent, CometChatReactionListComponent, CometChatReactionsComponent, CometChatSearchBarComponent, CometChatSearchComponent, CometChatSearchConversationsListComponent, CometChatSearchFilter, CometChatSearchMessagesListComponent, CometChatSearchScope, CometChatSmartRepliesComponent, CometChatStickerBubbleComponent, CometChatStickersKeyboardComponent, CometChatStreamMessageBubble, CometChatTemplatesService, CometChatTextBubbleComponent, CometChatTextFormatter, CometChatThreadHeaderComponent, CometChatThreadViewComponent, CometChatToastComponent, CometChatToastService, CometChatToolCallArgumentBubble, CometChatToolCallResultBubble, CometChatTypingIndicatorComponent, CometChatUIEvents, CometChatUIKit, CometChatUIKitCalls, CometChatUIKitConstants, CometChatUrlFormatter, CometChatUserEvents, CometChatUserItemComponent, CometChatUsersComponent, CometChatVideoBubbleComponent, ConversationDatePipe, ConversationSubtitleService, ConversationsService, DateTimePickerMode, DialogFocusManager, DocumentIconAlignment, ElementType, EnterKeyBehavior, FocusTrapService, FormatterConfigService, GridNavigationService, GroupMembersService, HTTPSRequestMethods, HtmlSanitizerService, IconButtonAlignment, IncomingCallService, LabelAlignment, ListNavigationService, ListSelectionManager, LiveAnnouncerService, LogLevel, MENTIONS_LIMIT, MediaControlsService, MentionType, MentionsNavigationService, MentionsTargetElement, MentionsVisibility, MessageBubbleAlignment, MessageBubbleConfigService, MessageComposerService, MessageDatePipe, MessageHeaderService, MessageListAlignment, MessageListService, MessageStatus, MessageUtilsService, MouseEventSource, OngoingCallService, OutgoingCallService, PanelAlignment, Placement, PreviewMessageMode, Receipts, RecordingType, RichTextEditorService, SearchConversationsService, SearchMessagesService, SelectionMode, States, TabAlignment, TabsVisibility, ThemeService, TimestampAlignment, TitleAlignment, ToastType, TranslatePipe, TypeAheadService, UIKitSettings, UIKitSettingsBuilder, UserMemberListType, applyFormatters, closeCurrentMediaPlayer, currentAudioPlayer, formatText, getAvailableFilters, getLocalizedString, getMaxVisibleEmojis, getVisibleFilters, hasValidMessageSearchCriteria, hasValidSearchCriteria, isConversationFilter, isMessageFilter, shouldRenderConversations, shouldRenderMessages, toggleFilter };
14899
- export type { AriaLivePoliteness, AttachmentFile, AudioAttachment, AudioState, BubblePart, BubblePartMap, CalendarObject, CallBubbleStatus, CallButtonClickEvent, CallLogTemplates, CallStatus, CallType, CollaborativePayload, CometChatEmoji, CometChatEmojiCategory, CometChatUiKitWindow, ComponentState, ComposerId, ContextMenuItem, ConversationSlotContext, ConversationSlots, ConversationTemplates, DialogConfig, ErrorCallback, FetchResult, FileAttachment, FocusTrapConfig, FormatterPipelineResult, FullscreenViewerMediaType, GlobalConfig, GridNavigationConfig, GridPosition, GroupMemberTemplates, GroupMembersErrorCallback, GroupTemplates, IAIStreamEvent, IActiveChatChanged, IDialog, IGroupLeft, IGroupMemberAdded, IGroupMemberJoined, IGroupMemberKickedBanned, IGroupMemberScopeChanged, IGroupMemberUnBanned, IMentionsCountWarning, IMessages, IModal, IMouseEvent, IOpenChat, IOwnershipChanged, IPanel, IShowOngoingCall, IncomingCallTemplateContext, InitResult, LinkData, LinkPopoverData, LinkPreviewData, ListNavigationConfig, ListSelectionState, ListTemplates, LocalizationSettings, LogoutResult, MarkdownNode, MarkdownNodeType, MediaAttachment, MediaControlsConfig, MediaControlsResult, MediaLayoutType, MentionData, MentionSuggestion, MentionsNavigationCallbacks, MessageListConfig, MessageListItem, MessageListTemplates, MessagePreviewMode, MessageTypeKey, MessageUpdatePayload, OutgoingCallTemplateContext, PollBubbleOption, PollCreatePayload, PollData, PollOption, PollOptionResult, PollResults, PollVoteErrorEvent, PollVoteEvent, RelativeTimeConfig, RichTextEditorConfig, RichTextFormatState, RichTextMetadata, SearchConversationClickEvent, SearchMessageClickEvent, SearchTemplates, SelectionState, SharedListTemplates, StickerClickEvent, StickerItem, StickerSet, SubtitleFormatter, TextFormatterContext, ToastConfig, TypeAheadConfig, UserReceiptInfo, UserTemplates, VoterInfo };
15287
+ /**
15288
+ * Re-export the SDK's NotificationFeedItem type.
15289
+ * This provides full type safety for all SDK method calls (markFeedItemAsDelivered, etc.)
15290
+ * while giving consumers a convenient import path.
15291
+ */
15292
+ type NotificationFeedItem = CometChat.NotificationFeedItem;
15293
+ /**
15294
+ * Represents a notification category for filter chips.
15295
+ */
15296
+ interface NotificationCategory {
15297
+ id: string;
15298
+ label: string;
15299
+ }
15300
+ /**
15301
+ * Engagement type for feed interactions.
15302
+ */
15303
+ type FeedEngagementType = 'viewed' | 'clicked' | 'interacted';
15304
+ /**
15305
+ * Action triggered from a card element (from @cometchat/cards-angular).
15306
+ */
15307
+ interface CardAction {
15308
+ type: string;
15309
+ params: Record<string, any>;
15310
+ elementId?: string;
15311
+ cardJson?: string;
15312
+ }
15313
+ /**
15314
+ * Timestamp group for feed items grouped by date.
15315
+ */
15316
+ interface TimestampGroup {
15317
+ label: string;
15318
+ items: NotificationFeedItem[];
15319
+ }
15320
+ /**
15321
+ * Style customization for CometChatNotificationFeed.
15322
+ */
15323
+ interface CometChatNotificationFeedStyle {
15324
+ backgroundColor?: string;
15325
+ width?: string;
15326
+ height?: string;
15327
+ headerTitleColor?: string;
15328
+ headerTitleFont?: string;
15329
+ chipActiveBackgroundColor?: string;
15330
+ chipActiveTextColor?: string;
15331
+ chipInactiveBackgroundColor?: string;
15332
+ chipInactiveTextColor?: string;
15333
+ chipBorderColor?: string;
15334
+ badgeBackgroundColor?: string;
15335
+ badgeTextColor?: string;
15336
+ separatorColor?: string;
15337
+ timestampTextColor?: string;
15338
+ timestampFont?: string;
15339
+ cardBackgroundColor?: string;
15340
+ cardBorderColor?: string;
15341
+ cardBorderRadius?: string;
15342
+ cardBorderWidth?: string;
15343
+ unreadIndicatorColor?: string;
15344
+ }
15345
+ /**
15346
+ * Internal screen state for the feed.
15347
+ */
15348
+ type ScreenState = 'loading' | 'loaded' | 'empty' | 'error';
15349
+ /**
15350
+ * Internal state for the NotificationFeed ViewModel.
15351
+ */
15352
+ interface NotificationFeedState {
15353
+ items: NotificationFeedItem[];
15354
+ groupedItems: TimestampGroup[];
15355
+ categories: NotificationCategory[];
15356
+ activeCategory: string | null;
15357
+ totalUnreadCount: number;
15358
+ categoryUnreadCounts: Map<string, number>;
15359
+ screenState: ScreenState;
15360
+ isLoadingMore: boolean;
15361
+ isRefreshing: boolean;
15362
+ isOffline: boolean;
15363
+ error: CometChat.CometChatException | null;
15364
+ hasMorePages: boolean;
15365
+ paginationError: boolean;
15366
+ }
15367
+
15368
+ /**
15369
+ * CometChatNotificationFeed — Main notification feed component.
15370
+ * Displays campaign/promotional notifications in a scrollable list with
15371
+ * card rendering, real-time updates, and engagement reporting.
15372
+ */
15373
+ declare class CometChatNotificationFeedComponent implements OnInit, OnDestroy, AfterViewInit {
15374
+ private ngZone;
15375
+ private cdr;
15376
+ /** Title displayed in the header. Default: localized 'notifications_title' */
15377
+ title: string;
15378
+ /** Whether to show the header. Default: true */
15379
+ showHeader: boolean;
15380
+ /** Whether to show the back button. Default: false */
15381
+ showBackButton: boolean;
15382
+ /** Whether to show filter chips. Default: true */
15383
+ showFilterChips: boolean;
15384
+ /** Deep link: scroll to a specific item by ID */
15385
+ scrollToItemId: string | undefined;
15386
+ /** Custom request builder for fetching feed items */
15387
+ notificationFeedRequestBuilder: any;
15388
+ /** Custom request builder for fetching categories */
15389
+ notificationCategoriesRequestBuilder: any;
15390
+ /** Custom header template */
15391
+ headerView: TemplateRef<any> | undefined;
15392
+ /** Custom empty state template */
15393
+ emptyStateView: TemplateRef<any> | undefined;
15394
+ /** Custom error state template */
15395
+ errorStateView: TemplateRef<any> | undefined;
15396
+ /** Custom loading state template */
15397
+ loadingStateView: TemplateRef<any> | undefined;
15398
+ /** Style customization */
15399
+ style: CometChatNotificationFeedStyle | undefined;
15400
+ /** Card theme mode forwarded to @cometchat/cards-angular */
15401
+ cardThemeMode: 'auto' | 'light' | 'dark';
15402
+ /** Card theme override forwarded to @cometchat/cards-angular */
15403
+ cardThemeOverride: Record<string, any> | undefined;
15404
+ /** Emitted when a feed item is clicked */
15405
+ itemClick: EventEmitter$1<_cometchat_chat_sdk_javascript.NotificationFeedItem>;
15406
+ /** Emitted when a card action button is clicked */
15407
+ actionClick: EventEmitter$1<{
15408
+ item: NotificationFeedItem;
15409
+ action: CometChatCardAction;
15410
+ }>;
15411
+ /** Emitted when an error occurs */
15412
+ error: EventEmitter$1<_cometchat_chat_sdk_javascript.CometChatException>;
15413
+ /** Emitted when back button is pressed */
15414
+ backClick: EventEmitter$1<void>;
15415
+ contentRef: ElementRef<HTMLDivElement>;
15416
+ state: _angular_core.WritableSignal<NotificationFeedState>;
15417
+ private viewModel;
15418
+ private visibilityTracker;
15419
+ private observedItemIds;
15420
+ ngOnInit(): void;
15421
+ ngAfterViewInit(): void;
15422
+ ngOnDestroy(): void;
15423
+ private initVisibilityTracker;
15424
+ /**
15425
+ * Called by the template to observe each feed item element.
15426
+ * Tracks observed items to avoid redundant IntersectionObserver.observe() calls.
15427
+ * Returns null for use in [attr.data-observe] binding.
15428
+ */
15429
+ observeItem(element: HTMLElement, item: NotificationFeedItem): null;
15430
+ onScroll(event: Event): void;
15431
+ onItemClick(item: NotificationFeedItem): void;
15432
+ onCardAction(item: NotificationFeedItem, event: CometChatCardActionEvent): void;
15433
+ onChipClick(category: string | null): void;
15434
+ onRetry(): void;
15435
+ onRetryPagination(): void;
15436
+ onBackClick(): void;
15437
+ private scrollToItem;
15438
+ /**
15439
+ * TrackBy function for grouped items.
15440
+ */
15441
+ trackByGroup(index: number, group: TimestampGroup): string;
15442
+ /**
15443
+ * TrackBy function for feed items.
15444
+ */
15445
+ trackByItem(index: number, item: NotificationFeedItem): string;
15446
+ /**
15447
+ * TrackBy function for categories.
15448
+ */
15449
+ trackByCategory(index: number, cat: NotificationCategory): string;
15450
+ /**
15451
+ * Get the card content as a JSON string for the cards renderer.
15452
+ */
15453
+ getCardJson(item: NotificationFeedItem): string;
15454
+ /**
15455
+ * Get fallback text for card content.
15456
+ * Extracts readable text from the card JSON when @cometchat/cards-angular is not available.
15457
+ */
15458
+ getFallbackText(item: NotificationFeedItem): string;
15459
+ /**
15460
+ * Get category unread count.
15461
+ */
15462
+ getCategoryUnreadCount(categoryId: string): number;
15463
+ /**
15464
+ * Format badge count with 99+ cap.
15465
+ */
15466
+ formatBadgeCount(count: number): string;
15467
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatNotificationFeedComponent, never>;
15468
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatNotificationFeedComponent, "cometchat-notification-feed", never, { "title": { "alias": "title"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "showBackButton": { "alias": "showBackButton"; "required": false; }; "showFilterChips": { "alias": "showFilterChips"; "required": false; }; "scrollToItemId": { "alias": "scrollToItemId"; "required": false; }; "notificationFeedRequestBuilder": { "alias": "notificationFeedRequestBuilder"; "required": false; }; "notificationCategoriesRequestBuilder": { "alias": "notificationCategoriesRequestBuilder"; "required": false; }; "headerView": { "alias": "headerView"; "required": false; }; "emptyStateView": { "alias": "emptyStateView"; "required": false; }; "errorStateView": { "alias": "errorStateView"; "required": false; }; "loadingStateView": { "alias": "loadingStateView"; "required": false; }; "style": { "alias": "style"; "required": false; }; "cardThemeMode": { "alias": "cardThemeMode"; "required": false; }; "cardThemeOverride": { "alias": "cardThemeOverride"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "error": "error"; "backClick": "backClick"; }, never, never, true, never>;
15469
+ static ngAcceptInputType_showHeader: unknown;
15470
+ static ngAcceptInputType_showBackButton: unknown;
15471
+ static ngAcceptInputType_showFilterChips: unknown;
15472
+ }
15473
+
15474
+ /**
15475
+ * ViewModel for CometChatNotificationFeed.
15476
+ * Manages all data operations: fetching, pagination, engagement, real-time updates.
15477
+ */
15478
+ declare class NotificationFeedViewModel {
15479
+ private feedRequestBuilder;
15480
+ private customFeedRequestBuilder;
15481
+ private categoriesRequestBuilder;
15482
+ private listenerId;
15483
+ private pollingInterval;
15484
+ private deliveredItemIds;
15485
+ private fetchVersion;
15486
+ private onStateChange;
15487
+ private state;
15488
+ constructor(onStateChange: (state: NotificationFeedState) => void, feedRequestBuilder?: any, categoriesRequestBuilder?: any);
15489
+ /**
15490
+ * Get current state.
15491
+ */
15492
+ getState(): NotificationFeedState;
15493
+ /**
15494
+ * Update state and notify the view.
15495
+ */
15496
+ private setState;
15497
+ /**
15498
+ * Initialize: fetch categories, first page, register listener.
15499
+ */
15500
+ init(): Promise<void>;
15501
+ /**
15502
+ * Cleanup: remove listener, stop polling.
15503
+ */
15504
+ dispose(): void;
15505
+ /**
15506
+ * Fetch available categories for filter chips.
15507
+ */
15508
+ fetchCategories(): Promise<void>;
15509
+ /**
15510
+ * Fetch the first page of feed items.
15511
+ * Uses fetchVersion to discard stale results from previous category switches.
15512
+ */
15513
+ fetchInitialItems(): Promise<void>;
15514
+ /**
15515
+ * Fetch next page (infinite scroll).
15516
+ */
15517
+ fetchNextPage(): Promise<void>;
15518
+ /**
15519
+ * Retry pagination after error.
15520
+ */
15521
+ retryPagination(): void;
15522
+ /**
15523
+ * Refresh feed (pull-to-refresh or reconnect).
15524
+ */
15525
+ refresh(): Promise<void>;
15526
+ /**
15527
+ * Switch category filter.
15528
+ */
15529
+ switchCategory(category: string | null): void;
15530
+ /**
15531
+ * Report delivered for a batch of items (once per item).
15532
+ */
15533
+ private reportDeliveredBatch;
15534
+ /**
15535
+ * Report item as delivered (fire-and-forget, once per item).
15536
+ */
15537
+ reportDelivered(item: NotificationFeedItem): void;
15538
+ /**
15539
+ * Report item as viewed (fire-and-forget).
15540
+ */
15541
+ reportViewed(item: NotificationFeedItem): void;
15542
+ /**
15543
+ * Report item as read (after 1s visibility).
15544
+ */
15545
+ reportRead(item: NotificationFeedItem): void;
15546
+ /**
15547
+ * Report item as clicked.
15548
+ */
15549
+ reportClicked(item: NotificationFeedItem): void;
15550
+ /**
15551
+ * Report item as interacted (action button tap).
15552
+ */
15553
+ reportInteracted(item: NotificationFeedItem): void;
15554
+ /**
15555
+ * Register WebSocket listener for new feed items.
15556
+ */
15557
+ private registerListener;
15558
+ /**
15559
+ * Remove WebSocket listener.
15560
+ */
15561
+ private removeListener;
15562
+ /**
15563
+ * Handle new feed item received via WebSocket.
15564
+ */
15565
+ onFeedItemReceived(item: NotificationFeedItem): void;
15566
+ /**
15567
+ * Fetch current unread count.
15568
+ */
15569
+ private fetchUnreadCount;
15570
+ /**
15571
+ * Start polling unread count every 30 seconds.
15572
+ */
15573
+ startUnreadCountPolling(intervalMs?: number): void;
15574
+ /**
15575
+ * Stop polling.
15576
+ */
15577
+ stopUnreadCountPolling(): void;
15578
+ /**
15579
+ * Initialize or re-initialize the feed request builder.
15580
+ * Respects custom builder if provided via constructor (when no category filter active).
15581
+ */
15582
+ private initFeedRequestBuilder;
15583
+ }
15584
+
15585
+ /**
15586
+ * Groups feed items by their sentAt timestamp into labeled sections.
15587
+ *
15588
+ * Rules:
15589
+ * - sentAt is today → localized "Today"
15590
+ * - sentAt is yesterday → localized "Yesterday"
15591
+ * - sentAt is within this week → Day name (e.g., "Monday")
15592
+ * - sentAt is older → Localized date (e.g., "Jan 15, 2025")
15593
+ */
15594
+ declare function groupByTimestamp(items: NotificationFeedItem[]): TimestampGroup[];
15595
+ /**
15596
+ * Visibility tracker using IntersectionObserver.
15597
+ * Tracks which items are visible and manages read/viewed engagement timers.
15598
+ */
15599
+ declare class VisibilityTracker {
15600
+ private observer;
15601
+ private timers;
15602
+ private viewedItems;
15603
+ private readItems;
15604
+ private onViewed;
15605
+ private onRead;
15606
+ private itemMap;
15607
+ constructor(onViewed: (item: NotificationFeedItem) => void, onRead: (item: NotificationFeedItem) => void);
15608
+ /**
15609
+ * Initialize the IntersectionObserver.
15610
+ */
15611
+ init(root: HTMLElement | null): void;
15612
+ /**
15613
+ * Observe a DOM element for a feed item.
15614
+ */
15615
+ observe(element: HTMLElement, item: NotificationFeedItem): void;
15616
+ /**
15617
+ * Unobserve a DOM element.
15618
+ */
15619
+ unobserve(element: HTMLElement): void;
15620
+ /**
15621
+ * Handle item becoming visible in viewport.
15622
+ */
15623
+ private handleItemVisible;
15624
+ /**
15625
+ * Handle item leaving viewport.
15626
+ */
15627
+ private handleItemHidden;
15628
+ /**
15629
+ * Mark an item as already read (e.g., when state updates externally).
15630
+ */
15631
+ markAsRead(itemId: string): void;
15632
+ /**
15633
+ * Reset the tracker state (call on category switch to prevent memory leak).
15634
+ * Note: After disconnect(), the existing IntersectionObserver instance remains valid.
15635
+ * Calling observe() on it after disconnect() will resume observation for newly
15636
+ * added elements — this is per the IntersectionObserver spec. No re-creation needed.
15637
+ */
15638
+ reset(): void;
15639
+ /**
15640
+ * Cleanup all observers and timers.
15641
+ */
15642
+ dispose(): void;
15643
+ }
15644
+
15645
+ /**
15646
+ * Pure pipe to format badge count with 99+ cap.
15647
+ * Replaces method call in template to avoid re-evaluation on every CD cycle.
15648
+ */
15649
+ declare class BadgeCountPipe implements PipeTransform {
15650
+ transform(count: number, max?: number): string;
15651
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeCountPipe, never>;
15652
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<BadgeCountPipe, "badgeCount", true>;
15653
+ }
15654
+ /**
15655
+ * Pure pipe to extract card JSON string from a NotificationFeedItem.
15656
+ * Replaces method call in template to avoid JSON.stringify on every CD cycle.
15657
+ */
15658
+ declare class CardJsonPipe implements PipeTransform {
15659
+ transform(item: NotificationFeedItem): string;
15660
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardJsonPipe, never>;
15661
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<CardJsonPipe, "cardJson", true>;
15662
+ }
15663
+ /**
15664
+ * Pure pipe to get category unread count from the Map.
15665
+ * Replaces method call in template to avoid re-evaluation on every CD cycle.
15666
+ */
15667
+ declare class CategoryUnreadCountPipe implements PipeTransform {
15668
+ transform(categoryId: string, categoryUnreadCounts: Map<string, number>): number;
15669
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CategoryUnreadCountPipe, never>;
15670
+ static ɵpipe: _angular_core.ɵɵPipeDeclaration<CategoryUnreadCountPipe, "categoryUnreadCount", true>;
15671
+ }
15672
+
15673
+ /**
15674
+ * Style customization for CometChatNotificationBadge.
15675
+ */
15676
+ interface NotificationBadgeStyle {
15677
+ backgroundColor?: string;
15678
+ textColor?: string;
15679
+ fontSize?: string;
15680
+ borderRadius?: string;
15681
+ }
15682
+
15683
+ /**
15684
+ * CometChatNotificationBadge — Displays unread notification count.
15685
+ * Subscribes to real-time updates and re-syncs on window focus.
15686
+ *
15687
+ * Usage:
15688
+ * ```html
15689
+ * <cometchat-notification-badge [max]="99"></cometchat-notification-badge>
15690
+ * ```
15691
+ */
15692
+ declare class CometChatNotificationBadgeComponent implements OnInit, OnDestroy {
15693
+ private unreadCountService;
15694
+ /** Filter count by category */
15695
+ category: string | undefined;
15696
+ /** Maximum count to display before showing "N+". Default: 99 */
15697
+ max: number;
15698
+ /** Style overrides */
15699
+ style: NotificationBadgeStyle | undefined;
15700
+ /** Internal count signal */
15701
+ count: _angular_core.WritableSignal<number>;
15702
+ private subscription;
15703
+ ngOnInit(): void;
15704
+ ngOnDestroy(): void;
15705
+ /**
15706
+ * Display text for the badge (computed signal for performance).
15707
+ */
15708
+ readonly displayText: _angular_core.Signal<string>;
15709
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CometChatNotificationBadgeComponent, never>;
15710
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CometChatNotificationBadgeComponent, "cometchat-notification-badge", never, { "category": { "alias": "category"; "required": false; }; "max": { "alias": "max"; "required": false; }; "style": { "alias": "style"; "required": false; }; }, {}, never, never, true, never>;
15711
+ }
15712
+
15713
+ /**
15714
+ * Options for safeEffect — mirrors Angular's EffectOptions but always
15715
+ * includes allowSignalWrites: true so the effect works across Angular 18–21.
15716
+ *
15717
+ * Background:
15718
+ * - Angular 18/19: `allowSignalWrites` is REQUIRED when writing to signals
15719
+ * inside an effect body. Omitting it throws a runtime error.
15720
+ * - Angular 21+: `allowSignalWrites` is deprecated and optional (signal writes
15721
+ * inside effects are allowed by default).
15722
+ *
15723
+ * Using this wrapper means developers never need to remember to add the flag,
15724
+ * and the codebase stays compatible across all supported Angular versions.
15725
+ */
15726
+ interface SafeEffectOptions {
15727
+ injector?: Injector;
15728
+ manualCleanup?: boolean;
15729
+ }
15730
+ /**
15731
+ * Drop-in replacement for Angular's `effect()` that is safe to use across
15732
+ * Angular 18, 19, 20, and 21.
15733
+ *
15734
+ * Always passes `allowSignalWrites: true` so signal writes inside the effect
15735
+ * body work on Angular 18/19 without requiring each call site to remember
15736
+ * the flag. On Angular 21+ the flag is a no-op.
15737
+ *
15738
+ * @example
15739
+ * // Instead of:
15740
+ * effect(() => { this.someSignal.set(value); }, { injector: this.injector });
15741
+ *
15742
+ * // Use:
15743
+ * safeEffect(() => { this.someSignal.set(value); }, { injector: this.injector });
15744
+ *
15745
+ * @param effectFn - The reactive effect function to run
15746
+ * @param options - Optional injector and manualCleanup settings
15747
+ * @returns EffectRef that can be used to destroy the effect manually
15748
+ */
15749
+ declare function safeEffect(effectFn: () => void, options?: SafeEffectOptions): EffectRef;
15750
+
15751
+ export { AuxiliaryButtonAlignment, BadgeCountPipe, ButtonAction, COMETCHAT_GLOBAL_CONFIG, CalendarDatePipe, CallAnnouncerService, CallButtonsService, CallLogsService, CallWorkflow, CardJsonPipe, CategoryUnreadCountPipe, ChatStateService, CometChatAIAssistantChat, CometChatAIAssistantChatHistory, CometChatAIAssistantMessageBubble, CometChatAIAssistantTools, CometChatAIStreamingService, CometChatActionBubbleComponent, CometChatActionSheetComponent, CometChatActions, CometChatActionsIcon, CometChatActionsView, CometChatAudioBubbleComponent, CometChatAvatarComponent, CometChatButtonComponent, CometChatCallBubbleComponent, CometChatCallButtonsComponent, CometChatCallEvents, CometChatCallLogsComponent, CometChatCardBubbleComponent, CometChatChangeScopeComponent, CometChatCheckboxComponent, CometChatCollaborativeDocumentBubbleComponent, CometChatCollaborativeWhiteboardBubbleComponent, CometChatConfirmDialogComponent, CometChatContextMenuComponent, CometChatConversationEvents, CometChatConversationItemComponent, CometChatConversationStarterComponent, CometChatConversationSummaryComponent, CometChatConversationsComponent, CometChatCreatePollComponent, CometChatDateComponent, CometChatDeleteBubbleComponent, CometChatDropDownComponent, CometChatEmojiFormatter, CometChatEmojiKeyboardComponent, CometChatErrorBoundaryComponent, CometChatFileBubbleComponent, CometChatFlagMessageDialogComponent, CometChatFullScreenViewerComponent, CometChatGroupEvents, CometChatGroupItemComponent, CometChatGroupMemberItemComponent, CometChatGroupMembersComponent, CometChatGroupsComponent, CometChatImageBubbleComponent, CometChatIncomingCallComponent, CometChatLinkDialogComponent, CometChatLinkPopoverComponent, CometChatListItemComponent, CometChatLocalize, CometChatLogger, CometChatMarkdownFormatter, CometChatMarkdownParser, CometChatMarkdownRenderer, CometChatMediaRecorderComponent, CometChatMentionsFormatter, CometChatMessageBubbleComponent, CometChatMessageComposerAction, CometChatMessageComposerComponent, CometChatMessageEvents, CometChatMessageHeaderComponent, CometChatMessageInformationComponent, CometChatMessageListComponent, CometChatMessagePreviewComponent, CometChatNotificationBadgeComponent, CometChatNotificationFeedComponent, CometChatOngoingCallComponent, CometChatOption, CometChatOutgoingCallComponent, CometChatPaginatedListComponent, CometChatPollBubbleComponent, CometChatPopoverComponent, CometChatRadioButtonComponent, CometChatReactionInfoComponent, CometChatReactionListComponent, CometChatReactionsComponent, CometChatSearchBarComponent, CometChatSearchComponent, CometChatSearchConversationsListComponent, CometChatSearchFilter, CometChatSearchMessagesListComponent, CometChatSearchScope, CometChatSmartRepliesComponent, CometChatStickerBubbleComponent, CometChatStickersKeyboardComponent, CometChatStreamMessageBubble, CometChatTemplatesService, CometChatTextBubbleComponent, CometChatTextFormatter, CometChatThreadHeaderComponent, CometChatThreadViewComponent, CometChatToastComponent, CometChatToastService, CometChatToolCallArgumentBubble, CometChatToolCallResultBubble, CometChatTypingIndicatorComponent, CometChatUIEvents, CometChatUIKit, CometChatUIKitCalls, CometChatUIKitConstants, CometChatUrlFormatter, CometChatUserEvents, CometChatUserItemComponent, CometChatUsersComponent, CometChatVideoBubbleComponent, ConnectionStateService, ConversationDatePipe, ConversationSubtitleService, ConversationsService, DEFAULT_MESSAGE_CATEGORIES, DEFAULT_MESSAGE_TYPES, DateTimePickerMode, DialogFocusManager, DocumentIconAlignment, ElementType, EnterKeyBehavior, FocusTrapService, FormatterConfigService, GridNavigationService, GroupMembersService, HTTPSRequestMethods, HtmlSanitizerService, IconButtonAlignment, IncomingCallService, LabelAlignment, ListNavigationService, ListSelectionManager, LiveAnnouncerService, LogLevel, MENTIONS_LIMIT, MediaControlsService, MentionType, MentionsNavigationService, MentionsTargetElement, MentionsVisibility, MessageBubbleAlignment, MessageBubbleConfigService, MessageComposerService, MessageDatePipe, MessageHeaderService, MessageListAlignment, MessageListService, MessageStatus, MessageUtilsService, MouseEventSource, NotificationFeedViewModel, NotificationUnreadCountService, OngoingCallService, OutgoingCallService, PanelAlignment, Placement, PreviewMessageMode, Receipts, RecordingType, RichTextEditorService, SearchConversationsService, SearchMessagesService, SelectionMode, States, TabAlignment, TabsVisibility, ThemeService, TimestampAlignment, TitleAlignment, ToastType, TranslatePipe, TypeAheadService, UIKitSettings, UIKitSettingsBuilder, UserMemberListType, VisibilityTracker, applyFormatters, closeCurrentMediaPlayer, currentAudioPlayer, formatText, getAvailableFilters, getLocalizedString, getMaxVisibleEmojis, getVisibleFilters, groupByTimestamp, hasValidMessageSearchCriteria, hasValidSearchCriteria, isConversationFilter, isMessageFilter, parseInline, safeEffect, shouldRenderConversations, shouldRenderMessages, toggleFilter };
15752
+ export type { AIAssistantContentBlock, AriaLivePoliteness, AttachmentFile, AudioAttachment, AudioState, BubblePart, BubblePartMap, CalendarObject, CallBubbleStatus, CallButtonClickEvent, CallLogTemplates, CallStatus, CallType, CardAction, CardBubbleAction, CollaborativePayload, CometChatEmoji, CometChatEmojiCategory, CometChatNotificationFeedStyle, CometChatUiKitWindow, ComponentState, ComposerId, ContextMenuItem, ConversationSlotContext, ConversationSlots, ConversationTemplates, DialogConfig, ErrorCallback, FeedEngagementType, FetchResult, FileAttachment, FocusTrapConfig, FormatterPipelineResult, FullscreenViewerMediaType, GlobalConfig, GridNavigationConfig, GridPosition, GroupMemberTemplates, GroupMembersErrorCallback, GroupTemplates, IAIStreamEvent, IActiveChatChanged, ICardActionEvent, IDialog, IGroupLeft, IGroupMemberAdded, IGroupMemberJoined, IGroupMemberKickedBanned, IGroupMemberScopeChanged, IGroupMemberUnBanned, IMentionsCountWarning, IMessages, IModal, IMouseEvent, IOpenChat, IOwnershipChanged, IPanel, IShowOngoingCall, IncomingCallTemplateContext, InitResult, LinkData, LinkPopoverData, LinkPreviewData, ListNavigationConfig, ListSelectionState, ListTemplates, LocalizationSettings, LogoutResult, MarkdownNode, MarkdownNodeType, MediaAttachment, MediaControlsConfig, MediaControlsResult, MediaLayoutType, MentionData, MentionSuggestion, MentionsNavigationCallbacks, MessageListConfig, MessageListItem, MessageListTemplates, MessagePreviewMode, MessageTypeKey, MessageUpdatePayload, NotificationBadgeStyle, NotificationCategory, NotificationFeedItem, NotificationFeedState, NotificationUnreadCountOptions, OutgoingCallTemplateContext, PollBubbleOption, PollCreatePayload, PollData, PollOption, PollOptionResult, PollResults, PollVoteErrorEvent, PollVoteEvent, RelativeTimeConfig, RichTextEditorConfig, RichTextFormatState, RichTextMetadata, SafeEffectOptions, ScreenState, SearchConversationClickEvent, SearchMessageClickEvent, SearchTemplates, SelectionState, SharedListTemplates, StickerClickEvent, StickerItem, StickerSet, StreamedCard, SubtitleFormatter, TextFormatterContext, TimestampGroup, ToastConfig, TypeAheadConfig, UserReceiptInfo, UserTemplates, VoterInfo };