import { EntityClass, EntityType, RelationsType } from "../types"; export interface EntitySchema { class: E; name: string; properties: { [K in keyof EntityType]: PropertyOptions>; }; relations: RelationsType; foreignKeys: Record; uniqueConstraints?: UniqueConstraint[]; discriminator?: string; abstract?: boolean; discriminatorValue?: string; children?: Record; optimizations?: { find?: FindOptimization[]; }; } export interface EnumOptions extends Omit, "type" | "dynamicDefault" | "primary" | "unique" | "validation"> { valueMap: Record; } export interface PropertyOptions { type: PropertyType; default?: string | number | boolean; dynamicDefault?: DynamicDefaultValue; optional?: boolean; primary?: boolean; unique?: boolean; validation?: ValidationOptions; onCreate?: (entity: TEntity) => TProperty; onUpdate?: (entity: TEntity) => TProperty; } export interface UniqueConstraint { targetName: string; properties: string[]; } export declare enum PropertyType { Boolean = "BOOLEAN", Date = "DATE", DateTime = "DATETIME", Enum = "ENUM", Float = "FLOAT", Id = "ID", Integer = "INTEGER", Object = "OBJECT", String = "STRING" } export interface ValidationOptions { values?: T[]; } export declare enum DynamicDefaultValue { CurrentTimestamp = "CURRENT_TIMESTAMP", UuidV4 = "UUID_V4" } export declare type Optimization = FindOptimization; export interface FindOptimization { properties: string[]; } //# sourceMappingURL=EntitySchema.d.ts.map