@sendbird/ai-agent-messenger-react 1.21.2 → 1.22.0

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.
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ import { AIAgentGroupChannelListQuery } from '@sendbird/chat/aiAgent';
4
4
  import { AIAgentModule } from '@sendbird/chat/aiAgent';
5
5
  import { BaseChannel } from '@sendbird/chat';
6
6
  import { BaseMessage } from '@sendbird/chat/message';
7
+ import type { CollectionEventSource } from '@sendbird/chat';
7
8
  import { ComponentType } from 'react';
8
9
  import { ConnectionHandler } from '@sendbird/chat';
9
10
  import { Context } from 'react';
@@ -188,6 +189,7 @@ rootElement?: HTMLElement;
188
189
  theme?: {
189
190
  palette?: Partial<PaletteShape>;
190
191
  typography?: Partial<{ [K in keyof TypographyShape]: Partial<TypographyShape[K]>; }>;
192
+ colors?: ColorSetInput;
191
193
  };
192
194
  /**
193
195
  * @public
@@ -286,7 +288,7 @@ __internalVariables?: InternalMessageTemplateVariables;
286
288
  children?: ReactNode | undefined;
287
289
  } & RefAttributes<MessengerSessionRef>>;
288
290
 
289
- export declare function AgentUIProviderContainer({ appearance, rootElement, logger, language, stringSet, children, messageTemplate, theme, }: Props): JSX.Element;
291
+ export declare function AgentUIProviderContainer({ appearance, rootElement, logger, language, languageCode, stringSet, children, messageTemplate, theme, }: Props): JSX.Element;
290
292
 
291
293
  declare abstract class AIAgentBaseStats {
292
294
  protected timers: Map<string, TimerData> = new Map();
@@ -485,6 +487,7 @@ declare interface AIAgentConversationContextValue {
485
487
  messages: BaseMessage[];
486
488
  newMessages: BaseMessage[];
487
489
  initialized: boolean;
490
+ subscribeMessageEvents: (listener: (event: ConversationMessageEvent) => void) => () => void;
488
491
  loadPrevious: () => Promise<void>;
489
492
  loadNext: () => Promise<void>;
490
493
  sendUserMessage: (params: UserMessageCreateParams) => Promise<UserMessage>;
@@ -760,6 +763,7 @@ export declare type AIAgentProps = PropsWithChildren<{
760
763
  typography?: Partial<{
761
764
  [K in keyof TypographyShape]: Partial<TypographyShape[K]>;
762
765
  }>;
766
+ colors?: ColorSetInput;
763
767
  };
764
768
  /**
765
769
  * @public
@@ -954,6 +958,7 @@ declare interface AIAgentStringSet {
954
958
  conversation: {
955
959
  input_placeholder: string;
956
960
  input_placeholder_disabled: string;
961
+ input_placeholder_steward: string;
957
962
  input_placeholder_wait_ai_agent_response: string;
958
963
  input_placeholder_active_form: string;
959
964
  input_placeholder_reconnecting: string;
@@ -973,14 +978,61 @@ declare interface AIAgentStringSet {
973
978
  a11y_message_list: string;
974
979
  a11y_scroll_to_bottom: string;
975
980
  a11y_scroll_to_new_messages: string;
981
+ /** @deprecated Use a11y_menu instead. */
976
982
  a11y_open_conversation_list: string;
