instantsearch.js 4.87.0 → 4.87.1

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.
Files changed (54) hide show
  1. package/cjs/connectors/chat/connectChat.js +4 -4
  2. package/cjs/index.js +2 -2
  3. package/cjs/lib/ai-lite/abstract-chat.js +823 -0
  4. package/cjs/lib/ai-lite/index.js +57 -0
  5. package/cjs/lib/ai-lite/stream-parser.js +138 -0
  6. package/cjs/lib/ai-lite/transport.js +218 -0
  7. package/cjs/lib/ai-lite/types.js +1 -0
  8. package/cjs/lib/ai-lite/utils.js +85 -0
  9. package/cjs/lib/chat/chat.js +3 -3
  10. package/cjs/lib/version.js +1 -1
  11. package/dist/instantsearch.development.d.ts +1561 -169
  12. package/dist/instantsearch.development.js +9110 -4563
  13. package/dist/instantsearch.development.js.map +1 -1
  14. package/dist/instantsearch.production.d.ts +1561 -169
  15. package/dist/instantsearch.production.min.d.ts +1561 -169
  16. package/dist/instantsearch.production.min.js +2 -2
  17. package/dist/instantsearch.production.min.js.map +1 -1
  18. package/es/connectors/chat/connectChat.d.ts +14 -14
  19. package/es/connectors/chat/connectChat.js +1 -1
  20. package/es/connectors/frequently-bought-together/connectFrequentlyBoughtTogether.d.ts +2 -2
  21. package/es/connectors/geo-search/connectGeoSearch.d.ts +1 -1
  22. package/es/connectors/hits/connectHits.d.ts +1 -1
  23. package/es/connectors/hits/connectHitsWithInsights.d.ts +1 -1
  24. package/es/connectors/infinite-hits/connectInfiniteHits.d.ts +1 -1
  25. package/es/connectors/infinite-hits/connectInfiniteHitsWithInsights.d.ts +1 -1
  26. package/es/connectors/looking-similar/connectLookingSimilar.d.ts +2 -2
  27. package/es/connectors/related-products/connectRelatedProducts.d.ts +2 -2
  28. package/es/connectors/trending-items/connectTrendingItems.d.ts +2 -2
  29. package/es/lib/ai-lite/abstract-chat.d.ts +89 -0
  30. package/es/lib/ai-lite/abstract-chat.js +818 -0
  31. package/es/lib/ai-lite/index.d.ts +11 -0
  32. package/es/lib/ai-lite/index.js +18 -0
  33. package/es/lib/ai-lite/stream-parser.d.ts +18 -0
  34. package/es/lib/ai-lite/stream-parser.js +131 -0
  35. package/es/lib/ai-lite/transport.d.ts +24 -0
  36. package/es/lib/ai-lite/transport.js +214 -0
  37. package/es/lib/ai-lite/types.d.ts +362 -0
  38. package/es/lib/ai-lite/types.js +1 -0
  39. package/es/lib/ai-lite/utils.d.ts +12 -0
  40. package/es/lib/ai-lite/utils.js +76 -0
  41. package/es/lib/chat/chat.d.ts +2 -2
  42. package/es/lib/chat/chat.js +1 -1
  43. package/es/lib/version.d.ts +1 -1
  44. package/es/lib/version.js +1 -1
  45. package/es/widgets/chat/chat.d.ts +14 -14
  46. package/es/widgets/filter-suggestions/filter-suggestions.d.ts +5 -5
  47. package/es/widgets/frequently-bought-together/frequently-bought-together.d.ts +3 -3
  48. package/es/widgets/geo-search/geo-search.d.ts +1 -1
  49. package/es/widgets/hits/hits.d.ts +1 -1
  50. package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -1
  51. package/es/widgets/looking-similar/looking-similar.d.ts +3 -3
  52. package/es/widgets/related-products/related-products.d.ts +3 -3
  53. package/es/widgets/trending-items/trending-items.d.ts +3 -3
  54. package/package.json +6 -7
@@ -1,16 +1,20 @@
1
- import { AbstractChat } from 'ai';
2
1
  import { AlgoliaSearchHelper } from 'algoliasearch-helper';
3
2
  import type { AutocompleteClassNames } from 'instantsearch-ui-components';
4
3
  import type { AutocompleteIndexClassNames } from 'instantsearch-ui-components';
5
4
  import type { AutocompleteIndexConfig } from 'instantsearch-ui-components';
6
5
  import { Banner } from 'algoliasearch-helper';
7
6
  import type { CarouselProps } from 'instantsearch-ui-components';
8
- import type { ChatInit as ChatInit_2 } from 'ai';
9
- import type { ChatState as ChatState_2 } from 'ai';
10
- import type { ChatStatus } from 'ai';
7
+ import type { ChatClassNames } from 'instantsearch-ui-components';
8
+ import type { ChatHeaderProps } from 'instantsearch-ui-components';
9
+ import type { ChatMessageActionProps } from 'instantsearch-ui-components';
10
+ import type { ChatMessageBase } from 'instantsearch-ui-components';
11
+ import type { ChatMessageErrorProps } from 'instantsearch-ui-components';
12
+ import type { ChatMessageLoaderProps } from 'instantsearch-ui-components';
13
+ import type { ChatPromptProps } from 'instantsearch-ui-components';
14
+ import type { ChatToggleButtonProps } from 'instantsearch-ui-components';
15
+ import type { ClientSideToolComponentProps } from 'instantsearch-ui-components';
11
16
  import type { ClientSideTools } from 'instantsearch-ui-components';
12
17
  import { CompositionClient } from 'algoliasearch-helper/types/algoliasearch.js';
13
- import { DefaultChatTransport } from 'ai';
14
18
  import EventEmitter from '@algolia/events';
15
19
  import type { FilterSuggestionsClassNames } from 'instantsearch-ui-components';
16
20
  import type { FilterSuggestionsEmptyComponentProps } from 'instantsearch-ui-components';
@@ -36,19 +40,106 @@ import type { RecommendParametersOptions } from 'algoliasearch-helper';
36
40
  import { RecommendResponse } from 'algoliasearch-helper/types/algoliasearch.js';
37
41
  import { RecommendResponse as RecommendResponse_2 } from 'algoliasearch-helper/types/algoliasearch';
38
42
  import type { RecommendResults } from 'algoliasearch-helper';
43
+ import type { RecordWithObjectID } from 'instantsearch-ui-components';
39
44
  import type { RelatedProductsProps } from 'instantsearch-ui-components';
40
45
  import { SearchClient } from 'algoliasearch-helper/types/algoliasearch.js';
41
46
  import { SearchOptions } from 'algoliasearch-helper/types/algoliasearch.js';
42
47
  import { SearchParameters } from 'algoliasearch-helper';
43
48
  import { SearchResults } from 'algoliasearch-helper';
44
49
  import type { TrendingItemsProps } from 'instantsearch-ui-components';
45
- import { UIDataTypes } from 'ai';
46
- import { UIMessage } from 'ai';
47
- import { UITools } from 'ai';
48
50
  import type { UserClientSideTool } from 'instantsearch-ui-components';
49
51
  import { VNode } from 'preact';
50
52
  import type { VNode as VNode_2 } from 'instantsearch-ui-components';
51
53
 
54
+ /**
55
+ * Abstract base class for chat implementations.
56
+ */
57
+ declare abstract class AbstractChat<TUIMessage extends UIMessage> {
58
+ readonly id: string;
59
+ readonly generateId: IdGenerator;
60
+ protected state: ChatState<TUIMessage>;
61
+ private readonly transport?;
62
+ private onError?;
63
+ private onToolCall?;
64
+ private onFinish?;
65
+ private onData?;
66
+ private sendAutomaticallyWhen?;
67
+ private activeResponse;
68
+ private jobExecutor;
69
+ constructor({ generateId, id, transport, state, onError, onToolCall, onFinish, onData, sendAutomaticallyWhen, }: Omit<ChatInit<TUIMessage>, 'messages'> & {
70
+ state: ChatState<TUIMessage>;
71
+ });
72
+ /**
73
+ * Hook status:
74
+ *
75
+ * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.
76
+ * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.
77
+ * - `ready`: The full response has been received and processed; a new user message can be submitted.
78
+ * - `error`: An error occurred during the API request, preventing successful completion.
79
+ */
80
+ get status(): ChatStatus;
81
+ protected setStatus({ status, error, }: {
82
+ status: ChatStatus;
83
+ error?: Error;
84
+ }): void;
85
+ get error(): Error | undefined;
86
+ get messages(): TUIMessage[];
87
+ set messages(messages: TUIMessage[]);
88
+ get lastMessage(): TUIMessage | undefined;
89
+ /**
90
+ * Appends or replaces a user message to the chat list. This triggers the API call to fetch
91
+ * the assistant's response.
92
+ */
93
+ sendMessage: (message?: (CreateUIMessage<TUIMessage> & {
94
+ text?: never;
95
+ files?: never;
96
+ messageId?: string;
97
+ }) | {
98
+ text: string;
99
+ files?: FileList | FileUIPart[];
100
+ metadata?: InferUIMessageMetadata<TUIMessage>;
101
+ parts?: never;
102
+ messageId?: string;
103
+ } | {
104
+ files: FileList | FileUIPart[];
105
+ metadata?: InferUIMessageMetadata<TUIMessage>;
106
+ parts?: never;
107
+ messageId?: string;
108
+ }, options?: ChatRequestOptions) => Promise<void>;
109
+ /**
110
+ * Regenerate the assistant message with the provided message id.
111
+ * If no message id is provided, the last assistant message will be regenerated.
112
+ */
113
+ regenerate: ({ messageId, ...options }?: {
114
+ messageId?: string;
115
+ } & ChatRequestOptions) => Promise<void>;
116
+ /**
117
+ * Attempt to resume an ongoing streaming response.
118
+ */
119
+ resumeStream: (options?: ChatRequestOptions) => Promise<void>;
120
+ /**
121
+ * Clear the error state and set the status to ready if the chat is in an error state.
122
+ */
123
+ clearError: () => void;
124
+ /**
125
+ * Add a tool result for a tool call.
126
+ */
127
+ addToolResult: <TTool extends keyof InferUIMessageTools<TUIMessage>>({ tool, toolCallId, output, }: {
128
+ tool: TTool;
129
+ toolCallId: string;
130
+ output: InferUIMessageTools<TUIMessage>[TTool]["output"];
131
+ }) => Promise<void>;
132
+ /**
133
+ * Abort the current request immediately, keep the generated tokens if any.
134
+ */
135
+ stop: () => Promise<void>;
136
+ private makeRequest;
137
+ private processStreamWithCallbacks;
138
+ private handleError;
139
+ private convertFilesToParts;
140
+ private fileToDataUrl;
141
+ }
142
+
52
143
  declare type AlgoliaHit<THit extends NonNullable<object> = Record<string, any>> = {
53
144
  objectID: string;
54
145
  _highlightResult?: HitHighlightResult;
@@ -674,8 +765,8 @@ declare type CarouselTemplateProps<TObject extends Record<string, unknown>> = Pi
674
765
  };
675
766
 
