import { ClassType, KeysOf } from 'tsds-tools'; import { DeepPartial, ObjectLiteral } from 'typeorm'; import { RelationMetadataArgs } from 'typeorm/metadata-args/RelationMetadataArgs'; import { FirestorePaginatedQuery, FirestoreQuery, FirestoreQueryWithWhere } from '../firestore-query'; import { OnPageLoad, PaginatedResult, PaginationFilter } from '../pagination'; import { RepositoryOptions } from '../repository'; type EntityWithOptionalId = Omit & { id?: string; }; type PartialEntityWithId = DeepPartial & { id: string; }; interface DeleteOptions { softDelete?: boolean; } export interface FirestoreRepositoryOptions extends RepositoryOptions { softDelete?: never; } type UpdatableEntity = Partial & { id: string; }; export type IdsOrFirestoreQuery = string | string[] | FirestorePaginatedQuery | ((query: FirestorePaginatedQuery) => FirestorePaginatedQuery); export declare class FirestoreRepository { readonly entity: ClassType; readonly options?: FirestoreRepositoryOptions | undefined; protected readonly collectionName: string; protected readonly defaultProps: Entity; protected readonly relations: RelationMetadataArgs[]; constructor(entity: ClassType, options?: FirestoreRepositoryOptions | undefined); protected get repository(): any; protected toDBRecord(entity: DeepPartial): (Entity & Partial & { version: any; createdAt: any; updatedAt: Date; }) | (Entity & Partial[] : Entity extends Map ? Map, DeepPartial> : Entity extends Set ? Set> : Entity extends object ? { [K_1 in keyof Entity]?: DeepPartial | undefined; } : Entity> & { version: any; createdAt: any; updatedAt: Date; }); protected idOrQueryToEntities(query: IdsOrFirestoreQuery): Promise; get collection(): FirebaseFirestore.CollectionReference; count(query?: FirestoreQueryWithWhere): Promise; findById(id: string | null | undefined): Promise; findByIds(ids: string[]): Promise>; findOne(queryOrCallback?: FirestoreQuery | ((query: FirestoreQuery) => FirestoreQuery)): Promise; findAll(queryOrCallback?: FirestorePaginatedQuery | ((query: FirestorePaginatedQuery) => FirestorePaginatedQuery), filter?: PaginationFilter, onPage?: OnPageLoad): Promise; find(queryOrCallback: FirestorePaginatedQuery | ((query: FirestorePaginatedQuery) => FirestorePaginatedQuery)): Promise>; insert(entity: EntityWithOptionalId): Promise; insertMany(entities: Array>): Promise; save(entity: DeepPartial): Promise; saveMany(entities: Array>, options?: { chunk?: number; }): Promise; update(entity: PartialEntityWithId): Promise; updateMany(query: IdsOrFirestoreQuery, entity: DeepPartial): Promise; delete(query: IdsOrFirestoreQuery, options?: DeleteOptions): Promise; restore(query: IdsOrFirestoreQuery): Promise; addToArray>>(key: K, entity: UpdatableEntity): Promise; removeFromArray>>(key: K, entity: UpdatableEntity): Promise; increment>(query: IdsOrFirestoreQuery, key: Key, incrementBy?: number): Promise; } export {};