/** * Foreign key validation system. * * Effect-based validators use Ref for O(1) lookups. */ import { Effect, Ref } from "effect"; import { ForeignKeyError } from "../errors/crud-errors.js"; import type { ForeignKeyValidation } from "../types/crud-types.js"; import type { RelationshipDef } from "../types/types.js"; type HasId = { readonly id: string; }; type RelationshipConfig = { readonly type: "ref" | "inverse"; readonly target?: string; readonly foreignKey?: string; }; /** * Extract foreign key configurations from relationships */ export declare function extractForeignKeyConfigs(relationships: Record>): ForeignKeyValidation[]; /** * Validate foreign keys for an entity using Ref-based state. * Returns Effect that fails with ForeignKeyError if a violation is found. * * Uses ReadonlyMap for O(1) lookups instead of legacy array scanning. */ export declare const validateForeignKeysEffect: (entity: T, collectionName: string, relationships: Record, stateRefs: Record>>) => Effect.Effect; /** * Check if deleting an entity would violate foreign key constraints. * Scans all collections for "ref" relationships targeting this collection * whose foreign key field references the entity being deleted. * * Returns Effect that fails with ForeignKeyError if violations exist. */ export declare const checkDeleteConstraintsEffect: (entityId: string, collectionName: string, allRelationships: Record>, stateRefs: Record>>) => Effect.Effect; /** * Check referential integrity for an entire database using Ref-based state. * Returns Effect with a list of violations. */ export declare const checkReferentialIntegrityEffect: (allRelationships: Record>, stateRefs: Record>>) => Effect.Effect>; export {}; //# sourceMappingURL=foreign-key.d.ts.map