///
///
///
///
import type { CollectionName, Collections } from "../../collections";
import type { Record, SavedRecord, RecordReference, Adapter, Definitions } from "../types";
export interface DatabasesOptions {
definitions: Definitions;
settings: any;
}
/**
* Aggegrates logic for interacting wth a set of PouchDB databases identified
* by resource collection name.
*/
export declare abstract class Databases implements Adapter {
private collections;
private definitions;
private generateId;
private ready;
constructor(options: DatabasesOptions);
protected setup(_: any): void;
protected abstract createDatabase(resource: CollectionName): PouchDB.Database;
private initialize;
private initializeCollection;
every, T>(collectionName: N): Promise[]>;
retrieve, T>(collectionName: N, records: (Pick, "_id"> | undefined)[]): Promise<(SavedRecord | undefined)[]>;
search, T>(collectionName: N, options: PouchDB.Find.FindRequest<{}>): Promise[]>;
save, T>(collectionName: N, records: (Record | undefined)[], options?: {
overwrite?: boolean;
}): Promise<(SavedRecord | undefined)[]>;
delete, T>(collectionName: N, references: (RecordReference | undefined)[]): Promise;
}