import { ModelInstanceMetadata, ModelPredicate, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne, SystemComponent } from '../../types'; export interface Adapter extends SystemComponent { clear(): Promise; save(model: T, condition?: ModelPredicate): Promise<[T, OpType.INSERT | OpType.UPDATE][]>; delete: (modelOrModelConstructor: T | PersistentModelConstructor, condition?: ModelPredicate) => Promise<[T[], T[]]>; query(modelConstructor: PersistentModelConstructor, predicate?: ModelPredicate, pagination?: PaginationInput): Promise; queryOne(modelConstructor: PersistentModelConstructor, firstOrLast: QueryOne): Promise; batchSave(modelConstructor: PersistentModelConstructor, items: ModelInstanceMetadata[]): Promise<[T, OpType][]>; }