import { CollectionReference, IDEnabled, SortingPredicate, FilterPredicate, PaginationPredicate } from '../types'; import { Document } from './Document'; import { immerable } from 'immer'; import { ReferenceHolder } from '../types/CollectionData'; import { Query } from '../types/FirebaseQuery'; import { Optional } from 'utility-types'; export declare class Collection implements IDEnabled, ReferenceHolder { id: string; collections: SubCollections; private reference; [immerable]: boolean; constructor(id: string, subCollections: SubCollections); setReference(reference: CollectionReference): Collection; createDocument(data: Optional, skipAwait?: boolean, merge?: boolean): Promise>; getDocument(id: string): Promise>; getDocuments(sortingPredicate?: SortingPredicate, filterPredicate?: FilterPredicate, paginationPredicate?: PaginationPredicate, editQuery?: (reference: CollectionReference | Query) => Query): Promise>>; setDocument(newData: DataType): Promise>; updateDocument(data: DataType): Promise>; deleteDocument(id: string): Promise; deleteCollection(): Promise; subscribeToDocument(id: string, onDataChange: (document: Document) => void, onError: (error: Error) => void, onDataDoesNotExist: () => void): () => void; subscribeToDocuments(onDataChange: (documents: Array>) => void, onError: (error: Error) => void, sortingPredicate?: SortingPredicate, filterPredicate?: FilterPredicate, editQuery?: (reference: CollectionReference | Query) => Query): () => void; private getCollectionReference; private getQuery; }