/// /// /// /// /// import { Observable } from 'rxjs'; import { Bulk } from './bulk'; import { HydrateOptions, Hydrator } from './hydrator'; import { AdamantId, EqualChecker } from './injector-tokens'; import { AdamantDeletedMeta, AdamantEntityMeta, AdamantRevMeta } from './meta-interfaces'; import { EntityMetadataCollection } from './metadata'; import { QueryBuilder } from './query-builder'; import { ReadQueryBatcher } from './read-query-batcher'; import { Ctor } from './utils/metadata'; import { Validator } from './validator'; export declare class AdamantRepository { protected readonly db: PouchDB.Database; protected readonly entityClass: Ctor; protected readonly metadata: EntityMetadataCollection; protected readonly equal: EqualChecker; protected readonly adamantId: AdamantId; readonly bulk: Bulk; readonly hydrator: Hydrator; readonly validator: Validator; readonly id: { head: () => string; tail: () => string; build: (id: string | number) => string; parse: (id: string) => { name: string; type: StringConstructor | NumberConstructor; id: string | number; }; }; protected readonly queryBatcher: ReadQueryBatcher; constructor(db: PouchDB.Database, entityClass: Ctor, metadata: EntityMetadataCollection, equal: EqualChecker, adamantId: AdamantId, bulk: Bulk, hydrator: Hydrator, validator: Validator); getConnection(): PouchDB.Database; create(entity: T): Promise; upsert(entity: T): Promise; /** @internal */ _upsert(id: string, document: PouchDB.Core.Document & Partial): Promise; update(entity: T): Promise; delete(entity: T): Promise; read(id: number | string, options?: HydrateOptions): Promise; /** @internal */ _read(id: string, options?: HydrateOptions): Promise; /** @internal */ _readRaw(id: string): Promise>; readAll(ids?: (string | number)[], options?: HydrateOptions): Promise<(T & AdamantRevMeta)[]>; /** @internal */ _readAll(opt: PouchDB.Core.AllDocsWithKeysOptions | PouchDB.Core.AllDocsWithinRangeOptions, options?: HydrateOptions): Promise<(T & AdamantRevMeta)[]>; /** @internal */ _readAllRaw(opt: PouchDB.Core.AllDocsWithKeysOptions | PouchDB.Core.AllDocsWithinRangeOptions): Promise[]>; query(): QueryBuilder; executeQuery(query: QueryBuilder, options?: HydrateOptions): Promise<(T & AdamantRevMeta)[]>; build(props?: Partial): T & AdamantEntityMeta; persistDesignDoc(doc: T): Promise; view(designDoc: Ctor, name: P, { depth, circularCache, ...options }?: HydrateOptions & PouchDB.Query.Options): Promise<(T & AdamantRevMeta)[]>; rawView(name: string, options?: PouchDB.Query.Options): Promise>; changes(options?: PouchDB.Core.ChangesOptions): Observable>; } export declare const ADAMANT_REPOSITORY_PROVIDER: { provide: typeof AdamantRepository; useFactory(db: PouchDB.Database, entityClass: Ctor, metadata: EntityMetadataCollection, equal: EqualChecker, id: AdamantId, bulk: Bulk, hydrator: Hydrator, validator: Validator): AdamantRepository; deps: any[]; };