import { DocumentData, PartialWithFieldValue, FirestoreDataConverter, Firestore, DocumentReference, CollectionReference, Query } from 'firebase/firestore'; import { Observable } from 'rxjs'; interface SimpleFirestoreDataConverterConfig { toRecord: (model: PartialWithFieldValue) => PartialWithFieldValue; toModel(record: object): Model; } declare function createSimpleFirestoreDataConverter(config: SimpleFirestoreDataConverterConfig): FirestoreDataConverter; interface FirestoreResourceConfig { readonly path: string; readonly idField: IdField; readonly converter: FirestoreDataConverter, Record>; } /** * A class that provides type-safe access to the Firestore collection and * documents of a specific model. */ declare class FirestoreResource { protected firestore: Firestore; protected config: FirestoreResourceConfig; constructor(firestore: Firestore, config: FirestoreResourceConfig); readonly path: string; readonly idField: IdField; readonly converter: FirestoreDataConverter, Record>; refDoc(id: string): DocumentReference, Record>; refNewDoc(): DocumentReference, Record>; refCollection(): CollectionReference, Record>; resolveQuery(query: Query>): Observable; resolveDoc(ref: DocumentReference>): Observable; } export { FirestoreResource, createSimpleFirestoreDataConverter }; export type { FirestoreResourceConfig, SimpleFirestoreDataConverterConfig };