/// import { IDbRecord, IDbRecordBase, OmittedEntity } from './entity-types'; import { IDbSetInfo } from './dbset-types'; export interface IDbSetFetchAdapter, TExtraExclusions extends string = never> { filter(selector: (entity: TEntity, index?: number, array?: TEntity[]) => boolean): Promise; find(selector: (entity: TEntity, index?: number, array?: TEntity[]) => boolean): Promise; first(): Promise; all(): Promise; get(...ids: string[]): Promise; query(request: PouchDB.Find.FindRequest): Promise>; } export interface IDbSetGeneralAdapter, TExtraExclusions extends string = never> { isMatch(first: TEntity, second: any): boolean; match(...entities: IDbRecordBase[]): TEntity[]; info(): IDbSetInfo; merge(from: TEntity, to: TEntity): TEntity; unlink(...entities: TEntity[]): void; link(...entites: TEntity[]): Promise; markDirty(...entities: TEntity[]): Promise; } export interface IDbSetIndexAdapter, TExtraExclusions extends string = never> { useIndex(name: string): void; get(): string | null; } export interface IDbSetModificationAdapter, TExtraExclusions extends string = never> { instance(...entities: OmittedEntity[]): TEntity[]; add(...entities: OmittedEntity[]): Promise; upsert(...entities: (OmittedEntity | Omit)[]): Promise; remove(...ids: string[]): Promise; remove(...entities: TEntity[]): Promise; empty(): Promise; tag(value: unknown): void; }