@holo-js/db 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +356 -337
  2. package/dist/index.mjs +1216 -925
  3. package/package.json +8 -9
package/dist/index.d.ts CHANGED
@@ -9,13 +9,13 @@ interface ForeignKeyReference {
9
9
  onDelete?: string;
10
10
  onUpdate?: string;
11
11
  }
12
- interface ColumnDefinition<_TType = unknown, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false> {
12
+ interface ColumnDefinition<_TType = unknown, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TPrimaryKey extends boolean = false> {
13
13
  readonly kind: LogicalColumnKind;
14
14
  readonly name: string;
15
15
  readonly nullable: TNullable;
16
16
  readonly hasDefault: THasDefault;
17
17
  readonly generated: TGenerated;
18
- readonly primaryKey: boolean;
18
+ readonly primaryKey: TPrimaryKey;
19
19
  readonly unique: boolean;
20
20
  readonly defaultKind?: ColumnDefaultKind;
21
21
  readonly defaultValue?: unknown;
@@ -24,7 +24,7 @@ interface ColumnDefinition<_TType = unknown, TNullable extends boolean = false,
24
24
  readonly enumValues?: readonly string[];
25
25
  readonly vectorDimensions?: number;
26
26
  }
27
- type AnyColumnDefinition = ColumnDefinition<unknown, boolean, boolean, boolean>;
27
+ type AnyColumnDefinition = ColumnDefinition<unknown, boolean, boolean, boolean, boolean>;
28
28
  type TableColumnsShape = Record<string, AnyColumnDefinition>;
29
29
  interface TableDefinition<TName extends string = string, TColumns extends TableColumnsShape = TableColumnsShape> {
30
30
  readonly kind: 'table';
@@ -37,10 +37,10 @@ interface TableIndexDefinition {
37
37
  readonly columns: readonly string[];
38
38
  readonly unique: boolean;
39
39
  }
40
- type ColumnSelectType<TColumn extends AnyColumnDefinition> = TColumn extends ColumnDefinition<infer TValue, infer TNullable, boolean, boolean> ? TNullable extends true ? TValue | null : TValue : never;
41
- type ColumnInsertType<TColumn extends AnyColumnDefinition> = TColumn extends ColumnDefinition<infer TValue, infer TNullable, boolean, boolean> ? TNullable extends true ? TValue | null : TValue : never;
40
+ type ColumnSelectType<TColumn extends AnyColumnDefinition> = TColumn extends ColumnDefinition<infer TValue, infer TNullable, boolean, boolean, boolean> ? TNullable extends true ? TValue | null : TValue : never;
41
+ type ColumnInsertType<TColumn extends AnyColumnDefinition> = TColumn extends ColumnDefinition<infer TValue, infer TNullable, boolean, boolean, boolean> ? TNullable extends true ? TValue | null : TValue : never;
42
42
  type OptionalInsertKeys<TColumns extends TableColumnsShape> = {
43
- [K in keyof TColumns]: TColumns[K] extends ColumnDefinition<unknown, boolean, infer THasDefault, infer TGenerated> ? THasDefault extends true ? K : TGenerated extends true ? K : never : never;
43
+ [K in keyof TColumns]: TColumns[K] extends ColumnDefinition<unknown, boolean, infer THasDefault, infer TGenerated, boolean> ? THasDefault extends true ? K : TGenerated extends true ? K : never : never;
44
44
  }[keyof TColumns];
45
45
  type RequiredInsertKeys<TColumns extends TableColumnsShape> = Exclude<keyof TColumns, OptionalInsertKeys<TColumns>>;
46
46
  type InferSelect<TTable extends TableDefinition> = {
@@ -82,59 +82,59 @@ type VectorOptions = {
82
82
  type ColumnBuildOptions = {
83
83
  name: string;
84
84
  };
85
- declare class ColumnBuilder<TType, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false> {
85
+ declare class ColumnBuilder<TType, TNullable extends boolean = false, THasDefault extends boolean = false, TGenerated extends boolean = false, TPrimaryKey extends boolean = false> {
86
86
  private readonly metadata;
87
87
  constructor(kind: LogicalColumnKind, name?: string, metadata?: Partial<ColumnMetadata>);
88
- notNull(): ColumnBuilder<TType, false, THasDefault, TGenerated>;
89
- nullable(): ColumnBuilder<TType, true, THasDefault, TGenerated>;
90
- default(value: unknown): ColumnBuilder<TType, TNullable, true, TGenerated>;
91
- defaultNow(): ColumnBuilder<TType, TNullable, true, TGenerated>;
92
- generated(): ColumnBuilder<TType, TNullable, THasDefault, true>;
93
- primaryKey(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
94
- unique(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
95
- references(columnName: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
96
- on(table: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
97
- constraintName(name: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
98
- constrained(table?: string, columnName?: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
99
- onDelete(action: NonNullable<ForeignKeyReference['onDelete']>): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
100
- onUpdate(action: NonNullable<ForeignKeyReference['onUpdate']>): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
101
- cascadeOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
102
- restrictOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
103
- nullOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
104
- noActionOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
105
- cascadeOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
106
- restrictOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
107
- nullOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
108
- noActionOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated>;
109
- toDefinition(options: ColumnBuildOptions): ColumnDefinition<TType, TNullable, THasDefault, TGenerated>;
88
+ notNull(): ColumnBuilder<TType, false, THasDefault, TGenerated, TPrimaryKey>;
89
+ nullable(): ColumnBuilder<TType, true, THasDefault, TGenerated, TPrimaryKey>;
90
+ default(value: unknown): ColumnBuilder<TType, TNullable, true, TGenerated, TPrimaryKey>;
91
+ defaultNow(): ColumnBuilder<TType, TNullable, true, TGenerated, TPrimaryKey>;
92
+ generated(): ColumnBuilder<TType, TNullable, THasDefault, true, TPrimaryKey>;
93
+ primaryKey(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, true>;
94
+ unique(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
95
+ references(columnName: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
96
+ on(table: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
97
+ constraintName(name: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
98
+ constrained(table?: string, columnName?: string): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
99
+ onDelete(action: NonNullable<ForeignKeyReference['onDelete']>): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
100
+ onUpdate(action: NonNullable<ForeignKeyReference['onUpdate']>): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
101
+ cascadeOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
102
+ restrictOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
103
+ nullOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
104
+ noActionOnDelete(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
105
+ cascadeOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
106
+ restrictOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
107
+ nullOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
108
+ noActionOnUpdate(): ColumnBuilder<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
109
+ toDefinition(options: ColumnBuildOptions): ColumnDefinition<TType, TNullable, THasDefault, TGenerated, TPrimaryKey>;
110
110
  private clone;
111
111
  }
112
112
  declare const column: {
113
- id(name?: string): ColumnBuilder<number, false, false, true>;
114
- autoIncrementId(name?: string): ColumnBuilder<number, false, false, true>;
115
- integer(name?: string): ColumnBuilder<number, false, false, false>;
116
- bigInteger(name?: string): ColumnBuilder<number, false, false, false>;
117
- string(name?: string): ColumnBuilder<string, false, false, false>;
118
- text(name?: string): ColumnBuilder<string, false, false, false>;
119
- boolean(name?: string): ColumnBuilder<boolean, false, false, false>;
120
- real(name?: string): ColumnBuilder<number, false, false, false>;
121
- decimal(name?: string): ColumnBuilder<string, false, false, false>;
122
- date(name?: string): ColumnBuilder<Date, false, false, false>;
123
- datetime(name?: string): ColumnBuilder<Date, false, false, false>;
124
- timestamp(name?: string): ColumnBuilder<Date, false, false, false>;
125
- json<TValue = unknown>(name?: string): ColumnBuilder<TValue, false, false, false>;
126
- blob(name?: string): ColumnBuilder<Uint8Array<ArrayBufferLike>, false, false, false>;
127
- uuid(name?: string): ColumnBuilder<string, false, false, false>;
128
- ulid(name?: string): ColumnBuilder<string, false, false, false>;
129
- snowflake(name?: string): ColumnBuilder<string, false, false, false>;
130
- foreignId(name?: string): ColumnBuilder<number, false, false, false>;
131
- foreignUuid(name?: string): ColumnBuilder<string, false, false, false>;
132
- foreignUlid(name?: string): ColumnBuilder<string, false, false, false>;
133
- foreignSnowflake(name?: string): ColumnBuilder<string, false, false, false>;
134
- vector(options: VectorOptions, name?: string): ColumnBuilder<VectorValue, false, false, false>;
135
- enum<const TValues extends readonly string[]>(values: TValues, name?: string): ColumnBuilder<TValues[number], false, false, false>;
113
+ id(name?: string): ColumnBuilder<number, false, false, true, true>;
114
+ autoIncrementId(name?: string): ColumnBuilder<number, false, false, true, true>;
115
+ integer(name?: string): ColumnBuilder<number, false, false, false, false>;
116
+ bigInteger(name?: string): ColumnBuilder<number, false, false, false, false>;
117
+ string(name?: string): ColumnBuilder<string, false, false, false, false>;
118
+ text(name?: string): ColumnBuilder<string, false, false, false, false>;
119
+ boolean(name?: string): ColumnBuilder<boolean, false, false, false, false>;
120
+ real(name?: string): ColumnBuilder<number, false, false, false, false>;
121
+ decimal(name?: string): ColumnBuilder<string, false, false, false, false>;
122
+ date(name?: string): ColumnBuilder<Date, false, false, false, false>;
123
+ datetime(name?: string): ColumnBuilder<Date, false, false, false, false>;
124
+ timestamp(name?: string): ColumnBuilder<Date, false, false, false, false>;
125
+ json<TValue = unknown>(name?: string): ColumnBuilder<TValue, false, false, false, false>;
126
+ blob(name?: string): ColumnBuilder<Uint8Array<ArrayBufferLike>, false, false, false, false>;
127
+ uuid(name?: string): ColumnBuilder<string, false, false, false, false>;
128
+ ulid(name?: string): ColumnBuilder<string, false, false, false, false>;
129
+ snowflake(name?: string): ColumnBuilder<string, false, false, false, false>;
130
+ foreignId(name?: string): ColumnBuilder<number, false, false, false, false>;
131
+ foreignUuid(name?: string): ColumnBuilder<string, false, false, false, false>;
132
+ foreignUlid(name?: string): ColumnBuilder<string, false, false, false, false>;
133
+ foreignSnowflake(name?: string): ColumnBuilder<string, false, false, false, false>;
134
+ vector(options: VectorOptions, name?: string): ColumnBuilder<VectorValue, false, false, false, false>;
135
+ enum<const TValues extends readonly string[]>(values: TValues, name?: string): ColumnBuilder<TValues[number], false, false, false, false>;
136
136
  };
137
- type AnyColumnBuilder = ColumnBuilder<unknown, boolean, boolean, boolean>;
137
+ type AnyColumnBuilder = ColumnBuilder<unknown, boolean, boolean, boolean, boolean>;
138
138
  type ColumnInput = AnyColumnBuilder | AnyColumnDefinition;
139
139
 
140
140
  type ColumnShapeInput$2 = Record<string, ColumnInput>;
@@ -166,11 +166,13 @@ declare function resolveGeneratedTableDefinition<TName extends string>(tableName
166
166
  declare function listGeneratedTableDefinitions(): readonly TableDefinition[];
167
167
  declare function renderGeneratedSchemaPlaceholder(): string;
168
168
  declare function renderGeneratedSchemaModule(tables: readonly TableDefinition[]): string;
169
+ declare function renderGeneratedSchemaRuntimeModule(tables: readonly TableDefinition[]): string;
169
170
 
170
171
  type EntityConstructor = {
171
- new <TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap>(repository: ModelRepositoryLike<TTable, EmptyScopeMap, TRelations>, attributes: Partial<ModelRecord<TTable>>, exists?: boolean): Entity<TTable, TRelations>;
172
- prototype: EntityBase<TableDefinition, RelationMap>;
172
+ new <TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap>(repository: unknown, attributes: Partial<ModelRecord<TTable>>, exists?: boolean): Entity<TTable, TRelations>;
173
+ prototype: Entity<TableDefinition, RelationMap>;
173
174
  };
175
+
174
176
  declare class EntityBase<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> {
175
177
  private readonly repository;
176
178
  private attributes;
@@ -194,6 +196,7 @@ declare class EntityBase<TTable extends TableDefinition = TableDefinition, TRela
194
196
  get<TKey extends Extract<keyof ModelRecord<TTable>, string>>(key: TKey): ModelRecord<TTable>[TKey];
195
197
  set<TKey extends Extract<keyof ModelRecord<TTable>, string>>(key: TKey, value: ModelRecord<TTable>[TKey]): this;
196
198
  fill(values: Partial<ModelRecord<TTable>>): this;
199
+ update(values: ModelUpdatePayload<TTable>): Promise<this>;
197
200
  forceFill(values: Partial<ModelRecord<TTable>>): this;
198
201
  isDirty(key?: Extract<keyof ModelRecord<TTable>, string>): boolean;
199
202
  isClean(): boolean;
@@ -228,7 +231,14 @@ declare class EntityBase<TTable extends TableDefinition = TableDefinition, TRela
228
231
  readonly appended: readonly string[] | null;
229
232
  };
230
233
  forgetRelation(name: string): this;
234
+ relation<K extends ModelRelationName<TRelations>>(name: K): RelationMethodsOf<TRelations[K]>;
231
235
  toJSON(): ModelRecord<TTable>;
236
+ private applyPersistedEntity;
237
+ private persistEntity;
238
+ private deletePersistedEntity;
239
+ private restoreEntity;
240
+ private forceDeletePersistedEntity;
241
+ private loadAggregateDefinitions;
232
242
  save(): Promise<this>;
233
243
  push(): Promise<this>;
234
244
  saveQuietly(): Promise<this>;
@@ -241,14 +251,14 @@ declare class EntityBase<TTable extends TableDefinition = TableDefinition, TRela
241
251
  fresh(): Promise<Entity<TTable, TRelations> | undefined>;
242
252
  refresh(): Promise<this>;
243
253
  replicate(except?: readonly string[]): Entity<TTable, TRelations>;
244
- load<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<this & ResolveEagerLoads<TRelations, TPaths> & (this extends {
254
+ load<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<Omit<this, keyof ResolveEagerLoads<TRelations, TPaths>> & ResolveEagerLoads<TRelations, TPaths> & (this extends {
245
255
  toJSON(): infer R;
246
256
  } ? {
247
257
  toJSON(): R & SerializeLoaded<ResolveEagerLoads<TRelations, TPaths>>;
248
258
  } : {
249
259
  toJSON(): ModelRecord<TTable> & SerializeLoaded<ResolveEagerLoads<TRelations, TPaths>>;
250
260
  })>;
251
- loadMissing<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<this & ResolveEagerLoads<TRelations, TPaths> & (this extends {
261
+ loadMissing<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<Omit<this, keyof ResolveEagerLoads<TRelations, TPaths>> & ResolveEagerLoads<TRelations, TPaths> & (this extends {
252
262
  toJSON(): infer R;
253
263
  } ? {
254
264
  toJSON(): R & SerializeLoaded<ResolveEagerLoads<TRelations, TPaths>>;
@@ -289,9 +299,14 @@ declare class EntityBase<TTable extends TableDefinition = TableDefinition, TRela
289
299
  attached: unknown[];
290
300
  detached: unknown[];
291
301
  }>;
292
- private initializeModelProperties;
293
302
  }
294
- type Entity<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = EntityBase<TTable, TRelations> & ModelRecord<TTable>;
303
+ type ModelRelationMethods<TRelations extends RelationMap> = string extends ModelRelationName<TRelations> ? Record<never, never> : {
304
+ [K in ModelRelationName<TRelations>]: () => RelationMethodsOf<TRelations[K]>;
305
+ };
306
+ type ModelBase<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = EntityBase<TTable, TRelations> & ModelRecord<TTable> & {
307
+ relation<K extends ModelRelationName<TRelations>>(name: K): RelationMethodsOf<TRelations[K]>;
308
+ };
309
+ type Entity<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = ModelBase<TTable, TRelations> & ModelRelationMethods<TRelations>;
295
310
  declare const Entity: EntityConstructor;
296
311
 
297
312
  /**
@@ -351,6 +366,7 @@ declare class ModelRegistry {
351
366
  clear(): void;
352
367
  }
353
368
  declare function createModelRegistry(): ModelRegistry;
369
+ declare function resetGlobalModelRegistry(): void;
354
370
 
355
371
  type SchedulingMode = 'concurrent' | 'serialized' | 'worker';
356
372
  interface QuerySchedulerOptions {
@@ -381,6 +397,8 @@ declare class QueryScheduler {
381
397
  }): SchedulingMode;
382
398
  private resolveMode;
383
399
  private resolveState;
400
+ private waitForSlot;
401
+ private wakeNext;
384
402
  }
385
403
  declare function createQueryScheduler(options: QuerySchedulerOptions): QueryScheduler;
386
404
 
@@ -768,12 +786,7 @@ interface QueryCacheConfig {
768
786
  readonly flexible?: QueryCacheFlexibleTtlInput;
769
787
  readonly invalidate?: readonly string[];
770
788
  }
771
- interface NormalizedQueryCacheConfig {
772
- readonly ttl?: QueryCacheTtlInput;
773
- readonly key?: string;
774
- readonly driver?: string;
775
- readonly flexible?: QueryCacheFlexibleTtlInput;
776
- readonly invalidate?: readonly string[];
789
+ interface NormalizedQueryCacheConfig extends QueryCacheConfig {
777
790
  }
778
791
  interface DatabaseQueryCacheBridge {
779
792
  get<TValue>(key: string, options?: {
@@ -904,8 +917,8 @@ interface CursorPaginationOptions {
904
917
 
905
918
  type SelectRow<TTableOrName extends string | TableDefinition> = TTableOrName extends TableDefinition ? InferSelect<TTableOrName> : Record<string, unknown>;
906
919
  type TableReference = string | TableDefinition;
907
- type BuilderCallback$2<TBuilder> = (query: TBuilder) => unknown;
908
- type ValueBuilderCallback$2<TBuilder, TValue> = (query: TBuilder, value: TValue) => unknown;
920
+ type BuilderCallback$1<TBuilder> = (query: TBuilder) => unknown;
921
+ type ValueBuilderCallback$1<TBuilder, TValue> = (query: TBuilder, value: TValue) => unknown;
909
922
  type SelectedColumnNames<TRow extends Record<string, unknown>> = Extract<keyof TRow, string>;
910
923
  type ExactDeclaredColumnName<TTableOrName extends TableReference> = TTableOrName extends TableDefinition ? Extract<keyof SelectRow<TTableOrName>, string> : string;
911
924
  type DeclaredColumnName<TTableOrName extends TableReference> = TTableOrName extends TableDefinition ? ExactDeclaredColumnName<TTableOrName> | `${string}.${ExactDeclaredColumnName<TTableOrName>}` : string;
@@ -945,13 +958,13 @@ declare class TableQueryBuilder<TTableOrName extends TableReference = string, TS
945
958
  selectSub(query: TableQueryBuilder<TableDefinition, Record<string, unknown>>, alias: string): TableQueryBuilder<TTableOrName, Record<string, unknown>>;
946
959
  addSelectSub(query: TableQueryBuilder<TableDefinition, Record<string, unknown>>, alias: string): TableQueryBuilder<TTableOrName, Record<string, unknown>>;
947
960
  distinct(): TableQueryBuilder<TTableOrName, TSelectedRow>;
948
- where(callback: BuilderCallback$2<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
961
+ where(callback: BuilderCallback$1<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
949
962
  where(column: JsonColumnPath<TTableOrName>, operator: QueryOperator | unknown, value?: unknown): TableQueryBuilder<TTableOrName, TSelectedRow>;
950
- orWhere(callback: BuilderCallback$2<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
963
+ orWhere(callback: BuilderCallback$1<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
951
964
  orWhere(column: JsonColumnPath<TTableOrName>, operator: QueryOperator | unknown, value?: unknown): TableQueryBuilder<TTableOrName, TSelectedRow>;
952
965
  private whereGroupWithBoolean;
953
- whereNot(callback: BuilderCallback$2<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
954
- orWhereNot(callback: BuilderCallback$2<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
966
+ whereNot(callback: BuilderCallback$1<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
967
+ orWhereNot(callback: BuilderCallback$1<TableQueryBuilder<TTableOrName, SelectRow<TTableOrName>>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
955
968
  whereExists(subquery: TableQueryBuilder<TableDefinition, Record<string, unknown>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
956
969
  orWhereExists(subquery: TableQueryBuilder<TableDefinition, Record<string, unknown>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
957
970
  whereNotExists(subquery: TableQueryBuilder<TableDefinition, Record<string, unknown>>): TableQueryBuilder<TTableOrName, TSelectedRow>;
@@ -1023,8 +1036,8 @@ declare class TableQueryBuilder<TTableOrName extends TableReference = string, TS
1023
1036
  }): TableQueryBuilder<TTableOrName, TSelectedRow>;
1024
1037
  whereVectorSimilarTo(column: DeclaredColumnName<TTableOrName>, vector: readonly number[], minSimilarity?: number): TableQueryBuilder<TTableOrName, TSelectedRow>;
1025
1038
  orWhereVectorSimilarTo(column: DeclaredColumnName<TTableOrName>, vector: readonly number[], minSimilarity?: number): TableQueryBuilder<TTableOrName, TSelectedRow>;
1026
- when<TValue>(value: TValue, callback: ValueBuilderCallback$2<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>, defaultCallback?: ValueBuilderCallback$2<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1027
- unless<TValue>(value: TValue, callback: ValueBuilderCallback$2<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>, defaultCallback?: ValueBuilderCallback$2<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1039
+ when<TValue>(value: TValue, callback: ValueBuilderCallback$1<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>, defaultCallback?: ValueBuilderCallback$1<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1040
+ unless<TValue>(value: TValue, callback: ValueBuilderCallback$1<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>, defaultCallback?: ValueBuilderCallback$1<TableQueryBuilder<TTableOrName, TSelectedRow>, TValue>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1028
1041
  withoutWhereNull(column: DeclaredColumnName<TTableOrName>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1029
1042
  withoutWhereNotNull(column: DeclaredColumnName<TTableOrName>): TableQueryBuilder<TTableOrName, TSelectedRow>;
1030
1043
  orderBy(column: DeclaredColumnName<TTableOrName>, direction?: QueryDirection): TableQueryBuilder<TTableOrName, TSelectedRow>;
@@ -1137,36 +1150,39 @@ declare class TableQueryBuilder<TTableOrName extends TableReference = string, TS
1137
1150
  private normalizePredicateValueForColumn;
1138
1151
  }
1139
1152
 
1140
- type CollectionLoadedItem<TItem, TTable extends TableDefinition, TRelations extends RelationMap, TPaths extends readonly ModelRelationPath<TRelations>[]> = TItem & ResolveEagerLoads<TRelations, TPaths> & (TItem extends {
1153
+ type CollectionLoadedItem<TItem, TTable extends TableDefinition, TRelations extends RelationMap, TPaths extends readonly ModelRelationPath<TRelations>[]> = Omit<TItem, keyof ResolveEagerLoads<TRelations, TPaths>> & ResolveEagerLoads<TRelations, TPaths> & (TItem extends {
1141
1154
  toJSON(): infer TSerialized;
1142
1155
  } ? {
1143
1156
  toJSON(): TSerialized & SerializeLoaded<ResolveEagerLoads<TRelations, TPaths>>;
1144
1157
  } : {
1145
1158
  toJSON(): ModelRecord<TTable> & SerializeLoaded<ResolveEagerLoads<TRelations, TPaths>>;
1146
1159
  });
1147
- type CollectionItem<TCollection, TTable extends TableDefinition, TRelations extends RelationMap> = TCollection extends readonly (infer TItem)[] ? TItem : Entity<TTable, TRelations>;
1148
- interface ModelCollectionMethods<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> {
1160
+ type CollectionSerializedItem<TItem, TTable extends TableDefinition> = TItem extends {
1161
+ toJSON(): infer TSerialized;
1162
+ } ? TSerialized : ModelRecord<TTable>;
1163
+ interface ModelCollectionMethods<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap, TItem = Entity<TTable, TRelations>> {
1149
1164
  modelKeys(): unknown[];
1150
1165
  toQuery(): ModelQueryBuilder<TTable, TRelations>;
1151
- load<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<this & Array<CollectionLoadedItem<CollectionItem<this, TTable, TRelations>, TTable, TRelations, TPaths>>>;
1152
- loadMissing<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<this & Array<CollectionLoadedItem<CollectionItem<this, TTable, TRelations>, TTable, TRelations, TPaths>>>;
1153
- loadMorph(relation: ModelRelationName<TRelations>, mapping: ModelMorphLoadMap): Promise<ModelCollection<TTable, TRelations>>;
1154
- loadCount(...relations: readonly ModelRelationName<TRelations>[]): Promise<ModelCollection<TTable, TRelations>>;
1155
- loadExists(...relations: readonly ModelRelationName<TRelations>[]): Promise<ModelCollection<TTable, TRelations>>;
1156
- loadSum<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations>>;
1157
- loadAvg<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations>>;
1158
- loadMin<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations>>;
1159
- loadMax<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations>>;
1166
+ toJSON(): Array<CollectionSerializedItem<TItem, TTable>>;
1167
+ load<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<ModelCollection<TTable, TRelations, CollectionLoadedItem<TItem, TTable, TRelations, TPaths>>>;
1168
+ loadMissing<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): Promise<ModelCollection<TTable, TRelations, CollectionLoadedItem<TItem, TTable, TRelations, TPaths>>>;
1169
+ loadMorph(relation: ModelRelationName<TRelations>, mapping: ModelMorphLoadMap): Promise<ModelCollection<TTable, TRelations, TItem>>;
1170
+ loadCount(...relations: readonly ModelRelationName<TRelations>[]): Promise<ModelCollection<TTable, TRelations, TItem>>;
1171
+ loadExists(...relations: readonly ModelRelationName<TRelations>[]): Promise<ModelCollection<TTable, TRelations, TItem>>;
1172
+ loadSum<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations, TItem>>;
1173
+ loadAvg<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations, TItem>>;
1174
+ loadMin<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations, TItem>>;
1175
+ loadMax<TRelationName extends ModelRelationName<TRelations>>(relation: TRelationName, column: RelatedColumnNameOfRelation<TRelations[TRelationName]>): Promise<ModelCollection<TTable, TRelations, TItem>>;
1160
1176
  fresh(): Promise<ModelCollection<TTable, TRelations>>;
1161
- append(...keys: readonly string[]): ModelCollection<TTable, TRelations>;
1162
- withoutAppends(): ModelCollection<TTable, TRelations>;
1163
- makeVisible(...keys: readonly string[]): ModelCollection<TTable, TRelations>;
1164
- makeHidden(...keys: readonly string[]): ModelCollection<TTable, TRelations>;
1165
- setVisible(keys: readonly string[]): ModelCollection<TTable, TRelations>;
1166
- setHidden(keys: readonly string[]): ModelCollection<TTable, TRelations>;
1177
+ append(...keys: readonly string[]): ModelCollection<TTable, TRelations, TItem>;
1178
+ withoutAppends(): ModelCollection<TTable, TRelations, TItem>;
1179
+ makeVisible(...keys: readonly string[]): ModelCollection<TTable, TRelations, TItem>;
1180
+ makeHidden(...keys: readonly string[]): ModelCollection<TTable, TRelations, TItem>;
1181
+ setVisible(keys: readonly string[]): ModelCollection<TTable, TRelations, TItem>;
1182
+ setHidden(keys: readonly string[]): ModelCollection<TTable, TRelations, TItem>;
1167
1183
  }
1168
- type ModelCollection<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = Array<Entity<TTable, TRelations>> & ModelCollectionMethods<TTable, TRelations>;
1169
- declare function createModelCollection<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap>(items: readonly Entity<TTable, TRelations>[]): ModelCollection<TTable, TRelations>;
1184
+ type ModelCollection<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap, TItem = Entity<TTable, TRelations>> = Array<TItem> & ModelCollectionMethods<TTable, TRelations, TItem>;
1185
+ declare function createModelCollection<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap, TItem extends Entity<TTable, TRelations> = Entity<TTable, TRelations>>(items: readonly TItem[]): ModelCollection<TTable, TRelations, TItem>;
1170
1186
 
1171
1187
  type WriteMode = 'create' | 'update';
1172
1188
  type PivotAttributes = Record<string, unknown>;
@@ -1209,7 +1225,7 @@ declare class ModelRepository<TTable extends TableDefinition = TableDefinition>
1209
1225
  getDeletedAtColumn(): string | undefined;
1210
1226
  getRelationNames(): readonly string[];
1211
1227
  getRelationDefinition(name: string): RelationDefinition;
1212
- createCollection(items: readonly Entity<TTable>[]): ModelCollection<TTable>;
1228
+ createCollection<TItem extends Entity<TTable>>(items: readonly TItem[]): ModelCollection<TTable, RelationMap, TItem>;
1213
1229
  query(): ModelQueryBuilder<TTable>;
1214
1230
  newQuery(): ModelQueryBuilder<TTable>;
1215
1231
  newModelQuery(): ModelQueryBuilder<TTable>;
@@ -1405,10 +1421,10 @@ declare class ModelRepository<TTable extends TableDefinition = TableDefinition>
1405
1421
  private formatDateCast;
1406
1422
  }
1407
1423
 
1408
- type BuilderCallback$1<TBuilder> = (query: TBuilder) => unknown;
1409
- type ValueBuilderCallback$1<TBuilder, TValue> = (query: TBuilder, value: TValue) => unknown;
1424
+ type BuilderCallback<TBuilder> = (query: TBuilder) => unknown;
1425
+ type ValueBuilderCallback<TBuilder, TValue> = (query: TBuilder, value: TValue) => unknown;
1410
1426
  type RelationConstraint = (query: ModelQueryBuilder<TableDefinition>) => unknown;
1411
- type SubqueryBuilder$1<TSubTable extends TableDefinition = TableDefinition> = TableQueryBuilder<TSubTable, Record<string, unknown>> | ModelQueryBuilder<TSubTable>;
1427
+ type SubqueryBuilder<TSubTable extends TableDefinition = TableDefinition> = TableQueryBuilder<TSubTable, Record<string, unknown>> | ModelQueryBuilder<TSubTable>;
1412
1428
  type RelationFilter = {
1413
1429
  relation: string;
1414
1430
  negate: boolean;
@@ -1416,7 +1432,7 @@ type RelationFilter = {
1416
1432
  boolean?: 'and' | 'or';
1417
1433
  morphTypes?: readonly string[];
1418
1434
  };
1419
- type MorphEntityTarget$1 = {
1435
+ type MorphEntityTarget = {
1420
1436
  exists(): boolean;
1421
1437
  getRepository(): {
1422
1438
  definition: {
@@ -1426,13 +1442,13 @@ type MorphEntityTarget$1 = {
1426
1442
  };
1427
1443
  get(key: string): unknown;
1428
1444
  };
1429
- type MorphModelTarget$1 = {
1445
+ type MorphModelTarget = {
1430
1446
  definition?: {
1431
1447
  morphClass?: string;
1432
1448
  };
1433
1449
  };
1434
- type MorphRelationTypeInput = string | MorphModelTarget$1 | readonly (string | MorphModelTarget$1)[];
1435
- type MorphTypeSelector$1 = string | MorphModelTarget$1 | MorphEntityTarget$1 | null;
1450
+ type MorphRelationTypeInput = string | MorphModelTarget | readonly (string | MorphModelTarget)[];
1451
+ type MorphTypeSelector = string | MorphModelTarget | MorphEntityTarget | null;
1436
1452
  type EagerLoad = {
1437
1453
  relation: string;
1438
1454
  constraint?: RelationConstraint;
@@ -1455,27 +1471,29 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1455
1471
  getConnection(): DatabaseContext;
1456
1472
  getConnectionName(): string;
1457
1473
  getTableQueryBuilder(): TableQueryBuilder<TTable, Record<string, unknown>>;
1474
+ private collectNestedPredicates;
1475
+ private replayNestedPredicates;
1458
1476
  from(table: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1459
- where(callback: BuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1477
+ where(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1460
1478
  where(column: ModelColumnName<TTable> | ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1461
- orWhere(callback: BuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1479
+ orWhere(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1462
1480
  orWhere(column: ModelColumnName<TTable> | ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1463
- whereNot(callback: BuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1464
- orWhereNot(callback: BuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1465
- whereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1466
- orWhereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1467
- whereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1468
- orWhereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1469
- whereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1470
- orWhereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1471
- whereInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1472
- whereNotInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1481
+ whereNot(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1482
+ orWhereNot(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1483
+ whereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1484
+ orWhereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1485
+ whereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1486
+ orWhereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1487
+ whereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1488
+ orWhereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1489
+ whereInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1490
+ whereNotInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1473
1491
  whereNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1474
1492
  orWhereNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1475
1493
  whereNotNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1476
1494
  orWhereNotNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1477
- when<TValue>(value: TValue, callback: ValueBuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>, defaultCallback?: ValueBuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1478
- unless<TValue>(value: TValue, callback: ValueBuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>, defaultCallback?: ValueBuilderCallback$1<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1495
+ when<TValue>(value: TValue, callback: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>, defaultCallback?: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1496
+ unless<TValue>(value: TValue, callback: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>, defaultCallback?: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations, TLoaded>, TValue>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1479
1497
  orderBy(column: ModelColumnName<TTable>, direction?: 'asc' | 'desc'): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1480
1498
  latest(column?: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1481
1499
  oldest(column?: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
@@ -1493,8 +1511,8 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1493
1511
  forPage(page: number, perPage?: number): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1494
1512
  select(...columns: readonly ModelSelectableColumn<TTable>[]): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1495
1513
  addSelect(...columns: readonly ModelSelectableColumn<TTable>[]): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1496
- selectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1497
- addSelectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1514
+ selectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1515
+ addSelectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1498
1516
  distinct(): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1499
1517
  withCasts(casts: Record<string, ModelCastDefinition>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1500
1518
  whereColumn(column: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', compareTo: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
@@ -1511,13 +1529,13 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1511
1529
  leftJoin(table: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1512
1530
  rightJoin(table: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1513
1531
  crossJoin(table: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1514
- joinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1515
- leftJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1516
- rightJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1517
- joinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1518
- leftJoinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1519
- union<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1520
- unionAll<TSubTable extends TableDefinition>(query: SubqueryBuilder$1<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1532
+ joinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1533
+ leftJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1534
+ rightJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1535
+ joinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1536
+ leftJoinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1537
+ union<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1538
+ unionAll<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1521
1539
  groupBy(...columns: readonly ModelColumnName<TTable>[]): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1522
1540
  having(expression: string, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1523
1541
  havingBetween(expression: string, range: readonly [unknown, unknown]): ModelQueryBuilder<TTable, TRelations, TLoaded>;
@@ -1546,6 +1564,7 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1546
1564
  with<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): ModelQueryBuilder<TTable, TRelations, TLoaded & ResolveEagerLoads<TRelations, TPaths>>;
1547
1565
  with<TPath extends ModelRelationPath<TRelations>>(relation: TPath, constraint: RelationConstraint): ModelQueryBuilder<TTable, TRelations, TLoaded & ResolveEagerLoads<TRelations, readonly [TPath]>>;
1548
1566
  with(relations: Readonly<Partial<Record<ModelRelationPath<TRelations>, RelationConstraint>>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1567
+ with<TPaths extends readonly ModelRelationPath<TRelations>[]>(relations: TPaths): ModelQueryBuilder<TTable, TRelations, TLoaded & ResolveEagerLoads<TRelations, TPaths>>;
1549
1568
  has(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1550
1569
  orHas(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1551
1570
  whereHas(relation: ModelRelationPath<TRelations>, constraint?: RelationConstraint): ModelQueryBuilder<TTable, TRelations, TLoaded>;
@@ -1558,12 +1577,12 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1558
1577
  orWhereRelation<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1559
1578
  whereMorphRelation<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath, types: MorphRelationTypeInput, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1560
1579
  orWhereMorphRelation<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath, types: MorphRelationTypeInput, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1561
- whereBelongsTo<TRelated extends TableDefinition>(relatedEntity: Entity<TRelated>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1562
- orWhereBelongsTo<TRelated extends TableDefinition>(relatedEntity: Entity<TRelated>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1563
- whereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector$1): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1564
- orWhereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector$1): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1565
- whereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector$1): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1566
- orWhereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector$1): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1580
+ whereBelongsTo<TRelated extends TableDefinition, TRelatedRelations extends RelationMap = RelationMap>(relatedEntity: Entity<TRelated, TRelatedRelations>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1581
+ orWhereBelongsTo<TRelated extends TableDefinition, TRelatedRelations extends RelationMap = RelationMap>(relatedEntity: Entity<TRelated, TRelatedRelations>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1582
+ whereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1583
+ orWhereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1584
+ whereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1585
+ orWhereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1567
1586
  withWhereHas<TPath extends ModelRelationPath<TRelations>>(relation: TPath, constraint?: RelationConstraint): ModelQueryBuilder<TTable, TRelations, TLoaded & ResolveEagerLoads<TRelations, readonly [TPath]>>;
1568
1587
  withCount(...relations: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1569
1588
  withCount(relations: Readonly<Partial<Record<ModelRelationPath<TRelations>, RelationConstraint>>>): ModelQueryBuilder<TTable, TRelations, TLoaded>;
@@ -1615,12 +1634,30 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1615
1634
  };
1616
1635
  dump(): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1617
1636
  cache(config: QueryCacheTtlInput | QueryCacheConfig): ModelQueryBuilder<TTable, TRelations, TLoaded>;
1618
- get(): Promise<ModelCollection<TTable, TRelations> & Array<EntityWithLoaded<TTable, TRelations, TLoaded>>>;
1637
+ get(): Promise<ModelCollection<TTable, TRelations, EntityWithLoaded<TTable, TRelations, TLoaded>>>;
1638
+ getJson(): Promise<SerializedEntityWithLoaded<TTable, TLoaded>[]>;
1619
1639
  first(): Promise<EntityWithLoaded<TTable, TRelations, TLoaded> | undefined>;
1640
+ firstJson(): Promise<SerializedEntityWithLoaded<TTable, TLoaded> | undefined>;
1620
1641
  sole(): Promise<EntityWithLoaded<TTable, TRelations, TLoaded>>;
1642
+ soleJson(): Promise<SerializedEntityWithLoaded<TTable, TLoaded>>;
1621
1643
  paginate(perPage?: number, page?: number, options?: PaginationOptions): Promise<PaginatedResult<EntityWithLoaded<TTable, TRelations, TLoaded>>>;
1644
+ paginateJson(perPage?: number, page?: number, options?: PaginationOptions): Promise<{
1645
+ data: readonly SerializedEntityWithLoaded<TTable, TLoaded>[];
1646
+ meta: PaginationMeta;
1647
+ }>;
1622
1648
  simplePaginate(perPage?: number, page?: number, options?: PaginationOptions): Promise<SimplePaginatedResult<EntityWithLoaded<TTable, TRelations, TLoaded>>>;
1649
+ simplePaginateJson(perPage?: number, page?: number, options?: PaginationOptions): Promise<{
1650
+ data: readonly SerializedEntityWithLoaded<TTable, TLoaded>[];
1651
+ meta: SimplePaginationMeta;
1652
+ }>;
1623
1653
  cursorPaginate(perPage?: number, cursor?: string | null, options?: CursorPaginationOptions): Promise<CursorPaginatedResult<EntityWithLoaded<TTable, TRelations, TLoaded>>>;
1654
+ cursorPaginateJson(perPage?: number, cursor?: string | null, options?: CursorPaginationOptions): Promise<{
1655
+ data: readonly SerializedEntityWithLoaded<TTable, TLoaded>[];
1656
+ perPage: number;
1657
+ cursorName: string;
1658
+ nextCursor: string | null;
1659
+ prevCursor: string | null;
1660
+ }>;
1624
1661
  chunk(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, TLoaded>[], page: number) => unknown | Promise<unknown>): Promise<void>;
1625
1662
  chunkById(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, TLoaded>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
1626
1663
  chunkByIdDesc(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, TLoaded>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
@@ -1640,6 +1677,7 @@ declare class ModelQueryBuilder<TTable extends TableDefinition = TableDefinition
1640
1677
  firstOrFail(): Promise<EntityWithLoaded<TTable, TRelations, TLoaded>>;
1641
1678
  find(value: unknown, column?: string): Promise<EntityWithLoaded<TTable, TRelations, TLoaded> | undefined>;
1642
1679
  findOrFail(value: unknown, column?: string): Promise<EntityWithLoaded<TTable, TRelations, TLoaded>>;
1680
+ findOrFailJson(value: unknown, column?: string): Promise<SerializedEntityWithLoaded<TTable, TLoaded>>;
1643
1681
  update(values: Partial<ModelRecord<TTable>>): Promise<DriverExecutionResult>;
1644
1682
  updateJson(columnPath: ModelJsonColumnPath<TTable>, value: unknown): Promise<DriverExecutionResult>;
1645
1683
  increment(column: ModelColumnName<TTable>, amount?: number, extraValues?: Partial<ModelRecord<TTable>>): Promise<DriverExecutionResult>;
@@ -1725,6 +1763,10 @@ interface AnyEntity {
1725
1763
  toAttributes(): Record<string, unknown>;
1726
1764
  getChanges(): Record<string, unknown>;
1727
1765
  }
1766
+ interface RegisteredModels {
1767
+ }
1768
+ type RegisteredModelName = Extract<keyof RegisteredModels, string>;
1769
+ type RegisteredModelReference<TName extends RegisteredModelName> = RegisteredModels[TName];
1728
1770
  type ModelDefinitionLike<TTable extends TableDefinition = TableDefinition> = (AnyModelDefinition & {
1729
1771
  readonly table: TTable;
1730
1772
  }) | {
@@ -1805,7 +1847,7 @@ interface MorphToRelationDefinition<TTable extends TableDefinition = TableDefini
1805
1847
  readonly morphTypeColumn: string;
1806
1848
  readonly morphIdColumn: string;
1807
1849
  }
1808
- interface BelongsToManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition {
1850
+ interface BelongsToManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition, PivotRelationMethods<BelongsToManyRelationDefinition<TRelated, TPivotTable>, TPivotTable> {
1809
1851
  readonly kind: 'belongsToMany';
1810
1852
  readonly related: () => TRelated;
1811
1853
  readonly pivotTable: TPivotTable;
@@ -1818,13 +1860,8 @@ interface BelongsToManyRelationDefinition<TRelated extends ModelDefinitionLike =
1818
1860
  readonly pivotOrderBy: readonly PivotOrderDefinition[];
1819
1861
  readonly pivotAccessor: string;
1820
1862
  readonly pivotModel?: () => ModelDefinitionLike;
1821
- withPivot(...columns: readonly PivotTableColumnName<TPivotTable>[]): BelongsToManyRelationDefinition<TRelated, TPivotTable>;
1822
- wherePivot(column: PivotTableColumnName<TPivotTable>, operator: unknown, value?: unknown): BelongsToManyRelationDefinition<TRelated, TPivotTable>;
1823
- orderByPivot(column: PivotTableColumnName<TPivotTable>, direction?: 'asc' | 'desc'): BelongsToManyRelationDefinition<TRelated, TPivotTable>;
1824
- as(accessor: string): BelongsToManyRelationDefinition<TRelated, TPivotTable>;
1825
- using(model: () => ModelDefinitionLike): BelongsToManyRelationDefinition<TRelated, TPivotTable>;
1826
1863
  }
1827
- interface MorphToManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition {
1864
+ interface MorphToManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition, PivotRelationMethods<MorphToManyRelationDefinition<TRelated, TPivotTable>, TPivotTable> {
1828
1865
  readonly kind: 'morphToMany';
1829
1866
  readonly related: () => TRelated;
1830
1867
  readonly pivotTable: TPivotTable;
@@ -1839,13 +1876,8 @@ interface MorphToManyRelationDefinition<TRelated extends ModelDefinitionLike = M
1839
1876
  readonly pivotOrderBy: readonly PivotOrderDefinition[];
1840
1877
  readonly pivotAccessor: string;
1841
1878
  readonly pivotModel?: () => ModelDefinitionLike;
1842
- withPivot(...columns: readonly PivotTableColumnName<TPivotTable>[]): MorphToManyRelationDefinition<TRelated, TPivotTable>;
1843
- wherePivot(column: PivotTableColumnName<TPivotTable>, operator: unknown, value?: unknown): MorphToManyRelationDefinition<TRelated, TPivotTable>;
1844
- orderByPivot(column: PivotTableColumnName<TPivotTable>, direction?: 'asc' | 'desc'): MorphToManyRelationDefinition<TRelated, TPivotTable>;
1845
- as(accessor: string): MorphToManyRelationDefinition<TRelated, TPivotTable>;
1846
- using(model: () => ModelDefinitionLike): MorphToManyRelationDefinition<TRelated, TPivotTable>;
1847
1879
  }
1848
- interface MorphedByManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition {
1880
+ interface MorphedByManyRelationDefinition<TRelated extends ModelDefinitionLike = ModelDefinitionLike, TPivotTable extends string | TableDefinition = string | TableDefinition> extends ScopedRelationDefinition, PivotRelationMethods<MorphedByManyRelationDefinition<TRelated, TPivotTable>, TPivotTable> {
1849
1881
  readonly kind: 'morphedByMany';
1850
1882
  readonly related: () => TRelated;
1851
1883
  readonly pivotTable: TPivotTable;
@@ -1860,11 +1892,6 @@ interface MorphedByManyRelationDefinition<TRelated extends ModelDefinitionLike =
1860
1892
  readonly pivotOrderBy: readonly PivotOrderDefinition[];
1861
1893
  readonly pivotAccessor: string;
1862
1894
  readonly pivotModel?: () => ModelDefinitionLike;
1863
- withPivot(...columns: readonly PivotTableColumnName<TPivotTable>[]): MorphedByManyRelationDefinition<TRelated, TPivotTable>;
1864
- wherePivot(column: PivotTableColumnName<TPivotTable>, operator: unknown, value?: unknown): MorphedByManyRelationDefinition<TRelated, TPivotTable>;
1865
- orderByPivot(column: PivotTableColumnName<TPivotTable>, direction?: 'asc' | 'desc'): MorphedByManyRelationDefinition<TRelated, TPivotTable>;
1866
- as(accessor: string): MorphedByManyRelationDefinition<TRelated, TPivotTable>;
1867
- using(model: () => ModelDefinitionLike): MorphedByManyRelationDefinition<TRelated, TPivotTable>;
1868
1895
  }
1869
1896
  interface PivotWhereDefinition {
1870
1897
  readonly column: string;
@@ -1901,6 +1928,52 @@ interface HasManyThroughRelationDefinition<TRelated extends ModelDefinitionLike
1901
1928
  readonly secondLocalKey: string;
1902
1929
  }
1903
1930
  type RelationDefinition = BelongsToRelationDefinition | HasManyRelationDefinition | HasOneRelationDefinition | HasOneOfManyRelationDefinition | MorphOneRelationDefinition | MorphManyRelationDefinition | MorphOneOfManyRelationDefinition | MorphToRelationDefinition | BelongsToManyRelationDefinition | MorphToManyRelationDefinition | MorphedByManyRelationDefinition | HasOneThroughRelationDefinition | HasManyThroughRelationDefinition;
1931
+ /**
1932
+ * Methods available on BelongsTo relations when called as a method (e.g., post.category())
1933
+ */
1934
+ interface BelongsToRelationMethods<TRelated> {
1935
+ associate(related: TRelated | null): void;
1936
+ dissociate(): void;
1937
+ }
1938
+ /**
1939
+ * Methods available on HasOne/HasOneThrough relations when called as a method
1940
+ */
1941
+ interface HasOneRelationMethods<TRelated> {
1942
+ create(values: Record<string, unknown>): Promise<TRelated>;
1943
+ save(related: TRelated): Promise<TRelated>;
1944
+ }
1945
+ /**
1946
+ * Methods available on HasMany/HasManyThrough relations when called as a method
1947
+ */
1948
+ interface HasManyRelationMethods<TRelated> {
1949
+ create(values: Record<string, unknown>): Promise<TRelated>;
1950
+ createMany(values: readonly Record<string, unknown>[]): Promise<TRelated[]>;
1951
+ save(related: TRelated): Promise<TRelated>;
1952
+ saveMany(related: readonly TRelated[]): Promise<TRelated[]>;
1953
+ }
1954
+ /**
1955
+ * Methods available on BelongsToMany relations when called as a method (e.g., post.tags())
1956
+ */
1957
+ interface BelongsToManyRelationMethods<TRelated, TPivot = Record<string, unknown>> {
1958
+ attach(ids: unknown | readonly unknown[], attributes?: TPivot): Promise<void>;
1959
+ detach(ids?: unknown | readonly unknown[]): Promise<number>;
1960
+ sync(ids: unknown): Promise<{
1961
+ attached: unknown[];
1962
+ detached: unknown[];
1963
+ updated: unknown[];
1964
+ }>;
1965
+ toggle(ids: unknown): Promise<{
1966
+ attached: unknown[];
1967
+ detached: unknown[];
1968
+ }>;
1969
+ updateExistingPivot(id: unknown, attributes: TPivot): Promise<number>;
1970
+ create(values: Record<string, unknown>): Promise<TRelated>;
1971
+ save(related: TRelated): Promise<TRelated>;
1972
+ }
1973
+ /**
1974
+ * Converts a RelationDefinition to its corresponding methods type
1975
+ */
1976
+ type RelationMethodsOf<TRelation extends RelationDefinition> = TRelation extends BelongsToRelationDefinition<infer TRelated> ? BelongsToRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends HasOneRelationDefinition<infer TRelated> ? HasOneRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends HasOneOfManyRelationDefinition<infer TRelated> ? HasOneRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends HasManyRelationDefinition<infer TRelated> ? HasManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends HasOneThroughRelationDefinition<infer TRelated> ? HasOneRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends HasManyThroughRelationDefinition<infer TRelated> ? HasManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends BelongsToManyRelationDefinition<infer TRelated> ? BelongsToManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>, Record<string, unknown>> : TRelation extends MorphOneRelationDefinition<infer TRelated> ? HasOneRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends MorphOneOfManyRelationDefinition<infer TRelated> ? HasOneRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends MorphManyRelationDefinition<infer TRelated> ? HasManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>> : TRelation extends MorphToManyRelationDefinition<infer TRelated> ? BelongsToManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>, Record<string, unknown>> : TRelation extends MorphedByManyRelationDefinition<infer TRelated> ? BelongsToManyRelationMethods<Entity<ModelDefinitionTable<TRelated>>, Record<string, unknown>> : never;
1904
1977
  interface RelationMap {
1905
1978
  readonly [key: string]: RelationDefinition;
1906
1979
  }
@@ -1942,6 +2015,7 @@ type IsToManyRelation<TRelation extends RelationDefinition> = TRelation extends
1942
2015
  } ? true : false;
1943
2016
  /** Resolves a single (non-nested) relation to its typed entity shape. */
1944
2017
  type ResolveRelationEntity<TRelation extends RelationDefinition> = Entity<RelatedTableOfRelation<TRelation>, RelatedRelationsOfRelation<TRelation>>;
2018
+ type ResolveNestedRelationEntity<TRelation extends RelationDefinition, TLoaded> = EntityWithLoaded<RelatedTableOfRelation<TRelation>, RelatedRelationsOfRelation<TRelation>, TLoaded>;
1945
2019
  /**
1946
2020
  * Wraps a base entity type in the correct cardinality for a relation:
1947
2021
  * - to-many → `TEntity[]`
@@ -1963,7 +2037,7 @@ type ResolveEagerLoadPath<TRelations extends RelationMap, TPath extends string>
1963
2037
  } ? {
1964
2038
  readonly [K in TRoot]: WrapRelationCardinality<TRelations[TRoot], ResolveRelationEntity<TRelations[TRoot]>>;
1965
2039
  } : {
1966
- readonly [K in TRoot]: WrapRelationCardinality<TRelations[TRoot], ResolveRelationEntity<TRelations[TRoot]> & ResolveEagerLoadPath<RelatedRelationsOfRelation<TRelations[TRoot]>, TRest>>;
2040
+ readonly [K in TRoot]: WrapRelationCardinality<TRelations[TRoot], ResolveNestedRelationEntity<TRelations[TRoot], ResolveEagerLoadPath<RelatedRelationsOfRelation<TRelations[TRoot]>, TRest>>>;
1967
2041
  } : never : TPath extends keyof TRelations & string ? {
1968
2042
  readonly [K in TPath]: WrapRelationCardinality<TRelations[TPath], ResolveRelationEntity<TRelations[TPath]>>;
1969
2043
  } : never;
@@ -2006,7 +2080,7 @@ type SerializedEntityWithLoaded<TTable extends TableDefinition, TLoaded> = Model
2006
2080
  * The entity type returned by terminal query methods when eager loads
2007
2081
  * have been accumulated via `with()`.
2008
2082
  */
2009
- type EntityWithLoaded<TTable extends TableDefinition, TRelations extends RelationMap, TLoaded> = Entity<TTable, TRelations> & TLoaded & {
2083
+ type EntityWithLoaded<TTable extends TableDefinition, TRelations extends RelationMap, TLoaded> = ModelBase<TTable, TRelations> & Omit<ModelRelationMethods<TRelations>, Extract<keyof TLoaded, string>> & TLoaded & {
2010
2084
  toJSON(): SerializedEntityWithLoaded<TTable, TLoaded>;
2011
2085
  };
2012
2086
  type EmptyScopeMap = Record<never, never>;
@@ -2032,7 +2106,7 @@ type ModelCastDefinition = BuiltInCastString | EnumCastDefinition | CastableDefi
2032
2106
  type ModelAccessor = (value: unknown, entity: AnyEntity) => unknown;
2033
2107
  type ModelMutator = (value: unknown, entity?: AnyEntity) => unknown;
2034
2108
  type ModelDateSerializer = (value: Date) => unknown;
2035
- type ModelCollectionFactory<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = (items: readonly Entity<TTable, TRelations>[]) => ModelCollection<TTable, TRelations>;
2109
+ type ModelCollectionFactory<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = <TItem extends Entity<TTable, TRelations>>(items: readonly TItem[]) => ModelCollection<TTable, TRelations, TItem>;
2036
2110
  type ModelPrunableDefinition<TTable extends TableDefinition = TableDefinition, TRelations extends RelationMap = RelationMap> = (query: ModelQueryBuilder<TTable, TRelations>) => unknown;
2037
2111
  interface UniqueIdTrait<TTable extends TableDefinition = TableDefinition> {
2038
2112
  readonly kind: 'uniqueIds';
@@ -2258,6 +2332,22 @@ declare class FactoryService {
2258
2332
  }
2259
2333
  declare function createFactoryService(): FactoryService;
2260
2334
 
2335
+ declare class ForeignKeyBuilderState {
2336
+ private readonly columnName;
2337
+ private referenceTable?;
2338
+ private referenceColumn;
2339
+ private onDeleteAction?;
2340
+ private onUpdateAction?;
2341
+ constructor(columnName: string, referenceColumn?: string);
2342
+ references(columnName: string): void;
2343
+ on(table: string): void;
2344
+ constrained(table?: string, columnName?: string): void;
2345
+ onDelete(action: NonNullable<ForeignKeyReference['onDelete']>): void;
2346
+ onUpdate(action: NonNullable<ForeignKeyReference['onUpdate']>): void;
2347
+ toReference(defaultTable?: string): ForeignKeyReference;
2348
+ applyToColumnBuilder(builder: AnyColumnBuilder): AnyColumnBuilder;
2349
+ }
2350
+
2261
2351
  type ColumnShapeInput$1 = Record<string, ColumnInput>;
2262
2352
  type WithColumn<TColumns extends ColumnShapeInput$1, TColumnName extends string, TColumn extends ColumnInput> = TColumns & {
2263
2353
  [K in TColumnName]: TColumn;
@@ -2289,7 +2379,8 @@ type ColumnReference = {
2289
2379
  declare class TableCreateColumnBuilder<TName extends string, TColumns extends ColumnShapeInput$1> {
2290
2380
  protected readonly root: TableDefinitionBuilder<TName, TColumns>;
2291
2381
  protected readonly builderRef: ColumnReference;
2292
- constructor(root: TableDefinitionBuilder<TName, TColumns>, builderRef: ColumnReference);
2382
+ protected readonly columnName: string;
2383
+ constructor(root: TableDefinitionBuilder<TName, TColumns>, builderRef: ColumnReference, columnName: string);
2293
2384
  build(): BoundTableDefinition<TName, TColumns>;
2294
2385
  notNull(): this;
2295
2386
  nullable(): this;
@@ -2299,6 +2390,9 @@ declare class TableCreateColumnBuilder<TName extends string, TColumns extends Co
2299
2390
  primaryKey(): this;
2300
2391
  unique(): this;
2301
2392
  unique(columns: readonly string[], name?: string): TableDefinitionBuilder<TName, TColumns>;
2393
+ index(): this;
2394
+ index(name: string): this;
2395
+ index(columns: readonly string[], name?: string): TableDefinitionBuilder<TName, TColumns>;
2302
2396
  foreign(columnName: string): TableCreateForeignKeyBuilder<TName, TColumns>;
2303
2397
  foreignId<TColumnName extends string>(columnName: TColumnName): TableCreateForeignIdBuilder<TName, WithColumn<TColumns, TColumnName, ReturnType<typeof column.bigInteger>>>;
2304
2398
  foreignUuid<TColumnName extends string>(columnName: TColumnName): TableCreateForeignIdBuilder<TName, WithColumn<TColumns, TColumnName, ReturnType<typeof column.uuid>>>;
@@ -2325,7 +2419,6 @@ declare class TableCreateColumnBuilder<TName extends string, TColumns extends Co
2325
2419
  dimensions: number;
2326
2420
  }): TableCreateColumnBuilder<TName, WithColumn<TColumns, TColumnName, ReturnType<typeof column.vector>>>;
2327
2421
  enum<const TValues extends readonly string[], TColumnName extends string>(columnName: TColumnName, values: TValues): TableCreateColumnBuilder<TName, WithColumn<TColumns, TColumnName, ReturnType<typeof column.enum<TValues>>>>;
2328
- index(columns: readonly string[], name?: string): TableDefinitionBuilder<TName, TColumns>;
2329
2422
  timestamps(): TableDefinitionBuilder<TName, WithTimestamps<TColumns>>;
2330
2423
  softDeletes<TColumnName extends string = 'deleted_at'>(columnName?: TColumnName): TableDefinitionBuilder<TName, WithSoftDeletes<TColumns, TColumnName>>;
2331
2424
  morphs<TMorphName extends string>(name: TMorphName, indexName?: string): TableDefinitionBuilder<TName, WithMorphColumns<TColumns, TMorphName, ReturnType<typeof column.bigInteger>>>;
@@ -2338,17 +2431,13 @@ declare class TableCreateColumnBuilder<TName extends string, TColumns extends Co
2338
2431
  nullableSnowflakeMorphs<TMorphName extends string>(name: TMorphName, indexName?: string): TableDefinitionBuilder<TName, WithNullableMorphColumns<TColumns, TMorphName, ReturnType<typeof column.snowflake>>>;
2339
2432
  }
2340
2433
  declare class TableCreateForeignIdBuilder<TName extends string, TColumns extends ColumnShapeInput$1> extends TableCreateColumnBuilder<TName, TColumns> {
2341
- private readonly columnName;
2342
- private referenceTable?;
2343
- private referenceColumn;
2344
- private onDeleteAction?;
2345
- private onUpdateAction?;
2434
+ private readonly foreignKeyState;
2346
2435
  constructor(root: TableDefinitionBuilder<TName, TColumns>, builderRef: ColumnReference, columnName: string);
2347
2436
  references(columnName: string): this;
2348
2437
  on(table: string): this;
2349
2438
  constrained(table?: string, columnName?: string): this;
2350
- onDelete(action: NonNullable<ForeignKeyReference['onDelete']>): this;
2351
- onUpdate(action: NonNullable<ForeignKeyReference['onUpdate']>): this;
2439
+ onDelete(action: Parameters<ForeignKeyBuilderState['onDelete']>[0]): this;
2440
+ onUpdate(action: Parameters<ForeignKeyBuilderState['onUpdate']>[0]): this;
2352
2441
  cascadeOnDelete(): this;
2353
2442
  restrictOnDelete(): this;
2354
2443
  nullOnDelete(): this;
@@ -2362,17 +2451,13 @@ declare class TableCreateForeignIdBuilder<TName extends string, TColumns extends
2362
2451
  declare class TableCreateForeignKeyBuilder<TName extends string, TColumns extends ColumnShapeInput$1> {
2363
2452
  private readonly root;
2364
2453
  private readonly builderRef;
2365
- private readonly columnName;
2366
- private referenceTable?;
2367
- private referenceColumn;
2368
- private onDeleteAction?;
2369
- private onUpdateAction?;
2454
+ private readonly foreignKeyState;
2370
2455
  constructor(root: TableDefinitionBuilder<TName, TColumns>, builderRef: ColumnReference, columnName: string);
2371
2456
  references(columnName: string): this;
2372
2457
  on(table: string): this;
2373
2458
  constrained(table?: string, columnName?: string): this;
2374
- onDelete(action: NonNullable<ForeignKeyReference['onDelete']>): this;
2375
- onUpdate(action: NonNullable<ForeignKeyReference['onUpdate']>): this;
2459
+ onDelete(action: Parameters<ForeignKeyBuilderState['onDelete']>[0]): this;
2460
+ onUpdate(action: Parameters<ForeignKeyBuilderState['onUpdate']>[0]): this;
2376
2461
  cascadeOnDelete(): this;
2377
2462
  restrictOnDelete(): this;
2378
2463
  nullOnDelete(): this;
@@ -2485,6 +2570,7 @@ type TableMutationOperation = AddColumnMutationOperation | AlterColumnMutationOp
2485
2570
  type ColumnMutationMode = 'addColumn' | 'alterColumn';
2486
2571
  declare class TableForeignKeyBuilder {
2487
2572
  private readonly operation;
2573
+ private readonly foreignKeyState;
2488
2574
  constructor(operation: CreateForeignKeyMutationOperation);
2489
2575
  references(columnName: string): this;
2490
2576
  on(table: string): this;
@@ -2499,6 +2585,7 @@ declare class TableForeignKeyBuilder {
2499
2585
  restrictOnUpdate(): this;
2500
2586
  nullOnUpdate(): this;
2501
2587
  noActionOnUpdate(): this;
2588
+ private applyReference;
2502
2589
  }
2503
2590
  declare class TableColumnMutationBuilder {
2504
2591
  protected readonly root: TableMutationBuilder;
@@ -2511,6 +2598,7 @@ declare class TableColumnMutationBuilder {
2511
2598
  generated(): this;
2512
2599
  primaryKey(): this;
2513
2600
  unique(): this;
2601
+ index(name?: string): this;
2514
2602
  foreignId(columnName: string): TableForeignIdMutationBuilder;
2515
2603
  foreignUuid(columnName: string): TableForeignIdMutationBuilder;
2516
2604
  foreignUlid(columnName: string): TableForeignIdMutationBuilder;
@@ -2528,11 +2616,8 @@ declare class TableColumnMutationBuilder {
2528
2616
  declare class TableForeignIdMutationBuilder extends TableColumnMutationBuilder {
2529
2617
  private readonly operations;
2530
2618
  private readonly columnName;
2619
+ private readonly foreignKeyState;
2531
2620
  private foreignOperation?;
2532
- private referenceTable?;
2533
- private referenceColumn;
2534
- private onDeleteAction?;
2535
- private onUpdateAction?;
2536
2621
  constructor(root: TableMutationBuilder, operation: MutableColumnMutationOperation, operations: TableMutationOperation[], columnName: string);
2537
2622
  references(columnName: string): this;
2538
2623
  on(table: string): this;
@@ -2657,6 +2742,7 @@ declare class SchemaService {
2657
2742
  private assertForeignKeyCapability;
2658
2743
  private resolveColumnDefinition;
2659
2744
  private createDefinedTable;
2745
+ private assertTableMutationIndexNames;
2660
2746
  private executeTableMutation;
2661
2747
  private buildTableDefinition;
2662
2748
  private updateRegisteredTable;
@@ -2744,6 +2830,7 @@ declare class MigrationService {
2744
2830
  private ensureTrackingTable;
2745
2831
  private getRanRecords;
2746
2832
  private createContext;
2833
+ private runMigrationLifecycle;
2747
2834
  private normalizeMigratedAt;
2748
2835
  private createMigrationLog;
2749
2836
  private runExclusively;
@@ -2760,6 +2847,7 @@ declare function createModelEventService(): ModelEventService;
2760
2847
 
2761
2848
  type RuntimeState = {
2762
2849
  savepointCounter: number;
2850
+ rootTransactionTail: Promise<void>;
2763
2851
  scheduler: QueryScheduler;
2764
2852
  };
2765
2853
  type ScopeState = {
@@ -2772,6 +2860,7 @@ type TransactionCallbackState = {
2772
2860
  afterRollback: TransactionCallback[];
2773
2861
  };
2774
2862
  type ContextInternals = {
2863
+ contextId: number;
2775
2864
  connectionName: string;
2776
2865
  schemaName?: string;
2777
2866
  adapter: DriverAdapter;
@@ -2787,6 +2876,7 @@ type ContextInternals = {
2787
2876
  transactionCallbacks?: TransactionCallbackState;
2788
2877
  };
2789
2878
  declare class DatabaseContext {
2879
+ private readonly _contextId;
2790
2880
  private readonly _connectionName;
2791
2881
  private readonly _schemaName?;
2792
2882
  private readonly _adapter;
@@ -2809,6 +2899,7 @@ declare class DatabaseContext {
2809
2899
  isConnected(): boolean;
2810
2900
  getDriver(): DatabaseDriverName;
2811
2901
  getConnectionName(): string;
2902
+ getContextId(): number;
2812
2903
  getSchemaName(): string | undefined;
2813
2904
  getAdapter(): DriverAdapter;
2814
2905
  getDialect(): Dialect;
@@ -2834,6 +2925,7 @@ declare class DatabaseContext {
2834
2925
  executeCompiled(statement: CompiledStatement, options?: DatabaseOperationOptions): Promise<DriverExecutionResult>;
2835
2926
  transaction<T>(callback: (tx: DatabaseContext) => Promise<T>, options?: DatabaseOperationOptions): Promise<T>;
2836
2927
  private _runRootTransaction;
2928
+ private _runSerializedRootTransaction;
2837
2929
  private _runNestedTransaction;
2838
2930
  private _createChildContext;
2839
2931
  private _runTransactionCallback;
@@ -3027,13 +3119,6 @@ declare class PostgresAdapter<TConfig extends PostgresConnectionConfig = Postgre
3027
3119
  readonly config?: TConfig;
3028
3120
  constructor(options?: PostgresAdapterOptions<TConfig>);
3029
3121
  protected createConcreteAdapter(): Promise<DriverAdapter>;
3030
- releaseScopedTransaction(state: {
3031
- client: {
3032
- release?(): void;
3033
- };
3034
- leased: boolean;
3035
- released: boolean;
3036
- }): void;
3037
3122
  createSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
3038
3123
  rollbackToSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
3039
3124
  releaseSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
@@ -3072,13 +3157,6 @@ declare class MySQLAdapter<TConfig extends MySQLConnectionConfig = MySQLConnecti
3072
3157
  readonly config: TConfig;
3073
3158
  constructor(options?: MySQLAdapterOptions<TConfig>);
3074
3159
  protected createConcreteAdapter(): Promise<DriverAdapter>;
3075
- releaseScopedTransaction(state: {
3076
- client: {
3077
- release?(): void;
3078
- };
3079
- leased: boolean;
3080
- released: boolean;
3081
- }): void;
3082
3160
  createSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
3083
3161
  rollbackToSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
3084
3162
  releaseSavepoint(name: string, options?: DatabaseOperationOptions): Promise<void>;
@@ -3216,7 +3294,6 @@ declare class MySQLQueryCompiler extends SQLQueryCompiler {
3216
3294
  protected compileJsonPredicate(predicate: QueryJsonPredicate, bindings: unknown[]): string;
3217
3295
  protected compileJsonUpdateOperations(column: string, operations: readonly QueryJsonUpdateOperation[], bindings: unknown[]): string;
3218
3296
  protected compileFullTextPredicate(predicate: QueryFullTextPredicate, bindings: unknown[]): string;
3219
- protected compileDatePredicate(predicate: QueryDatePredicate, placeholder: string): string;
3220
3297
  }
3221
3298
 
3222
3299
  declare function createPaginator<T>(data: readonly T[], meta: Omit<PaginationMeta, 'pageName'> & {
@@ -3524,174 +3601,65 @@ declare function encryptedCast(secret: string): Readonly<{
3524
3601
  set(value: unknown): string | null | undefined;
3525
3602
  }>;
3526
3603
 
3527
- type BuilderCallback<TBuilder> = (query: TBuilder) => unknown;
3528
- type ValueBuilderCallback<TBuilder, TValue> = (query: TBuilder, value: TValue) => unknown;
3529
- type RelationConstraintCallback = (query: ModelQueryBuilder<TableDefinition>) => unknown;
3530
- type RelationConstraintMap<TRelations extends RelationMap> = Readonly<Partial<Record<ModelRelationPath<TRelations>, RelationConstraintCallback>>>;
3531
- type MorphEntityTarget = {
3532
- exists(): boolean;
3533
- getRepository(): {
3534
- definition: {
3535
- morphClass: string;
3536
- primaryKey: string;
3537
- };
3538
- };
3539
- get(key: string): unknown;
3540
- };
3541
- type MorphModelTarget = {
3542
- definition?: {
3543
- morphClass?: string;
3544
- };
3545
- };
3546
- type MorphTypeSelector = string | MorphModelTarget | MorphEntityTarget | null;
3547
- type SubqueryBuilder<TSubTable extends TableDefinition = TableDefinition> = ModelQueryBuilder<TSubTable> | TableQueryBuilder<TSubTable, Record<string, unknown>>;
3548
- type ColumnShapeInput = Record<string, ColumnInput>;
3549
- type EmptyColumnShape = Record<never, never>;
3550
- type ModelTableBuilderResult<TName extends string, TColumns extends ColumnShapeInput> = {
3551
- build(): BoundTableDefinition<TName, TColumns>;
3552
- };
3553
- type StaticModelApi<TTable extends TableDefinition, TScopes extends ModelScopesDefinition, TRelations extends RelationMap = RelationMap> = ModelReference<TTable, TScopes, TRelations> & ModelScopeMethods<TTable, TScopes, TRelations> & {
3604
+ type PrimaryKeyName$1<TTable extends TableDefinition> = Extract<{
3605
+ [K in keyof TTable['columns']]: TTable['columns'][K] extends {
3606
+ readonly primaryKey: true;
3607
+ } ? K : never;
3608
+ }[keyof TTable['columns']], keyof ModelRecord<TTable> & string>;
3609
+ type ModelPrimaryKeyValue$1<TTable extends TableDefinition> = [PrimaryKeyName$1<TTable>] extends [never] ? unknown : ModelRecord<TTable>[PrimaryKeyName$1<TTable>];
3610
+ type StaticModelQueryForwardMethod = 'from' | 'debug' | 'dump' | 'where' | 'orWhere' | 'whereNot' | 'orWhereNot' | 'whereExists' | 'orWhereExists' | 'whereNotExists' | 'orWhereNotExists' | 'whereSub' | 'orWhereSub' | 'whereInSub' | 'whereNotInSub' | 'select' | 'addSelect' | 'withCasts' | 'selectSub' | 'addSelectSub' | 'whereNull' | 'orWhereNull' | 'whereNotNull' | 'orWhereNotNull' | 'when' | 'unless' | 'distinct' | 'whereColumn' | 'whereIn' | 'whereNotIn' | 'whereBetween' | 'whereNotBetween' | 'whereLike' | 'orWhereLike' | 'whereAny' | 'whereAll' | 'whereNone' | 'join' | 'leftJoin' | 'rightJoin' | 'crossJoin' | 'joinSub' | 'leftJoinSub' | 'rightJoinSub' | 'joinLateral' | 'leftJoinLateral' | 'union' | 'unionAll' | 'groupBy' | 'having' | 'havingBetween' | 'unsafeWhere' | 'orUnsafeWhere' | 'whereDate' | 'whereMonth' | 'whereDay' | 'whereYear' | 'whereTime' | 'whereJson' | 'orWhereJson' | 'whereJsonContains' | 'orWhereJsonContains' | 'whereJsonLength' | 'orWhereJsonLength' | 'whereFullText' | 'orWhereFullText' | 'whereVectorSimilarTo' | 'orWhereVectorSimilarTo' | 'orderBy' | 'latest' | 'oldest' | 'inRandomOrder' | 'reorder' | 'unsafeOrderBy' | 'lock' | 'lockForUpdate' | 'sharedLock' | 'with' | 'withCount' | 'withExists' | 'withSum' | 'withAvg' | 'withMin' | 'withMax' | 'has' | 'orHas' | 'whereHas' | 'orWhereHas' | 'doesntHave' | 'orDoesntHave' | 'whereDoesntHave' | 'orWhereDoesntHave' | 'whereRelation' | 'orWhereRelation' | 'whereBelongsTo' | 'orWhereBelongsTo' | 'whereMorphedTo' | 'orWhereMorphedTo' | 'whereNotMorphedTo' | 'orWhereNotMorphedTo' | 'withWhereHas';
3611
+ type StaticModelQueryForwarders<TTable extends TableDefinition, TRelations extends RelationMap> = Pick<ModelQueryBuilder<TTable, TRelations>, StaticModelQueryForwardMethod>;
3612
+ type StaticModelApi<TTable extends TableDefinition, TScopes extends ModelScopesDefinition, TRelations extends RelationMap = RelationMap> = ModelReference<TTable, TScopes, TRelations> & ModelScopeMethods<TTable, TScopes, TRelations> & StaticModelQueryForwarders<TTable, TRelations> & {
3554
3613
  query(): ModelQueryBuilder<TTable, TRelations>;
3555
3614
  newQuery(): ModelQueryBuilder<TTable, TRelations>;
3556
3615
  newModelQuery(): ModelQueryBuilder<TTable, TRelations>;
3557
3616
  newQueryWithoutScopes(): ModelQueryBuilder<TTable, TRelations>;
3558
3617
  newQueryWithoutRelationships(): ModelQueryBuilder<TTable, TRelations>;
3559
- from(table: string): ModelQueryBuilder<TTable, TRelations>;
3560
- debug(): ReturnType<ModelQueryBuilder<TTable, TRelations>['debug']>;
3561
- dump(): ModelQueryBuilder<TTable, TRelations>;
3562
3618
  preventLazyLoading(value?: boolean): StaticModelApi<TTable, TScopes, TRelations>;
3563
3619
  preventAccessingMissingAttributes(value?: boolean): StaticModelApi<TTable, TScopes, TRelations>;
3564
3620
  automaticallyEagerLoadRelationships(value?: boolean): StaticModelApi<TTable, TScopes, TRelations>;
3565
3621
  withoutEvents<TResult>(callback: () => TResult | Promise<TResult>): Promise<TResult>;
3566
3622
  unguarded<TResult>(callback: () => TResult | Promise<TResult>): Promise<TResult>;
3567
- where(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations>>): ModelQueryBuilder<TTable, TRelations>;
3568
- where(column: ModelColumnName<TTable> | ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3569
- orWhere(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations>>): ModelQueryBuilder<TTable, TRelations>;
3570
- orWhere(column: ModelColumnName<TTable> | ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3571
- whereNot(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations>>): ModelQueryBuilder<TTable, TRelations>;
3572
- orWhereNot(callback: BuilderCallback<ModelQueryBuilder<TTable, TRelations>>): ModelQueryBuilder<TTable, TRelations>;
3573
- whereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3574
- orWhereExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3575
- whereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3576
- orWhereNotExists<TSubTable extends TableDefinition>(subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3577
- whereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3578
- orWhereSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'in' | 'not in' | 'like', subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3579
- whereInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3580
- whereNotInSub<TSubTable extends TableDefinition>(column: ModelColumnName<TTable>, subquery: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3581
- select(...columns: readonly ModelSelectableColumn<TTable>[]): ModelQueryBuilder<TTable, TRelations>;
3582
- addSelect(...columns: readonly ModelSelectableColumn<TTable>[]): ModelQueryBuilder<TTable, TRelations>;
3583
- withCasts(casts: Record<string, ModelCastDefinition>): ModelQueryBuilder<TTable, TRelations>;
3584
- selectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations>;
3585
- addSelectSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations>;
3586
- whereNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3587
- orWhereNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3588
- whereNotNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3589
- orWhereNotNull(column: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3590
- when<TValue>(value: TValue, callback: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations>, TValue>, defaultCallback?: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations>, TValue>): ModelQueryBuilder<TTable, TRelations>;
3591
- unless<TValue>(value: TValue, callback: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations>, TValue>, defaultCallback?: ValueBuilderCallback<ModelQueryBuilder<TTable, TRelations>, TValue>): ModelQueryBuilder<TTable, TRelations>;
3592
- distinct(): ModelQueryBuilder<TTable, TRelations>;
3593
- whereColumn(column: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', compareTo: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3594
- whereIn(column: ModelColumnName<TTable>, values: readonly unknown[]): ModelQueryBuilder<TTable, TRelations>;
3595
- whereNotIn(column: ModelColumnName<TTable>, values: readonly unknown[]): ModelQueryBuilder<TTable, TRelations>;
3596
- whereBetween(column: ModelColumnName<TTable>, range: readonly [unknown, unknown]): ModelQueryBuilder<TTable, TRelations>;
3597
- whereNotBetween(column: ModelColumnName<TTable>, range: readonly [unknown, unknown]): ModelQueryBuilder<TTable, TRelations>;
3598
- whereLike(column: ModelColumnName<TTable>, pattern: string): ModelQueryBuilder<TTable, TRelations>;
3599
- orWhereLike(column: ModelColumnName<TTable>, pattern: string): ModelQueryBuilder<TTable, TRelations>;
3600
- whereAny(columns: readonly ModelColumnName<TTable>[], operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3601
- whereAll(columns: readonly ModelColumnName<TTable>[], operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3602
- whereNone(columns: readonly ModelColumnName<TTable>[], operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3603
- join(table: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3604
- leftJoin(table: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3605
- rightJoin(table: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3606
- crossJoin(table: string): ModelQueryBuilder<TTable, TRelations>;
3607
- joinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3608
- leftJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3609
- rightJoinSub<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string, leftColumn: ModelColumnReference<TTable>, operator: '!=' | '=' | '>' | '>=' | '<' | '<=' | 'like', rightColumn: ModelColumnReference<TTable>): ModelQueryBuilder<TTable, TRelations>;
3610
- joinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations>;
3611
- leftJoinLateral<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>, alias: string): ModelQueryBuilder<TTable, TRelations>;
3612
- union<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3613
- unionAll<TSubTable extends TableDefinition>(query: SubqueryBuilder<TSubTable>): ModelQueryBuilder<TTable, TRelations>;
3614
- groupBy(...columns: readonly ModelColumnName<TTable>[]): ModelQueryBuilder<TTable, TRelations>;
3615
- having(expression: string, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3616
- havingBetween(expression: string, range: readonly [unknown, unknown]): ModelQueryBuilder<TTable, TRelations>;
3617
- unsafeWhere(sql: string, bindings: readonly unknown[]): ModelQueryBuilder<TTable, TRelations>;
3618
- orUnsafeWhere(sql: string, bindings: readonly unknown[]): ModelQueryBuilder<TTable, TRelations>;
3619
- whereDate(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3620
- whereMonth(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3621
- whereDay(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3622
- whereYear(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3623
- whereTime(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3624
- whereJson(columnPath: ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3625
- orWhereJson(columnPath: ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3626
- whereJsonContains(columnPath: ModelJsonColumnPath<TTable>, value: unknown): ModelQueryBuilder<TTable, TRelations>;
3627
- orWhereJsonContains(columnPath: ModelJsonColumnPath<TTable>, value: unknown): ModelQueryBuilder<TTable, TRelations>;
3628
- whereJsonLength(columnPath: ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3629
- orWhereJsonLength(columnPath: ModelJsonColumnPath<TTable>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3630
- whereFullText(columns: ModelColumnName<TTable> | readonly ModelColumnName<TTable>[], value: string, options?: {
3631
- mode?: 'natural' | 'boolean';
3632
- }): ModelQueryBuilder<TTable, TRelations>;
3633
- orWhereFullText(columns: ModelColumnName<TTable> | readonly ModelColumnName<TTable>[], value: string, options?: {
3634
- mode?: 'natural' | 'boolean';
3635
- }): ModelQueryBuilder<TTable, TRelations>;
3636
- whereVectorSimilarTo(column: ModelColumnName<TTable>, vector: readonly number[], minSimilarity?: number): ModelQueryBuilder<TTable, TRelations>;
3637
- orWhereVectorSimilarTo(column: ModelColumnName<TTable>, vector: readonly number[], minSimilarity?: number): ModelQueryBuilder<TTable, TRelations>;
3638
- latest(column?: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3639
- oldest(column?: ModelColumnName<TTable>): ModelQueryBuilder<TTable, TRelations>;
3640
- inRandomOrder(): ModelQueryBuilder<TTable, TRelations>;
3641
- reorder(column?: ModelColumnName<TTable>, direction?: 'asc' | 'desc'): ModelQueryBuilder<TTable, TRelations>;
3642
- unsafeOrderBy(sql: string, bindings: readonly unknown[]): ModelQueryBuilder<TTable, TRelations>;
3643
- lock(mode: 'update' | 'share'): ModelQueryBuilder<TTable, TRelations>;
3644
- lockForUpdate(): ModelQueryBuilder<TTable, TRelations>;
3645
- sharedLock(): ModelQueryBuilder<TTable, TRelations>;
3646
- with<TPaths extends readonly ModelRelationPath<TRelations>[]>(...relations: TPaths): ModelQueryBuilder<TTable, TRelations, ResolveEagerLoads<TRelations, TPaths>>;
3647
- with<TPath extends ModelRelationPath<TRelations>>(relation: TPath, constraint: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations, ResolveEagerLoads<TRelations, readonly [TPath]>>;
3648
- with<TMap extends Readonly<Partial<Record<ModelRelationPath<TRelations>, RelationConstraintCallback>>>>(relations: TMap): ModelQueryBuilder<TTable, TRelations>;
3649
- withCount(...relations: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3650
- withCount(relations: RelationConstraintMap<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3651
- withExists(...relations: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3652
- withExists(relations: RelationConstraintMap<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3653
- withSum<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath | RelationConstraintMap<TRelations>, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, ...rest: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3654
- withAvg<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath | RelationConstraintMap<TRelations>, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, ...rest: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3655
- withMin<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath | RelationConstraintMap<TRelations>, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, ...rest: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3656
- withMax<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath | RelationConstraintMap<TRelations>, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, ...rest: readonly ModelRelationPath<TRelations>[]): ModelQueryBuilder<TTable, TRelations>;
3657
- has(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3658
- orHas(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3659
- whereHas(relation: ModelRelationPath<TRelations>, constraint?: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations>;
3660
- orWhereHas(relation: ModelRelationPath<TRelations>, constraint?: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations>;
3661
- doesntHave(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3662
- orDoesntHave(relation: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3663
- whereDoesntHave(relation: ModelRelationPath<TRelations>, constraint?: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations>;
3664
- orWhereDoesntHave(relation: ModelRelationPath<TRelations>, constraint?: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations>;
3665
- whereRelation<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3666
- orWhereRelation<TRelationPath extends ModelRelationPath<TRelations>>(relation: TRelationPath, column: RelatedColumnNameForRelationPath<TRelations, TRelationPath>, operator: unknown, value?: unknown): ModelQueryBuilder<TTable, TRelations>;
3667
- whereBelongsTo<TRelated extends TableDefinition>(entity: Entity<TRelated>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3668
- orWhereBelongsTo<TRelated extends TableDefinition>(entity: Entity<TRelated>, relationName?: ModelRelationPath<TRelations>): ModelQueryBuilder<TTable, TRelations>;
3669
- whereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations>;
3670
- orWhereMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations>;
3671
- whereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations>;
3672
- orWhereNotMorphedTo(relation: ModelRelationPath<TRelations>, target: MorphTypeSelector): ModelQueryBuilder<TTable, TRelations>;
3673
- withWhereHas<TPath extends ModelRelationPath<TRelations>>(relation: TPath, constraint?: RelationConstraintCallback): ModelQueryBuilder<TTable, TRelations, ResolveEagerLoads<TRelations, readonly [TPath]>>;
3674
- find(value: unknown): Promise<Entity<TTable, TRelations> | undefined>;
3675
- findMany(values: readonly unknown[]): Promise<ModelCollection<TTable, TRelations>>;
3676
- findOrFail(value: unknown): Promise<Entity<TTable, TRelations>>;
3623
+ find(value: ModelPrimaryKeyValue$1<TTable>): Promise<Entity<TTable, TRelations> | undefined>;
3624
+ findMany(values: readonly ModelPrimaryKeyValue$1<TTable>[]): Promise<ModelCollection<TTable, TRelations>>;
3625
+ findOrFail(value: ModelPrimaryKeyValue$1<TTable>): Promise<Entity<TTable, TRelations>>;
3626
+ findOrFailJson(value: ModelPrimaryKeyValue$1<TTable>): Promise<SerializedEntityWithLoaded<TTable, unknown>>;
3677
3627
  first(): Promise<Entity<TTable, TRelations> | undefined>;
3628
+ firstJson(): Promise<SerializedEntityWithLoaded<TTable, unknown> | undefined>;
3678
3629
  firstOrFail(): Promise<Entity<TTable, TRelations>>;
3679
3630
  sole(): Promise<Entity<TTable, TRelations>>;
3631
+ soleJson(): Promise<SerializedEntityWithLoaded<TTable, unknown>>;
3680
3632
  firstWhere(column: ModelColumnName<TTable>, operator: unknown, value?: unknown): Promise<Entity<TTable, TRelations> | undefined>;
3681
3633
  get(): Promise<ModelCollection<TTable, TRelations>>;
3634
+ getJson(): Promise<SerializedEntityWithLoaded<TTable, unknown>[]>;
3682
3635
  all(): Promise<ModelCollection<TTable, TRelations>>;
3683
3636
  paginate(perPage?: number, page?: number, options?: PaginationOptions): Promise<PaginatedResult<Entity<TTable, TRelations>> & {
3684
3637
  data: ModelCollection<TTable, TRelations>;
3685
3638
  }>;
3639
+ paginateJson(perPage?: number, page?: number, options?: PaginationOptions): Promise<{
3640
+ data: readonly SerializedEntityWithLoaded<TTable, unknown>[];
3641
+ meta: PaginationMeta;
3642
+ }>;
3686
3643
  simplePaginate(perPage?: number, page?: number, options?: PaginationOptions): Promise<SimplePaginatedResult<Entity<TTable, TRelations>> & {
3687
3644
  data: ModelCollection<TTable, TRelations>;
3688
3645
  }>;
3646
+ simplePaginateJson(perPage?: number, page?: number, options?: PaginationOptions): Promise<{
3647
+ data: readonly SerializedEntityWithLoaded<TTable, unknown>[];
3648
+ meta: SimplePaginationMeta;
3649
+ }>;
3689
3650
  cursorPaginate(perPage?: number, cursor?: string | null, options?: CursorPaginationOptions): Promise<CursorPaginatedResult<Entity<TTable, TRelations>> & {
3690
3651
  data: ModelCollection<TTable, TRelations>;
3691
3652
  }>;
3692
- chunk(size: number, callback: (rows: readonly Entity<TTable, TRelations>[], page: number) => unknown | Promise<unknown>): Promise<void>;
3693
- chunkById(size: number, callback: (rows: readonly Entity<TTable, TRelations>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
3694
- chunkByIdDesc(size: number, callback: (rows: readonly Entity<TTable, TRelations>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
3653
+ cursorPaginateJson(perPage?: number, cursor?: string | null, options?: CursorPaginationOptions): Promise<{
3654
+ data: readonly SerializedEntityWithLoaded<TTable, unknown>[];
3655
+ perPage: number;
3656
+ cursorName: string;
3657
+ nextCursor: string | null;
3658
+ prevCursor: string | null;
3659
+ }>;
3660
+ chunk(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, unknown>[], page: number) => unknown | Promise<unknown>): Promise<void>;
3661
+ chunkById(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, unknown>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
3662
+ chunkByIdDesc(size: number, callback: (rows: readonly EntityWithLoaded<TTable, TRelations, unknown>[], page: number) => unknown | Promise<unknown>, column?: ModelAttributeKey<TTable>): Promise<void>;
3695
3663
  lazy(size?: number): AsyncGenerator<Entity<TTable, TRelations>, void, unknown>;
3696
3664
  cursor(): AsyncGenerator<Entity<TTable, TRelations>, void, unknown>;
3697
3665
  count(): Promise<number>;
@@ -3713,27 +3681,33 @@ type StaticModelApi<TTable extends TableDefinition, TScopes extends ModelScopesD
3713
3681
  createQuietly(values: InferInsert<TTable>): Promise<Entity<TTable, TRelations>>;
3714
3682
  createManyQuietly(values: readonly Partial<ModelRecord<TTable>>[]): Promise<ModelCollection<TTable, TRelations>>;
3715
3683
  createManyQuietly(values: readonly InferInsert<TTable>[]): Promise<ModelCollection<TTable, TRelations>>;
3716
- update(id: unknown, values: ModelUpdatePayload<TTable>): Promise<Entity<TTable, TRelations>>;
3684
+ update(id: ModelPrimaryKeyValue$1<TTable>, values: ModelUpdatePayload<TTable>): Promise<Entity<TTable, TRelations>>;
3717
3685
  prune(): Promise<number>;
3718
3686
  increment(column: ModelColumnName<TTable>, amount?: number, extraValues?: Partial<ModelRecord<TTable>>): Promise<DriverExecutionResult>;
3719
3687
  decrement(column: ModelColumnName<TTable>, amount?: number, extraValues?: Partial<ModelRecord<TTable>>): Promise<DriverExecutionResult>;
3720
- delete(id: unknown): Promise<void>;
3721
- destroy(ids: readonly unknown[]): Promise<number>;
3722
- restore(id: unknown): Promise<Entity<TTable, TRelations>>;
3723
- forceDelete(id: unknown): Promise<void>;
3688
+ delete(id: ModelPrimaryKeyValue$1<TTable>): Promise<void>;
3689
+ destroy(ids: readonly ModelPrimaryKeyValue$1<TTable>[]): Promise<number>;
3690
+ restore(id: ModelPrimaryKeyValue$1<TTable>): Promise<Entity<TTable, TRelations>>;
3691
+ forceDelete(id: ModelPrimaryKeyValue$1<TTable>): Promise<void>;
3724
3692
  withTrashed(): ModelQueryBuilder<TTable, TRelations>;
3725
3693
  onlyTrashed(): ModelQueryBuilder<TTable, TRelations>;
3726
3694
  updateOrCreate(match: Partial<ModelRecord<TTable>>, values?: Partial<ModelRecord<TTable>>): Promise<Entity<TTable, TRelations>>;
3727
3695
  upsert(match: Partial<ModelRecord<TTable>>, values?: Partial<ModelRecord<TTable>>): Promise<Entity<TTable, TRelations>>;
3728
3696
  firstOrNew(match: Partial<ModelRecord<TTable>>, values?: Partial<ModelRecord<TTable>>): Promise<Entity<TTable, TRelations>>;
3729
3697
  firstOrCreate(match: Partial<ModelRecord<TTable>>, values?: Partial<ModelRecord<TTable>>): Promise<Entity<TTable, TRelations>>;
3730
- saveMany(entities: readonly Entity<TTable, TRelations>[]): Promise<ModelCollection<TTable, TRelations>>;
3698
+ saveMany(entities: readonly EntityWithLoaded<TTable, TRelations, unknown>[]): Promise<ModelCollection<TTable, TRelations>>;
3731
3699
  resolveRelationUsing(name: string, resolver: DynamicRelationResolver): StaticModelApi<TTable, TScopes, TRelations>;
3732
3700
  make(values?: Partial<ModelRecord<TTable>>): Entity<TTable, TRelations>;
3733
3701
  getRepository(): ModelRepository<TTable>;
3734
3702
  getConnectionName(): string | undefined;
3735
3703
  getTableName(): string;
3736
3704
  };
3705
+
3706
+ type ColumnShapeInput = Record<string, ColumnInput>;
3707
+ type EmptyColumnShape = Record<never, never>;
3708
+ type ModelTableBuilderResult<TName extends string, TColumns extends ColumnShapeInput> = {
3709
+ build(): BoundTableDefinition<TName, TColumns>;
3710
+ };
3737
3711
  declare function defineModel<TTable extends TableDefinition, TScopes extends ModelScopesDefinition = EmptyScopeMap, TRelations extends RelationMap = RelationMap>(table: TTable, options?: DefineModelOptions<TTable, TScopes, TRelations>): StaticModelApi<TTable, TScopes, TRelations>;
3738
3712
  declare function defineModel<TName extends string, TColumns extends ColumnShapeInput, TScopes extends ModelScopesDefinition = EmptyScopeMap, TRelations extends RelationMap = RelationMap>(tableName: TName, builder: (table: TableDefinitionBuilder<TName, EmptyColumnShape>) => ModelTableBuilderResult<TName, TColumns>, options?: DefineModelOptions<BoundTableDefinition<TName, TColumns>, TScopes, TRelations>): StaticModelApi<BoundTableDefinition<TName, TColumns>, TScopes, TRelations>;
3739
3713
  declare function defineModel<TName extends string, TScopes extends ModelScopesDefinition = EmptyScopeMap, TRelations extends RelationMap = RelationMap>(tableName: TName, options?: DefineModelOptions<GeneratedSchemaTable<TName>, TScopes, TRelations>): StaticModelApi<GeneratedSchemaTable<TName>, TScopes, TRelations>;
@@ -3741,14 +3715,52 @@ declare function defineModel<TName extends string, TScopes extends ModelScopesDe
3741
3715
  declare function resolveMorphModel(type: string): ModelDefinitionLike | undefined;
3742
3716
  declare function resetMorphRegistry(): void;
3743
3717
 
3718
+ type SerializableModel = {
3719
+ toJSON(): unknown;
3720
+ };
3721
+ type SerializeModels<TValue> = TValue extends Date ? Date : TValue extends SerializableModel ? ReturnType<TValue['toJSON']> : TValue extends readonly (infer TItem)[] ? SerializeModels<TItem>[] : TValue extends object ? {
3722
+ [K in keyof TValue]: SerializeModels<TValue[K]>;
3723
+ } : TValue;
3724
+ declare function serializeModels<TValue>(value: TValue): SerializeModels<TValue>;
3725
+
3726
+ type StringModelAttributeKey<TTable extends TableDefinition> = Extract<{
3727
+ [K in ModelAttributeKey<TTable>]: Exclude<ModelRecord<TTable>[K], null | undefined> extends string ? K : never;
3728
+ }[ModelAttributeKey<TTable>], string>;
3729
+ type PrimaryKeyName<TTable extends TableDefinition> = Extract<{
3730
+ [K in keyof TTable['columns']]: TTable['columns'][K] extends {
3731
+ readonly primaryKey: true;
3732
+ } ? K : never;
3733
+ }[keyof TTable['columns']], keyof ModelRecord<TTable> & string>;
3734
+ type ModelPrimaryKeyValue<TTable extends TableDefinition> = [PrimaryKeyName<TTable>] extends [never] ? ModelRecord<TTable>[ModelAttributeKey<TTable>] : ModelRecord<TTable>[PrimaryKeyName<TTable>];
3735
+ interface UniqueSlugOptions<TTable extends TableDefinition, TColumn extends StringModelAttributeKey<TTable> = StringModelAttributeKey<TTable>> {
3736
+ readonly column?: TColumn;
3737
+ readonly ignore?: ModelPrimaryKeyValue<TTable>;
3738
+ readonly separator?: string;
3739
+ readonly fallback?: string;
3740
+ }
3741
+ type UniqueSlugModel<TTable extends TableDefinition, TScopes extends ModelScopesDefinition, TRelations extends RelationMap> = StaticModelApi<TTable, TScopes, TRelations>;
3742
+ declare function uniqueSlug<TTable extends TableDefinition, TScopes extends ModelScopesDefinition, TRelations extends RelationMap, TColumn extends StringModelAttributeKey<TTable> = Extract<'slug', StringModelAttributeKey<TTable>>>(model: UniqueSlugModel<TTable, TScopes, TRelations>, value: string, options?: UniqueSlugOptions<TTable, TColumn>): Promise<string>;
3743
+
3744
+ declare function belongsTo<const TName extends RegisteredModelName>(related: TName, foreignKeyOrOptions: string | {
3745
+ foreignKey: string;
3746
+ ownerKey?: string;
3747
+ }, ownerKey?: string): BelongsToRelationDefinition<RegisteredModelReference<TName>>;
3744
3748
  declare function belongsTo<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKeyOrOptions: string | {
3745
3749
  foreignKey: string;
3746
3750
  ownerKey?: string;
3747
3751
  }, ownerKey?: string): BelongsToRelationDefinition<TRelated>;
3752
+ declare function hasMany<const TName extends RegisteredModelName>(related: TName, foreignKeyOrOptions: string | {
3753
+ foreignKey: string;
3754
+ localKey?: string;
3755
+ }, localKey?: string): HasManyRelationDefinition<RegisteredModelReference<TName>>;
3748
3756
  declare function hasMany<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKeyOrOptions: string | {
3749
3757
  foreignKey: string;
3750
3758
  localKey?: string;
3751
3759
  }, localKey?: string): HasManyRelationDefinition<TRelated>;
3760
+ declare function hasOne<const TName extends RegisteredModelName>(related: TName, foreignKeyOrOptions: string | {
3761
+ foreignKey: string;
3762
+ localKey?: string;
3763
+ }, localKey?: string): HasOneRelationDefinition<RegisteredModelReference<TName>>;
3752
3764
  declare function hasOne<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKeyOrOptions: string | {
3753
3765
  foreignKey: string;
3754
3766
  localKey?: string;
@@ -3762,6 +3774,13 @@ declare function morphTo(name: string, type?: string, id?: string): MorphToRelat
3762
3774
  declare function ofMany<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKey: string, aggregateColumn: string, aggregate?: 'min' | 'max', localKey?: string): HasOneOfManyRelationDefinition<TRelated>;
3763
3775
  declare function latestOfMany<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKey: string, localKey?: string, column?: string): HasOneOfManyRelationDefinition<TRelated>;
3764
3776
  declare function oldestOfMany<TRelated extends ModelDefinitionLike<TableDefinition>>(related: () => TRelated, foreignKey: string, localKey?: string, column?: string): HasOneOfManyRelationDefinition<TRelated>;
3777
+ declare function belongsToMany<const TName extends RegisteredModelName, TPivotTable extends string | TableDefinition>(related: TName, pivotTableOrOptions: TPivotTable | {
3778
+ pivotTable: TPivotTable;
3779
+ foreignPivotKey: string;
3780
+ relatedPivotKey: string;
3781
+ parentKey?: string;
3782
+ relatedKey?: string;
3783
+ }, foreignPivotKey?: string, relatedPivotKey?: string, parentKey?: string, relatedKey?: string): BelongsToManyRelationDefinition<RegisteredModelReference<TName>, TPivotTable> & PivotRelationMethods<BelongsToManyRelationDefinition<RegisteredModelReference<TName>, TPivotTable>, TPivotTable>;
3765
3784
  declare function belongsToMany<TRelated extends ModelDefinitionLike<TableDefinition>, TPivotTable extends string | TableDefinition>(related: () => TRelated, pivotTableOrOptions: TPivotTable | {
3766
3785
  pivotTable: TPivotTable;
3767
3786
  foreignPivotKey: string;
@@ -3836,4 +3855,4 @@ interface NormalizedHoloProjectConfig {
3836
3855
  declare function normalizeHoloProjectConfig(config?: HoloProjectConfig): NormalizedHoloProjectConfig;
3837
3856
  declare function defineHoloProject<TConfig extends HoloProjectConfig>(config: TConfig): NormalizedHoloProjectConfig & TConfig;
3838
3857
 
3839
- export { type AddColumnOperation, type AlterColumnOperation, type AnyColumnDefinition, AsyncConnectionContext, type BoundTableDefinition, CapabilityError, ColumnBuilder, type ColumnDefinition, type CompiledStatement, CompilerError, type ConcurrencyOptions, ConfigurationError, ConnectionManager, type ConnectionManagerOptions, type CreateForeignKeyOperation, type CreateIndexOperation, type CreateTableOperation, type CursorPaginatedResult, DB, type DDLOperation, type DDLStatement, DEFAULT_CAPABILITIES, DEFAULT_HOLO_PROJECT_PATHS, DEFAULT_SECURITY_POLICY, DIALECT_ID_STRATEGY_MAP, DIALECT_LOGICAL_TYPE_MAP, DIALECT_VECTOR_SUPPORT, type DatabaseCapabilities, DatabaseContext, type DatabaseContextOptions, type DatabaseDriverName, DatabaseError, type DatabaseLogger, type DatabaseOperationOptions, type DatabaseQueryCacheBridge, type DefineModelOptions, type DefineTableOptions, type DeleteQueryPlan, type Dialect, type DriverAdapter, type DriverExecutionResult, type DriverQueryResult, type DropColumnOperation, type DropForeignKeyOperation, type DropIndexOperation, type DropTableOperation, type DynamicRelationResolver, Entity, type EntityWithLoaded, Factory, type FactoryAttributes, type FactoryContext, type FactoryDefinition, type FactoryHook, type FactoryModelReference, FactoryService, type FactoryStateDefinition, type ForeignKeyReference, type GeneratedMigrationTemplate, type GeneratedSchemaTable, type GeneratedSchemaTableName, type GeneratedSchemaTables, HasSnowflakes, HasUlids, HasUniqueIds, HasUuids, type HoloProjectConfig, type HoloProjectConnectionConfig, type HoloProjectDatabaseConfig, type HoloProjectPaths, HydrationError, type IdGenerationStrategy, type InferInsert, type InferSelect, type InferUpdate, type InsertQueryPlan, type IntrospectedColumn, type IntrospectedForeignKey, type IntrospectedIndex, type LogicalColumnKind, type MigrateOptions, type MigrationContext, type MigrationDefinition, type MigrationErrorLog, type MigrationExecutionPolicy, MigrationService, type MigrationSquashPlan, type MigrationStartLog, type MigrationStatus, type MigrationSuccessLog, type MigrationTemplateKind, type MigrationTemplateOptions, type ModelAttributeKey, type ModelCollection, type ModelDefinition, ModelEventService, type ModelInsertPayload, ModelNotFoundException, ModelQueryBuilder, type ModelRecord, type ModelReference, ModelRegistry, ModelRepository, type ModelScopeArgs, type ModelScopeMap, type ModelTrait, type ModelUpdatePayload, MySQLAdapter, type MySQLAdapterOptions, type MySQLClientLike, type MySQLPoolLike, MySQLQueryCompiler, type MySQLQueryableLike, MySQLSchemaCompiler, type NormalizedHoloProjectConfig, type PaginatedResult, type PaginationMeta, PostgresAdapter, type PostgresAdapterOptions, type PostgresClientLike, type PostgresPoolLike, PostgresQueryCompiler, type PostgresQueryableLike, PostgresSchemaCompiler, type QueryCacheConfig, type QueryCacheFlexibleTtlInput, type QueryCacheTtlInput, type QueryDirection, type QueryOperator, type QueryOrderBy, type QueryPlan, type QueryPredicate, QueryScheduler, type QuerySelection, type QuerySource, type RelationDefinition, RelationError, type RelationMap, type RenameColumnOperation, type RenameIndexOperation, type RenameTableOperation, type ResolveEagerLoadPath, type ResolveEagerLoadUnion, type ResolveEagerLoads, type RollbackOptions, type RuntimeConfigInput, type RuntimeConnectionConfig, type RuntimeDatabaseConfig, type RuntimeHoloConfig, SQLQueryCompiler, SQLSchemaCompiler, SQLiteAdapter, type SQLiteAdapterOptions, type SQLiteDatabaseLike, SQLiteQueryCompiler, SQLiteSchemaCompiler, type SQLiteStatementLike, type SchemaColumnMismatch, type SchemaDefaultDialectName, type SchemaDialectName, type SchemaDiff, SchemaError, type SchemaForeignKeyMismatch, type SchemaIndexMismatch, SchemaRegistry, SchemaService, type SchemaSyncPlan, SecurityError, type SecurityPolicy, type SeedOptions, type SeederContext, type SeederDefinition, type SeederErrorLog, SeederService, type SeederStartLog, type SeederSuccessLog, type SelectQueryPlan, SerializationError, type SerializedEntityWithLoaded, type SimplePaginatedResult, type SimplePaginationMeta, type SupportedDatabaseDriver, type TableColumnsShape, type TableDefinition, TableDefinitionBuilder, type TableIndexDefinition, TableMutationBuilder, TableQueryBuilder, type TableSchemaDiff, type TransactionCallback, TransactionError, type UniqueIdRuntimeConfig, type UniqueIdTrait, type UniqueIdTraitKind, type UnsafeStatement, type UpdateQueryPlan, type VectorValue, addColumnOperation, alterColumnOperation, belongsTo, belongsToMany, binaryCast, clearGeneratedTables, column, compileDialectDefaultLiteral, configureDB, configureDatabaseQueryCacheBridge, connectionAsyncContext, createAdapter, createCapabilities, createConnectionManager, createCursorPaginator, createDatabase, createDeleteQueryPlan, createDialect, createFactoryService, createForeignKeyOperation, createIndexOperation, createInsertQueryPlan, createMigrationFileName, createMigrationService, createMigrationTimestamp, createModelCollection, createModelEventService, createModelRegistry, createMySQLAdapter, createPaginator, createPostgresAdapter, createQueryScheduler, createRuntimeConnectionOptions, createRuntimeLogger, createSQLiteAdapter, diffSchema as createSchemaDiff, createSchemaRegistry, createSchemaService, createSecurityPolicy, createSeederService, createSelectQueryPlan, createSimplePaginator, createTableOperation, createTableSource, createUpdateQueryPlan, defineFactory, defineGeneratedTable, defineHoloProject, defineMigration, defineModel, defineSeeder, diffSchema, dropColumnOperation, dropForeignKeyOperation, dropIndexOperation, dropTableOperation, encryptedCast, enumCast, generateMigrationTemplate, generateSnowflake, generateUlid, generateUuidV7, getDatabaseQueryCacheBridge, getGeneratedTableDefinition, getModelDefinition, hasMany, hasManyThrough, hasOne, hasOneThrough, inferMigrationTableName, inferMigrationTemplateKind, isSupportedDatabaseDriver, latestMorphOne, latestOfMany, listGeneratedTableDefinitions, morphMany, morphOfMany, morphOne, morphTo, morphToMany, morphedByMany, normalizeDialectReadValue, normalizeDialectWriteValue, normalizeHoloProjectConfig, normalizeMigrationSlug, ofMany, oldestMorphOne, oldestOfMany, parseDatabaseDriver, queryCacheInternals, redactBindings, redactSql, registerGeneratedTables, renameColumnOperation, renameIndexOperation, renameTableOperation, renderGeneratedSchemaModule, renderGeneratedSchemaPlaceholder, resetDB, resetDatabaseQueryCacheBridge, resetMorphRegistry, resolveDialectColumnType, resolveDialectIdStrategyType, resolveGeneratedTableDefinition, resolveMorphModel, resolveRuntimeConnectionManagerOptions, scopeRelation, unsafeSql, validateQueryPlan, withLimit, withOffset, withOrderBy, withPredicate, withSelections };
3858
+ export { type AddColumnOperation, type AlterColumnOperation, type AnyColumnDefinition, AsyncConnectionContext, type BelongsToManyRelationDefinition, type BelongsToRelationDefinition, type BoundTableDefinition, type BuiltInCastName, type BuiltInCastString, CapabilityError, type CastableDefinition, ColumnBuilder, type ColumnDefinition, type CompiledStatement, CompilerError, type ConcurrencyOptions, ConfigurationError, ConnectionManager, type ConnectionManagerOptions, type CreateForeignKeyOperation, type CreateIndexOperation, type CreateTableOperation, type CursorPaginatedResult, type CursorPaginationOptions, DB, type DDLOperation, type DDLStatement, DEFAULT_CAPABILITIES, DEFAULT_HOLO_PROJECT_PATHS, DEFAULT_SECURITY_POLICY, DIALECT_ID_STRATEGY_MAP, DIALECT_LOGICAL_TYPE_MAP, DIALECT_VECTOR_SUPPORT, type DatabaseCapabilities, DatabaseContext, type DatabaseContextOptions, type DatabaseDriverName, DatabaseError, type DatabaseLogger, type DatabaseOperationOptions, type DatabaseQueryCacheBridge, type DefineModelOptions, type DefineTableOptions, type DeleteQueryPlan, type Dialect, type DriverAdapter, type DriverExecutionResult, type DriverQueryResult, type DropColumnOperation, type DropForeignKeyOperation, type DropIndexOperation, type DropTableOperation, type DynamicRelationResolver, type EmptyScopeMap, Entity, type EntityWithLoaded, type EnumCastDefinition, Factory, type FactoryAttributes, type FactoryContext, type FactoryDefinition, type FactoryHook, type FactoryModelReference, FactoryService, type FactoryStateDefinition, type ForeignKeyReference, type GeneratedMigrationTemplate, type GeneratedSchemaTable, type GeneratedSchemaTableName, type GeneratedSchemaTables, type HasManyRelationDefinition, type HasOneRelationDefinition, HasSnowflakes, HasUlids, HasUniqueIds, HasUuids, type HoloProjectConfig, type HoloProjectConnectionConfig, type HoloProjectDatabaseConfig, type HoloProjectPaths, HydrationError, type IdGenerationStrategy, type InferInsert, type InferSelect, type InferUpdate, type InsertQueryPlan, type IntrospectedColumn, type IntrospectedForeignKey, type IntrospectedIndex, type LogicalColumnKind, type MigrateOptions, type MigrationContext, type MigrationDefinition, type MigrationErrorLog, type MigrationExecutionPolicy, MigrationService, type MigrationSquashPlan, type MigrationStartLog, type MigrationStatus, type MigrationSuccessLog, type MigrationTemplateKind, type MigrationTemplateOptions, type ModelAttributeKey, type ModelCastDefinition, type ModelCollection, type ModelDefinition, ModelEventService, type ModelInsertPayload, ModelNotFoundException, ModelQueryBuilder, type ModelRecord, type ModelReference, ModelRegistry, ModelRepository, type ModelScopeArgs, type ModelScopeMap, type ModelTrait, type ModelUpdatePayload, MySQLAdapter, type MySQLAdapterOptions, type MySQLClientLike, type MySQLPoolLike, MySQLQueryCompiler, type MySQLQueryableLike, MySQLSchemaCompiler, type NormalizedHoloProjectConfig, type PaginatedResult, type PaginationMeta, type PaginationOptions, type PivotRelationMethods, PostgresAdapter, type PostgresAdapterOptions, type PostgresClientLike, type PostgresPoolLike, PostgresQueryCompiler, type PostgresQueryableLike, PostgresSchemaCompiler, type QueryCacheConfig, type QueryCacheFlexibleTtlInput, type QueryCacheTtlInput, type QueryDirection, type QueryOperator, type QueryOrderBy, type QueryPlan, type QueryPredicate, QueryScheduler, type QuerySelection, type QuerySource, type RegisteredModelName, type RegisteredModelReference, type RegisteredModels, type RelationDefinition, RelationError, type RelationMap, type RenameColumnOperation, type RenameIndexOperation, type RenameTableOperation, type ResolveEagerLoadPath, type ResolveEagerLoadUnion, type ResolveEagerLoads, type RollbackOptions, type RuntimeConfigInput, type RuntimeConnectionConfig, type RuntimeDatabaseConfig, type RuntimeHoloConfig, SQLQueryCompiler, SQLSchemaCompiler, SQLiteAdapter, type SQLiteAdapterOptions, type SQLiteDatabaseLike, SQLiteQueryCompiler, SQLiteSchemaCompiler, type SQLiteStatementLike, type SchemaColumnMismatch, type SchemaDefaultDialectName, type SchemaDialectName, type SchemaDiff, SchemaError, type SchemaForeignKeyMismatch, type SchemaIndexMismatch, SchemaRegistry, SchemaService, type SchemaSyncPlan, SecurityError, type SecurityPolicy, type SeedOptions, type SeederContext, type SeederDefinition, type SeederErrorLog, SeederService, type SeederStartLog, type SeederSuccessLog, type SelectQueryPlan, SerializationError, type SerializeLoaded, type SerializeModels, type SerializedEntityWithLoaded, type SimplePaginatedResult, type SimplePaginationMeta, type StaticModelApi, type SupportedDatabaseDriver, type TableColumnsShape, type TableDefinition, TableDefinitionBuilder, type TableIndexDefinition, TableMutationBuilder, TableQueryBuilder, type TableSchemaDiff, type TransactionCallback, TransactionError, type UniqueIdRuntimeConfig, type UniqueIdTrait, type UniqueIdTraitKind, type UnsafeStatement, type UpdateQueryPlan, type VectorValue, addColumnOperation, alterColumnOperation, belongsTo, belongsToMany, binaryCast, clearGeneratedTables, column, compileDialectDefaultLiteral, configureDB, configureDatabaseQueryCacheBridge, connectionAsyncContext, createAdapter, createCapabilities, createConnectionManager, createCursorPaginator, createDatabase, createDeleteQueryPlan, createDialect, createFactoryService, createForeignKeyOperation, createIndexOperation, createInsertQueryPlan, createMigrationFileName, createMigrationService, createMigrationTimestamp, createModelCollection, createModelEventService, createModelRegistry, createMySQLAdapter, createPaginator, createPostgresAdapter, createQueryScheduler, createRuntimeConnectionOptions, createRuntimeLogger, createSQLiteAdapter, diffSchema as createSchemaDiff, createSchemaRegistry, createSchemaService, createSecurityPolicy, createSeederService, createSelectQueryPlan, createSimplePaginator, createTableOperation, createTableSource, createUpdateQueryPlan, defineFactory, defineGeneratedTable, defineHoloProject, defineMigration, defineModel, defineSeeder, diffSchema, dropColumnOperation, dropForeignKeyOperation, dropIndexOperation, dropTableOperation, encryptedCast, enumCast, generateMigrationTemplate, generateSnowflake, generateUlid, generateUuidV7, getDatabaseQueryCacheBridge, getGeneratedTableDefinition, getModelDefinition, hasMany, hasManyThrough, hasOne, hasOneThrough, inferMigrationTableName, inferMigrationTemplateKind, isSupportedDatabaseDriver, latestMorphOne, latestOfMany, listGeneratedTableDefinitions, morphMany, morphOfMany, morphOne, morphTo, morphToMany, morphedByMany, normalizeDialectReadValue, normalizeDialectWriteValue, normalizeHoloProjectConfig, normalizeMigrationSlug, ofMany, oldestMorphOne, oldestOfMany, parseDatabaseDriver, queryCacheInternals, redactBindings, redactSql, registerGeneratedTables, renameColumnOperation, renameIndexOperation, renameTableOperation, renderGeneratedSchemaModule, renderGeneratedSchemaPlaceholder, renderGeneratedSchemaRuntimeModule, resetDB, resetDatabaseQueryCacheBridge, resetGlobalModelRegistry, resetMorphRegistry, resolveDialectColumnType, resolveDialectIdStrategyType, resolveGeneratedTableDefinition, resolveMorphModel, resolveRuntimeConnectionManagerOptions, scopeRelation, serializeModels, uniqueSlug, unsafeSql, validateQueryPlan, withLimit, withOffset, withOrderBy, withPredicate, withSelections };