676
767
  declare class Chat<TUiMessage extends UIMessage> extends AbstractChat<TUiMessage> {
677
- _state: ChatState<TUiMessage>;
678
- constructor({ messages, agentId, ...init }: ChatInit_2<TUiMessage> & {
768
+ _state: ChatState_2<TUiMessage>;
769
+ constructor({ messages, agentId, ...init }: ChatInit<TUiMessage> & {
679
770
  agentId?: string;
680
771
  });
681
772
  '~registerMessagesCallback': (onChange: () => void) => (() => void);
@@ -683,11 +774,9 @@ declare class Chat<TUiMessage extends UIMessage> extends AbstractChat<TUiMessage
683
774
  '~registerErrorCallback': (onChange: () => void) => (() => void);
684
775
  }
685
776
 
686
- declare const chat: () => never;
687
-
688
777
  declare type ChatConnectorParams<TUiMessage extends UIMessage = UIMessage> = ({
689
778
  chat: Chat<TUiMessage>;
690
- } | ChatInit<TUiMessage>) & {
779
+ } | ChatInit_2<TUiMessage>) & {
691
780
  /**
692
781
  * Whether to resume an ongoing chat generation stream.
693
782
  */
@@ -703,9 +792,41 @@ declare type ChatConnectorParams<TUiMessage extends UIMessage = UIMessage> = ({
703
792
  type?: string;
704
793
  };
705
794
 
706
- declare type ChatInit<TUiMessage extends UIMessage> = ChatInitWithoutTransport<TUiMessage> & ChatTransport;
795
+ declare type ChatCSSClasses = Partial<ChatClassNames>;
796
+
797
+ declare interface ChatInit<UI_MESSAGE extends UIMessage> {
798
+ id?: string;
799
+ messages?: UI_MESSAGE[];
800
+ generateId?: IdGenerator;
801
+ transport?: ChatTransport<UI_MESSAGE>;
802
+ onError?: ChatOnErrorCallback;
803
+ onToolCall?: ChatOnToolCallCallback<UI_MESSAGE>;
804
+ onFinish?: ChatOnFinishCallback<UI_MESSAGE>;
805
+ onData?: ChatOnDataCallback<UI_MESSAGE>;
806
+ sendAutomaticallyWhen?: (options: {
807
+ messages: UI_MESSAGE[];
808
+ }) => boolean | PromiseLike<boolean>;
809
+ }
810
+
811
+ declare type ChatInit_2<TUiMessage extends UIMessage> = ChatInitWithoutTransport<TUiMessage> & ChatTransport_2;
707
812
 
708
- declare type ChatInitWithoutTransport<TUiMessage extends UIMessage> = Omit<ChatInit_2<TUiMessage>, 'transport'>;
813
+ declare type ChatInitWithoutTransport<TUiMessage extends UIMessage> = Omit<ChatInit<TUiMessage>, 'transport'>;
814
+
815
+ declare type ChatOnDataCallback<UI_MESSAGE extends UIMessage> = (dataPart: DataUIPart<InferUIMessageData<UI_MESSAGE>>) => void;
816
+
817
+ declare type ChatOnErrorCallback = (error: Error) => void;
818
+
819
+ declare type ChatOnFinishCallback<UI_MESSAGE extends UIMessage> = (options: {
820
+ message: UI_MESSAGE;
821
+ messages: UI_MESSAGE[];
822
+ isAbort: boolean;
823
+ isDisconnect: boolean;
824
+ isError: boolean;
825
+ }) => void;
826
+
827
+ declare type ChatOnToolCallCallback<UI_MESSAGE extends UIMessage = UIMessage> = (options: {
828
+ toolCall: InferUIMessageToolCall<UI_MESSAGE>;
829
+ }) => void | PromiseLike<void>;
709
830
 
710
831
  declare type ChatRenderState<TUiMessage extends UIMessage = UIMessage> = {
711
832
  indexUiState: IndexUiState;
@@ -746,7 +867,23 @@ declare type ChatRenderState<TUiMessage extends UIMessage = UIMessage> = {
746
867
  suggestions?: string[];
747
868
  } & Pick<AbstractChat<TUiMessage>, 'addToolResult' | 'clearError' | 'error' | 'id' | 'messages' | 'regenerate' | 'resumeStream' | 'sendMessage' | 'status' | 'stop'>;
748
869
 
749
- declare class ChatState<TUiMessage extends UIMessage> implements ChatState_2<TUiMessage> {
870
+ declare type ChatRequestOptions = {
871
+ headers?: Record<string, string> | Headers;
872
+ body?: object;
873
+ metadata?: unknown;
874
+ };
875
+
876
+ declare interface ChatState<UI_MESSAGE extends UIMessage> {
877
+ status: ChatStatus;
878
+ error: Error | undefined;
879
+ messages: UI_MESSAGE[];
880
+ pushMessage: (message: UI_MESSAGE) => void;
881
+ popMessage: () => void;
882
+ replaceMessage: (index: number, message: UI_MESSAGE) => void;
883
+ snapshot: <T>(thing: T) => T;
884
+ }
885
+
886
+ declare class ChatState_2<TUiMessage extends UIMessage> implements ChatState<TUiMessage> {
750
887
  _messages: TUiMessage[];
751
888
  _status: ChatStatus;
752
889
  _error: Error | undefined;
@@ -772,7 +909,222 @@ declare class ChatState<TUiMessage extends UIMessage> implements ChatState_2<TUi
772
909
  _callErrorCallbacks: () => void;
773
910
  }
774
911
 
775
- declare type ChatTransport = {
912
+ /**
913
+ * Chat status:
914
+ * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.
915
+ * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.
916
+ * - `ready`: The full response has been received and processed; a new user message can be submitted.
917
+ * - `error`: An error occurred during the API request, preventing successful completion.
918
+ */
919
+ declare type ChatStatus = 'submitted' | 'streaming' | 'ready' | 'error';
920
+
921
+ declare type ChatTemplates<THit extends NonNullable<object> = BaseHit> = Partial<{
922
+ /**
923
+ * Template to use for each result. This template will receive an object containing a single record.
924
+ */
925
+ item: TemplateWithBindEvent<Hit<THit>>;
926
+ /**
927
+ * Templates to use for the header.
928
+ */
929
+ header: Partial<{
930
+ /**
931
+ * Template to use for the chat header.
932
+ */
933
+ layout: Template<ChatHeaderProps>;
934
+ /**
935
+ * Optional close icon
936
+ */
937
+ closeIcon: Template;
938
+ /**
939
+ * Optional minimize icon
940
+ */
941
+ minimizeIcon?: Template;
942
+ /**
943
+ * Optional maximize icon
944
+ */
945
+ maximizeIcon?: Template<{
946
+ maximized: boolean;
947
+ }>;
948
+ /**
949
+ * Optional title icon (defaults to sparkles)
950
+ */
951
+ titleIcon?: Template;
952
+ /**
953
+ * The title to display in the header
954
+ */
955
+ titleText: string;
956
+ /**
957
+ * Accessible label for the minimize button
958
+ */
959
+ minimizeLabelText: string;
960
+ /**
961
+ * Accessible label for the maximize button
962
+ */
963
+ maximizeLabelText: string;
964
+ /**
965
+ * Accessible label for the close button
966
+ */
967
+ closeLabelText: string;
968
+ /**
969
+ * Text for the clear button
970
+ */
971
+ clearLabelText: string;
972
+ }>;
973
+ /**
974
+ * Templates to use for the messages.
975
+ */
976
+ messages: Partial<{
977
+ /**
978
+ * Template to use when loading messages
979
+ */
980
+ loader: Template<ChatMessageLoaderProps>;
981
+ /**
982
+ * Template to use when there is an error loading messages
983
+ */
984
+ error: Template<ChatMessageErrorProps>;
985
+ /**
986
+ * Label for the scroll to bottom button
987
+ */
988
+ scrollToBottomLabelText?: string;
989
+ /**
990
+ * Text to display in the loader
991
+ */
992
+ loaderText?: string;
993
+ /**
994
+ * Label for the copy to clipboard action
995
+ */
996
+ copyToClipboardLabelText?: string;
997
+ /**
998
+ * Label for the regenerate action
999
+ */
1000
+ regenerateLabelText?: string;
1001
+ }>;
1002
+ /**
1003
+ * Templates to use for each message.
1004
+ */
1005
+ message: Partial<{
1006
+ /**
1007
+ * Label for the message actions
1008
+ */
1009
+ actionsLabelText?: string;
1010
+ /**
1011
+ * Label for the message container
1012
+ */
1013
+ messageLabelText?: string;
1014
+ }>;
1015
+ /**
1016
+ * Templates to use for the assistant message.
1017
+ */
1018
+ assistantMessage: Partial<{
1019
+ /**
1020
+ * Template to use for the assistant message leading content.
1021
+ */
1022
+ leading: Template;
1023
+ /**
1024
+ * Template to use for the assistant message footer content.
1025
+ */
1026
+ footer: Template;
1027
+ }>;
1028
+ /**
1029
+ * Templates to use for the user message.
1030
+ */
1031
+ userMessage: Partial<{
1032
+ /**
1033
+ * Template to use for the user message leading content.
1034
+ */
1035
+ leading: Template;
1036
+ /**
1037
+ * Template to use for the user message footer content.
1038
+ */
1039
+ footer: Template;
1040
+ }>;
1041
+ /**
1042
+ * Templates to use for the prompt.
1043
+ */
1044
+ prompt: Partial<{
1045
+ /**
1046
+ * Template to use for the chat prompt.
1047
+ */
1048
+ layout: Template<ChatPromptProps>;
1049
+ /**
1050
+ * Template to use for the prompt header.
1051
+ */
1052
+ header: Template;
1053
+ /**
1054
+ * Template to use for the prompt footer.
1055
+ */
1056
+ footer: Template;
1057
+ /**
1058
+ * The label for the textarea
1059
+ */
1060
+ textareaLabelText: string;
1061
+ /**
1062
+ * The placeholder text for the textarea
1063
+ */
1064
+ textareaPlaceholderText: string;
1065
+ /**
1066
+ * The tooltip for the submit button when message is empty
1067
+ */
1068
+ emptyMessageTooltipText: string;
1069
+ /**
1070
+ * The tooltip for the stop button
1071
+ */
1072
+ stopResponseTooltipText: string;
1073
+ /**
1074
+ * The tooltip for the send button
1075
+ */
1076
+ sendMessageTooltipText: string;
1077
+ /**
1078
+ * The disclaimer text shown in the footer
1079
+ */
1080
+ disclaimerText: string;
1081
+ }>;
1082
+ /**
1083
+ * Templates to use for the toggle button.
1084
+ */
1085
+ toggleButton: Partial<{
1086
+ /**
1087
+ * Template to use for the toggle button layout.
1088
+ */
1089
+ layout: Template<ChatToggleButtonProps>;
1090
+ /**
1091
+ * Template to use for the toggle button icon.
1092
+ */
1093
+ icon: Template<{
1094
+ isOpen: boolean;
1095
+ }>;
1096
+ }>;
1097
+ /**
1098
+ * Template to use for the message actions.
1099
+ */
1100
+ actions: Template<{
1101
+ actions: ChatMessageActionProps[];
1102
+ message: ChatMessageBase;
1103
+ }>;
1104
+ /**
1105
+ * Template to use for prompt suggestions.
1106
+ */
1107
+ suggestions: Template<{
1108
+ suggestions: string[];
1109
+ onSuggestionClick: (suggestion: string) => void;
1110
+ }>;
1111
+ }>;
1112
+
1113
+ declare interface ChatTransport<UI_MESSAGE extends UIMessage> {
1114
+ sendMessages: (options: {
1115
+ chatId: string;
1116
+ messages: UI_MESSAGE[];
1117
+ abortSignal: AbortSignal;
1118
+ requestMetadata?: unknown;
1119
+ trigger: 'submit-message' | 'regenerate-message';
1120
+ messageId?: string;
1121
+ } & ChatRequestOptions) => Promise<ReadableStream<UIMessageChunk>>;
1122
+ reconnectToStream: (options: {
1123
+ chatId: string;
1124
+ } & ChatRequestOptions) => Promise<ReadableStream<UIMessageChunk> | null>;
1125
+ }
1126
+
1127
+ declare type ChatTransport_2 = {
776
1128
  agentId?: string;
777
1129
  transport?: ConstructorParameters<typeof DefaultChatTransport>[0];
778
1130
  };
@@ -785,6 +1137,32 @@ declare type ChatWidgetDescription<TUiMessage extends UIMessage = UIMessage> = {
785
1137
  };
786
1138
  };
787
1139
 
1140
+ declare type ChatWidgetParams<THit extends RecordWithObjectID = RecordWithObjectID> = {
1141
+ /**
1142
+ * CSS Selector or HTMLElement to insert the widget.
1143
+ */
1144
+ container: string | HTMLElement;
1145
+ /**
1146
+ * Return the URL of the main search page with the `nextUiState`.
1147
+ * This is used to navigate to the main search page when the user clicks on "View all" in the search tool.
1148
+ *
1149
+ * @example (nextUiState) => `/search?${qs.stringify(nextUiState)}`
1150
+ */
1151
+ getSearchPageURL?: (nextUiState: IndexUiState) => string;
1152
+ /**
1153
+ * Client-side tools to add to the chat
1154
+ */
1155
+ tools?: UserClientSideToolsWithTemplate;
1156
+ /**
1157
+ * Templates to use for the widget.
1158
+ */
1159
+ templates?: ChatTemplates<THit>;
1160
+ /**
1161
+ * CSS classes to add.
1162
+ */
1163
+ cssClasses?: ChatCSSClasses;
1164
+ };
1165
+
788
1166
  declare const clearRefinements: ClearRefinementsWidget;
789
1167
 
790
1168
  declare type ClearRefinementsConnector = Connector<ClearRefinementsWidgetDescription, ClearRefinementsConnectorParams>;
@@ -952,8 +1330,6 @@ declare const connectAutocomplete: AutocompleteConnector;
952
1330
 
953
1331
  declare const connectBreadcrumb: BreadcrumbConnector;
954
1332
 
955
- declare const connectChat: () => never;
956
-
957
1333
  declare const connectClearRefinements: ClearRefinementsConnector;
958
1334
 
959
1335
  declare const connectConfigure: ConfigureConnector;
@@ -1335,7 +1711,7 @@ declare namespace connectors {
1335
1711
  connectRelevantSort,
1336
1712
  _default_6 as connectFrequentlyBoughtTogether,
1337
1713
  _default_7 as connectLookingSimilar,
1338
- connectChat,
1714
+ _default_8 as connectChat,
1339
1715
  connectFilterSuggestions
1340
1716
  }
1341
1717
  }
@@ -1463,6 +1839,11 @@ declare function createMetadataMiddleware({ $$internal, }?: {
1463
1839
 
1464
1840
  declare const createRouterMiddleware: <TUiState extends UiState = UiState, TRouteState = TUiState>(props?: RouterProps<TUiState, TRouteState>) => InternalMiddleware<TUiState>;
1465
1841
 
1842
+ declare type CreateUIMessage<UI_MESSAGE extends UIMessage> = Omit<UI_MESSAGE, 'id' | 'role'> & {
1843
+ id?: UI_MESSAGE['id'];
1844
+ role?: UI_MESSAGE['role'];
1845
+ };
1846
+
1466
1847
  /**
1467
1848
  * Creates the URL for the given value.
1468
1849
  */
@@ -1644,6 +2025,27 @@ declare type CustomSendEventForHits = (customPayload: any) => void;
1644
2025
 
1645
2026
  declare type CustomSendEventForToggle = (customPayload: any) => void;
1646
2027
 
2028
+ declare type DataUIMessageChunk<DATA_TYPES extends UIDataTypes> = ValueOf<{
2029
+ [NAME in keyof DATA_TYPES & string]: {
2030
+ type: `data-${NAME}`;
2031
+ id?: string;
2032
+ data: DATA_TYPES[NAME];
2033
+ transient?: boolean;
2034
+ };
2035
+ }>;
2036
+
2037
+ declare type DataUIPart<DATA_TYPES extends UIDataTypes> = ValueOf<{
2038
+ [NAME in keyof DATA_TYPES & string]: {
2039
+ type: `data-${NAME}`;
2040
+ id?: string;
2041
+ data: DATA_TYPES[NAME];
2042
+ };
2043
+ }>;
2044
+
2045
+ declare type DeepPartial<T> = T extends object ? {
2046
+ [P in keyof T]?: DeepPartial<T[P]>;
2047
+ } : T;
2048
+
1647
2049
  declare const _default: <TWidgetParams>(renderFn: Renderer<HitsRenderState, TWidgetParams & HitsConnectorParams>, unmountFn?: Unmounter) => <THit extends NonNullable<object> = BaseHit>(widgetParams: TWidgetParams & HitsConnectorParams<THit>) => {
1648
2050
  $$type: "ais.hits";
1649
2051
  init(initOptions: InitOptions): void;
@@ -1752,9 +2154,9 @@ declare const _default: <TWidgetParams>(renderFn: Renderer<HitsRenderState, TWid
1752
2154
  }): SearchParameters;
1753
2155
  };
1754
2156
 
1755
- declare const _default_10: <THit extends NonNullable<object> = BaseHit>(widgetParams: InfiniteHitsWidgetParams<THit> & InfiniteHitsConnectorParams<THit>) => {
1756
- $$widgetType: "ais.infiniteHits";
1757
- $$type: "ais.infiniteHits";
2157
+ declare const _default_10: <THit extends NonNullable<object> = BaseHit>(widgetParams: HitsWidgetParams<THit> & HitsConnectorParams<THit>) => {
2158
+ $$widgetType: "ais.hits";
2159
+ $$type: "ais.hits";
1758
2160
  init(initOptions: InitOptions): void;
1759
2161
  render(renderOptions: RenderOptions): void;
1760
2162
  getRenderState(renderState: {
@@ -1802,31 +2204,140 @@ declare const _default_10: <THit extends NonNullable<object> = BaseHit>(widgetPa
1802
2204
  voiceSearch?: WidgetRenderState<VoiceSearchRenderState, VoiceSearchConnectorParams> | undefined;
1803
2205
  analytics?: WidgetRenderState<Record<string, unknown>, AnalyticsWidgetParams> | undefined;
1804
2206
  places?: WidgetRenderState<Record<string, unknown>, PlacesWidgetParams> | undefined;
1805
- }, renderOptions: InitOptions | RenderOptions): IndexRenderState & InfiniteHitsWidgetDescription["indexRenderState"];
1806
- getWidgetRenderState({ results, helper, parent, state: existingState, instantSearchInstance, }: InitOptions | RenderOptions): {
1807
- hits: Hit<THit>[];
1808
- items: Hit<THit>[];
1809
- currentPageHits: Hit<THit>[];
2207
+ }, renderOptions: InitOptions | RenderOptions): IndexRenderState & HitsWidgetDescription["indexRenderState"];
2208
+ getWidgetRenderState({ results, helper, instantSearchInstance }: InitOptions | RenderOptions): {
2209
+ hits: never[];
2210
+ items: never[];
2211
+ results: undefined;
2212
+ banner: undefined;
1810
2213
  sendEvent: SendEventForHits;
1811
2214
  bindEvent: BindEventForHits;
2215
+ widgetParams: Partial<HitsWidgetParams<BaseHit>> & HitsConnectorParams<THit>;
2216
+ } | {
2217
+ hits: Hit<BaseHit>[] | Hit<THit>[];
2218
+ items: Hit<BaseHit>[] | Hit<THit>[];
2219
+ results: SearchResults<any>;
1812
2220
  banner: Banner | undefined;
1813
- results: SearchResults<any> | undefined;
1814
- showPrevious: () => void;
1815
- showMore: () => void;
1816
- isFirstPage: boolean;
1817
- isLastPage: boolean;
1818
- widgetParams: Partial<InfiniteHitsWidgetParams<BaseHit>> & InfiniteHitsConnectorParams<THit>;
2221
+ sendEvent: SendEventForHits;
2222
+ bindEvent: BindEventForHits;
2223
+ widgetParams: Partial<HitsWidgetParams<BaseHit>> & HitsConnectorParams<THit>;
1819
2224
  };
1820
2225
  dispose({ state }: DisposeOptions): SearchParameters;
1821
- getWidgetUiState(uiState: {
1822
- page?: number | undefined;
1823
- query?: string | undefined;
1824
- configure?: PlainSearchParameters | undefined;
1825
- geoSearch?: {
1826
- boundingBox: string;
2226
+ getWidgetSearchParameters(state: SearchParameters, _uiState: {
2227
+ uiState: {
2228
+ query?: string | undefined;
2229
+ configure?: PlainSearchParameters | undefined;
2230
+ geoSearch?: {
2231
+ boundingBox: string;
2232
+ } | undefined;
2233
+ hierarchicalMenu?: {
2234
+ [rootAttribute: string]: string[];
2235
+ } | undefined;
2236
+ hitsPerPage?: number | undefined;
2237
+ page?: number | undefined;
2238
+ menu?: {
2239
+ [attribute: string]: string;
2240
+ } | undefined;
2241
+ numericMenu?: {
2242
+ [attribute: string]: string;
2243
+ } | undefined;
2244
+ range?: {
2245
+ [attribute: string]: string;
2246
+ } | undefined;
2247
+ ratingMenu?: {
2248
+ [attribute: string]: number | undefined;
2249
+ } | undefined;
2250
+ refinementList?: {
2251
+ [attribute: string]: string[];
2252
+ } | undefined;
2253
+ relevantSort?: number | undefined;
2254
+ sortBy?: string | undefined;
2255
+ toggle?: {
2256
+ [attribute: string]: boolean;
2257
+ } | undefined;
2258
+ places?: {
2259
+ query: string;
2260
+ position: string;
2261
+ } | undefined;
2262
+ };
2263
+ }): SearchParameters;
2264
+ };
2265
+
2266
+ declare const _default_11: <THit extends NonNullable<object> = BaseHit>(widgetParams: InfiniteHitsWidgetParams<THit> & InfiniteHitsConnectorParams<THit>) => {
2267
+ $$widgetType: "ais.infiniteHits";
2268
+ $$type: "ais.infiniteHits";
2269
+ init(initOptions: InitOptions): void;
2270
+ render(renderOptions: RenderOptions): void;
2271
+ getRenderState(renderState: {
2272
+ answers?: WidgetRenderState<AnswersRenderState, AnswersConnectorParams> | undefined;
2273
+ autocomplete?: WidgetRenderState<AutocompleteRenderState, AutocompleteConnectorParams> | undefined;
2274
+ breadcrumb?: {
2275
+ [rootAttribute: string]: WidgetRenderState<BreadcrumbRenderState, BreadcrumbConnectorParams>;
1827
2276
  } | undefined;
1828
- hierarchicalMenu?: {
1829
- [rootAttribute: string]: string[];
2277
+ chat?: WidgetRenderState<ChatRenderState<UIMessage<unknown, UIDataTypes, UITools>>, ChatConnectorParams<UIMessage<unknown, UIDataTypes, UITools>>> | undefined;
2278
+ clearRefinements?: WidgetRenderState<ClearRefinementsRenderState, ClearRefinementsConnectorParams> | undefined;
2279
+ configure?: WidgetRenderState<ConfigureRenderState, ConfigureConnectorParams> | undefined;
2280
+ currentRefinements?: WidgetRenderState<CurrentRefinementsRenderState, CurrentRefinementsConnectorParams> | undefined;
2281
+ geoSearch?: WidgetRenderState<GeoSearchRenderState<GeoHit>, GeoSearchConnectorParams<GeoHit>> | undefined;
2282
+ hierarchicalMenu?: {
2283
+ [rootAttribute: string]: WidgetRenderState<HierarchicalMenuRenderState, HierarchicalMenuConnectorParams>;
2284
+ } | undefined;
2285
+ hits?: WidgetRenderState<HitsRenderState<BaseHit>, HitsConnectorParams<BaseHit>> | undefined;
2286
+ hitsPerPage?: WidgetRenderState<HitsPerPageRenderState, HitsPerPageConnectorParams> | undefined;
2287
+ infiniteHits?: WidgetRenderState<InfiniteHitsRenderState<BaseHit>, InfiniteHitsConnectorParams<BaseHit>> | undefined;
2288
+ menu?: {
2289
+ [attribute: string]: WidgetRenderState<MenuRenderState, MenuConnectorParams>;
2290
+ } | undefined;
2291
+ numericMenu?: {
2292
+ [attribute: string]: WidgetRenderState<NumericMenuRenderState, NumericMenuConnectorParams>;
2293
+ } | undefined;
2294
+ pagination?: WidgetRenderState<PaginationRenderState, PaginationConnectorParams> | undefined;
2295
+ poweredBy?: WidgetRenderState<PoweredByRenderState, PoweredByConnectorParams> | undefined;
2296
+ queryRules?: WidgetRenderState<QueryRulesRenderState, QueryRulesConnectorParams> | undefined;
2297
+ range?: {
2298
+ [attribute: string]: WidgetRenderState<RangeRenderState, RangeConnectorParams>;
2299
+ } | undefined;
2300
+ ratingMenu?: {
2301
+ [attribute: string]: WidgetRenderState<RatingMenuRenderState, RatingMenuConnectorParams>;
2302
+ } | undefined;
2303
+ refinementList?: {
2304
+ [attribute: string]: WidgetRenderState<RefinementListRenderState, RefinementListConnectorParams>;
2305
+ } | undefined;
2306
+ relevantSort?: WidgetRenderState<RelevantSortRenderState, RelevantSortConnectorParams> | undefined;
2307
+ searchBox?: WidgetRenderState<SearchBoxRenderState, SearchBoxConnectorParams> | undefined;
2308
+ sortBy?: WidgetRenderState<SortByRenderState, SortByConnectorParams> | undefined;
2309
+ stats?: WidgetRenderState<StatsRenderState, StatsConnectorParams> | undefined;
2310
+ toggleRefinement?: {
2311
+ [attribute: string]: WidgetRenderState<ToggleRefinementRenderState, ToggleRefinementConnectorParams>;
2312
+ } | undefined;
2313
+ voiceSearch?: WidgetRenderState<VoiceSearchRenderState, VoiceSearchConnectorParams> | undefined;
2314
+ analytics?: WidgetRenderState<Record<string, unknown>, AnalyticsWidgetParams> | undefined;
2315
+ places?: WidgetRenderState<Record<string, unknown>, PlacesWidgetParams> | undefined;
2316
+ }, renderOptions: InitOptions | RenderOptions): IndexRenderState & InfiniteHitsWidgetDescription["indexRenderState"];
2317
+ getWidgetRenderState({ results, helper, parent, state: existingState, instantSearchInstance, }: InitOptions | RenderOptions): {
2318
+ hits: Hit<THit>[];
2319
+ items: Hit<THit>[];
2320
+ currentPageHits: Hit<THit>[];
2321
+ sendEvent: SendEventForHits;
2322
+ bindEvent: BindEventForHits;
2323
+ banner: Banner | undefined;
2324
+ results: SearchResults<any> | undefined;
2325
+ showPrevious: () => void;
2326
+ showMore: () => void;
2327
+ isFirstPage: boolean;
2328
+ isLastPage: boolean;
2329
+ widgetParams: Partial<InfiniteHitsWidgetParams<BaseHit>> & InfiniteHitsConnectorParams<THit>;
2330
+ };
2331
+ dispose({ state }: DisposeOptions): SearchParameters;
2332
+ getWidgetUiState(uiState: {
2333
+ page?: number | undefined;
2334
+ query?: string | undefined;
2335
+ configure?: PlainSearchParameters | undefined;
2336
+ geoSearch?: {
2337
+ boundingBox: string;
2338
+ } | undefined;
2339
+ hierarchicalMenu?: {
2340
+ [rootAttribute: string]: string[];
1830
2341
  } | undefined;
1831
2342
  hitsPerPage?: number | undefined;
1832
2343
  menu?: {
@@ -1932,9 +2443,9 @@ declare const _default_10: <THit extends NonNullable<object> = BaseHit>(widgetPa
1932
2443
  }): SearchParameters;
1933
2444
  };
1934
2445
 
1935
- declare const _default_11: PlacesWidget;
2446
+ declare const _default_12: PlacesWidget;
1936
2447
 
1937
- declare const _default_12: <THit extends NonNullable<object> = BaseHit>(widgetParams: RelatedProductsWidgetParams<THit> & RelatedProductsConnectorParams<THit>) => {
2448
+ declare const _default_13: <THit extends NonNullable<object> = BaseHit>(widgetParams: RelatedProductsWidgetParams<THit> & RelatedProductsConnectorParams<THit>) => {
1938
2449
  $$widgetType: "ais.relatedProducts";
1939
2450
  dependsOn: "recommend";
1940
2451
  $$type: "ais.relatedProducts";
@@ -2128,7 +2639,7 @@ declare const _default_12: <THit extends NonNullable<object> = BaseHit>(widgetPa
2128
2639
  getWidgetParameters(state: RecommendParameters): RecommendParameters;
2129
2640
  };
2130
2641
 
2131
- declare const _default_13: <THit extends NonNullable<object> = BaseHit>(widgetParams: TrendingItemsWidgetParams<THit> & TrendingItemsConnectorParams<THit>) => {
2642
+ declare const _default_14: <THit extends NonNullable<object> = BaseHit>(widgetParams: TrendingItemsWidgetParams<THit> & TrendingItemsConnectorParams<THit>) => {
2132
2643
  $$widgetType: "ais.trendingItems";
2133
2644
  dependsOn: "recommend";
2134
2645
  $$type: "ais.trendingItems";
@@ -2322,7 +2833,7 @@ declare const _default_13: <THit extends NonNullable<object> = BaseHit>(widgetPa
2322
2833
  getWidgetParameters(state: RecommendParameters): RecommendParameters;
2323
2834
  };
2324
2835
 
2325
- declare const _default_14: <THit extends NonNullable<object> = BaseHit>(widgetParams: FrequentlyBoughtTogetherWidgetParams<THit> & FrequentlyBoughtTogetherConnectorParams<THit>) => {
2836
+ declare const _default_15: <THit extends NonNullable<object> = BaseHit>(widgetParams: FrequentlyBoughtTogetherWidgetParams<THit> & FrequentlyBoughtTogetherConnectorParams<THit>) => {
2326
2837
  $$widgetType: "ais.frequentlyBoughtTogether";
2327
2838
  dependsOn: "recommend";
2328
2839
  $$type: "ais.frequentlyBoughtTogether";
@@ -2516,7 +3027,7 @@ declare const _default_14: <THit extends NonNullable<object> = BaseHit>(widgetPa
2516
3027
  getWidgetParameters(state: RecommendParameters): RecommendParameters;
2517
3028
  };
2518
3029
 
2519
- declare const _default_15: <THit extends NonNullable<object> = BaseHit>(widgetParams: LookingSimilarWidgetParams<THit> & LookingSimilarConnectorParams<THit>) => {
3030
+ declare const _default_16: <THit extends NonNullable<object> = BaseHit>(widgetParams: LookingSimilarWidgetParams<THit> & LookingSimilarConnectorParams<THit>) => {
2520
3031
  $$widgetType: "ais.lookingSimilar";
2521
3032
  dependsOn: "recommend";
2522
3033
  $$type: "ais.lookingSimilar";
@@ -2710,7 +3221,333 @@ declare const _default_15: <THit extends NonNullable<object> = BaseHit>(widgetPa
2710
3221
  getWidgetParameters(state: RecommendParameters): RecommendParameters;
2711
3222
  };
2712
3223
 
2713
- declare const _default_16: (widgetParams: FilterSuggestionsWidgetParams & FilterSuggestionsConnectorParams) => {
3224
+ declare const _default_17: <THit extends RecordWithObjectID = RecordWithObjectID>(widgetParams: ChatWidgetParams<THit> & ChatConnectorParams) => {
3225
+ $$widgetType: "ais.chat";
3226
+ $$type: "ais.chat";
3227
+ init(initOptions: InitOptions): void;
3228
+ render(renderOptions: RenderOptions): void;
3229
+ getRenderState(renderState: {
3230
+ answers?: WidgetRenderState<AnswersRenderState, AnswersConnectorParams> | undefined;
3231
+ autocomplete?: WidgetRenderState<AutocompleteRenderState, AutocompleteConnectorParams> | undefined;
3232
+ breadcrumb?: {
3233
+ [rootAttribute: string]: WidgetRenderState<BreadcrumbRenderState, BreadcrumbConnectorParams>;
3234
+ } | undefined;
3235
+ chat?: WidgetRenderState<ChatRenderState<UIMessage<unknown, UIDataTypes, UITools>>, ChatConnectorParams<UIMessage<unknown, UIDataTypes, UITools>>> | undefined;
3236
+ clearRefinements?: WidgetRenderState<ClearRefinementsRenderState, ClearRefinementsConnectorParams> | undefined;
3237
+ configure?: WidgetRenderState<ConfigureRenderState, ConfigureConnectorParams> | undefined;
3238
+ currentRefinements?: WidgetRenderState<CurrentRefinementsRenderState, CurrentRefinementsConnectorParams> | undefined;
3239
+ geoSearch?: WidgetRenderState<GeoSearchRenderState<GeoHit>, GeoSearchConnectorParams<GeoHit>> | undefined;
3240
+ hierarchicalMenu?: {
3241
+ [rootAttribute: string]: WidgetRenderState<HierarchicalMenuRenderState, HierarchicalMenuConnectorParams>;
3242
+ } | undefined;
3243
+ hits?: WidgetRenderState<HitsRenderState<BaseHit>, HitsConnectorParams<BaseHit>> | undefined;
3244
+ hitsPerPage?: WidgetRenderState<HitsPerPageRenderState, HitsPerPageConnectorParams> | undefined;
3245
+ infiniteHits?: WidgetRenderState<InfiniteHitsRenderState<BaseHit>, InfiniteHitsConnectorParams<BaseHit>> | undefined;
3246
+ menu?: {
3247
+ [attribute: string]: WidgetRenderState<MenuRenderState, MenuConnectorParams>;
3248
+ } | undefined;
3249
+ numericMenu?: {
3250
+ [attribute: string]: WidgetRenderState<NumericMenuRenderState, NumericMenuConnectorParams>;
3251
+ } | undefined;
3252
+ pagination?: WidgetRenderState<PaginationRenderState, PaginationConnectorParams> | undefined;
3253
+ poweredBy?: WidgetRenderState<PoweredByRenderState, PoweredByConnectorParams> | undefined;
3254
+ queryRules?: WidgetRenderState<QueryRulesRenderState, QueryRulesConnectorParams> | undefined;
3255
+ range?: {
3256
+ [attribute: string]: WidgetRenderState<RangeRenderState, RangeConnectorParams>;
3257
+ } | undefined;
3258
+ ratingMenu?: {
3259
+ [attribute: string]: WidgetRenderState<RatingMenuRenderState, RatingMenuConnectorParams>;
3260
+ } | undefined;
3261
+ refinementList?: {
3262
+ [attribute: string]: WidgetRenderState<RefinementListRenderState, RefinementListConnectorParams>;
3263
+ } | undefined;
3264
+ relevantSort?: WidgetRenderState<RelevantSortRenderState, RelevantSortConnectorParams> | undefined;
3265
+ searchBox?: WidgetRenderState<SearchBoxRenderState, SearchBoxConnectorParams> | undefined;
3266
+ sortBy?: WidgetRenderState<SortByRenderState, SortByConnectorParams> | undefined;
3267
+ stats?: WidgetRenderState<StatsRenderState, StatsConnectorParams> | undefined;
3268
+ toggleRefinement?: {
3269
+ [attribute: string]: WidgetRenderState<ToggleRefinementRenderState, ToggleRefinementConnectorParams>;
3270
+ } | undefined;
3271
+ voiceSearch?: WidgetRenderState<VoiceSearchRenderState, VoiceSearchConnectorParams> | undefined;
3272
+ analytics?: WidgetRenderState<Record<string, unknown>, AnalyticsWidgetParams> | undefined;
3273
+ places?: WidgetRenderState<Record<string, unknown>, PlacesWidgetParams> | undefined;
3274
+ }, renderOptions: InitOptions | RenderOptions): IndexRenderState & ChatWidgetDescription["indexRenderState"];
3275
+ getWidgetRenderState(renderOptions: InitOptions | RenderOptions): {
3276
+ indexUiState: Partial<{
3277
+ query: string;
3278
+ } & {
3279
+ configure: PlainSearchParameters;
3280
+ } & {
3281
+ geoSearch: {
3282
+ boundingBox: string;
3283
+ };
3284
+ } & {
3285
+ hierarchicalMenu: {
3286
+ [rootAttribute: string]: string[];
3287
+ };
3288
+ } & {
3289
+ hitsPerPage: number;
3290
+ } & {
3291
+ page: number;
3292
+ } & {
3293
+ menu: {
3294
+ [attribute: string]: string;
3295
+ };
3296
+ } & {
3297
+ numericMenu: {
3298
+ [attribute: string]: string;
3299
+ };
3300
+ } & {
3301
+ page: number;
3302
+ } & {
3303
+ range: {
3304
+ [attribute: string]: string;
3305
+ };
3306
+ } & {
3307
+ ratingMenu: {
3308
+ [attribute: string]: number | undefined;
3309
+ };
3310
+ } & {
3311
+ refinementList: {
3312
+ [attribute: string]: string[];
3313
+ };
3314
+ } & {
3315
+ relevantSort: number;
3316
+ } & {
3317
+ query: string;
3318
+ } & {
3319
+ sortBy: string;
3320
+ } & {
3321
+ toggle: {
3322
+ [attribute: string]: boolean;
3323
+ };
3324
+ } & {
3325
+ query: string;
3326
+ } & {
3327
+ places: {
3328
+ query: string;
3329
+ position: string;
3330
+ };
3331
+ }>;
3332
+ input: string;
3333
+ open: boolean;
3334
+ sendEvent: SendEventForHits;
3335
+ setIndexUiState: (indexUiState: Partial<{
3336
+ query: string;
3337
+ } & {
3338
+ configure: PlainSearchParameters;
3339
+ } & {
3340
+ geoSearch: {
3341
+ boundingBox: string;
3342
+ };
3343
+ } & {
3344
+ hierarchicalMenu: {
3345
+ [rootAttribute: string]: string[];
3346
+ };
3347
+ } & {
3348
+ hitsPerPage: number;
3349
+ } & {
3350
+ page: number;
3351
+ } & {
3352
+ menu: {
3353
+ [attribute: string]: string;
3354
+ };
3355
+ } & {
3356
+ numericMenu: {
3357
+ [attribute: string]: string;
3358
+ };
3359
+ } & {
3360
+ page: number;
3361
+ } & {
3362
+ range: {
3363
+ [attribute: string]: string;
3364
+ };
3365
+ } & {
3366
+ ratingMenu: {
3367
+ [attribute: string]: number | undefined;
3368
+ };
3369
+ } & {
3370
+ refinementList: {
3371
+ [attribute: string]: string[];
3372
+ };
3373
+ } & {
3374
+ relevantSort: number;
3375
+ } & {
3376
+ query: string;
3377
+ } & {
3378
+ sortBy: string;
3379
+ } & {
3380
+ toggle: {
3381
+ [attribute: string]: boolean;
3382
+ };
3383
+ } & {
3384
+ query: string;
3385
+ } & {
3386
+ places: {
3387
+ query: string;
3388
+ position: string;
3389
+ };
3390
+ }> | ((previousIndexUiState: Partial<{
3391
+ query: string;
3392
+ } & {
3393
+ configure: PlainSearchParameters;
3394
+ } & {
3395
+ geoSearch: {
3396
+ boundingBox: string;
3397
+ };
3398
+ } & {
3399
+ hierarchicalMenu: {
3400
+ [rootAttribute: string]: string[];
3401
+ };
3402
+ } & {
3403
+ hitsPerPage: number;
3404
+ } & {
3405
+ page: number;
3406
+ } & {
3407
+ menu: {
3408
+ [attribute: string]: string;
3409
+ };
3410
+ } & {
3411
+ numericMenu: {
3412
+ [attribute: string]: string;
3413
+ };
3414
+ } & {
3415
+ page: number;
3416
+ } & {
3417
+ range: {
3418
+ [attribute: string]: string;
3419
+ };
3420
+ } & {
3421
+ ratingMenu: {
3422
+ [attribute: string]: number | undefined;
3423
+ };
3424
+ } & {
3425
+ refinementList: {
3426
+ [attribute: string]: string[];
3427
+ };
3428
+ } & {
3429
+ relevantSort: number;
3430
+ } & {
3431
+ query: string;
3432
+ } & {
3433
+ sortBy: string;
3434
+ } & {
3435
+ toggle: {
3436
+ [attribute: string]: boolean;
3437
+ };
3438
+ } & {
3439
+ query: string;
3440
+ } & {
3441
+ places: {
3442
+ query: string;
3443
+ position: string;
3444
+ };
3445
+ }>) => Partial<{
3446
+ query: string;
3447
+ } & {
3448
+ configure: PlainSearchParameters;
3449
+ } & {
3450
+ geoSearch: {
3451
+ boundingBox: string;
3452
+ };
3453
+ } & {
3454
+ hierarchicalMenu: {
3455
+ [rootAttribute: string]: string[];
3456
+ };
3457
+ } & {
3458
+ hitsPerPage: number;
3459
+ } & {
3460
+ page: number;
3461
+ } & {
3462
+ menu: {
3463
+ [attribute: string]: string;
3464
+ };
3465
+ } & {
3466
+ numericMenu: {
3467
+ [attribute: string]: string;
3468
+ };
3469
+ } & {
3470
+ page: number;
3471
+ } & {
3472
+ range: {
3473
+ [attribute: string]: string;
3474
+ };
3475
+ } & {
3476
+ ratingMenu: {
3477
+ [attribute: string]: number | undefined;
3478
+ };
3479
+ } & {
3480
+ refinementList: {
3481
+ [attribute: string]: string[];
3482
+ };
3483
+ } & {
3484
+ relevantSort: number;
3485
+ } & {
3486
+ query: string;
3487
+ } & {
3488
+ sortBy: string;
3489
+ } & {
3490
+ toggle: {
3491
+ [attribute: string]: boolean;
3492
+ };
3493
+ } & {
3494
+ query: string;
3495
+ } & {
3496
+ places: {
3497
+ query: string;
3498
+ position: string;
3499
+ };
3500
+ }>)) => void;
3501
+ setInput: (input: string) => void;
3502
+ setOpen: (open: boolean) => void;
3503
+ setMessages: (messagesParam: UIMessage<unknown, UIDataTypes, UITools>[] | ((m: UIMessage<unknown, UIDataTypes, UITools>[]) => UIMessage<unknown, UIDataTypes, UITools>[])) => void;
3504
+ suggestions: string[] | undefined;
3505
+ isClearing: boolean;
3506
+ clearMessages: () => void;
3507
+ onClearTransitionEnd: () => void;
3508
+ tools: ClientSideTools;
3509
+ widgetParams: Partial<ChatWidgetParams<RecordWithObjectID>> & ChatConnectorParams<UIMessage<unknown, UIDataTypes, UITools>>;
3510
+ addToolResult: <TTool extends string>({ tool, toolCallId, output, }: {
3511
+ tool: TTool;
3512
+ toolCallId: string;
3513
+ output: unknown;
3514
+ }) => Promise<void>;
3515
+ clearError: () => void;
3516
+ error: Error | undefined;
3517
+ id: string;
3518
+ messages: UIMessage<unknown, UIDataTypes, UITools>[];
3519
+ regenerate: ({ messageId, ...options }?: {
3520
+ messageId?: string;
3521
+ } & ChatRequestOptions) => Promise<void>;
3522
+ resumeStream: (options?: ChatRequestOptions) => Promise<void>;
3523
+ sendMessage: (message?: (Omit<UIMessage<unknown, UIDataTypes, UITools>, "id" | "role"> & {
3524
+ id?: string | undefined;
3525
+ role?: "system" | "user" | "assistant" | undefined;
3526
+ } & {
3527
+ text?: never;
3528
+ files?: never;
3529
+ messageId?: string;
3530
+ }) | {
3531
+ text: string;
3532
+ files?: FileList | FileUIPart[];
3533
+ metadata?: unknown;
3534
+ parts?: never;
3535
+ messageId?: string;
3536
+ } | {
3537
+ files: FileList | FileUIPart[];
3538
+ metadata?: unknown;
3539
+ parts?: never;
3540
+ messageId?: string;
3541
+ } | undefined, options?: ChatRequestOptions) => Promise<void>;
3542
+ status: ChatStatus;
3543
+ stop: () => Promise<void>;
3544
+ };
3545
+ dispose(): void;
3546
+ shouldRender(): true;
3547
+ chatInstance: Chat<UIMessage<unknown, UIDataTypes, UITools>>;
3548
+ };
3549
+
3550
+ declare const _default_18: (widgetParams: FilterSuggestionsWidgetParams & FilterSuggestionsConnectorParams) => {
2714
3551
  $$widgetType: "ais.filterSuggestions";
2715
3552
  parent?: IndexWidget;
2716
3553
  $$type: "ais.filterSuggestions";
@@ -4243,8 +5080,333 @@ declare const _default_7: <TWidgetParams extends UnknownWidgetParams>(renderFn:
4243
5080
  widgetParams: TWidgetParams & LookingSimilarConnectorParams<THit>;
4244
5081
  sendEvent: SendEventForHits;
4245
5082
  };
4246
- dispose({ recommendState }: DisposeOptions): RecommendParameters;
4247
- getWidgetParameters(state: RecommendParameters): RecommendParameters;
5083
+ dispose({ recommendState }: DisposeOptions): RecommendParameters;
5084
+ getWidgetParameters(state: RecommendParameters): RecommendParameters;
5085
+ };
5086
+
5087
+ declare const _default_8: <TWidgetParams extends UnknownWidgetParams>(renderFn: Renderer<ChatRenderState, TWidgetParams & ChatConnectorParams>, unmountFn?: Unmounter) => <TUiMessage extends UIMessage = UIMessage<unknown, UIDataTypes, UITools>>(widgetParams: TWidgetParams & ChatConnectorParams<TUiMessage>) => {
5088
+ $$type: "ais.chat";
5089
+ init(initOptions: InitOptions): void;
5090
+ render(renderOptions: RenderOptions): void;
5091
+ getRenderState(renderState: {
5092
+ answers?: WidgetRenderState<AnswersRenderState, AnswersConnectorParams> | undefined;
5093
+ autocomplete?: WidgetRenderState<AutocompleteRenderState, AutocompleteConnectorParams> | undefined;
5094
+ breadcrumb?: {
5095
+ [rootAttribute: string]: WidgetRenderState<BreadcrumbRenderState, BreadcrumbConnectorParams>;
5096
+ } | undefined;
5097
+ chat?: WidgetRenderState<ChatRenderState<UIMessage<unknown, UIDataTypes, UITools>>, ChatConnectorParams<UIMessage<unknown, UIDataTypes, UITools>>> | undefined;
5098
+ clearRefinements?: WidgetRenderState<ClearRefinementsRenderState, ClearRefinementsConnectorParams> | undefined;
5099
+ configure?: WidgetRenderState<ConfigureRenderState, ConfigureConnectorParams> | undefined;
5100
+ currentRefinements?: WidgetRenderState<CurrentRefinementsRenderState, CurrentRefinementsConnectorParams> | undefined;
5101
+ geoSearch?: WidgetRenderState<GeoSearchRenderState<GeoHit>, GeoSearchConnectorParams<GeoHit>> | undefined;
5102
+ hierarchicalMenu?: {
5103
+ [rootAttribute: string]: WidgetRenderState<HierarchicalMenuRenderState, HierarchicalMenuConnectorParams>;
5104
+ } | undefined;
5105
+ hits?: WidgetRenderState<HitsRenderState<BaseHit>, HitsConnectorParams<BaseHit>> | undefined;
5106
+ hitsPerPage?: WidgetRenderState<HitsPerPageRenderState, HitsPerPageConnectorParams> | undefined;
5107
+ infiniteHits?: WidgetRenderState<InfiniteHitsRenderState<BaseHit>, InfiniteHitsConnectorParams<BaseHit>> | undefined;
5108
+ menu?: {
5109
+ [attribute: string]: WidgetRenderState<MenuRenderState, MenuConnectorParams>;
5110
+ } | undefined;
5111
+ numericMenu?: {
5112
+ [attribute: string]: WidgetRenderState<NumericMenuRenderState, NumericMenuConnectorParams>;
5113
+ } | undefined;
5114
+ pagination?: WidgetRenderState<PaginationRenderState, PaginationConnectorParams> | undefined;
5115
+ poweredBy?: WidgetRenderState<PoweredByRenderState, PoweredByConnectorParams> | undefined;
5116
+ queryRules?: WidgetRenderState<QueryRulesRenderState, QueryRulesConnectorParams> | undefined;
5117
+ range?: {
5118
+ [attribute: string]: WidgetRenderState<RangeRenderState, RangeConnectorParams>;
5119
+ } | undefined;
5120
+ ratingMenu?: {
5121
+ [attribute: string]: WidgetRenderState<RatingMenuRenderState, RatingMenuConnectorParams>;
5122
+ } | undefined;
5123
+ refinementList?: {
5124
+ [attribute: string]: WidgetRenderState<RefinementListRenderState, RefinementListConnectorParams>;
5125
+ } | undefined;
5126
+ relevantSort?: WidgetRenderState<RelevantSortRenderState, RelevantSortConnectorParams> | undefined;
5127
+ searchBox?: WidgetRenderState<SearchBoxRenderState, SearchBoxConnectorParams> | undefined;
5128
+ sortBy?: WidgetRenderState<SortByRenderState, SortByConnectorParams> | undefined;
5129
+ stats?: WidgetRenderState<StatsRenderState, StatsConnectorParams> | undefined;
5130
+ toggleRefinement?: {
5131
+ [attribute: string]: WidgetRenderState<ToggleRefinementRenderState, ToggleRefinementConnectorParams>;
5132
+ } | undefined;
5133
+ voiceSearch?: WidgetRenderState<VoiceSearchRenderState, VoiceSearchConnectorParams> | undefined;
5134
+ analytics?: WidgetRenderState<Record<string, unknown>, AnalyticsWidgetParams> | undefined;
5135
+ places?: WidgetRenderState<Record<string, unknown>, PlacesWidgetParams> | undefined;
5136
+ }, renderOptions: InitOptions | RenderOptions): IndexRenderState & ChatWidgetDescription["indexRenderState"];
5137
+ getWidgetRenderState(renderOptions: InitOptions | RenderOptions): {
5138
+ indexUiState: Partial<{
5139
+ query: string;
5140
+ } & {
5141
+ configure: PlainSearchParameters;
5142
+ } & {
5143
+ geoSearch: {
5144
+ boundingBox: string;
5145
+ };
5146
+ } & {
5147
+ hierarchicalMenu: {
5148
+ [rootAttribute: string]: string[];
5149
+ };
5150
+ } & {
5151
+ hitsPerPage: number;
5152
+ } & {
5153
+ page: number;
5154
+ } & {
5155
+ menu: {
5156
+ [attribute: string]: string;
5157
+ };
5158
+ } & {
5159
+ numericMenu: {
5160
+ [attribute: string]: string;
5161
+ };
5162
+ } & {
5163
+ page: number;
5164
+ } & {
5165
+ range: {
5166
+ [attribute: string]: string;
5167
+ };
5168
+ } & {
5169
+ ratingMenu: {
5170
+ [attribute: string]: number | undefined;
5171
+ };
5172
+ } & {
5173
+ refinementList: {
5174
+ [attribute: string]: string[];
5175
+ };
5176
+ } & {
5177
+ relevantSort: number;
5178
+ } & {
5179
+ query: string;
5180
+ } & {
5181
+ sortBy: string;
5182
+ } & {
5183
+ toggle: {
5184
+ [attribute: string]: boolean;
5185
+ };
5186
+ } & {
5187
+ query: string;
5188
+ } & {
5189
+ places: {
5190
+ query: string;
5191
+ position: string;
5192
+ };
5193
+ }>;
5194
+ input: string;
5195
+ open: boolean;
5196
+ sendEvent: SendEventForHits;
5197
+ setIndexUiState: (indexUiState: Partial<{
5198
+ query: string;
5199
+ } & {
5200
+ configure: PlainSearchParameters;
5201
+ } & {
5202
+ geoSearch: {
5203
+ boundingBox: string;
5204
+ };
5205
+ } & {
5206
+ hierarchicalMenu: {
5207
+ [rootAttribute: string]: string[];
5208
+ };
5209
+ } & {
5210
+ hitsPerPage: number;
5211
+ } & {
5212
+ page: number;
5213
+ } & {
5214
+ menu: {
5215
+ [attribute: string]: string;
5216
+ };
5217
+ } & {
5218
+ numericMenu: {
5219
+ [attribute: string]: string;
5220
+ };
5221
+ } & {
5222
+ page: number;
5223
+ } & {
5224
+ range: {
5225
+ [attribute: string]: string;
5226
+ };
5227
+ } & {
5228
+ ratingMenu: {
5229
+ [attribute: string]: number | undefined;
5230
+ };
5231
+ } & {
5232
+ refinementList: {
5233
+ [attribute: string]: string[];
5234
+ };
5235
+ } & {
5236
+ relevantSort: number;
5237
+ } & {
5238
+ query: string;
5239
+ } & {
5240
+ sortBy: string;
5241
+ } & {
5242
+ toggle: {
5243
+ [attribute: string]: boolean;
5244
+ };
5245
+ } & {
5246
+ query: string;
5247
+ } & {
5248
+ places: {
5249
+ query: string;
5250
+ position: string;
5251
+ };
5252
+ }> | ((previousIndexUiState: Partial<{
5253
+ query: string;
5254
+ } & {
5255
+ configure: PlainSearchParameters;
5256
+ } & {
5257
+ geoSearch: {
5258
+ boundingBox: string;
5259
+ };
5260
+ } & {
5261
+ hierarchicalMenu: {
5262
+ [rootAttribute: string]: string[];
5263
+ };
5264
+ } & {
5265
+ hitsPerPage: number;
5266
+ } & {
5267
+ page: number;
5268
+ } & {
5269
+ menu: {
5270
+ [attribute: string]: string;
5271
+ };
5272
+ } & {
5273
+ numericMenu: {
5274
+ [attribute: string]: string;
5275
+ };
5276
+ } & {
5277
+ page: number;
5278
+ } & {
5279
+ range: {
5280
+ [attribute: string]: string;
5281
+ };
5282
+ } & {
5283
+ ratingMenu: {
5284
+ [attribute: string]: number | undefined;
5285
+ };
5286
+ } & {
5287
+ refinementList: {
5288
+ [attribute: string]: string[];
5289
+ };
5290
+ } & {
5291
+ relevantSort: number;
5292
+ } & {
5293
+ query: string;
5294
+ } & {
5295
+ sortBy: string;
5296
+ } & {
5297
+ toggle: {
5298
+ [attribute: string]: boolean;
5299
+ };
5300
+ } & {
5301
+ query: string;
5302
+ } & {
5303
+ places: {
5304
+ query: string;
5305
+ position: string;
5306
+ };
5307
+ }>) => Partial<{
5308
+ query: string;
5309
+ } & {
5310
+ configure: PlainSearchParameters;
5311
+ } & {
5312
+ geoSearch: {
5313
+ boundingBox: string;
5314
+ };
5315
+ } & {
5316
+ hierarchicalMenu: {
5317
+ [rootAttribute: string]: string[];
5318
+ };
5319
+ } & {
5320
+ hitsPerPage: number;
5321
+ } & {
5322
+ page: number;
5323
+ } & {
5324
+ menu: {
5325
+ [attribute: string]: string;
5326
+ };
5327
+ } & {
5328
+ numericMenu: {
5329
+ [attribute: string]: string;
5330
+ };
5331
+ } & {
5332
+ page: number;
5333
+ } & {
5334
+ range: {
5335
+ [attribute: string]: string;
5336
+ };
5337
+ } & {
5338
+ ratingMenu: {
5339
+ [attribute: string]: number | undefined;
5340
+ };
5341
+ } & {
5342
+ refinementList: {
5343
+ [attribute: string]: string[];
5344
+ };
5345
+ } & {
5346
+ relevantSort: number;
5347
+ } & {
5348
+ query: string;
5349
+ } & {
5350
+ sortBy: string;
5351
+ } & {
5352
+ toggle: {
5353
+ [attribute: string]: boolean;
5354
+ };
5355
+ } & {
5356
+ query: string;
5357
+ } & {
5358
+ places: {
5359
+ query: string;
5360
+ position: string;
5361
+ };
5362
+ }>)) => void;
5363
+ setInput: (input: string) => void;
5364
+ setOpen: (open: boolean) => void;
5365
+ setMessages: (messagesParam: TUiMessage[] | ((m: TUiMessage[]) => TUiMessage[])) => void;
5366
+ suggestions: string[] | undefined;
5367
+ isClearing: boolean;
5368
+ clearMessages: () => void;
5369
+ onClearTransitionEnd: () => void;
5370
+ tools: ClientSideTools;
5371
+ widgetParams: TWidgetParams & ChatConnectorParams<TUiMessage>;
5372
+ addToolResult: <TTool extends keyof InferUIMessageTools<TUiMessage>>({ tool, toolCallId, output, }: {
5373
+ tool: TTool;
5374
+ toolCallId: string;
5375
+ output: InferUIMessageTools<TUiMessage>[TTool]["output"];
5376
+ }) => Promise<void>;
5377
+ clearError: () => void;
5378
+ error: Error | undefined;
5379
+ id: string;
5380
+ messages: TUiMessage[];
5381
+ regenerate: ({ messageId, ...options }?: {
5382
+ messageId?: string;
5383
+ } & ChatRequestOptions) => Promise<void>;
5384
+ resumeStream: (options?: ChatRequestOptions) => Promise<void>;
5385
+ sendMessage: (message?: (Omit<TUiMessage, "id" | "role"> & {
5386
+ id?: TUiMessage["id"] | undefined;
5387
+ role?: TUiMessage["role"] | undefined;
5388
+ } & {
5389
+ text?: never;
5390
+ files?: never;
5391
+ messageId?: string;
5392
+ }) | {
5393
+ text: string;
5394
+ files?: FileList | FileUIPart[];
5395
+ metadata?: InferUIMessageMetadata<TUiMessage> | undefined;
5396
+ parts?: never;
5397
+ messageId?: string;
5398
+ } | {
5399
+ files: FileList | FileUIPart[];
5400
+ metadata?: InferUIMessageMetadata<TUiMessage> | undefined;
5401
+ parts?: never;
5402
+ messageId?: string;
5403
+ } | undefined, options?: ChatRequestOptions) => Promise<void>;
5404
+ status: ChatStatus;
5405
+ stop: () => Promise<void>;
5406
+ };
5407
+ dispose(): void;
5408
+ shouldRender(): true;
5409
+ readonly chatInstance: Chat<TUiMessage>;
4248
5410
  };
4249
5411
 
4250
5412
  /**
@@ -4260,7 +5422,7 @@ declare const _default_7: <TWidgetParams extends UnknownWidgetParams>(renderFn:
4260
5422
  *
4261
5423
  * Don't forget to explicitly set the `height` of the map container (default class `.ais-geo-search--map`), otherwise it won't be shown (it's a requirement of Google Maps).
4262
5424
  */
4263
- declare const _default_8: <THit extends GeoHit = GeoHit>(widgetParams: GeoSearchWidgetParams<THit> & GeoSearchConnectorParams<THit>) => {
5425
+ declare const _default_9: <THit extends GeoHit = GeoHit>(widgetParams: GeoSearchWidgetParams<THit> & GeoSearchConnectorParams<THit>) => {
4264
5426
  $$widgetType: "ais.geoSearch";
4265
5427
  $$type: "ais.geoSearch";
4266
5428
  init(initArgs: InitOptions): void;
@@ -4501,114 +5663,13 @@ declare const _default_8: <THit extends GeoHit = GeoHit>(widgetParams: GeoSearch
4501
5663
  }): SearchParameters;
4502
5664
  };
4503
5665
 
4504
- declare const _default_9: <THit extends NonNullable<object> = BaseHit>(widgetParams: HitsWidgetParams<THit> & HitsConnectorParams<THit>) => {
4505
- $$widgetType: "ais.hits";
4506
- $$type: "ais.hits";
4507
- init(initOptions: InitOptions): void;
4508
- render(renderOptions: RenderOptions): void;
4509
- getRenderState(renderState: {
4510
- answers?: WidgetRenderState<AnswersRenderState, AnswersConnectorParams> | undefined;
4511
- autocomplete?: WidgetRenderState<AutocompleteRenderState, AutocompleteConnectorParams> | undefined;
4512
- breadcrumb?: {
4513
- [rootAttribute: string]: WidgetRenderState<BreadcrumbRenderState, BreadcrumbConnectorParams>;
4514
- } | undefined;
4515
- chat?: WidgetRenderState<ChatRenderState<UIMessage<unknown, UIDataTypes, UITools>>, ChatConnectorParams<UIMessage<unknown, UIDataTypes, UITools>>> | undefined;
4516
- clearRefinements?: WidgetRenderState<ClearRefinementsRenderState, ClearRefinementsConnectorParams> | undefined;
4517
- configure?: WidgetRenderState<ConfigureRenderState, ConfigureConnectorParams> | undefined;
4518
- currentRefinements?: WidgetRenderState<CurrentRefinementsRenderState, CurrentRefinementsConnectorParams> | undefined;
4519
- geoSearch?: WidgetRenderState<GeoSearchRenderState<GeoHit>, GeoSearchConnectorParams<GeoHit>> | undefined;
4520
- hierarchicalMenu?: {
4521
- [rootAttribute: string]: WidgetRenderState<HierarchicalMenuRenderState, HierarchicalMenuConnectorParams>;
4522
- } | undefined;
4523
- hits?: WidgetRenderState<HitsRenderState<BaseHit>, HitsConnectorParams<BaseHit>> | undefined;
4524
- hitsPerPage?: WidgetRenderState<HitsPerPageRenderState, HitsPerPageConnectorParams> | undefined;
4525
- infiniteHits?: WidgetRenderState<InfiniteHitsRenderState<BaseHit>, InfiniteHitsConnectorParams<BaseHit>> | undefined;
4526
- menu?: {
4527
- [attribute: string]: WidgetRenderState<MenuRenderState, MenuConnectorParams>;
4528
- } | undefined;
4529
- numericMenu?: {
4530
- [attribute: string]: WidgetRenderState<NumericMenuRenderState, NumericMenuConnectorParams>;
4531
- } | undefined;
4532
- pagination?: WidgetRenderState<PaginationRenderState, PaginationConnectorParams> | undefined;
4533
- poweredBy?: WidgetRenderState<PoweredByRenderState, PoweredByConnectorParams> | undefined;
4534
- queryRules?: WidgetRenderState<QueryRulesRenderState, QueryRulesConnectorParams> | undefined;
4535
- range?: {
4536
- [attribute: string]: WidgetRenderState<RangeRenderState, RangeConnectorParams>;
4537
- } | undefined;
4538
- ratingMenu?: {
4539
- [attribute: string]: WidgetRenderState<RatingMenuRenderState, RatingMenuConnectorParams>;
4540
- } | undefined;
4541
- refinementList?: {
4542
- [attribute: string]: WidgetRenderState<RefinementListRenderState, RefinementListConnectorParams>;
4543
- } | undefined;
4544
- relevantSort?: WidgetRenderState<RelevantSortRenderState, RelevantSortConnectorParams> | undefined;
4545
- searchBox?: WidgetRenderState<SearchBoxRenderState, SearchBoxConnectorParams> | undefined;
4546
- sortBy?: WidgetRenderState<SortByRenderState, SortByConnectorParams> | undefined;
4547
- stats?: WidgetRenderState<StatsRenderState, StatsConnectorParams> | undefined;
4548
- toggleRefinement?: {
4549
- [attribute: string]: WidgetRenderState<ToggleRefinementRenderState, ToggleRefinementConnectorParams>;
4550
- } | undefined;
4551
- voiceSearch?: WidgetRenderState<VoiceSearchRenderState, VoiceSearchConnectorParams> | undefined;
4552
- analytics?: WidgetRenderState<Record<string, unknown>, AnalyticsWidgetParams> | undefined;
4553
- places?: WidgetRenderState<Record<string, unknown>, PlacesWidgetParams> | undefined;
4554
- }, renderOptions: InitOptions | RenderOptions): IndexRenderState & HitsWidgetDescription["indexRenderState"];
4555
- getWidgetRenderState({ results, helper, instantSearchInstance }: InitOptions | RenderOptions): {
4556
- hits: never[];
4557
- items: never[];
4558
- results: undefined;
4559
- banner: undefined;
4560
- sendEvent: SendEventForHits;
4561
- bindEvent: BindEventForHits;
4562
- widgetParams: Partial<HitsWidgetParams<BaseHit>> & HitsConnectorParams<THit>;
4563
- } | {
4564
- hits: Hit<BaseHit>[] | Hit<THit>[];
4565
- items: Hit<BaseHit>[] | Hit<THit>[];
4566
- results: SearchResults<any>;
4567
- banner: Banner | undefined;
4568
- sendEvent: SendEventForHits;
4569
- bindEvent: BindEventForHits;
4570
- widgetParams: Partial<HitsWidgetParams<BaseHit>> & HitsConnectorParams<THit>;
4571
- };
4572
- dispose({ state }: DisposeOptions): SearchParameters;
4573
- getWidgetSearchParameters(state: SearchParameters, _uiState: {
4574
- uiState: {
4575
- query?: string | undefined;
4576
- configure?: PlainSearchParameters | undefined;
4577
- geoSearch?: {
4578
- boundingBox: string;
4579
- } | undefined;
4580
- hierarchicalMenu?: {
4581
- [rootAttribute: string]: string[];
4582
- } | undefined;
4583
- hitsPerPage?: number | undefined;
4584
- page?: number | undefined;
4585
- menu?: {
4586
- [attribute: string]: string;
4587
- } | undefined;
4588
- numericMenu?: {
4589
- [attribute: string]: string;
4590
- } | undefined;
4591
- range?: {
4592
- [attribute: string]: string;
4593
- } | undefined;
4594
- ratingMenu?: {
4595
- [attribute: string]: number | undefined;
4596
- } | undefined;
4597
- refinementList?: {
4598
- [attribute: string]: string[];
4599
- } | undefined;
4600
- relevantSort?: number | undefined;
4601
- sortBy?: string | undefined;
4602
- toggle?: {
4603
- [attribute: string]: boolean;
4604
- } | undefined;
4605
- places?: {
4606
- query: string;
4607
- position: string;
4608
- } | undefined;
4609
- };
4610
- }): SearchParameters;
4611
- };
5666
+ /**
5667
+ * Default chat transport implementation using NDJSON streaming.
5668
+ */
5669
+ declare class DefaultChatTransport<TUIMessage extends UIMessage> extends HttpChatTransport<TUIMessage> {
5670
+ constructor(options?: HttpChatTransportInitOptions<TUIMessage>);
5671
+ protected processResponseStream(stream: ReadableStream<Uint8Array>): ReadableStream<UIMessageChunk>;
5672
+ }
4612
5673
 
4613
5674
  declare type DisposeOptions = {
4614
5675
  helper: AlgoliaSearchHelper;
@@ -4617,6 +5678,36 @@ declare type DisposeOptions = {
4617
5678
  parent: IndexWidget;
4618
5679
  };
4619
5680
 
5681
+ declare type DynamicToolUIPart = {
5682
+ type: 'dynamic-tool';
5683
+ toolName: string;
5684
+ toolCallId: string;
5685
+ } & ({
5686
+ state: 'input-streaming';
5687
+ input: unknown | undefined;
5688
+ output?: never;
5689
+ errorText?: never;
5690
+ } | {
5691
+ state: 'input-available';
5692
+ input: unknown;
5693
+ output?: never;
5694
+ errorText?: never;
5695
+ callProviderMetadata?: ProviderMetadata;
5696
+ } | {
5697
+ state: 'output-available';
5698
+ input: unknown;
5699
+ output: unknown;
5700
+ errorText?: never;
5701
+ callProviderMetadata?: ProviderMetadata;
5702
+ preliminary?: boolean;
5703
+ } | {
5704
+ state: 'output-error';
5705
+ input: unknown;
5706
+ output?: never;
5707
+ errorText: string;
5708
+ callProviderMetadata?: ProviderMetadata;
5709
+ });
5710
+
4620
5711
  declare const dynamicWidgets: DynamicWidgetsWidget;
4621
5712
 
4622
5713
  declare type DynamicWidgetsConnector = Connector<DynamicWidgetsWidgetDescription, DynamicWidgetsConnectorParams>;
@@ -4733,6 +5824,16 @@ declare const EXPERIMENTAL_dynamicWidgets: DynamicWidgetsWidget;
4733
5824
 
4734
5825
  declare type FacetValue = string | boolean | number;
4735
5826
 
5827
+ declare type FetchFunction = typeof fetch;
5828
+
5829
+ declare type FileUIPart = {
5830
+ type: 'file';
5831
+ mediaType: string;
5832
+ filename?: string;
5833
+ url: string;
5834
+ providerMetadata?: ProviderMetadata;
5835
+ };
5836
+
4736
5837
  declare type FilterSuggestionsConnector = Connector<FilterSuggestionsWidgetDescription, FilterSuggestionsConnectorParams>;
4737
5838
 
4738
5839
  declare type FilterSuggestionsConnectorParams = {
@@ -5757,6 +6858,35 @@ declare type HTMLMarkerArguments = {
5757
6858
  };
5758
6859
  };
5759
6860
 
6861
+ /**
6862
+ * Abstract base class for HTTP-based chat transports.
6863
+ */
6864
+ declare abstract class HttpChatTransport<TUIMessage extends UIMessage> implements ChatTransport<TUIMessage> {
6865
+ protected api: string;
6866
+ protected credentials: Resolvable<RequestCredentials> | undefined;
6867
+ protected headers: Resolvable<Record<string, string> | Headers> | undefined;
6868
+ protected body: Resolvable<object> | undefined;
6869
+ protected fetch?: FetchFunction;
6870
+ protected prepareSendMessagesRequest?: PrepareSendMessagesRequest<TUIMessage>;
6871
+ protected prepareReconnectToStreamRequest?: PrepareReconnectToStreamRequest;
6872
+ constructor({ api, credentials, headers, body, fetch: customFetch, prepareSendMessagesRequest, prepareReconnectToStreamRequest, }: HttpChatTransportInitOptions<TUIMessage>);
6873
+ sendMessages({ abortSignal, chatId, messages, requestMetadata, trigger, messageId, headers: requestHeaders, body: requestBody, }: Parameters<ChatTransport<TUIMessage>['sendMessages']>[0]): Promise<ReadableStream<UIMessageChunk>>;
6874
+ reconnectToStream({ chatId, headers: requestHeaders, body: requestBody, }: Parameters<ChatTransport<TUIMessage>['reconnectToStream']>[0]): Promise<ReadableStream<UIMessageChunk> | null>;
6875
+ protected abstract processResponseStream(stream: ReadableStream<Uint8Array>): ReadableStream<UIMessageChunk>;
6876
+ }
6877
+
6878
+ declare type HttpChatTransportInitOptions<UI_MESSAGE extends UIMessage> = {
6879
+ api?: string;
6880
+ credentials?: Resolvable<RequestCredentials>;
6881
+ headers?: Resolvable<Record<string, string> | Headers>;
6882
+ body?: Resolvable<object>;
6883
+ fetch?: FetchFunction;
6884
+ prepareSendMessagesRequest?: PrepareSendMessagesRequest<UI_MESSAGE>;
6885
+ prepareReconnectToStreamRequest?: PrepareReconnectToStreamRequest;
6886
+ };
6887
+
6888
+ declare type IdGenerator = () => string;
6889
+
5760
6890
  declare const index: (widgetParams: IndexWidgetParams) => IndexWidget;
5761
6891
 
5762
6892
  declare type IndexConfig<TItem extends BaseHit> = AutocompleteIndexConfig<TItem> & {
@@ -5894,6 +7024,28 @@ declare type IndexWidgetParams = {
5894
7024
  indexId?: string;
5895
7025
  };
5896
7026
 
7027
+ declare type InferUIMessageData<T extends UIMessage> = T extends UIMessage<unknown, infer DATA_TYPES> ? DATA_TYPES : UIDataTypes;
7028
+
7029
+ declare type InferUIMessageMetadata<T extends UIMessage> = T extends UIMessage<infer METADATA> ? METADATA : unknown;
7030
+
7031
+ declare type InferUIMessageToolCall<UI_MESSAGE extends UIMessage> = ValueOf<{
7032
+ [NAME in keyof InferUIMessageTools<UI_MESSAGE>]: {
7033
+ toolName: NAME & string;
7034
+ toolCallId: string;
7035
+ input: InferUIMessageTools<UI_MESSAGE>[NAME] extends {
7036
+ input: infer INPUT;
7037
+ } ? INPUT : never;
7038
+ dynamic?: false;
7039
+ };
7040
+ }> | {
7041
+ toolName: string;
7042
+ toolCallId: string;
7043
+ input: unknown;
7044
+ dynamic: true;
7045
+ };
7046
+
7047
+ declare type InferUIMessageTools<T extends UIMessage> = T extends UIMessage<unknown, UIDataTypes, infer TOOLS> ? TOOLS : UITools;
7048
+
5897
7049
  declare type InfiniteHitsCache<THit extends NonNullable<object> = BaseHit> = {
5898
7050
  read: Read<THit>;
5899
7051
  write: Write<THit>;
@@ -7412,8 +8564,50 @@ declare type PreparedTemplateProps<TTemplates extends Templates> = {
7412
8564
  };
7413
8565
  };
7414
8566
 
8567
+ declare type PrepareReconnectToStreamRequest = (options: {
8568
+ id: string;
8569
+ requestMetadata: unknown;
8570
+ body: Record<string, unknown> | undefined;
8571
+ credentials: RequestCredentials | undefined;
8572
+ headers: HeadersInit | undefined;
8573
+ api: string;
8574
+ }) => {
8575
+ headers?: HeadersInit;
8576
+ credentials?: RequestCredentials;
8577
+ api?: string;
8578
+ } | PromiseLike<{
8579
+ headers?: HeadersInit;
8580
+ credentials?: RequestCredentials;
8581
+ api?: string;
8582
+ }>;
8583
+
8584
+ declare type PrepareSendMessagesRequest<UI_MESSAGE extends UIMessage> = (options: {
8585
+ id: string;
8586
+ messages: UI_MESSAGE[];
8587
+ requestMetadata: unknown;
8588
+ body: Record<string, unknown> | undefined;
8589
+ credentials: RequestCredentials | undefined;
8590
+ headers: HeadersInit | undefined;
8591
+ api: string;
8592
+ } & {
8593
+ trigger: 'submit-message' | 'regenerate-message';
8594
+ messageId: string | undefined;
8595
+ }) => {
8596
+ body: object;
8597
+ headers?: HeadersInit;
8598
+ credentials?: RequestCredentials;
8599
+ api?: string;
8600
+ } | PromiseLike<{
8601
+ body: object;
8602
+ headers?: HeadersInit;
8603
+ credentials?: RequestCredentials;
8604
+ api?: string;
8605
+ }>;
8606
+
7415
8607
  declare type ProvidedInsightsClient = InsightsClient | null | undefined;
7416
8608
 
8609
+ declare type ProviderMetadata = Record<string, Record<string, unknown>>;
8610
+
7417
8611
  declare const queryRuleContext: QueryRuleContextWidget;
7418
8612
 
7419
8613
  declare type QueryRuleContextWidget = WidgetFactory<QueryRulesWidgetDescription & {
@@ -7917,6 +9111,13 @@ declare type Read<THit extends NonNullable<object>> = ({ state, }: {
7917
9111
  state: PlainSearchParameters;
7918
9112
  }) => InfiniteHitsCachedHits<THit> | null;
7919
9113
 
9114
+ declare type ReasoningUIPart = {
9115
+ type: 'reasoning';
9116
+ text: string;
9117
+ state?: 'streaming' | 'done';
9118
+ providerMetadata?: ProviderMetadata;
9119
+ };
9120
+
7920
9121
  declare type RecommendRenderOptions = SharedRenderOptions & {
7921
9122
  results: RecommendResponse<any>;
7922
9123
  };
@@ -8568,6 +9769,8 @@ declare type RequiredWidgetType<TWidgetDescription extends WidgetDescription> =
8568
9769
  $$widgetType: TWidgetDescription['$$widgetType'];
8569
9770
  };
8570
9771
 
9772
+ declare type Resolvable<T> = T | (() => T) | (() => Promise<T>);
9773
+
8571
9774
  declare function ReverseHighlight<THit extends Hit<BaseHit>>({ hit, attribute, cssClasses, ...props }: ReverseHighlightProps<THit>): h.JSX.Element;
8572
9775
 
8573
9776
  /**
@@ -9120,6 +10323,23 @@ declare type SortByWidgetParams = {
9120
10323
  transformItems?: TransformItems<SortByItem>;
9121
10324
  };
9122
10325
 
10326
+ declare type SourceDocumentUIPart = {
10327
+ type: 'source-document';
10328
+ sourceId: string;
10329
+ mediaType: string;
10330
+ title: string;
10331
+ filename?: string;
10332
+ providerMetadata?: ProviderMetadata;
10333
+ };
10334
+
10335
+ declare type SourceUrlUIPart = {
10336
+ type: 'source-url';
10337
+ sourceId: string;
10338
+ url: string;
10339
+ title?: string;
10340
+ providerMetadata?: ProviderMetadata;
10341
+ };
10342
+
9123
10343
  declare type StarRatingItems = {
9124
10344
  /**
9125
10345
  * Name corresponding to the number of stars.
@@ -9280,6 +10500,10 @@ declare type StatsWidgetParams = {
9280
10500
 
9281
10501
  declare type Status = 'initial' | 'askingPermission' | 'waiting' | 'recognizing' | 'finished' | 'error';
9282
10502
 
10503
+ declare type StepStartUIPart = {
10504
+ type: 'step-start';
10505
+ };
10506
+
9283
10507
  declare type Suggestion = {
9284
10508
  /**
9285
10509
  * The facet attribute name.
@@ -9350,6 +10574,13 @@ declare type TextTemplateProps = {
9350
10574
  hasManySortedResults: boolean;
9351
10575
  };
9352
10576
 
10577
+ declare type TextUIPart = {
10578
+ type: 'text';
10579
+ text: string;
10580
+ state?: 'streaming' | 'done';
10581
+ providerMetadata?: ProviderMetadata;
10582
+ };
10583
+
9353
10584
  /**
9354
10585
  * The toggleRefinement widget lets the user either:
9355
10586
  * - switch between two values for a single facetted attribute (free_shipping / not_free_shipping)
@@ -9497,6 +10728,42 @@ declare type ToggleRefinementWidgetParams = {
9497
10728
  cssClasses?: ToggleRefinementCSSClasses;
9498
10729
  };
9499
10730
 
10731
+ declare type ToolUIPart<TOOLS extends UITools = UITools> = ValueOf<{
10732
+ [NAME in keyof TOOLS & string]: {
10733
+ type: `tool-${NAME}`;
10734
+ toolCallId: string;
10735
+ } & ({
10736
+ state: 'input-streaming';
10737
+ input: DeepPartial<TOOLS[NAME]['input']> | undefined;
10738
+ providerExecuted?: boolean;
10739
+ output?: never;
10740
+ errorText?: never;
10741
+ } | {
10742
+ state: 'input-available';
10743
+ input: TOOLS[NAME]['input'];
10744
+ providerExecuted?: boolean;
10745
+ output?: never;
10746
+ errorText?: never;
10747
+ callProviderMetadata?: ProviderMetadata;
10748
+ } | {
10749
+ state: 'output-available';
10750
+ input: TOOLS[NAME]['input'];
10751
+ output: TOOLS[NAME]['output'];
10752
+ errorText?: never;
10753
+ providerExecuted?: boolean;
10754
+ callProviderMetadata?: ProviderMetadata;
10755
+ preliminary?: boolean;
10756
+ } | {
10757
+ state: 'output-error';
10758
+ input: TOOLS[NAME]['input'] | undefined;
10759
+ rawInput?: unknown;
10760
+ output?: never;
10761
+ errorText: string;
10762
+ providerExecuted?: boolean;
10763
+ callProviderMetadata?: ProviderMetadata;
10764
+ });
10765
+ }>;
10766
+
9500
10767
  declare type TrackedFilterRefinement = string | number | boolean;
9501
10768
 
9502
10769
  /**
@@ -9614,12 +10881,125 @@ declare type TrendingItemsWidgetParams<THit extends NonNullable<object> = BaseHi
9614
10881
  cssClasses?: TrendingItemsCSSClasses;
9615
10882
  };
9616
10883
 
10884
+ declare type UIDataTypes = Record<string, unknown>;
10885
+
10886
+ declare interface UIMessage<METADATA = unknown, DATA_PARTS extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools> {
10887
+ id: string;
10888
+ role: 'system' | 'user' | 'assistant';
10889
+ metadata?: METADATA;
10890
+ parts: Array<UIMessagePart<DATA_PARTS, TOOLS>>;
10891
+ }
10892
+
10893
+ declare type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataTypes> = {
10894
+ type: 'text-start';
10895
+ id: string;
10896
+ providerMetadata?: ProviderMetadata;
10897
+ } | {
10898
+ type: 'text-delta';
10899
+ delta: string;
10900
+ id: string;
10901
+ providerMetadata?: ProviderMetadata;
10902
+ } | {
10903
+ type: 'text-end';
10904
+ id: string;
10905
+ providerMetadata?: ProviderMetadata;
10906
+ } | {
10907
+ type: 'reasoning-start';
10908
+ id: string;
10909
+ providerMetadata?: ProviderMetadata;
10910
+ } | {
10911
+ type: 'reasoning-delta';
10912
+ id: string;
10913
+ delta: string;
10914
+ providerMetadata?: ProviderMetadata;
10915
+ } | {
10916
+ type: 'reasoning-end';
10917
+ id: string;
10918
+ providerMetadata?: ProviderMetadata;
10919
+ } | {
10920
+ type: 'error';
10921
+ errorText: string;
10922
+ } | {
10923
+ type: 'tool-input-available';
10924
+ toolName: string;
10925
+ toolCallId: string;
10926
+ input: unknown;
10927
+ callProviderMetadata?: ProviderMetadata;
10928
+ providerExecuted?: boolean;
10929
+ } | {
10930
+ type: 'tool-input-start';
10931
+ toolName: string;
10932
+ toolCallId: string;
10933
+ input?: unknown;
10934
+ providerExecuted?: boolean;
10935
+ } | {
10936
+ type: 'tool-input-delta';
10937
+ toolName: string;
10938
+ toolCallId: string;
10939
+ inputDelta: string;
10940
+ } | {
10941
+ type: 'tool-output-available';
10942
+ toolName: string;
10943
+ toolCallId: string;
10944
+ output: unknown;
10945
+ callProviderMetadata?: ProviderMetadata;
10946
+ preliminary?: boolean;
10947
+ } | {
10948
+ type: 'tool-error';
10949
+ toolName: string;
10950
+ toolCallId: string;
10951
+ errorText: string;
10952
+ input?: unknown;
10953
+ callProviderMetadata?: ProviderMetadata;
10954
+ } | {
10955
+ type: 'source-url';
10956
+ sourceId: string;
10957
+ url: string;
10958
+ title?: string;
10959
+ } | {
10960
+ type: 'source-document';
10961
+ sourceId: string;
10962
+ mediaType: string;
10963
+ title: string;
10964
+ filename?: string;
10965
+ providerMetadata?: ProviderMetadata;
10966
+ } | {
10967
+ type: 'file';
10968
+ url: string;
10969
+ mediaType: string;
10970
+ } | DataUIMessageChunk<DATA_TYPES> | {
10971
+ type: 'start-step';
10972
+ } | {
10973
+ type: 'finish-step';
10974
+ } | {
10975
+ type: 'start';
10976
+ messageId?: string;
10977
+ messageMetadata?: METADATA;
10978
+ } | {
10979
+ type: 'finish';
10980
+ messageMetadata?: METADATA;
10981
+ } | {
10982
+ type: 'abort';
10983
+ } | {
10984
+ type: 'message-metadata';
10985
+ messageMetadata: METADATA;
10986
+ };
10987
+
10988
+ declare type UIMessagePart<DATA_TYPES extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools> = TextUIPart | ReasoningUIPart | ToolUIPart<TOOLS> | DynamicToolUIPart | SourceUrlUIPart | SourceDocumentUIPart | FileUIPart | DataUIPart<DATA_TYPES> | StepStartUIPart;
10989
+
9617
10990
  declare type UiState = {
9618
10991
  [indexId: string]: IndexUiState;
9619
10992
  };
9620
10993
 
9621
10994
  declare type UiStateLifeCycle<TWidgetDescription extends WidgetDescription> = TWidgetDescription extends RequiredKeys<WidgetDescription, 'indexUiState'> ? RequiredUiStateLifeCycle<TWidgetDescription> : Partial<RequiredUiStateLifeCycle<TWidgetDescription>>;
9622
10995
 
10996
+ declare type UITool = {
10997
+ input: unknown;
10998
+ output: unknown | undefined;
10999
+ };
11000
+
11001
+ declare type UITools = Record<string, UITool>;
11002
+
9623
11003
  declare type UnknownWidgetParams = NonNullable<object>;
9624
11004
 
9625
11005
  /**
@@ -9627,6 +11007,18 @@ declare type UnknownWidgetParams = NonNullable<object>;
9627
11007
  */
9628
11008
  declare type Unmounter = () => void;
9629
11009
 
11010
+ declare type UserClientSideToolsWithTemplate = Record<string, UserClientSideToolWithTemplate>;
11011
+
11012
+ declare type UserClientSideToolTemplates = Partial<{
11013
+ layout: TemplateWithBindEvent<ClientSideToolComponentProps>;
11014
+ }>;
11015
+
11016
+ declare type UserClientSideToolWithTemplate = Omit<UserClientSideTool, 'layoutComponent'> & {
11017
+ templates: UserClientSideToolTemplates;
11018
+ };
11019
+
11020
+ declare type ValueOf<T> = T[keyof T];
11021
+
9630
11022
  declare type VoiceListeningState = {
9631
11023
  status: Status;
9632
11024
  transcript: string;
@@ -9762,23 +11154,23 @@ declare namespace widgets {
9762
11154
  clearRefinements,
9763
11155
  configure,
9764
11156
  currentRefinements,
9765
- _default_8 as geoSearch,
11157
+ _default_9 as geoSearch,
9766
11158
  hierarchicalMenu,
9767
- _default_9 as hits,
11159
+ _default_10 as hits,
9768
11160
  hitsPerPage,
9769
11161
  index,
9770
11162
  IndexWidget,
9771
- _default_10 as infiniteHits,
11163
+ _default_11 as infiniteHits,
9772
11164
  menu,
9773
11165
  menuSelect,
9774
11166
  numericMenu,
9775
11167
  pagination,
9776
11168
  panel,
9777
- _default_11 as places,
11169
+ _default_12 as places,
9778
11170
  poweredBy,
9779
11171
  queryRuleContext,
9780
11172
  queryRuleCustomData,
9781
- _default_12 as relatedProducts,
11173
+ _default_13 as relatedProducts,
9782
11174
  rangeInput,
9783
11175
  rangeSlider,
9784
11176
  ratingMenu,
@@ -9788,12 +11180,12 @@ declare namespace widgets {
9788
11180
  sortBy,
9789
11181
  stats,
9790
11182
  toggleRefinement,
9791
- _default_13 as trendingItems,
11183
+ _default_14 as trendingItems,
9792
11184
  voiceSearch,
9793
- _default_14 as frequentlyBoughtTogether,
9794
- _default_15 as lookingSimilar,
9795
- chat,
9796
- _default_16 as filterSuggestions
11185
+ _default_15 as frequentlyBoughtTogether,
11186
+ _default_16 as lookingSimilar,
11187
+ _default_17 as chat,
11188
+ _default_18 as filterSuggestions
9797
11189
  }
9798
11190
  }
9799
11191