import type { AxiosResponse, AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios'; import type { ModelConfig } from '../typings'; import type { DatastoreConfig } from './Datastore'; import type Datastore from './Datastore'; export type { AxiosResponse, DatastoreConfig }; export default class Model { modelConfig: ModelConfig; datastore: Datastore; constructor(datastore: Datastore, modelConfig: ModelConfig); get name(): string; request(handler: Function, ...args: any[]): Promise; heartbeat(): Promise<{ status: string; }>; createModel(): Promise; updateModel(): Promise; createModelIndexes(): Promise; getSchema(): Promise; encryptOne(payload: Partial, fields?: string[]): Promise; encryptMany(payloads: Partial[], fields?: string[]): Promise; decryptOne(payload: Partial, fields?: string[]): Promise; decryptMany(payloads: Partial[], fields?: string[]): Promise; createOne(payload: Partial, headers?: object): Promise; createMany(payloads: Partial[]): Promise; /** * @deprecated in favor of createOne + createMany */ create(payload: T | T[]): Promise; updateOne(payload: Partial, headers?: object): Promise; updateMany(payloads: Partial[]): Promise; /** * @deprecated */ update(payload: object | object[]): Promise; apply(eventType: string, payload: object, headers?: object, eventVersion?: string): Promise; get(correlationId: string, headers?: { 'force-primary'?: true; }): Promise; count(query: T & Record): Promise; find(query: Partial, page?: number, pageSize?: number, headers?: { page?: number; 'page-size'?: number; 'cursor-last-id'?: string; 'force-primary'?: true; }): Promise; events(correlationId: string, page?: number, pageSize?: number): Promise; version(correlationId: string, version: number): Promise; at(correlationId: string, date: Date | string): Promise; restore(correlationId: string, version: number): Promise; snapshot(correlationId: string): Promise; archive(correlationId: string, deep?: boolean): Promise; unarchive(correlationId: string, deep?: boolean): Promise; delete(correlationId: string, deep?: boolean): Promise; updateOverwhelmingly(query: object, handler: (entity: T) => Promise, progress: (stats: { total: number; done: number; error: number; progress: number; restored: number; }, entity: T, headers: RawAxiosResponseHeaders | AxiosResponseHeaders) => void, pageSize?: number): Promise<{ total: number; done: number; error: number; progress: number; restored: number; }>; }