///
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;
}