import { ModelCtor } from '../model'; export declare const adapterKey: unique symbol; export declare type QueryPredicate = (...args: any[]) => any; export interface QueryOptions { predicate?: QueryPredicate; } export interface GetOptions extends QueryOptions { index?: string; } export interface JoinOptions { predicate?: (row: any) => void; } export interface Adapter { ensure(): Promise; save(model: M, replace?: boolean): Promise; delete(model: M): Promise; all(ctor: ModelCtor, opts?: QueryOptions): Promise; find(ctor: ModelCtor, filter: Partial, opts?: QueryOptions): Promise; findOne(ctor: ModelCtor, filter: Partial, opts?: QueryOptions): Promise; get(ctor: ModelCtor, value: any, opts?: GetOptions): Promise; getOne(ctor: ModelCtor, value: any, opts?: GetOptions): Promise; join(model: M, relationshipKey: string, opts?: JoinOptions): Promise; } export declare namespace Adapter { function fromModel(model: any): T; }