import { ConsistencyLevel } from '../data/index.js'; import { Metadata } from 'nice-grpc'; import { Filters } from '../proto/v1/base.js'; import { BM25, Hybrid, NearAudioSearch, NearDepthSearch, NearIMUSearch, NearImageSearch, NearObject, NearTextSearch, NearThermalSearch, NearVector, NearVideoSearch } from '../proto/v1/base_search.js'; import { GroupBy, MetadataRequest, PropertiesRequest, Rerank, SearchReply, SortBy } from '../proto/v1/search_get.js'; import { WeaviateClient } from '../proto/v1/weaviate.js'; import { RetryOptions } from 'nice-grpc-client-middleware-retry'; import { NearMediaType } from '../index.js'; import { GenerativeSearch } from '../proto/v1/generative.js'; import Base from './base.js'; export type SearchFetchArgs = { limit?: number; offset?: number; after?: string; filters?: Filters; sortBy?: SortBy[]; metadata?: MetadataRequest; properties?: PropertiesRequest; generative?: GenerativeSearch; groupBy?: GroupBy; }; export type BaseSearchArgs = { limit?: number; offset?: number; autocut?: number; filters?: Filters; rerank?: Rerank; metadata?: MetadataRequest; properties?: PropertiesRequest; generative?: GenerativeSearch; groupBy?: GroupBy; }; export type SearchBm25Args = BaseSearchArgs & { bm25Search: BM25; }; export type SearchHybridArgs = BaseSearchArgs & { hybridSearch: Hybrid; }; export type SearchNearAudioArgs = BaseSearchArgs & { nearAudio: NearAudioSearch; }; export type SearchNearDepthArgs = BaseSearchArgs & { nearDepth: NearDepthSearch; }; export type SearchNearImageArgs = BaseSearchArgs & { nearImage: NearImageSearch; }; export type SearchNearIMUArgs = BaseSearchArgs & { nearIMU: NearIMUSearch; }; export type SearchNearObjectArgs = BaseSearchArgs & { nearObject: NearObject; }; export type SearchNearTextArgs = BaseSearchArgs & { nearText: NearTextSearch; }; export type SearchNearThermalArgs = BaseSearchArgs & { nearThermal: NearThermalSearch; }; export type SearchNearVectorArgs = BaseSearchArgs & { nearVector: NearVector; }; export type SearchNearVideoArgs = BaseSearchArgs & { nearVideo: NearVideoSearch; }; export type SearchNearMediaArgs = T extends 'audio' ? SearchNearAudioArgs : T extends 'depth' ? SearchNearDepthArgs : T extends 'image' ? SearchNearImageArgs : T extends 'imu' ? SearchNearIMUArgs : T extends 'thermal' ? SearchNearThermalArgs : T extends 'video' ? SearchNearVideoArgs : never; export interface Search { withFetch: (args: SearchFetchArgs) => Promise; withBm25: (args: SearchBm25Args) => Promise; withHybrid: (args: SearchHybridArgs) => Promise; withNearAudio: (args: SearchNearAudioArgs) => Promise; withNearDepth: (args: SearchNearDepthArgs) => Promise; withNearImage: (args: SearchNearImageArgs) => Promise; withNearIMU: (args: SearchNearIMUArgs) => Promise; withNearObject: (args: SearchNearObjectArgs) => Promise; withNearText: (args: SearchNearTextArgs) => Promise; withNearThermal: (args: SearchNearThermalArgs) => Promise; withNearVector: (args: SearchNearVectorArgs) => Promise; withNearVideo: (args: SearchNearVideoArgs) => Promise; } export default class Searcher extends Base implements Search { static use(connection: WeaviateClient, collection: string, metadata: Metadata, timeout: number, consistencyLevel?: ConsistencyLevel, tenant?: string, abortSignal?: AbortSignal): Search; withFetch: (args: SearchFetchArgs) => Promise; withBm25: (args: SearchBm25Args) => Promise; withHybrid: (args: SearchHybridArgs) => Promise; withNearAudio: (args: SearchNearAudioArgs) => Promise; withNearDepth: (args: SearchNearDepthArgs) => Promise; withNearImage: (args: SearchNearImageArgs) => Promise; withNearIMU: (args: SearchNearIMUArgs) => Promise; withNearObject: (args: SearchNearObjectArgs) => Promise; withNearText: (args: SearchNearTextArgs) => Promise; withNearThermal: (args: SearchNearThermalArgs) => Promise; withNearVector: (args: SearchNearVectorArgs) => Promise; withNearVideo: (args: SearchNearVideoArgs) => Promise; private call; }