983
+ a11y_open_conversation: string;
984
+ a11y_open_conversations: string;
985
+ a11y_close_conversation: string;
986
+ a11y_close_conversations: string;
987
+ a11y_menu: string;
988
+ a11y_message_input: string;
989
+ a11y_send_message: string;
990
+ a11y_attach_file: string;
991
+ a11y_close_messenger: string;
992
+ a11y_expand_messenger: string;
993
+ a11y_collapse_messenger: string;
994
+ a11y_connect_agent: string;
995
+ a11y_message_sender_you: string;
996
+ a11y_suggested_reply: string;
997
+ a11y_typing_indicator: string;
998
+ a11y_code_block_placeholder: string;
999
+ a11y_typing_format: (name: string) => string;
1000
+ a11y_message_failed: string;
1001
+ a11y_new_messages_received: (count: number) => string;
1002
+ a11y_new_messages_received_from_sender: (sender: string, count: number) => string;
1003
+ a11y_agent_connected: (name: string) => string;
1004
+ a11y_conversation_closed: string;
1005
+ a11y_file_image: (name: string) => string;
1006
+ a11y_file_video: (name: string) => string;
1007
+ a11y_file_document: (name: string) => string;
1008
+ a11y_screen_conversation: string;
1009
+ a11y_screen_conversation_with_agent: (name: string) => string;
1010
+ a11y_screen_conversation_list_no_count: string;
1011
+ a11y_csat_displayed: string;
1012
+ a11y_empty_conversation: string;
1013
+ a11y_input_disabled: string;
1014
+ a11y_file_size_exceeded: (maxSizeMB: number) => string;
1015
+ a11y_csat_form_error: string;
1016
+ a11y_hint_send_message: string;
1017
+ a11y_hint_open_conversation: string;
1018
+ a11y_hint_open_conversations: string;
1019
+ a11y_hint_close_conversation: string;
1020
+ a11y_hint_open_menu: string;
1021
+ a11y_hint_connect_to_agent: string;
1022
+ a11y_hint_attach_file: string;
1023
+ a11y_hint_view_new_messages: string;
1024
+ a11y_hint_open_file: string;
1025
+ a11y_hint_open_image: string;
1026
+ a11y_hint_send_reply: string;
977
1027
  };
978
1028
 
979
1029
  conversation_list: {
980
1030
  header_title: string;
981
1031
  ended: string;
1032
+ system_message: string;
982
1033
  footer_title: string;
983
1034
  multiple_files_count: (count: number) => string;
1035
+ a11y_conversation_item: (agent: string, status: string, time: string, count: number) => string;
984
1036
  };
985
1037
 
