import { BaseFilterTranslator } from '@mastra/core/filter'; import { Filter } from '@mastra/core/filter'; import { IndexStats } from '@mastra/core/vector'; import { LogicalOperator } from '@mastra/core/filter'; import { MastraVector } from '@mastra/core/vector'; import { OperatorSupport } from '@mastra/core/filter'; import { QueryResult } from '@mastra/core/vector'; /** * Translates MongoDB-style filters to Qdrant compatible filters. * * Key transformations: * - $and -> must * - $or -> should * - $not -> must_not * - { field: { $op: value } } -> { key: field, match/range: { value/gt/lt: value } } * * Custom operators (Qdrant-specific): * - $count -> values_count (array length/value count) * - $geo -> geo filters (box, radius, polygon) * - $hasId -> has_id filter * - $nested -> nested object filters * - $hasVector -> vector existence check * - $datetime -> RFC 3339 datetime range * - $null -> is_null check * - $empty -> is_empty check */ export declare class QdrantFilterTranslator extends BaseFilterTranslator { protected isLogicalOperator(key: string): key is LogicalOperator; protected getSupportedOperators(): OperatorSupport; translate(filter?: Filter): Filter | undefined; private createCondition; private translateNode; private buildFinalConditions; private handleLogicalOperators; private handleFieldConditions; private translateCustomOperator; private getQdrantLogicalOp; private translateOperatorValue; private translateGeoFilter; private normalizeDatetimeRange; } export declare class QdrantVector extends MastraVector { private client; constructor(url: string, apiKey?: string, https?: boolean); upsert(indexName: string, vectors: number[][], metadata?: Record[], ids?: string[]): Promise; createIndex(indexName: string, dimension: number, metric?: 'cosine' | 'euclidean' | 'dotproduct'): Promise; transformFilter(filter?: Filter): Filter | undefined; query(indexName: string, queryVector: number[], topK?: number, filter?: Filter, includeVector?: boolean): Promise; listIndexes(): Promise; describeIndex(indexName: string): Promise; deleteIndex(indexName: string): Promise; } export { }