import type { AxiosRequestConfig } from "axios"; import type { BaseStreamConfig, StreamConfig } from "./Configuration"; import type { DocumentSchema, SearchParamsWithPreset, SearchOptions, SearchResponse, DocumentWriteParameters, DeleteQuery, DeleteResponse, ImportResponse, DocumentsExportParameters } from "./Documents"; export type DropTokensMode = "right_to_left" | "left_to_right" | "both_sides:3"; export type OperationMode = "off" | "always" | "fallback"; export type CommaSeparated = T extends `${infer Start},${infer Rest}` ? TrimString extends ToExtend ? CommaSeparated ]> : { error: "Invalid operation mode"; value: TrimString; } : TrimString extends ToExtend ? OriginalString : { error: "Invalid operation mode"; value: TrimString; }; export type MessageChunk = { message: string; conversation_id: string; }; export type UnionArrayKeys = { [K in keyof T]: T[K] extends undefined ? never : NonNullable extends infer R ? R extends R[] ? never : R extends (infer U)[] | infer U ? U[] extends R ? K : never : never : never; }[keyof T] & keyof T; export type UnionArraySearchParams = UnionArrayKeys; export type ArraybleParams = { readonly [K in UnionArraySearchParams]: string; }; export type ExtractBaseTypes = { [K in keyof T]: K extends UnionArrayKeys ? T[K] extends (infer U)[] | infer U ? U : T[K] : T[K]; }; export declare const arrayableParams: ArraybleParams; export interface SearchParams { q?: "*" | (string & {}); query_by?: string | string[]; query_by_weights?: string | number[]; prefix?: string | boolean | boolean[]; filter_by?: string; max_filter_by_candidates?: number; enable_synonyms?: boolean; enable_analytics?: boolean; filter_curated_hits?: boolean; enable_lazy_filter?: boolean; sort_by?: string | string[]; facet_by?: string | string[]; max_facet_values?: number; facet_sample_threshold?: number; facet_sample_percent?: number; facet_query?: string; facet_query_num_typos?: number; facet_return_parent?: string; facet_strategy?: "exhaustive" | "top_values" | "automatic"; page?: number; per_page?: number; group_by?: string | string[]; group_limit?: number; group_missing_values?: boolean; include_fields?: string | string[]; exclude_fields?: string | string[]; highlight_fields?: string | string[]; highlight_full_fields?: string | string[]; highlight_affix_num_tokens?: number; highlight_start_tag?: string; highlight_end_tag?: string; enable_highlight_v1?: boolean; snippet_threshold?: number; nl_query?: boolean; nl_model_id?: string; nl_query_debug?: boolean; nl_query_prompt_cache_ttl?: number; num_typos?: string | number | number[]; min_len_1typo?: number; min_len_2typo?: number; split_join_tokens?: OperationMode; exhaustive_search?: boolean; drop_tokens_threshold?: number; drop_tokens_mode?: DropTokensMode; typo_tokens_threshold?: number; pinned_hits?: string | string[]; synonym_sets?: string[] | string; hidden_hits?: string | string[]; limit_hits?: number; pre_segmented_query?: boolean; enable_overrides?: boolean; override_tags?: string | string[]; prioritize_exact_match?: boolean; prioritize_token_position?: boolean; prioritize_num_matching_fields?: boolean; search_cutoff_ms?: number; use_cache?: boolean; max_candidates?: number; infix?: CommaSeparated | OperationMode[] | OperationMode; preset?: string; text_match_type?: "max_score" | "max_weight" | "sum_score"; vector_query?: string; "x-typesense-api-key"?: string; "x-typesense-user-id"?: string; offset?: number; limit?: number; stopwords?: string; conversation?: boolean; validate_field_names?: boolean; conversation_stream?: boolean; conversation_model_id?: string; conversation_id?: string; voice_query?: string; streamConfig?: StreamConfig; } export interface SearchResponseRequestParams { collection_name?: string; q?: string; page?: number; per_page?: number; first_q?: string; voice_query?: { transcribed_query?: string; }; } export interface SearchableDocuments { search(searchParameters: SearchParams | SearchParamsWithPreset, options: SearchOptions): Promise>; clearCache(): void; } export interface WriteableDocuments { create(document: T, options: DocumentWriteParameters): Promise; upsert(document: T, options: DocumentWriteParameters): Promise; update(document: T, options: DocumentWriteParameters): Promise; delete(query: DeleteQuery): Promise; import(documents: T[] | string, options: DocumentWriteParameters): Promise; export(options: DocumentsExportParameters): Promise; } export interface MultiSearchUnionStreamConfig extends BaseStreamConfig { onComplete?: (data: UnionSearchResponse) => void; } export interface MultiSearchResultsStreamConfig extends BaseStreamConfig { onComplete?: (data: { results: { [Index in keyof T]: SearchResponse; } & { length: T["length"]; }; }) => void; } export interface RequestParams { path: string; queryParams?: Record; body?: unknown; headers?: Record; streamConfig?: StreamConfig | MultiSearchResultsStreamConfig | MultiSearchUnionStreamConfig; abortSignal?: AbortSignal | null; responseType?: AxiosRequestConfig["responseType"] | undefined; isStreamingRequest: boolean | undefined; } export interface MultiSearchRequestsWithUnionSchema extends SearchesMultiSearchesRequestSchema { union: true; } export interface MultiSearchRequestsWithoutUnionSchema extends SearchesMultiSearchesRequestSchema { union?: false | undefined; } export type MultiSearchRequestsSchema = MultiSearchRequestsWithUnionSchema | MultiSearchRequestsWithoutUnionSchema; export interface UnionSearchResponse extends Omit, "request_params"> { union_request_params: SearchResponseRequestParams[]; } export type MultiSearchResponse = MultiSearchRequestsSchema> = R extends MultiSearchRequestsWithUnionSchema ? UnionSearchResponse : { results: { [Index in keyof T]: SearchResponse; } & { length: T["length"]; }; }; export interface MultiSearchUnionStreamConfig extends BaseStreamConfig { onComplete?: (data: UnionSearchResponse) => void; } export interface MultiSearchResultsStreamConfig extends BaseStreamConfig { onComplete?: (data: { results: { [Index in keyof T]: SearchResponse; } & { length: T["length"]; }; }) => void; } interface SearchesMultiSearchesRequestSchema { searches: (MultiSearchRequestSchema | MultiSearchRequestWithPresetSchema)[]; } interface BaseMultiSearchRequestSchema { collection?: string; rerank_hybrid_matches?: boolean; "x-typesense-api-key"?: string; } type CommonMultiSearchParametersBase = Partial, "streamConfig">>; export type MultiSearchRequestSchema = BaseMultiSearchRequestSchema & Omit, "streamConfig">; export type MultiSearchRequestWithPresetSchema = BaseMultiSearchRequestSchema & Omit, "streamConfig">; export type MultiSearchUnionParameters = CommonMultiSearchParametersBase & { streamConfig?: MultiSearchUnionStreamConfig; use_cache?: boolean; }; export type MultiSearchResultsParameters = CommonMultiSearchParametersBase & { streamConfig?: MultiSearchResultsStreamConfig; use_cache?: boolean; }; type Whitespace = " " | "\n" | "\t"; type TrimString = S extends `${Whitespace}${infer S}` ? TrimString : S extends `${infer S}${Whitespace}` ? TrimString : S; export {};