986
1038
  date_format: {
@@ -1002,6 +1054,8 @@ declare interface AIAgentStringSet {
1002
1054
  question: string;
1003
1055
  submit_label: string;
1004
1056
  submission_expired: string;
1057
+ a11y_rating_label: (score: number, label: string) => string;
1058
+ a11y_hint_select_rating: string;
1005
1059
  };
1006
1060
 
1007
1061
  form: {
@@ -1028,6 +1082,13 @@ declare interface AIAgentStringSet {
1028
1082
  edit: string;
1029
1083
  remove: string;
1030
1084
  };
1085
+
1086
+ handoff: {
1087
+ confirm_title: string;
1088
+ confirm_description: string;
1089
+ confirm_cancel: string;
1090
+ confirm_handoff: string;
1091
+ };
1031
1092
  }
1032
1093
 
1033
1094
  declare type AnonUserSessionData = { userId: string; authToken: string; expireAt: number };
@@ -1099,6 +1160,55 @@ declare interface CloseConversationCommandParams {
1099
1160
  channelUrl: string;
1100
1161
  }
1101
1162
 
1163
+ /**
1164
+ * Output type — the resolved shape of theme.colors.
1165
+ * All values are plain strings. This is what components consume.
1166
+ */
1167
+ declare interface ColorSet {
1168
+ base: {
1169
+ primary: string;
1170
+ primaryContrastContent: string;
1171
+ background: string;
1172
+ headerBackground: string;
1173
+ modalContentBackground: string;
1174
+ };
1175
+ messageInput: {
1176
+ text: string;
1177
+ placeholderText: string;
1178
+ background: string;
1179
+ };
1180
+ messageIncoming: {
1181
+ text: string;
1182
+ background: string;
1183
+ };
1184
+ messageOutgoing: {
1185
+ text: string;
1186
+ background: string;
1187
+ };
1188
+ csat: {
1189
+ background: string;
1190
+ };
1191
+ }
1192
+
1193
+ /**
1194
+ * Input type — what users pass via the colors prop.
1195
+ * Each string field is replaced with ColorValue for light/dark support.
1196
+ * All fields are optional (partial override).
1197
+ */
1198
+ declare type ColorSetInput = {
1199
+ [K in keyof ColorSet]?: {
1200
+ [P in keyof ColorSet[K]]?: ColorValue;
1201
+ };
1202
+ };
1203
+
1204
+ /**
1205
+ * A color value that can be:
1206
+ * - A single hex string (applied to both light and dark themes)
1207
+ * - An object with optional light/dark hex strings (theme-specific).
1208
+ * When only one side is provided, the other falls back to the auto-generated value.
1209
+ */
1210
+ declare type ColorValue = HexColor | { light?: HexColor; dark?: HexColor };
1211
+
1102
1212
  declare interface CommandPayloads {
1103
1213
  [CommandType.ConversationClose]: undefined | CloseConversationCommandParams;
1104
1214
  [CommandType.MessengerSettingsUpdated]: MessengerSettingsUpdatedParams;
@@ -1129,7 +1239,7 @@ declare interface ContextObject {
1129
1239
  context: Record<string, string>;
1130
1240
  }
1131
1241
 
1132
- export declare const Conversation: ({ children, onNavigateToConversationList, channelUrl, onClearChannelUrl, shouldMarkAsRead, style, closedChannelUrl, onClearClosedChannelUrl, }: Props_3) => JSX.Element;
1242
+ export declare const Conversation: ({ children, onNavigateToConversationList, channelUrl, onClearChannelUrl, shouldMarkAsRead, announcementsEnabled, style, closedChannelUrl, onClearClosedChannelUrl, }: Props_3) => JSX.Element;
1133
1243
 
1134
1244
  export declare const ConversationContext: Context<ConversationContextValue | null>;
1135
1245
 
@@ -1379,7 +1489,7 @@ declare class ConversationInitialRenderStatsTracker {
1379
1489
  export declare const ConversationLayout: {
1380
1490
  (props: PropsWithChildren): ReactNode;
1381
1491
  defaults: {
1382
- template: ComponentType<unknown>;
1492
+ template: ComponentType<ConversationLayoutTemplateProps>;
1383
1493
  components: {
1384
1494
  Header: () => ReactNode;
1385
1495
  Body: () => JSX.Element;
@@ -1387,15 +1497,15 @@ export declare const ConversationLayout: {
1387
1497
  };
1388
1498
  };
1389
1499
  Template: ({ template, children }: {
1390
- template?: ComponentType<unknown> | undefined;
1500
+ template?: ComponentType<ConversationLayoutTemplateProps> | undefined;
1391
1501
  children?: ReactNode;
1392
1502
  }) => JSX.Element;
1393
- Context: Context<LayoutContextValue<unknown, {
1503
+ Context: Context<LayoutContextValue<ConversationLayoutTemplateProps, {
1394
1504
  Header: () => ReactNode;
1395
1505
  Body: () => JSX.Element;
1396
1506
  Footer: () => JSX.Element;
1397
1507
  }>>;
1398
- useContext: () => LayoutContextValue<unknown, {
1508
+ useContext: () => LayoutContextValue<ConversationLayoutTemplateProps, {
1399
1509
  Header: () => ReactNode;
1400
1510
  Body: () => JSX.Element;
1401
1511
  Footer: () => JSX.Element;
@@ -1412,6 +1522,9 @@ export declare const ConversationLayout: {
1412
1522
  }) => null;
1413
1523
  };
1414
1524
 
1525
+ declare interface ConversationLayoutTemplateProps {
1526
+ }
1527
+
1415
1528
  export declare const ConversationList: ({ conversationListLimit, conversationListFilter, children, onOpenConversationView, style, }: Props_4) => JSX.Element;
1416
1529
 
1417
1530
  /**
@@ -1931,6 +2044,25 @@ export declare const ConversationListLayout: {
1931
2044
  }) => null;
1932
2045
  };
1933
2046
 
2047
+ declare type ConversationMessageEvent = ConversationMessageEventPayload & { id: number };
2048
+
2049
+ declare type ConversationMessageEventPayload =
2050
+ | {
2051
+ kind: 'messagesAdded';
2052
+ source: CollectionEventSource;
2053
+ messages: BaseMessage[];
2054
+ }
2055
+ | {
2056
+ kind: 'messagesUpdated';
2057
+ source: CollectionEventSource;
2058
+ messages: BaseMessage[];
2059
+ }
2060
+ | {
2061
+ kind: 'initialized';
2062
+ source: 'cache' | 'api';
2063
+ messages: BaseMessage[];
2064
+ };
2065
+
1934
2066
  declare interface ConversationScrollContextValue {
1935
2067
  ref: RefObject<HTMLDivElement | null> | ((element: HTMLDivElement | null) => void);
1936
2068
  state: {
@@ -2112,7 +2244,7 @@ export declare interface ExtendedMessagePayload {
2112
2244
  url: string;
2113
2245
  };
2114
2246
  suggested_replies: string[];
2115
- user_input_disabled_by: 'suggested_replies';
2247
+ user_input_disabled_by: 'suggested_replies' | 'steward' | 'system';
2116
2248
  message_template: MessageTemplateShape;
2117
2249
  custom_message_templates: CustomMessageTemplateData[];
2118
2250
  csat: {
@@ -2167,6 +2299,7 @@ export declare interface ExtendedMessagePayload {
2167
2299
  citations?: CitationInfo[];
2168
2300
  feedback?: FeedbackInfo;
2169
2301
  form?: Form;
2302
+ steward?: Steward;
2170
2303
 
2171
2304
  // logs
2172
2305
  groundedness: GroundednessInfo[];
@@ -2264,6 +2397,13 @@ export declare interface GroundednessInfo {
2264
2397
  preview_title: string;
2265
2398
  }
2266
2399
 
2400
+ /**
2401
+ * Hex color string type. Enforces '#' prefix at compile time.
2402
+ * Only validates the prefix — does not guarantee valid hex digits or length.
2403
+ * Invalid values (e.g. '#zzz') will produce undefined rendering behavior.
2404
+ */
2405
+ declare type HexColor = `#${string}`;
2406
+
2267
2407
  /**
2268
2408
  * frequently used icons are imported statically, and others are imported dynamically.
2269
2409
  * */
@@ -2282,6 +2422,9 @@ declare const icons: {
2282
2422
  readonly 'chevron-down': LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2283
2423
  readonly 'chevron-right': LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2284
2424
  readonly done: LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2425
+ readonly 'done-circle': LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2426
+ readonly stop: LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2427
+ readonly 'stop-circle': LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2285
2428
  readonly user: LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2286
2429
  readonly 'file-document': LazyExoticComponent<FC<SVGProps<SVGElement>>>;
2287
2430
  readonly download: LazyExoticComponent<FC<SVGProps<SVGElement>>>;
@@ -3431,6 +3574,8 @@ declare type InputState = {
3431
3574
  | 'ai_responding'
3432
3575
  | 'conversation_closed'
3433
3576
  | 'suggested_replies'
3577
+ | 'steward'
3578
+ | 'system'
3434
3579
  | 'reconnecting'
3435
3580
  | 'handoff_pending'
3436
3581
  | (string & {});
@@ -3450,7 +3595,7 @@ declare interface LanguageSet extends Omit<AIAgentLanguageSet, 'strings'> {
3450
3595
  stringSet: StringSet;
3451
3596
  }
3452
3597
 
3453
- export declare function LauncherBase({ className, isOpened, onClick, type, imageUrl, dir, animated, backgroundColor, size, }: LauncherProps): JSX.Element;
3598
+ export declare function LauncherBase({ className, children, isOpened, onClick, ariaLabel, 'aria-label': ariaLabelProp, 'aria-describedby': ariaDescribedBy, type, imageUrl, dir, animated, backgroundColor, size, }: LauncherProps): JSX.Element;
3454
3599
 
3455
3600
  declare type LauncherImageType = 'default_icon' | 'custom_image';
3456
3601
 
@@ -3461,8 +3606,12 @@ declare interface LauncherInfo {
3461
3606
 
3462
3607
  declare type LauncherProps = {
3463
3608
  className?: string;
3609
+ children?: ReactNode;
3464
3610
  isOpened: boolean;
3465
3611
  onClick?: () => void;
3612
+ ariaLabel?: string;
3613
+ 'aria-label'?: string;
3614
+ 'aria-describedby'?: string;
3466
3615
  type: LauncherImageType;
3467
3616
  imageUrl: string;
3468
3617
  backgroundColor: string;
@@ -3480,6 +3629,7 @@ declare interface LayoutContextValue<Props, Components extends Record<string, Co
3480
3629
 
3481
3630
  declare interface LocalizationContextValue extends LanguageSet {
3482
3631
  format: typeof format;
3632
+ defaultStringSet: StringSet;
3483
3633
  }
3484
3634
 
3485
3635
  declare interface Loggable {
@@ -4025,11 +4175,14 @@ declare type Props = {
4025
4175
  logger?: Loggable;
4026
4176
  stringSet?: Partial<StringSet>;
4027
4177
  language?: string;
4178
+ /** @internal DO NOT USE THIS **/
4179
+ languageCode?: string;
4028
4180
  theme?: {
4029
4181
  palette?: Partial<PaletteShape>;
4030
4182
  typography?: Partial<{
4031
4183
  [K in keyof TypographyShape]: Partial<TypographyShape[K]>;
4032
4184
  }>;
4185
+ colors?: ColorSetInput;
4033
4186
  };
4034
4187
  /** @internal DO NOT USE THIS **/
4035
4188
  messageTemplate?: {
@@ -4066,6 +4219,7 @@ declare type Props_3 = PropsWithChildren<{
4066
4219
  onClearChannelUrl?: () => void;
4067
4220
  onNavigateToConversationList?: () => void;
4068
4221
  shouldMarkAsRead?: boolean;
4222
+ announcementsEnabled?: boolean;
4069
4223
  /** Custom styles for the conversation container. */
4070
4224
  style?: CSSProperties;
4071
4225
  /** @deprecated Please use `channelUrl` instead. **/
@@ -4113,6 +4267,39 @@ declare type SingleSelectField = {
4113
4267
 
4114
4268
  declare type StatsAppendCallback = (type: string, data: AIAgentStatPayload) => boolean;
4115
4269
 
4270
+ declare interface Steward {
4271
+ title: string;
4272
+ description?: string;
4273
+ status?: StewardStatus;
4274
+ cancellation_option?: StewardCancellationOption;
4275
+ tasks: StewardTask[];
4276
+ }
4277
+
4278
+ declare interface StewardCancellationOption {
4279
+ title: string;
4280
+ description: string;
4281
+ positive_text: string;
4282
+ negative_text: string;
4283
+ }
4284
+
4285
+ declare enum StewardStatus {
4286
+ IN_PROGRESS = 'IN_PROGRESS',
4287
+ COMPLETED = 'COMPLETED',
4288
+ CANCELED = 'CANCELED',
4289
+ }
4290
+
4291
+ declare interface StewardTask {
4292
+ id: string;
4293
+ user_facing_title: string;
4294
+ status: StewardTaskStatus;
4295
+ }
4296
+
4297
+ declare enum StewardTaskStatus {
4298
+ IN_PROGRESS = 'IN_PROGRESS',
4299
+ COMPLETED = 'COMPLETED',
4300
+ CANCELED = 'CANCELED',
4301
+ }
4302
+
4116
4303
  /**
4117
4304
  * StringSet type for React components
4118
4305
  * Uses SNAKE_CASE keys for backward compatibility
@@ -4126,6 +4313,7 @@ declare type StringSet = {
4126
4313
  MESSAGE_INPUT__PLACE_HOLDER__WAIT_AI_AGENT_RESPONSE: string;
4127
4314
  MESSAGE_INPUT__PLACE_HOLDER__SUGGESTED_REPLIES: string;
4128
4315
  MESSAGE_INPUT__PLACE_HOLDER__DISABLED: string;
4316
+ MESSAGE_INPUT__PLACE_HOLDER__STEWARD: string;
4129
4317
  MESSAGE_INPUT__PLACE_HOLDER__RECONNECTING: string;
4130
4318
  BUTTON__CANCEL: string;
4131
4319
  BUTTON__SUBMIT: string;
@@ -4174,6 +4362,7 @@ declare type StringSet = {
4174
4362
  CONVERSATION_LIST__HEADER_TITLE: string;
4175
4363
  CONVERSATION_LIST__NO_CONVERSATIONS: string;
4176
4364
  CONVERSATION_LIST__ENDED: string;
4365
+ CONVERSATION_LIST__SYSTEM_MESSAGE: string;
4177
4366
  CONVERSATION_LIST__MULTIPLE_FILES_COUNT: (count: number) => string;
4178
4367
  CITATION_SOURCE_TITLE: string;
4179
4368
  FORM_PLACEHOLDER: string;
@@ -4202,13 +4391,70 @@ declare type StringSet = {
4202
4391
  A11Y_MESSAGE_LIST: string;
4203
4392
  A11Y_SCROLL_TO_BOTTOM: string;
4204
4393
  A11Y_SCROLL_TO_NEW_MESSAGES: string;
4394
+ /** @deprecated Use A11Y_MENU instead. */
4205
4395
  A11Y_OPEN_CONVERSATION_LIST: string;
4396
+ A11Y_OPEN_CONVERSATION: string;
4397
+ A11Y_OPEN_CONVERSATIONS: string;
4398
+ A11Y_CLOSE_CONVERSATION: string;
4399
+ A11Y_CLOSE_CONVERSATIONS: string;
4400
+ A11Y_MENU: string;
4401
+ A11Y_MESSAGE_INPUT: string;
4402
+ A11Y_SEND_MESSAGE: string;
4206
4403
  A11Y_IMAGE_VIEWER_CLOSE: string;
4207
4404
  A11Y_IMAGE_VIEWER_PREVIOUS: string;
4208
4405
  A11Y_IMAGE_VIEWER_NEXT: string;
4209
4406
  A11Y_IMAGE_VIEWER_DOWNLOAD: string;
4210
4407
  A11Y_ATTACH_FILE: string;
4408
+ A11Y_MESSAGE_SENDER_YOU: string;
4409
+ A11Y_SUGGESTED_REPLY: string;
4410
+ A11Y_TYPING_INDICATOR: string;
4411
+ A11Y_CODE_BLOCK_PLACEHOLDER: string;
4412
+ A11Y_CSAT_RATING_LABEL: (score: number, label: string) => string;
4413
+ A11Y_FILE_UPLOAD_OPTIONS: string;
4414
+ A11Y_FAILED_MESSAGE_OPTIONS: string;
4415
+ A11Y_FEEDBACK_OPTIONS: string;
4416
+ A11Y_TYPING_FORMAT: (name: string) => string;
4417
+ A11Y_MESSAGE_FAILED: string;
4418
+ A11Y_NEW_MESSAGES_RECEIVED: (count: number) => string;
4419
+ A11Y_NEW_MESSAGES_RECEIVED_FROM_SENDER: (sender: string, count: number) => string;
4420
+ A11Y_AGENT_CONNECTED: (name: string) => string;
4421
+ A11Y_CONVERSATION_CLOSED: string;
4422
+ A11Y_FILE_IMAGE: (name: string) => string;
4423
+ A11Y_FILE_VIDEO: (name: string) => string;
4424
+ A11Y_FILE_DOCUMENT: (name: string) => string;
4425
+ A11Y_FILE_SELECTED?: (label: string) => string;
4426
+ A11Y_FILE_REMOVE_BUTTON: (name: string) => string;
4427
+ A11Y_SCREEN_CONVERSATION: string;
4428
+ A11Y_SCREEN_CONVERSATION_WITH_AGENT: (name: string) => string;
4429
+ A11Y_SCREEN_CONVERSATION_LIST_NO_COUNT: string;
4430
+ A11Y_CSAT_DISPLAYED: string;
4431
+ A11Y_EMPTY_CONVERSATION: string;
4432
+ A11Y_INPUT_DISABLED: string;
4433
+ A11Y_FILE_SIZE_EXCEEDED: (maxSizeMB: number) => string;
4434
+ A11Y_CSAT_FORM_ERROR: string;
4435
+ A11Y_CONVERSATION_ITEM: (agent: string, status: string, time: string, count: number) => string;
4436
+ A11Y_RATING_LABEL: (score: number, label: string) => string;
4437
+ A11Y_CONNECT_AGENT: string;
4438
+ A11Y_CLOSE_MESSENGER: string;
4439
+ A11Y_EXPAND_MESSENGER: string;
4440
+ A11Y_COLLAPSE_MESSENGER: string;
4441
+ A11Y_HINT_SEND_MESSAGE: string;
4442
+ A11Y_HINT_OPEN_CONVERSATION: string;
4443
+ A11Y_HINT_OPEN_CONVERSATIONS: string;
4444
+ A11Y_HINT_CLOSE_CONVERSATION: string;
4445
+ A11Y_HINT_OPEN_MENU: string;
4446
+ A11Y_HINT_CONNECT_TO_AGENT: string;
4447
+ A11Y_HINT_ATTACH_FILE: string;
4448
+ A11Y_HINT_VIEW_NEW_MESSAGES: string;
4449
+ A11Y_HINT_OPEN_FILE: string;
4450
+ A11Y_HINT_OPEN_IMAGE: string;
4451
+ A11Y_HINT_SEND_REPLY: string;
4452
+ A11Y_HINT_SELECT_RATING: string;
4211
4453
  SCROLL_TO_NEW_MESSAGES_LABEL: (messages: BaseMessage[]) => string;
4454
+ HANDOFF_CONFIRM__TITLE: string;
4455
+ HANDOFF_CONFIRM__DESCRIPTION: string;
4456
+ HANDOFF_CONFIRM__CANCEL: string;
4457
+ HANDOFF_CONFIRM__HANDOFF: string;
4212
4458
  /** @deprecated Please use DATE_FORMAT__DATE_SHORT instead. **/
4213
4459
  DATE_FORMAT__CONVERSATION_LIST__LIST_ITEM_TITLE: string;
4214
4460
  /** @deprecated Unused string **/