@acorex/components 20.7.8 → 20.7.10

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.
@@ -1416,7 +1416,13 @@ declare class AXComposerService {
1416
1416
  focusComposer(): void;
1417
1417
  clear(): void;
1418
1418
  sendTypingIndicator(conversationId: string): Promise<void>;
1419
- sendMessage(command: AXSendMessageCommand): Promise<void>;
1419
+ /**
1420
+ * Send through the conversation API with optional {@link AXComposerPipeline} hooks.
1421
+ * @param options.clearComposer Clear reply/edit state after send (default `true`). Use `false` when sending multiple messages in one action.
1422
+ */
1423
+ sendMessage(command: AXSendMessageCommand, options?: {
1424
+ clearComposer?: boolean;
1425
+ }): Promise<void>;
1420
1426
  /**
1421
1427
  * Show a component in the composer (full-width mode)
1422
1428
  */
@@ -1706,6 +1712,14 @@ interface AXPaginatedResult<T> {
1706
1712
  /** Total pages */
1707
1713
  totalPages?: number;
1708
1714
  }
1715
+ /**
1716
+ * Pagination cursor state for a single list (conversations or messages).
1717
+ */
1718
+ interface AXPaginationState {
1719
+ page: number;
1720
+ hasMore: boolean;
1721
+ nextCursor?: string;
1722
+ }
1709
1723
  /**
1710
1724
  * Connection status
1711
1725
  */
@@ -3293,6 +3307,44 @@ declare class AXInfoBarService {
3293
3307
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXInfoBarService>;
3294
3308
  }
3295
3309
 
3310
+ /**
3311
+ * Optional pipeline hooks for composer-originated sends (pickers, text input, stickers, etc.).
3312
+ * Register via `provideConversation({ composerPipeline: [...] })` or
3313
+ * `{ provide: AX_COMPOSER_PIPELINE, useValue: pipeline, multi: true }`.
3314
+ */
3315
+
3316
+ /** Context after the message API returns a persisted message. */
3317
+ interface AXComposerPipelineAfterApiContext {
3318
+ command: AXSendMessageCommand;
3319
+ message: AXMessage;
3320
+ }
3321
+ /**
3322
+ * Transform composer output before/after the message API.
3323
+ * Lower `order` runs first (default 0).
3324
+ */
3325
+ interface AXComposerPipeline {
3326
+ order?: number;
3327
+ /** Runs after validation, before optimistic UI and `messageApi.sendMessage`. */
3328
+ transformOutgoing?(command: AXSendMessageCommand): AXSendMessageCommand | Promise<AXSendMessageCommand>;
3329
+ /** Runs on the API response before the temp message is replaced in the store. */
3330
+ transformAfterApi?(context: AXComposerPipelineAfterApiContext): AXMessage | Promise<AXMessage>;
3331
+ }
3332
+ declare const AX_COMPOSER_PIPELINE: InjectionToken<AXComposerPipeline[]>;
3333
+ declare class AXComposerPipelineRunner {
3334
+ private readonly pipelines;
3335
+ get hasPipelines(): boolean;
3336
+ runOutgoing(command: AXSendMessageCommand): Promise<AXSendMessageCommand>;
3337
+ runAfterApi(context: AXComposerPipelineAfterApiContext): Promise<AXMessage>;
3338
+ private sortedPipelines;
3339
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXComposerPipelineRunner, never>;
3340
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXComposerPipelineRunner>;
3341
+ }
3342
+ /** Options for {@link AXConversationService.sendMessage} when the send originates from the composer. */
3343
+ interface AXComposerSendMessageOptions {
3344
+ /** Apply registered {@link AXComposerPipeline} hooks. */
3345
+ composerPipeline?: boolean;
3346
+ }
3347
+
3296
3348
  /**
3297
3349
  * Central Registry Service
3298
3350
  * Provides unified access to all registries
@@ -3323,6 +3375,13 @@ declare class AXRegistryService {
3323
3375
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXRegistryService>;
3324
3376
  }
3325
3377
 
3378
+ /** Result of loading a message page (newest-first APIs, merged ascending in the store). */
3379
+ interface AXLoadMessagesResult {
3380
+ items: AXMessage[];
3381
+ hasMore: boolean;
3382
+ page: number;
3383
+ nextCursor?: string;
3384
+ }
3326
3385
  /**
3327
3386
  * Main Conversation Service
3328
3387
  *
@@ -3348,9 +3407,14 @@ declare class AXConversationService {
3348
3407
  private readonly destroy$;
3349
3408
  /** Registry service - exposed for child services */
3350
3409
  readonly registry: AXRegistryService;
3410
+ private readonly composerPipeline;
3411
+ private readonly messagePipeline;
3351
3412
  private readonly _activeConversationId;
3352
3413
  private readonly _loading;
3414
+ private readonly _loadingActiveMessages;
3353
3415
  private readonly _error;
3416
+ private readonly _conversationsPagination;
3417
+ private readonly _messagesPaginationByConversation;
3354
3418
  /** Emits when the active conversation changes, cancelling per-conversation subscriptions. */
3355
3419
  private readonly _conversationSwitch$;
3356
3420
  private readonly _messageReceived$;
@@ -3366,8 +3430,14 @@ declare class AXConversationService {
3366
3430
  readonly activeConversation: _angular_core.Signal<AXConversation>;
3367
3431
  /** Messages for active conversation */
3368
3432
  readonly activeMessages: _angular_core.Signal<AXMessage[]>;
3369
- /** Loading state */
3433
+ /** Loading state (conversation list initial load) */
3370
3434
  readonly loading: _angular_core.Signal<boolean>;
3435
+ /** Loading state for the active conversation's message history */
3436
+ readonly loadingActiveMessages: _angular_core.Signal<boolean>;
3437
+ /** Sidebar conversation list pagination */
3438
+ readonly conversationsPagination: _angular_core.Signal<AXPaginationState>;
3439
+ /** Active conversation message pagination */
3440
+ readonly activeMessagesPagination: _angular_core.Signal<AXPaginationState>;
3371
3441
  /** Error state */
3372
3442
  readonly error: _angular_core.Signal<Error>;
3373
3443
  /** Connection status */
@@ -3418,13 +3488,15 @@ declare class AXConversationService {
3418
3488
  * Load messages for a conversation
3419
3489
  * Fetches messages from server with request cancellation support
3420
3490
  */
3421
- loadMessages(conversationId: string, page?: number): Promise<AXMessage[]>;
3491
+ loadMessages(conversationId: string, page?: number): Promise<AXLoadMessagesResult>;
3492
+ /** Reset sidebar conversation pagination (e.g. after filters change). */
3493
+ resetConversationsPagination(): void;
3422
3494
  /**
3423
3495
  * Send a message
3424
3496
  * Uses optimistic UI updates - message appears immediately
3425
3497
  * Improved with better temp ID generation to prevent collisions
3426
3498
  */
3427
- sendMessage(command: AXSendMessageCommand): Promise<void>;
3499
+ sendMessage(command: AXSendMessageCommand, options?: AXComposerSendMessageOptions): Promise<void>;
3428
3500
  /**
3429
3501
  * Retry a failed message
3430
3502
  */
@@ -3477,6 +3549,8 @@ declare class AXConversationService {
3477
3549
  * Handle message update
3478
3550
  */
3479
3551
  private handleMessageUpdate;
3552
+ private processIncomingMessage;
3553
+ private processIncomingMessages;
3480
3554
  /**
3481
3555
  * Handle message count update
3482
3556
  * Emits events when a message is a reply or forward so components can refresh counts
@@ -3868,6 +3942,7 @@ declare class AXMessageListComponent implements OnDestroy {
3868
3942
  private readonly conversationService;
3869
3943
  private readonly messageListService;
3870
3944
  private readonly translation;
3945
+ private readonly messagePipeline;
3871
3946
  protected readonly config: Required<AXConversationConfig>;
3872
3947
  /**
3873
3948
  * Background for the message list scroll area from config, or the built-in soft gradient when unset/empty.
@@ -3887,6 +3962,8 @@ declare class AXMessageListComponent implements OnDestroy {
3887
3962
  readonly reactionPopover: _angular_core.Signal<any>;
3888
3963
  /** Message id whose context menu is open (for active row styling). */
3889
3964
  readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
3965
+ /** While true, older history is being prepended — do not auto-scroll to the latest message. */
3966
+ private restoringScrollAfterPrepend;
3890
3967
  readonly availableReactions: _angular_core.WritableSignal<string[]>;
3891
3968
  private get registry();
3892
3969
  /** Message list element reference */
@@ -3894,9 +3971,11 @@ declare class AXMessageListComponent implements OnDestroy {
3894
3971
  /** Messages container element reference */
3895
3972
  private readonly messagesContainerRef;
3896
3973
  /** Loading state - use service */
3897
- readonly loading: _angular_core.WritableSignal<boolean>;
3974
+ readonly loading: _angular_core.Signal<boolean>;
3898
3975
  /** Loading more messages state - use service */
3899
3976
  readonly loadingMore: _angular_core.WritableSignal<boolean>;
3977
+ /** Whether older messages remain on the server */
3978
+ readonly hasMoreMessages: _angular_core.Signal<boolean>;
3900
3979
  /** Show scroll to bottom button - use service */
3901
3980
  readonly showScrollButton: _angular_core.WritableSignal<boolean>;
3902
3981
  /** Active conversation */
@@ -4000,8 +4079,12 @@ declare class AXMessageListComponent implements OnDestroy {
4000
4079
  onScroll(event: Event): void;
4001
4080
  /** Handle infinite scroll threshold */
4002
4081
  onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
4003
- /** Load older messages - delegate to service */
4082
+ /** Load older messages - delegate to service and preserve scroll anchor */
4004
4083
  private loadOlderMessages;
4084
+ /**
4085
+ * Keep the user's viewport on the same messages after older rows are inserted above.
4086
+ */
4087
+ private restoreScrollPositionAfterPrepend;
4005
4088
  /** Check if user is near bottom of scroll */
4006
4089
  private isUserNearBottom;
4007
4090
  /**
@@ -4065,22 +4148,23 @@ interface AXMessageAvatarTemplateContext {
4065
4148
  declare class AXMessageListService {
4066
4149
  private readonly conversationService;
4067
4150
  private readonly config;
4151
+ private readonly messagePipeline;
4152
+ /** Message passed to renderers (applies optional display pipeline). */
4153
+ toDisplayMessage(message: AXMessage): AXMessage;
4068
4154
  private get registry();
4069
4155
  readonly activeConversation: _angular_core.Signal<AXConversation>;
4070
4156
  readonly activeMessages: _angular_core.Signal<AXMessage[]>;
4071
4157
  readonly currentUser: _angular_core.Signal<AXParticipant>;
4072
- /** Loading state */
4073
- readonly loading: _angular_core.WritableSignal<boolean>;
4074
- /** Loading more messages state */
4158
+ /** Initial message history load (conversation switch) */
4159
+ readonly loading: _angular_core.Signal<boolean>;
4160
+ /** Loading older messages (scroll-up pagination) */
4075
4161
  readonly loadingMore: _angular_core.WritableSignal<boolean>;
4162
+ /** Whether older messages can be loaded */
4163
+ readonly hasMoreMessages: _angular_core.Signal<boolean>;
4076
4164
  /** Show scroll to bottom button */
4077
4165
  readonly showScrollButton: _angular_core.WritableSignal<boolean>;
4078
4166
  /** Scroll requests counter */
4079
4167
  readonly scrollRequests: _angular_core.WritableSignal<number>;
4080
- /** Current page for pagination */
4081
- private readonly currentPage;
4082
- /** Has more messages to load */
4083
- private readonly hasMoreMessages;
4084
4168
  /** Message grouped by date */
4085
4169
  readonly messageGroups: _angular_core.Signal<{
4086
4170
  date: string;
@@ -4088,11 +4172,11 @@ declare class AXMessageListService {
4088
4172
  messages: AXMessage[];
4089
4173
  }[]>;
4090
4174
  /**
4091
- * Load more messages (pagination)
4175
+ * Load older messages when the user scrolls near the top.
4092
4176
  */
4093
- loadMoreMessages(): Promise<void>;
4177
+ loadMoreMessages(): Promise<boolean>;
4094
4178
  /**
4095
- * Reset pagination (call when conversation changes)
4179
+ * Reset pagination when switching conversations (page 0 is loaded by {@link AXConversationService.selectConversation}).
4096
4180
  */
4097
4181
  resetPagination(): void;
4098
4182
  getMenuActions(message: AXMessage): _acorex_components_conversation2.AXMessageAction[];
@@ -4110,11 +4194,10 @@ declare class AXSidebarService {
4110
4194
  private get registry();
4111
4195
  readonly searchQuery: _angular_core.WritableSignal<string>;
4112
4196
  readonly activeTabId: _angular_core.WritableSignal<string>;
4113
- private readonly currentPage;
4114
- private readonly hasMoreConversations;
4115
4197
  readonly loadingMore: _angular_core.WritableSignal<boolean>;
4116
4198
  readonly conversations: _angular_core.Signal<AXConversation[]>;
4117
4199
  readonly loading: _angular_core.Signal<boolean>;
4200
+ readonly hasMoreConversations: _angular_core.Signal<boolean>;
4118
4201
  readonly enabledTabs: _angular_core.Signal<_acorex_components_conversation2.AXConversationTab[]>;
4119
4202
  private filterCache;
4120
4203
  readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
@@ -4127,7 +4210,7 @@ declare class AXSidebarService {
4127
4210
  selectConversation(conversation: AXConversation): void;
4128
4211
  getBadgeValue(tabId: string): string | undefined;
4129
4212
  /**
4130
- * Load more conversations (pagination)
4213
+ * Load more conversations when the user scrolls near the bottom of the sidebar list.
4131
4214
  */
4132
4215
  loadMoreConversations(): Promise<void>;
4133
4216
  /**
@@ -4135,9 +4218,9 @@ declare class AXSidebarService {
4135
4218
  */
4136
4219
  onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
4137
4220
  /**
4138
- * Reset pagination (call when filters change)
4221
+ * Reload conversation list from the first page (e.g. pull-to-refresh).
4139
4222
  */
4140
- resetPagination(): void;
4223
+ reloadConversations(): Promise<void>;
4141
4224
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSidebarService, never>;
4142
4225
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXSidebarService>;
4143
4226
  }
@@ -4157,6 +4240,7 @@ declare class AXSidebarComponent implements OnDestroy {
4157
4240
  readonly filteredConversations: _angular_core.Signal<AXConversation[]>;
4158
4241
  readonly loading: _angular_core.Signal<boolean>;
4159
4242
  readonly loadingMore: _angular_core.WritableSignal<boolean>;
4243
+ readonly hasMoreConversations: _angular_core.Signal<boolean>;
4160
4244
  constructor();
4161
4245
  /** Handle search input change with debouncing */
4162
4246
  onSearchChange(value: string): void;
@@ -4235,15 +4319,22 @@ declare class AXInfiniteScrollDirective {
4235
4319
  readonly threshold: _angular_core.InputSignal<number>;
4236
4320
  /** Which edge to watch: 'top', 'bottom', or 'both' */
4237
4321
  readonly edge: _angular_core.InputSignal<"top" | "bottom" | "both">;
4322
+ /** When true, scroll events are ignored (e.g. while a page is loading). */
4323
+ readonly scrollDisabled: _angular_core.InputSignal<boolean>;
4324
+ /** Minimum time between emissions (ms) to avoid duplicate API calls. */
4325
+ readonly cooldownMs: _angular_core.InputSignal<number>;
4238
4326
  /** Event emitted when scrolling reaches the threshold */
4239
4327
  readonly scrollThreshold: _angular_core.OutputEmitterRef<"top" | "bottom">;
4240
4328
  private lastScrollTop;
4241
4329
  private ticking;
4330
+ private lastEmitAt;
4331
+ private pendingEmit;
4242
4332
  constructor();
4243
4333
  private setupScrollListener;
4244
4334
  private handleScroll;
4335
+ private emitThreshold;
4245
4336
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfiniteScrollDirective, never>;
4246
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
4337
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; "scrollDisabled": { "alias": "scrollDisabled"; "required": false; "isSignal": true; }; "cooldownMs": { "alias": "cooldownMs"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
4247
4338
  }
4248
4339
 
4249
4340
  /**
@@ -4355,6 +4446,59 @@ declare class AXConversationSharedStorage {
4355
4446
  }
4356
4447
  declare const conversationSharedStorage: AXConversationSharedStorage;
4357
4448
 
4449
+ /**
4450
+ * Chat-oriented pagination helpers for IndexedDB demo APIs.
4451
+ *
4452
+ * Convention (matches {@link AXConversationService}):
4453
+ * - Page 0: newest items (sidebar: recent chats; messages: latest history window).
4454
+ * - Page 1+ or `cursor`: older items before the previous window.
4455
+ * - `hasMore`: true when older items remain.
4456
+ * - `nextCursor`: id of the oldest item in the current page (use as `pagination.cursor` for the next request).
4457
+ */
4458
+
4459
+ declare const AX_MESSAGE_CURSOR_PREFIX = "msg:";
4460
+ declare const AX_CONVERSATION_CURSOR_PREFIX = "conv:";
4461
+ type AXChatCursorKind = 'message' | 'conversation';
4462
+ interface AXParsedChatCursor {
4463
+ kind: AXChatCursorKind;
4464
+ id: string;
4465
+ }
4466
+ declare function encodeMessageCursor(messageId: string): string;
4467
+ declare function encodeConversationCursor(conversationId: string): string;
4468
+ /** Decode cursor from API pagination (supports prefixed or legacy raw message id). */
4469
+ declare function parseChatCursor(cursor?: string): AXParsedChatCursor | null;
4470
+ /**
4471
+ * Paginate a list sorted newest-first (chats, message history windows).
4472
+ */
4473
+ declare function paginateChatNewestFirst<T extends {
4474
+ id: string;
4475
+ }>(sortedNewestFirst: T[], pagination: AXPagination, cursorKind: AXChatCursorKind): AXPaginatedResult<T>;
4476
+ /**
4477
+ * Paginate a list sorted oldest-first (replies, forward history).
4478
+ */
4479
+ declare function paginateChatOldestFirst<T extends {
4480
+ id: string;
4481
+ }>(sortedOldestFirst: T[], pagination: AXPagination): AXPaginatedResult<T>;
4482
+
4483
+ /**
4484
+ * Shared read/write helpers for IndexedDB chat storage (in-memory + persistence).
4485
+ */
4486
+
4487
+ declare function getConversationLastActivity(conv: AXConversation): number;
4488
+ /** Messages for a conversation, newest first (API / pagination order). */
4489
+ declare function getConversationMessagesNewestFirst(conversationId: string): AXMessage[];
4490
+ /** Keep per-conversation id list sorted ascending by timestamp (store order). */
4491
+ declare function sortConversationMessageIds(conversationId: string): void;
4492
+ /** Register a message in maps and keep the conversation index sorted. */
4493
+ declare function registerChatMessage(message: AXMessage): void;
4494
+ /** Remove a message from conversation index and global map. */
4495
+ declare function unregisterChatMessage(messageId: string, conversationId: string): void;
4496
+ declare function applyConversationFilters(conversations: AXConversation[], filters?: AXConversationFilters): AXConversation[];
4497
+ /** Sidebar list order: pinned first, then by last activity (newest first). */
4498
+ declare function getSortedConversationsForInbox(filters?: AXConversationFilters): AXConversation[];
4499
+ /** Sort all loaded conversation message indexes (after IndexedDB hydration). */
4500
+ declare function normalizeAllConversationMessageIndexes(): void;
4501
+
4358
4502
  declare class AXConversationIndexedDbUserApi extends AXUserApi {
4359
4503
  getCurrentUser(): Promise<AXParticipant>;
4360
4504
  updateProfile(updates: AXUserProfileUpdate): Promise<AXParticipant>;
@@ -4378,34 +4522,38 @@ declare class AXConversationIndexedDbUserApi extends AXUserApi {
4378
4522
  declare class AXConversationIndexedDbConversationApi extends AXConversationApi {
4379
4523
  createConversation(data: AXConversationCreateData): Promise<AXConversation>;
4380
4524
  getConversation(conversationId: string): Promise<AXConversation>;
4381
- getConversations(pagination: AXPagination, _filters?: AXConversationFilters): Promise<AXPaginatedResult<AXConversation>>;
4525
+ /**
4526
+ * Inbox page (pinned + recent activity, newest first).
4527
+ * Page 0 / cursor align with {@link AXConversationService.loadConversations} and sidebar infinite scroll.
4528
+ */
4529
+ getConversations(pagination: AXPagination, filters?: AXConversationFilters): Promise<AXPaginatedResult<AXConversation>>;
4382
4530
  updateConversation(conversationId: string, updates: AXConversationUpdateData): Promise<AXConversation>;
4383
4531
  deleteConversation(conversationId: string): Promise<boolean>;
4384
4532
  archiveConversation(conversationId: string): Promise<void>;
4385
4533
  unarchiveConversation(conversationId: string): Promise<void>;
4386
- pinConversation(_conversationId: string): Promise<void>;
4387
- unpinConversation(_conversationId: string): Promise<void>;
4534
+ pinConversation(conversationId: string): Promise<void>;
4535
+ unpinConversation(conversationId: string): Promise<void>;
4388
4536
  markConversationAsRead(conversationId: string): Promise<void>;
4389
4537
  markConversationAsUnread(conversationId: string): Promise<void>;
4390
4538
  searchConversations(query: string): Promise<AXConversation[]>;
4391
- filterConversations(_filters: AXConversationFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXConversation>>;
4539
+ filterConversations(filters: AXConversationFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXConversation>>;
4392
4540
  getParticipants(conversationId: string): Promise<AXParticipant[]>;
4393
4541
  addParticipants(_conversationId: string, _userIds: string[]): Promise<AXConversation>;
4394
4542
  removeParticipant(conversationId: string, _userId: string): Promise<AXConversation>;
4395
4543
  leaveConversation(_conversationId: string): Promise<void>;
4396
4544
  updateParticipant(conversationId: string, _update: AXParticipantUpdate): Promise<AXConversation>;
4397
4545
  getConversationSettings(conversationId: string): Promise<AXConversationSettingsUpdate>;
4398
- updateConversationSettings(_conversationId: string, _settings: AXConversationSettingsUpdate): Promise<void>;
4399
- muteConversation(_conversationId: string, _duration?: number): Promise<void>;
4400
- unmuteConversation(_conversationId: string): Promise<void>;
4546
+ updateConversationSettings(conversationId: string, settings: AXConversationSettingsUpdate): Promise<void>;
4547
+ muteConversation(conversationId: string, duration?: number): Promise<void>;
4548
+ unmuteConversation(conversationId: string): Promise<void>;
4401
4549
  uploadConversationAvatar(_conversationId: string, file: File): Promise<string>;
4402
- getConversationMedia(_conversationId: string, _pagination?: AXPagination): Promise<AXPaginatedResult<unknown>>;
4403
- addConversationTags(_conversationId: string, _tags: string[]): Promise<void>;
4404
- removeConversationTags(_conversationId: string, _tags: string[]): Promise<void>;
4405
- getConversationTags(_conversationId: string): Promise<string[]>;
4406
- saveDraft(_conversationId: string, _draft: string): Promise<void>;
4407
- getDraft(_conversationId: string): Promise<string | null>;
4408
- clearDraft(_conversationId: string): Promise<void>;
4550
+ getConversationMedia(conversationId: string, pagination?: AXPagination): Promise<AXPaginatedResult<unknown>>;
4551
+ addConversationTags(conversationId: string, tags: string[]): Promise<void>;
4552
+ removeConversationTags(conversationId: string, tags: string[]): Promise<void>;
4553
+ getConversationTags(conversationId: string): Promise<string[]>;
4554
+ saveDraft(conversationId: string, draft: string): Promise<void>;
4555
+ getDraft(conversationId: string): Promise<string | null>;
4556
+ clearDraft(conversationId: string): Promise<void>;
4409
4557
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbConversationApi, never>;
4410
4558
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbConversationApi>;
4411
4559
  }
@@ -4413,12 +4561,17 @@ declare class AXConversationIndexedDbConversationApi extends AXConversationApi {
4413
4561
  declare class AXConversationIndexedDbMessageApi extends AXMessageApi {
4414
4562
  sendMessage(command: AXSendMessageCommand): Promise<AXMessage>;
4415
4563
  getMessage(messageId: string): Promise<AXMessage>;
4564
+ /**
4565
+ * Message history for a chat (newest-first pages).
4566
+ * - Page 0: latest `pageSize` messages.
4567
+ * - Page 1+ or `pagination.cursor`: older messages before the previous window.
4568
+ */
4416
4569
  getMessages(conversationId: string, pagination: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
4417
4570
  editMessage(messageId: string, payload: AXMessagePayload): Promise<AXMessage>;
4418
4571
  deleteMessage(messageId: string, _forEveryone?: boolean): Promise<void>;
4419
4572
  deleteMessages(messageIds: string[], forEveryone?: boolean): Promise<void>;
4420
- searchMessages(conversationId: string, filters: AXMessageSearchFilters, _pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
4421
- searchAllMessages(_filters: AXMessageSearchFilters, _pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
4573
+ searchMessages(conversationId: string, filters: AXMessageSearchFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
4574
+ searchAllMessages(filters: AXMessageSearchFilters, pagination?: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
4422
4575
  addReaction(messageId: string, emoji: string): Promise<void>;
4423
4576
  removeReaction(messageId: string, emoji: string): Promise<void>;
4424
4577
  getAvailableReactions(): Promise<string[]>;
@@ -4441,17 +4594,17 @@ declare class AXConversationIndexedDbMessageApi extends AXMessageApi {
4441
4594
  mimeType: string;
4442
4595
  metadata?: Record<string, unknown>;
4443
4596
  }>;
4444
- updateMessageMetadata(_messageId: string, _metadata: Record<string, unknown>): Promise<void>;
4445
- getMessageMetadata(_messageId: string): Promise<Record<string, unknown>>;
4446
- updateMessageStatus(_messageId: string, _status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
4597
+ updateMessageMetadata(messageId: string, metadata: Record<string, unknown>): Promise<void>;
4598
+ getMessageMetadata(messageId: string): Promise<Record<string, unknown>>;
4599
+ updateMessageStatus(messageId: string, status: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'): Promise<void>;
4447
4600
  getMessageDeliveryStatus(_messageId: string): Promise<{
4448
4601
  delivered: number;
4449
4602
  read: number;
4450
4603
  total: number;
4451
4604
  }>;
4452
- markMessagesAsRead(_messageIds: string[]): Promise<void>;
4453
- bulkDeleteMessages(_conversationId: string, _messageIds: string[], _forEveryone?: boolean): Promise<void>;
4454
- exportMessages(_conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
4605
+ markMessagesAsRead(messageIds: string[]): Promise<void>;
4606
+ bulkDeleteMessages(conversationId: string, messageIds: string[], forEveryone?: boolean): Promise<void>;
4607
+ exportMessages(conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
4455
4608
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbMessageApi, never>;
4456
4609
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbMessageApi>;
4457
4610
  }
@@ -5438,6 +5591,41 @@ declare const AX_CONVERSATION_STICKER_RENDERER: AXMessageRenderer;
5438
5591
  declare const AX_CONVERSATION_SYSTEM_RENDERER: AXMessageRenderer;
5439
5592
  declare const AX_CONVERSATION_FALLBACK_RENDERER: AXMessageRenderer;
5440
5593
 
5594
+ /**
5595
+ * Optional pipeline hooks for incoming/display {@link AXMessage} data.
5596
+ * Register via `provideConversation({ messagePipeline: [...] })` or
5597
+ * `{ provide: AX_MESSAGE_PIPELINE, useValue: pipeline, multi: true }`.
5598
+ */
5599
+
5600
+ /**
5601
+ * Transform messages when they enter the store or when passed to renderers.
5602
+ * Lower `order` runs first (default 0).
5603
+ */
5604
+ interface AXMessagePipeline {
5605
+ order?: number;
5606
+ /**
5607
+ * Runs when messages are loaded or received (store shape).
5608
+ * Use for wire-format → UI model (e.g. map server `imageId` to `payload.assetId`).
5609
+ */
5610
+ transformIncoming?(message: AXMessage): AXMessage | Promise<AXMessage>;
5611
+ /**
5612
+ * Runs when a renderer is resolved (display-only, sync).
5613
+ * Use for cheap view tweaks; prefer `transformIncoming` for async URL resolution
5614
+ * unless renderers handle loading themselves.
5615
+ */
5616
+ transformForDisplay?(message: AXMessage): AXMessage;
5617
+ }
5618
+ declare const AX_MESSAGE_PIPELINE: InjectionToken<AXMessagePipeline[]>;
5619
+ declare class AXMessagePipelineRunner {
5620
+ private readonly pipelines;
5621
+ get hasPipelines(): boolean;
5622
+ runIncoming(message: AXMessage): Promise<AXMessage>;
5623
+ runForDisplay(message: AXMessage): AXMessage;
5624
+ private sortedPipelines;
5625
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMessagePipelineRunner, never>;
5626
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMessagePipelineRunner>;
5627
+ }
5628
+
5441
5629
  /**
5442
5630
  * Default Conversation Item Actions Plugin
5443
5631
  * Individual action constants with AX_ prefix naming convention
@@ -5504,6 +5692,10 @@ interface AXConversationOptions {
5504
5692
  config?: Partial<AXConversationConfig>;
5505
5693
  /** Registry configuration */
5506
5694
  registry?: Partial<AXRegistryConfiguration>;
5695
+ /** Optional hooks for composer-originated sends (before/after message API). */
5696
+ composerPipeline?: AXComposerPipeline | AXComposerPipeline[];
5697
+ /** Optional hooks for incoming/display messages. */
5698
+ messagePipeline?: AXMessagePipeline | AXMessagePipeline[];
5507
5699
  }
5508
5700
  declare class AXConversation2Module {
5509
5701
  /**
@@ -6149,5 +6341,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6149
6341
  */
6150
6342
  type AXErrorCode = typeof MESSAGE_ERRORS[keyof typeof MESSAGE_ERRORS]['code'] | typeof FILE_ERRORS[keyof typeof FILE_ERRORS]['code'] | typeof USER_ERRORS[keyof typeof USER_ERRORS]['code'] | typeof CONVERSATION_ERRORS[keyof typeof CONVERSATION_ERRORS]['code'] | typeof CONNECTION_ERRORS[keyof typeof CONNECTION_ERRORS]['code'] | typeof LOCATION_ERRORS[keyof typeof LOCATION_ERRORS]['code'] | typeof URL_ERRORS[keyof typeof URL_ERRORS]['code'];
6151
6343
 
6152
- export { AXAudioInfoBarBannerComponent, AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXFileUploadService, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoInfoBarBannerComponent, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceInfoBarBannerComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_INFO_ACTION, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_COPY_ACTION, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, axConversationIndexedDbStorage, conversationSharedStorage, formatErrorMessage, getDefaultConversationItemActions, getErrorMessage, mergeWithDefaults, provideConversation, sanitizeInput, validateConversationId, validateEmail, validateFile, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6153
- export type { AXApiError, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationConfig, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFilePayload, AXFileValidationResult, AXGroupedReaction, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLocationPayload, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageAvatarTemplateContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoPayload, AXVoicePayload, DropdownMenuItem, FilePreview };
6344
+ export { AXAudioInfoBarBannerComponent, AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXComposerActionRegistry, AXComposerComponent, AXComposerPipelineRunner, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXFileUploadService, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessagePipelineRunner, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoInfoBarBannerComponent, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceInfoBarBannerComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_COMPOSER_PIPELINE, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_INFO_ACTION, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_COPY_ACTION, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_CURSOR_PREFIX, AX_MESSAGE_PIPELINE, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, applyConversationFilters, axConversationIndexedDbStorage, conversationSharedStorage, encodeConversationCursor, encodeMessageCursor, formatErrorMessage, getConversationLastActivity, getConversationMessagesNewestFirst, getDefaultConversationItemActions, getErrorMessage, getSortedConversationsForInbox, mergeWithDefaults, normalizeAllConversationMessageIndexes, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, provideConversation, registerChatMessage, sanitizeInput, sortConversationMessageIds, unregisterChatMessage, validateConversationId, validateEmail, validateFile, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6345
+ export type { AXApiError, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXChatCursorKind, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerPipeline, AXComposerPipelineAfterApiContext, AXComposerSendMessageOptions, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationConfig, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFilePayload, AXFileValidationResult, AXGroupedReaction, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLoadMessagesResult, AXLocationPayload, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageAvatarTemplateContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessagePipeline, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXPaginationState, AXParsedChatCursor, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoPayload, AXVoicePayload, DropdownMenuItem, FilePreview };