import { CollectionReference, Transaction, WhereFilterOp, DocumentData } from "@firebase/firestore-types"; declare type FirestoreQueryCondition = { fieldName: string; operator: WhereFilterOp; value: any; }; declare type FirestoreQueryOrder = { fieldName: string; direction: "desc" | "asc"; }; export interface GetAllFilters { condition?: FirestoreQueryCondition; limit?: number; offset?: number; orderBy?: FirestoreQueryOrder; } export interface DocumentDataWithId extends DocumentData { id: string; } export interface OurTransaction { set: (path: string, data: any) => Transaction; update: (path: string, data: any) => Transaction; delete: (path: string) => Transaction; } export interface TransactionHandler { (transaction: Transaction, onComplete: (fn: Function) => void): Promise; } export interface FirestoreWrapper { getCollectionReference: (collectionName: string) => CollectionReference; getDocument: (collectionName: string, documentId: string, transaction?: Transaction) => Promise; getCollection: (collectionPath: string, filters?: GetAllFilters) => Promise; runTransaction: (...transactionHandlers: TransactionHandler[]) => Promise; generateId: (collectionName: string) => string; createDocument: (path: string, data: any) => TransactionHandler; updateDocument: (path: string, data: any) => TransactionHandler; deleteDocument: (path: string) => TransactionHandler; onDocumentSnapshot(collectionName: string, documentKey: string, callback: (value: DocumentData) => Promise): { unsubscribe: () => void; }; } export {};