import Model from "../../model.js"; import type { RelationshipMetadata } from "./schema.js"; import HasManyArray from "../../has-many-array.js"; type RelationshipTableKey = string; type AnotherModel = Model; type RelationshipMap = Map; type JSObject = { [key: string]: any; }; export default class RelationshipDB { static instanceRecordsBelongsToCache: RelationshipMap>; static instanceRecordsOneToOneCache: RelationshipMap>; static instanceRecordsHasManyCache: RelationshipMap>; static instanceRecordsManyToManyCache: RelationshipMap>; static findRelationshipCacheFor(Class: typeof Model, relationshipName: string, relationshipType?: string): any; static findRelationshipFor(model: Model, relationshipName: string, relationshipType?: string): any; static cache(outputRecord: Model, _type: "insert" | "update", _input: Model | JSObject, cachedRecord?: Model): Model; static cacheRelationship(model: Model, metadata: RelationshipMetadata, relationship: Model | Model[] | null): Model | Model[] | HasManyArray; static onlyAddRecordsToHasManyArrayIfInMemoryReferenceToBelongsToFound(array: HasManyArray, { RelationshipClass, ReverseRelationshipCache, reverseRelationshipForeignKeyColumnName }: RelationshipMetadata): HasManyArray; static updateRelationshipsGloballyFromARelationship(model: Model, reverseRelationshipMetadatas: RelationshipMetadata[], modelInstances: Set): void; static referenceIsRelatedTo(model: Model, reference: AnotherModel, { relationshipName, relationshipType, SourceClass, foreignKeyColumnName, reverseRelationshipForeignKeyColumnName, }: RelationshipMetadata): void | boolean; static delete(model: Model): Model; static deleteRelationshipsGloballyFromARelationship(_model: Model, reverseRelationshipMetadatas: RelationshipMetadata[], modelInstances: Set): void; static clear(Class?: typeof Model): any[]; static clearInstanceRelationships(): void; static has(model: Model, relationshipName: string, metadata?: RelationshipMetadata): boolean; static get(model: Model, relationshipName: string, asyncLookup?: boolean): any; static set(model: Model, relationshipName: string, input: null | Model | Model[], _copySource?: Model): void | Model; } export {};