import { MemoryAdapter } from "@memoria/adapters"; import Changeset from "./changeset.js"; import RevisionHistory from "./revision-history.js"; import Serializer from "./serializer.js"; import { ModelError } from "./errors/index.js"; import { Schema, DB, RelationshipSchema, RelationshipQuery, RelationshipDB, RelationshipMutation, InstanceDB } from "./stores/index.js"; import type { JSObject } from "./types.js"; import type { ModelReference, RelationshipType } from "./index.js"; export type PrimaryKey = number | string; type QueryObject = JSObject; type ModelRefOrInstance = ModelReference | Model; interface ModelInstantiateOptions { isNew?: boolean; isDeleted?: boolean; freeze?: boolean; } export interface ModelBuildOptions extends ModelInstantiateOptions { revision?: boolean; cacheDuration?: number; copy?: boolean; } export default class Model { #private; static Adapter: typeof MemoryAdapter; static Error: typeof ModelError; static Serializer: typeof Serializer; static DEBUG: { Schema: typeof Schema; DB: typeof DB; RelationshipSchema: typeof RelationshipSchema; RelationshipDB: typeof RelationshipDB; RelationshipQuery: typeof RelationshipQuery; RelationshipMutation: typeof RelationshipMutation; InstanceDB: typeof InstanceDB; }; static get Cache(): Map; static get tableName(): string; static get primaryKeyName(): string; static get primaryKeyType(): "uuid" | "id"; static get columnNames(): Set; static get relationshipNames(): Set; static getRelationshipTable(relationshipType?: RelationshipType): import("./index.js").RelationshipTable; static getMetadataForRelationship(relationshipName: string): import("./index.js").RelationshipMetadata; static build(buildObject?: QueryObject | Model, options?: ModelBuildOptions): any; static assign(model: Model | ModelRefOrInstance | QueryObject, objectToAssign: ModelRefOrInstance | QueryObject): Model | ModelRefOrInstance | QueryObject; static cache(model: ModelRefOrInstance | ModelRefOrInstance[], options?: ModelBuildOptions): Model | Model[]; static resetCache(targetState?: ModelRefOrInstance[], options?: ModelBuildOptions): Model[]; static resetRecords(targetState?: ModelRefOrInstance[], options?: ModelBuildOptions): Promise; static peek(primaryKey: PrimaryKey | PrimaryKey[], options?: ModelBuildOptions): Model | Model[] | null; static peekBy(queryObject: QueryObject, options?: ModelBuildOptions): Model | null; static peekAll(queryObject?: QueryObject, options?: ModelBuildOptions): Model[]; static find(primaryKey: PrimaryKey | PrimaryKey[], options?: ModelBuildOptions): Promise; static findBy(queryObject: QueryObject, options?: ModelBuildOptions): Promise; static findAll(queryObject?: QueryObject, options?: ModelBuildOptions): Promise; static insert(record?: QueryObject | ModelRefOrInstance, options?: ModelBuildOptions): Promise; static update(record: ModelRefOrInstance, options?: ModelBuildOptions): Promise; static save(record: QueryObject | ModelRefOrInstance, options?: ModelBuildOptions): Promise; static unload(record: ModelRefOrInstance, options?: ModelBuildOptions): Model; static delete(record: ModelRefOrInstance, options?: ModelBuildOptions): Promise; static saveAll(records: QueryObject[] | ModelRefOrInstance[], options?: ModelBuildOptions): Promise; static insertAll(records: QueryObject[], options?: ModelBuildOptions): Promise; static updateAll(records: ModelRefOrInstance[], options?: ModelBuildOptions): Promise; static unloadAll(records?: ModelRefOrInstance[], options?: ModelBuildOptions): Model[]; static deleteAll(records: ModelRefOrInstance[], options?: ModelBuildOptions): Promise; static count(options?: QueryObject): Promise; static serializer(objectOrArray: Model | Model[]): any; static serialize(object: Model): any; private static setRecordInTransit; private static unsetRecordInTransit; constructor(options?: ModelInstantiateOptions); changes: QueryObject; revisionHistory: RevisionHistory; get revision(): any; get errors(): ModelError[]; set errors(newError: ModelError[]); get isNew(): boolean; set isNew(value: boolean); get isBuilt(): boolean; get isInMemoryCachedRecord(): boolean; get isFrozen(): boolean; get isPersisted(): boolean; get isDeleted(): boolean; set isDeleted(value: boolean); get inTransit(): boolean; get isDirty(): boolean; get isLastPersisted(): boolean; get changeset(): Changeset; get fetchedRelationships(): string[]; changedAttributes(): {}; rollbackAttributes(): this; toObject(): any; toJSON(): any; reload(): Promise; } export {};