/**
 * Firestore Vector Search 타입 정의 (nextapp)
 */
import { CollectionReference, Query, QuerySnapshot } from '@google-cloud/firestore';

interface VectorQueryOptions {
    vectorField: string;
    queryVector: number[];
    limit: number;
    distanceMeasure: 'COSINE' | 'EUCLIDEAN' | 'DOT_PRODUCT';
    distanceResultField?: string;
    distanceThreshold?: number;
}

interface VectorQuery<T = FirebaseFirestore.DocumentData> {
    get(): Promise<QuerySnapshot<T>>;
}

declare module '@google-cloud/firestore' {
    interface CollectionReference<T = FirebaseFirestore.DocumentData> {
        findNearest(options: VectorQueryOptions): VectorQuery<T>;
    }
    interface Query<T = FirebaseFirestore.DocumentData> {
        findNearest(options: VectorQueryOptions): VectorQuery<T>;
    }
}
