@zenstackhq/orm 3.5.0-beta.2 → 3.5.0-beta.4

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _zenstackhq_schema from '@zenstackhq/schema';
2
- import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, GetModel, ProcedureDef, BuiltinType, FieldDef, ModelDef, DataSourceProviderType, NonRelationFields, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, GetTypeDefFieldType, TypeDefFieldIsArray, UpdatedAtInfo, FieldIsDelegateDiscriminator, FieldType, RelationInfo, FieldIsDelegateRelation, IsDelegateModel, Expression as Expression$1, LiteralExpression, ArrayExpression, FieldExpression, MemberExpression, BinaryExpression, UnaryExpression, CallExpression, BindingExpression, ThisExpression, NullExpression } from '@zenstackhq/schema';
2
+ import { SchemaDef, GetModels, ScalarFields, ForeignKeyFields, GetModelFields, FieldHasDefault, GetModelFieldType, ModelFieldIsOptional, GetModelField, NonRelationFields, GetModel, ProcedureDef, BuiltinType, FieldDef, ModelDef, DataSourceProviderType, IsDelegateModel, RelationFields, FieldIsArray, RelationFieldType, FieldIsRelation, GetEnums, GetEnum, GetTypeDefs, GetTypeDefFields, GetTypeDefField, TypeDefFieldIsOptional, GetTypeDefFieldType, TypeDefFieldIsArray, UpdatedAtInfo, FieldIsDelegateDiscriminator, FieldType, RelationInfo, Expression as Expression$1, LiteralExpression, ArrayExpression, FieldExpression, MemberExpression, BinaryExpression, UnaryExpression, CallExpression, BindingExpression, ThisExpression, NullExpression } from '@zenstackhq/schema';
3
3
  import * as kysely from 'kysely';
4
4
  import { Kysely, OperationNodeVisitor, OperationNode, SelectQueryNode, SelectionNode, ColumnNode, AliasNode, TableNode, FromNode, ReferenceNode, AndNode, OrNode, ValueListNode, ParensNode, JoinNode, RawNode, WhereNode, InsertQueryNode, DeleteQueryNode, ReturningNode, CreateTableNode, AddColumnNode, ColumnDefinitionNode, DropTableNode, OrderByNode, OrderByItemNode, GroupByNode, GroupByItemNode, UpdateQueryNode, ColumnUpdateNode, LimitNode, OffsetNode, OnConflictNode, OnDuplicateKeyNode, CheckConstraintNode, DataTypeNode, SelectAllNode, IdentifierNode, SchemableIdentifierNode, ValueNode, PrimitiveValueListNode, OperatorNode, CreateIndexNode, DropIndexNode, ListNode, PrimaryKeyConstraintNode, UniqueConstraintNode, ReferencesNode, WithNode, CommonTableExpressionNode, CommonTableExpressionNameNode, HavingNode, CreateSchemaNode, DropSchemaNode, AlterTableNode, DropColumnNode, RenameColumnNode, AlterColumnNode, ModifyColumnNode, AddConstraintNode, DropConstraintNode, ForeignKeyConstraintNode, CreateViewNode, DropViewNode, GeneratedNode, DefaultValueNode, OnNode, ValuesNode, SelectModifierNode, CreateTypeNode, DropTypeNode, ExplainNode, DefaultInsertValueNode, AggregateFunctionNode, OverNode, PartitionByNode, PartitionByItemNode, SetOperationNode, BinaryOperationNode, UnaryOperationNode, UsingNode, FunctionNode, CaseNode, WhenNode, JSONReferenceNode, JSONPathNode, JSONPathLegNode, JSONOperatorChainNode, TupleNode, MergeQueryNode, MatchedNode, AddIndexNode, CastNode, FetchNode, TopNode, OutputNode, RenameConstraintNode, RefreshMaterializedViewNode, OrActionNode, CollateNode, Generated, QueryId, RootOperationNode, QueryResult, UnknownRow, Dialect, ExpressionBuilder, Expression, KyselyConfig, OperandExpression, SelectQueryBuilder, SqlBool, AliasableExpression, ExpressionWrapper } from 'kysely';
5
5
  import Decimal from 'decimal.js';
@@ -258,10 +258,53 @@ type ExtQueryArgsBase = {
258
258
  * Member names should start with '$' to avoid model name conflicts.
259
259
  */
260
260
  type ExtClientMembersBase = Record<string, unknown>;
261
+ /**
262
+ * Base shape of plugin-extended result fields.
263
+ * Keyed by model name, each value maps field names to their definitions.
264
+ * `needs` keys are constrained to non-relation fields of the corresponding model.
265
+ */
266
+ type ExtResultBase<Schema extends SchemaDef = SchemaDef> = {
267
+ [M in GetModels<Schema> as Uncapitalize<M>]?: Record<string, {
268
+ needs: Partial<Record<NonRelationFields<Schema, M>, true>>;
269
+ compute: (...args: any[]) => any;
270
+ }>;
271
+ };
272
+ /**
273
+ * Mapped type that provides per-field contextual typing for `compute` callbacks
274
+ * based on the `needs` declaration. Uses a separate type parameter `R_` that captures
275
+ * the needs shape (model → field → { neededField: true }), then links each field's
276
+ * `compute` parameter to exactly the keys declared in its `needs`.
277
+ */
278
+ type ExtResultInferenceArgs<Schema extends SchemaDef, R_> = {
279
+ [K in keyof R_ & string]: {
280
+ [P in keyof R_[K]]?: {
281
+ needs?: {
282
+ [F in keyof R_[K][P]]: F extends NonRelationFields<Schema, ModelNameFromKey<Schema, K>> ? true : never;
283
+ } & Partial<Record<NonRelationFields<Schema, ModelNameFromKey<Schema, K>>, true>>;
284
+ compute: (data: ExtResultComputeData<Schema, ModelNameFromKey<Schema, K>, R_[K][P]>) => unknown;
285
+ };
286
+ };
287
+ };
288
+ /**
289
+ * Reverse-maps an uncapitalized key back to the original model name in the schema.
290
+ * E.g., for a schema with model `myModel`, the key `myModel` maps back to `myModel`
291
+ * (not `MyModel` as `Capitalize` would produce).
292
+ */
293
+ type ModelNameFromKey<Schema extends SchemaDef, K extends string> = {
294
+ [M in GetModels<Schema>]: Uncapitalize<M> extends K ? M : never;
295
+ }[GetModels<Schema>];
296
+ /**
297
+ * Maps the needs shape `S` to an object with actual schema field types.
298
+ * For each key in `S` that is a valid non-relation field of model `M`,
299
+ * resolves the TypeScript type from the schema field definition.
300
+ */
301
+ type ExtResultComputeData<Schema extends SchemaDef, M extends GetModels<Schema>, S> = {
302
+ [F in keyof S & GetModelFields<Schema, M>]: MapModelFieldType<Schema, M, F>;
303
+ };
261
304
  /**
262
305
  * ZenStack runtime plugin.
263
306
  */
264
- interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends Record<string, unknown>> {
307
+ interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends Record<string, unknown>, ExtResult extends ExtResultBase<Schema>> {
265
308
  /**
266
309
  * Plugin ID.
267
310
  */
@@ -305,12 +348,57 @@ interface RuntimePlugin<Schema extends SchemaDef, ExtQueryArgs extends ExtQueryA
305
348
  * Extended client members (methods and properties).
306
349
  */
307
350
  client?: ExtClientMembers;
351
+ /**
352
+ * Extended result fields on query results.
353
+ * Keyed by model name, each value defines computed fields with `needs` and `compute`.
354
+ */
355
+ result?: ExtResult;
308
356
  }
309
- type AnyPlugin = RuntimePlugin<any, any, any>;
357
+ type AnyPlugin = RuntimePlugin<any, any, any, any>;
358
+ /**
359
+ * Defines a ZenStack runtime plugin based on type of the given schema.
360
+ *
361
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
362
+ *
363
+ * @example
364
+ * ```typescript
365
+ * definePlugin(schema, {
366
+ * id: 'my-plugin',
367
+ * result: {
368
+ * user: {
369
+ * fullName: {
370
+ * needs: { firstName: true, lastName: true },
371
+ * compute: (user) => `${user.firstName} ${user.lastName}`,
372
+ * },
373
+ * },
374
+ * },
375
+ * });
376
+ * ```
377
+ */
378
+ declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}, const ExtResult extends ExtResultBase<Schema> = {}, R_ = {}>(schema: Schema, plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult> & {
379
+ result?: ExtResultInferenceArgs<Schema, R_>;
380
+ }): RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>;
310
381
  /**
311
382
  * Defines a ZenStack runtime plugin.
312
- */
313
- declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}>(plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers>): RuntimePlugin<any, ExtQueryArgs, ExtClientMembers>;
383
+ *
384
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * definePlugin(schema, {
389
+ * id: 'my-plugin',
390
+ * result: {
391
+ * user: {
392
+ * fullName: {
393
+ * needs: { firstName: true, lastName: true },
394
+ * compute: (user) => `${user.firstName} ${user.lastName}`,
395
+ * },
396
+ * },
397
+ * },
398
+ * });
399
+ * ```
400
+ * */
401
+ declare function definePlugin<Schema extends SchemaDef, const ExtQueryArgs extends ExtQueryArgsBase = {}, const ExtClientMembers extends Record<string, unknown> = {}, const ExtResult extends ExtResultBase<Schema> = {}>(plugin: RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>): RuntimePlugin<Schema, ExtQueryArgs, ExtClientMembers, ExtResult>;
314
402
  type OnProcedureCallback<Schema extends SchemaDef> = (ctx: OnProcedureHookContext<Schema>) => Promise<unknown>;
315
403
  type OnProcedureHookContext<Schema extends SchemaDef> = {
316
404
  /**
@@ -648,12 +736,12 @@ type ClientOptions<Schema extends SchemaDef> = QueryOptions<Schema> & {
648
736
  * Config for omitting fields in ORM query results.
649
737
  */
650
738
  type OmitConfig<Schema extends SchemaDef> = {
651
- [Model in GetModels<Schema>]?: {
739
+ [Model in GetModels<Schema> as Uncapitalize<Model>]?: {
652
740
  [Field in GetModelFields<Schema, Model> as Field extends ScalarFields<Schema, Model> ? Field : never]?: boolean;
653
741
  };
654
742
  };
655
743
  type ComputedFieldsOptions<Schema extends SchemaDef> = {
656
- [Model in GetModels<Schema> as 'computedFields' extends keyof GetModel<Schema, Model> ? Model : never]: {
744
+ [Model in GetModels<Schema> as 'computedFields' extends keyof GetModel<Schema, Model> ? Uncapitalize<Model> : never]: {
657
745
  [Field in keyof Schema['models'][Model]['computedFields']]: Schema['models'][Model]['computedFields'][Field] extends infer Func ? Func extends (...args: any[]) => infer R ? (p: ExpressionBuilder<ToKyselySchema<Schema>, Model>, ...args: Parameters<Func>) => OperandExpression<R> : never : never;
658
746
  };
659
747
  };
@@ -932,6 +1020,17 @@ declare const AllReadOperations: readonly ["findMany", "findUnique", "findFirst"
932
1020
  */
933
1021
  type AllReadOperations = (typeof AllReadOperations)[number];
934
1022
 
1023
+ /**
1024
+ * Checks if a model has any required Unsupported fields (non-optional, no default).
1025
+ * Uses raw field access since `GetModelFields` excludes Unsupported fields.
1026
+ */
1027
+ type ModelHasRequiredUnsupportedField<Schema extends SchemaDef, Model extends GetModels<Schema>> = true extends {
1028
+ [Key in Extract<keyof GetModel<Schema, Model>['fields'], string>]: GetModel<Schema, Model>['fields'][Key] extends infer F extends FieldDef ? F['type'] extends 'Unsupported' ? F['optional'] extends true ? false : 'default' extends keyof F ? false : true : false : false;
1029
+ }[Extract<keyof GetModel<Schema, Model>['fields'], string>] ? true : false;
1030
+ /**
1031
+ * Checks if a model allows create operations (not a delegate model and has no required Unsupported fields).
1032
+ */
1033
+ type ModelAllowsCreate<Schema extends SchemaDef, Model extends GetModels<Schema>> = IsDelegateModel<Schema, Model> extends true ? false : ModelHasRequiredUnsupportedField<Schema, Model> extends true ? false : true;
935
1034
  type IsNever<T> = [T] extends [never] ? true : false;
936
1035
  /**
937
1036
  * Filters models based on slicing configuration.
@@ -1005,10 +1104,10 @@ type DefaultModelResult<Schema extends SchemaDef, Model extends GetModels<Schema
1005
1104
  }, Optional, Array>;
1006
1105
  type ShouldOmitField<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Field extends GetModelFields<Schema, Model>, Omit> = QueryLevelOmit<Schema, Model, Field, Omit> extends boolean ? QueryLevelOmit<Schema, Model, Field, Omit> : OptionsLevelOmit<Schema, Model, Field, Options> extends boolean ? OptionsLevelOmit<Schema, Model, Field, Options> : SchemaLevelOmit<Schema, Model, Field>;
1007
1106
  type QueryLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Omit> = Field extends keyof Omit ? (Omit[Field] extends boolean ? Omit[Field] : undefined) : undefined;
1008
- type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Model extends keyof Options['omit'] ? Field extends keyof Options['omit'][Model] ? Options['omit'][Model][Field] extends boolean ? Options['omit'][Model][Field] : undefined : undefined : undefined;
1107
+ type OptionsLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>, Options extends QueryOptions<Schema>> = Uncapitalize<Model> extends keyof Options['omit'] ? Field extends keyof Options['omit'][Uncapitalize<Model>] ? Options['omit'][Uncapitalize<Model>][Field] extends boolean ? Options['omit'][Uncapitalize<Model>][Field] : undefined : undefined : undefined;
1009
1108
  type SchemaLevelOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends GetModelFields<Schema, Model>> = GetModelField<Schema, Model, Field>['omit'] extends true ? true : false;
1010
- type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>> = {
1011
- [Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model, Options> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>> : never;
1109
+ type ModelSelectResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Select, Omit, Options extends QueryOptions<Schema>, ExtResult extends ExtResultBase<Schema> = {}> = {
1110
+ [Key in keyof Select as Select[Key] extends false | undefined ? never : Key extends keyof ExtractExtResult<ExtResult, Model & string> ? never : Key extends '_count' ? Select[Key] extends SelectCount<Schema, Model, Options> ? Key : never : Key extends keyof Omit ? Omit[Key] extends true ? never : Key : Key]: Key extends '_count' ? SelectCountResult<Schema, Model, Select[Key]> : Key extends NonRelationFields<Schema, Model> ? MapModelFieldType<Schema, Model, Key> : Key extends RelationFields<Schema, Model> ? ModelResult<Schema, RelationFieldType<Schema, Model, Key>, Select[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, ExtResult> : never;
1012
1111
  };
1013
1112
  type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>, C> = C extends true ? {
1014
1113
  [Key in RelationFields<Schema, Model> as FieldIsArray<Schema, Model, Key> extends true ? Key : never]: number;
@@ -1017,22 +1116,22 @@ type SelectCountResult<Schema extends SchemaDef, Model extends GetModels<Schema>
1017
1116
  } ? {
1018
1117
  [Key in keyof S]: number;
1019
1118
  } : never;
1020
- type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = WrapType<Args extends {
1119
+ type ModelResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false, ExtResult extends ExtResultBase<Schema> = {}> = WrapType<(Args extends {
1021
1120
  select: infer S extends object;
1022
1121
  omit?: infer O extends object;
1023
- } & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options> : Args extends {
1122
+ } & Record<string, unknown> ? ModelSelectResult<Schema, Model, S, O, Options, ExtResult> : Args extends {
1024
1123
  include: infer I extends object;
1025
1124
  omit?: infer O extends object;
1026
1125
  } & Record<string, unknown> ? // select all non-omitted scalar fields
1027
1126
  DefaultModelResult<Schema, Model, O, Options, false, false> & {
1028
- [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>>;
1127
+ [Key in keyof I & RelationFields<Schema, Model> as I[Key] extends false | undefined ? never : Key]: ModelResult<Schema, RelationFieldType<Schema, Model, Key>, I[Key], Options, ModelFieldIsOptional<Schema, Model, Key>, FieldIsArray<Schema, Model, Key>, ExtResult>;
1029
1128
  } & ('_count' extends keyof I ? I['_count'] extends false | undefined ? {} : {
1030
1129
  _count: SelectCountResult<Schema, Model, I['_count']>;
1031
1130
  } : {}) : Args extends {
1032
1131
  omit: infer O;
1033
- } & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>, Optional, Array>;
1034
- type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array>>;
1035
- type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>> = Simplify<ModelResult<Schema, Model, Args, Options, false, false>>;
1132
+ } & Record<string, unknown> ? DefaultModelResult<Schema, Model, O, Options, false, false> : DefaultModelResult<Schema, Model, undefined, Options, false, false>) & SelectAwareExtResult<ExtResult, Model & string, Args>, Optional, Array>;
1133
+ type SimplifiedResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Optional = false, Array = false, ExtResult extends ExtResultBase<Schema> = {}> = Simplify<ModelResult<Schema, Model, Args, Options, Optional, Array, ExtResult>>;
1134
+ type SimplifiedPlainResult<Schema extends SchemaDef, Model extends GetModels<Schema>, Args = {}, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtResult extends ExtResultBase<Schema> = {}> = Simplify<ModelResult<Schema, Model, Args, Options, false, false, ExtResult>>;
1036
1135
  type TypeDefResult<Schema extends SchemaDef, TypeDef extends GetTypeDefs<Schema>, Partial extends boolean = false> = PartialIf<Optional<{
1037
1136
  [Key in GetTypeDefFields<Schema, TypeDef>]: MapFieldDefType<Schema, GetTypeDefField<Schema, TypeDef, Key>, Partial>;
1038
1137
  }, Partial extends true ? never : keyof {
@@ -1379,24 +1478,24 @@ type WhereUniqueInput<Schema extends SchemaDef, Model extends GetModels<Schema>,
1379
1478
  type OmitInput<Schema extends SchemaDef, Model extends GetModels<Schema>> = {
1380
1479
  [Key in NonRelationFields<Schema, Model>]?: boolean;
1381
1480
  };
1382
- type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowRelation extends boolean = true> = {
1481
+ type SelectIncludeOmit<Schema extends SchemaDef, Model extends GetModels<Schema>, AllowCount extends boolean, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowRelation extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1383
1482
  /**
1384
1483
  * Explicitly select fields and relations to be returned by the query.
1385
1484
  */
1386
- select?: SelectInput<Schema, Model, Options, AllowCount, AllowRelation> | null;
1485
+ select?: (SelectInput<Schema, Model, Options, AllowCount, AllowRelation, ExtResult> & ExtResultSelectOmitFields<ExtResult, Model & string>) | null;
1387
1486
  /**
1388
1487
  * Explicitly omit fields from the query result.
1389
1488
  */
1390
- omit?: OmitInput<Schema, Model> | null;
1489
+ omit?: (OmitInput<Schema, Model> & ExtResultSelectOmitFields<ExtResult, Model & string>) | null;
1391
1490
  } & (AllowRelation extends true ? {
1392
1491
  /**
1393
1492
  * Specifies relations to be included in the query result. All scalar fields are included.
1394
1493
  */
1395
- include?: IncludeInput<Schema, Model, Options, AllowCount> | null;
1494
+ include?: IncludeInput<Schema, Model, Options, AllowCount, ExtResult> | null;
1396
1495
  } : {});
1397
- type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true> = {
1496
+ type SelectInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, AllowRelation extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1398
1497
  [Key in NonRelationFields<Schema, Model>]?: boolean;
1399
- } & (AllowRelation extends true ? IncludeInput<Schema, Model, Options, AllowCount> : {});
1498
+ } & (AllowRelation extends true ? IncludeInput<Schema, Model, Options, AllowCount, ExtResult> : {});
1400
1499
  type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>> = boolean | {
1401
1500
  /**
1402
1501
  * Selects specific relations to count.
@@ -1407,8 +1506,8 @@ type SelectCount<Schema extends SchemaDef, Model extends GetModels<Schema>, Opti
1407
1506
  };
1408
1507
  };
1409
1508
  };
1410
- type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true> = {
1411
- [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, Options, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true : ModelFieldIsOptional<Schema, Model, Key> extends true ? true : false>;
1509
+ type IncludeInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, AllowCount extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = {
1510
+ [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]?: boolean | FindArgs<Schema, RelationFieldType<Schema, Model, Key>, Options, FieldIsArray<Schema, Model, Key>, FieldIsArray<Schema, Model, Key> extends true ? true : ModelFieldIsOptional<Schema, Model, Key> extends true ? true : false, ExtResult>;
1412
1511
  } & (AllowCount extends true ? HasToManyRelations<Schema, Model> extends true ? {
1413
1512
  _count?: SelectCount<Schema, Model, Options>;
1414
1513
  } : {} : {});
@@ -1473,23 +1572,23 @@ type SortAndTakeArgs<Schema extends SchemaDef, Model extends GetModels<Schema>,
1473
1572
  */
1474
1573
  cursor?: WhereUniqueInput<Schema, Model, Options>;
1475
1574
  };
1476
- type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Collection extends boolean, AllowFilter extends boolean = true> = (Collection extends true ? SortAndTakeArgs<Schema, Model, Options> & (ProviderSupportsDistinct<Schema> extends true ? {
1575
+ type FindArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Collection extends boolean, AllowFilter extends boolean = true, ExtResult extends ExtResultBase<Schema> = {}> = (Collection extends true ? SortAndTakeArgs<Schema, Model, Options> & (ProviderSupportsDistinct<Schema> extends true ? {
1477
1576
  /**
1478
1577
  * Distinct fields. Only supported by providers that natively support SQL "DISTINCT ON".
1479
1578
  */
1480
1579
  distinct?: OrArray<NonRelationFields<Schema, Model>>;
1481
- } : {}) : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model, Options> : {}) & SelectIncludeOmit<Schema, Model, true, Options>;
1482
- type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FindArgs<Schema, Model, Options, true> & ExtractExtQueryArgs<ExtQueryArgs, 'findMany'>;
1483
- type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FindArgs<Schema, Model, Options, true> & ExtractExtQueryArgs<ExtQueryArgs, 'findFirst'>;
1580
+ } : {}) : {}) & (AllowFilter extends true ? FilterArgs<Schema, Model, Options> : {}) & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult>;
1581
+ type FindManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = FindArgs<Schema, Model, Options, true, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findMany'>;
1582
+ type FindFirstArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = FindArgs<Schema, Model, Options, true, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findFirst'>;
1484
1583
  type ExistsArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = FilterArgs<Schema, Model, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'exists'>;
1485
- type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1584
+ type FindUniqueArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1486
1585
  where: WhereUniqueInput<Schema, Model, Options>;
1487
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'findUnique'>;
1488
- type CreateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1586
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'findUnique'>;
1587
+ type CreateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1489
1588
  data: CreateInput<Schema, Model, Options>;
1490
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'create'>;
1589
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'create'>;
1491
1590
  type CreateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, _Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = CreateManyInput<Schema, Model> & ExtractExtQueryArgs<ExtQueryArgs, 'createMany'>;
1492
- type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = CreateManyInput<Schema, Model> & SelectIncludeOmit<Schema, Model, false, Options, false> & ExtractExtQueryArgs<ExtQueryArgs, 'createManyAndReturn'>;
1591
+ type CreateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = CreateManyInput<Schema, Model> & SelectIncludeOmit<Schema, Model, false, Options, false, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'createManyAndReturn'>;
1493
1592
  type OptionalWrap<Schema extends SchemaDef, Model extends GetModels<Schema>, T extends object> = Optional<T, keyof T & OptionalFieldsForCreate<Schema, Model>>;
1494
1593
  type CreateScalarPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
1495
1594
  [Key in ScalarFields<Schema, Model, false> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]: ScalarCreatePayload<Schema, Model, Key>;
@@ -1502,6 +1601,7 @@ type IsJsonField<Schema extends SchemaDef, Model extends GetModels<Schema>, Fiel
1502
1601
  type CreateFKPayload<Schema extends SchemaDef, Model extends GetModels<Schema>> = OptionalWrap<Schema, Model, {
1503
1602
  [Key in ForeignKeyFields<Schema, Model>]: MapModelFieldType<Schema, Model, Key>;
1504
1603
  }>;
1604
+ type RelationModelAllowsCreate<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = GetModelFieldType<Schema, Model, Field> extends GetModels<Schema> ? ModelAllowsCreate<Schema, GetModelFieldType<Schema, Model, Field>> : false;
1505
1605
  type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = Omit<{
1506
1606
  /**
1507
1607
  * Connects or create a related record.
@@ -1519,7 +1619,7 @@ type CreateRelationFieldPayload<Schema extends SchemaDef, Model extends GetModel
1519
1619
  * Connects an existing record.
1520
1620
  */
1521
1621
  connect?: ConnectInput<Schema, Model, Field, Options>;
1522
- }, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' : never)>;
1622
+ }, (FieldIsArray<Schema, Model, Field> extends true ? never : 'createMany') | (RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'createMany' | 'connectOrCreate')>;
1523
1623
  type CreateRelationPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>> = OptionalWrap<Schema, Model, {
1524
1624
  [Key in RelationFields<Schema, Model> as RelationFieldType<Schema, Model, Key> extends GetSlicedModels<Schema, Options> ? Key : never]: CreateRelationFieldPayload<Schema, Model, Key, Options>;
1525
1625
  }>;
@@ -1551,7 +1651,7 @@ type CreateManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>,
1551
1651
  type CreateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, Without extends string = never> = XOR<Omit<CreateWithFKInput<Schema, Model, Options>, Without>, Omit<CreateWithRelationInput<Schema, Model, Options>, Without>>;
1552
1652
  type NestedCreateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = OrArray<CreateInput<Schema, RelationFieldType<Schema, Model, Field>, Options, OppositeRelationAndFK<Schema, Model, Field>>, FieldIsArray<Schema, Model, Field>>;
1553
1653
  type NestedCreateManyInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>> = CreateManyInput<Schema, RelationFieldType<Schema, Model, Field>, OppositeRelationAndFK<Schema, Model, Field>>;
1554
- type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1654
+ type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1555
1655
  /**
1556
1656
  * The data to update the record with.
1557
1657
  */
@@ -1560,9 +1660,9 @@ type UpdateArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Optio
1560
1660
  * The unique filter to find the record to update.
1561
1661
  */
1562
1662
  where: WhereUniqueInput<Schema, Model, Options>;
1563
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'update'>;
1663
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'update'>;
1564
1664
  type UpdateManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = UpdateManyPayload<Schema, Model, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'updateMany'>;
1565
- type UpdateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = UpdateManyPayload<Schema, Model, Options> & SelectIncludeOmit<Schema, Model, false, Options, false> & ExtractExtQueryArgs<ExtQueryArgs, 'updateManyAndReturn'>;
1665
+ type UpdateManyAndReturnArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = UpdateManyPayload<Schema, Model, Options> & SelectIncludeOmit<Schema, Model, false, Options, false, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'updateManyAndReturn'>;
1566
1666
  type UpdateManyPayload<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, Without extends string = never> = {
1567
1667
  /**
1568
1668
  * The data to update the records with.
@@ -1577,7 +1677,7 @@ type UpdateManyPayload<Schema extends SchemaDef, Model extends GetModels<Schema>
1577
1677
  */
1578
1678
  limit?: number;
1579
1679
  };
1580
- type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1680
+ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1581
1681
  /**
1582
1682
  * The data to create the record if it doesn't exist.
1583
1683
  */
@@ -1590,7 +1690,7 @@ type UpsertArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Optio
1590
1690
  * The unique filter to find the record to update.
1591
1691
  */
1592
1692
  where: WhereUniqueInput<Schema, Model, Options>;
1593
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'upsert'>;
1693
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'upsert'>;
1594
1694
  type UpdateScalarInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Without extends string = never> = Omit<{
1595
1695
  [Key in NonRelationFields<Schema, Model> as FieldIsDelegateDiscriminator<Schema, Model, Key> extends true ? never : Key]?: ScalarUpdatePayload<Schema, Model, Key>;
1596
1696
  }, Without>;
@@ -1675,7 +1775,7 @@ type ToManyRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels
1675
1775
  * Sets the related records to the specified ones.
1676
1776
  */
1677
1777
  set?: SetRelationInput<Schema, Model, Field, Options>;
1678
- }, FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'createMany' | 'connectOrCreate' | 'upsert' : never>;
1778
+ }, RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'createMany' | 'connectOrCreate' | 'upsert'>;
1679
1779
  type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<Schema>, Field extends RelationFields<Schema, Model>, Options extends QueryOptions<Schema>> = Omit<{
1680
1780
  /**
1681
1781
  * Creates a related record.
@@ -1706,13 +1806,13 @@ type ToOneRelationUpdateInput<Schema extends SchemaDef, Model extends GetModels<
1706
1806
  * Deletes the related record.
1707
1807
  */
1708
1808
  delete?: NestedDeleteInput<Schema, Model, Field, Options>;
1709
- } : {}), FieldIsDelegateRelation<Schema, Model, Field> extends true ? 'create' | 'connectOrCreate' | 'upsert' : never>;
1710
- type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1809
+ } : {}), RelationModelAllowsCreate<Schema, Model, Field> extends true ? never : 'create' | 'connectOrCreate' | 'upsert'>;
1810
+ type DeleteArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
1711
1811
  /**
1712
1812
  * The unique filter to find the record to delete.
1713
1813
  */
1714
1814
  where: WhereUniqueInput<Schema, Model, Options>;
1715
- } & SelectIncludeOmit<Schema, Model, true, Options> & ExtractExtQueryArgs<ExtQueryArgs, 'delete'>;
1815
+ } & SelectIncludeOmit<Schema, Model, true, Options, true, ExtResult> & ExtractExtQueryArgs<ExtQueryArgs, 'delete'>;
1716
1816
  type DeleteManyArgs<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema> = QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = {
1717
1817
  /**
1718
1818
  * Filter to select records to delete.
@@ -2023,6 +2123,37 @@ type ProviderSupportsDistinct<Schema extends SchemaDef> = Schema['provider']['ty
2023
2123
  * Extracts extended query args for a specific operation.
2024
2124
  */
2025
2125
  type ExtractExtQueryArgs<ExtQueryArgs, Operation extends CoreCrudOperations> = (Operation extends keyof ExtQueryArgs ? ExtQueryArgs[Operation] : {}) & ('$create' extends keyof ExtQueryArgs ? Operation extends CoreCreateOperations ? ExtQueryArgs['$create'] : {} : {}) & ('$read' extends keyof ExtQueryArgs ? (Operation extends CoreReadOperations ? ExtQueryArgs['$read'] : {}) : {}) & ('$update' extends keyof ExtQueryArgs ? Operation extends CoreUpdateOperations ? ExtQueryArgs['$update'] : {} : {}) & ('$delete' extends keyof ExtQueryArgs ? Operation extends CoreDeleteOperations ? ExtQueryArgs['$delete'] : {} : {}) & ('$all' extends keyof ExtQueryArgs ? ExtQueryArgs['$all'] : {});
2126
+ /**
2127
+ * Extracts extended result field types for a specific model from ExtResult.
2128
+ * Maps `{ needs, compute }` definitions to `{ fieldName: ReturnType<compute> }`.
2129
+ * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection).
2130
+ */
2131
+ type ExtractExtResult<ExtResult extends ExtResultBase, Model extends string> = Uncapitalize<Model> extends keyof ExtResult ? {
2132
+ [K in keyof ExtResult[Uncapitalize<Model>]]: ExtResult[Uncapitalize<Model>][K] extends {
2133
+ compute: (...args: any[]) => infer R;
2134
+ } ? R : never;
2135
+ } : {};
2136
+ /**
2137
+ * Extracts extended result field names as optional boolean keys for use in select/omit inputs.
2138
+ * When ExtResult is `{}`, this resolves to `{}` (no-op for intersection).
2139
+ */
2140
+ type ExtResultSelectOmitFields<ExtResult extends ExtResultBase, Model extends string> = keyof ExtResult extends never ? {} : Uncapitalize<Model> extends keyof ExtResult ? {
2141
+ [K in keyof ExtResult[Uncapitalize<Model>]]?: boolean;
2142
+ } : {};
2143
+ type TruthyKeys<S, Keys extends string> = {
2144
+ [K in Keys]: K extends keyof S ? (S[K] extends false | undefined ? never : K) : never;
2145
+ }[Keys];
2146
+ /**
2147
+ * Select/omit-aware version of ExtractExtResult.
2148
+ * - If T has `select`, only includes ext result fields that are explicitly selected.
2149
+ * - If T has `omit`, excludes ext result fields that are explicitly omitted.
2150
+ * - Otherwise, includes all ext result fields.
2151
+ */
2152
+ type SelectAwareExtResult<ExtResult extends ExtResultBase, Model extends string, T> = keyof ExtResult extends never ? {} : T extends {
2153
+ select: infer S;
2154
+ } ? S extends null | undefined ? ExtractExtResult<ExtResult, Model> : Pick<ExtractExtResult<ExtResult, Model>, TruthyKeys<S, Extract<keyof S & string, keyof ExtractExtResult<ExtResult, Model>>>> : T extends {
2155
+ omit: infer O;
2156
+ } ? O extends null | undefined ? ExtractExtResult<ExtResult, Model> : Omit<ExtractExtResult<ExtResult, Model>, TruthyKeys<O, Extract<keyof O & string, keyof ExtractExtResult<ExtResult, Model>>>> : ExtractExtResult<ExtResult, Model>;
2026
2157
 
2027
2158
  /**
2028
2159
  * Zod schema cache statistics.
@@ -2093,7 +2224,7 @@ declare enum TransactionIsolationLevel {
2093
2224
  /**
2094
2225
  * ZenStack client interface.
2095
2226
  */
2096
- type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtClientMembers extends ExtClientMembersBase = {}> = {
2227
+ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtClientMembers extends ExtClientMembersBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = {
2097
2228
  /**
2098
2229
  * The schema definition.
2099
2230
  */
@@ -2141,25 +2272,36 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2141
2272
  */
2142
2273
  get $auth(): AuthType<Schema> | undefined;
2143
2274
  /**
2144
- * Sets the current user identity.
2275
+ * Returns a new client bound to the specified user identity. The original client remains unchanged.
2276
+ *
2277
+ * @example
2278
+ * ```
2279
+ * const userClient = db.$setAuth({ id: 'user-id' });
2280
+ * ```
2145
2281
  */
2146
- $setAuth(auth: AuthType<Schema> | undefined): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2282
+ $setAuth(auth: AuthType<Schema> | undefined): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2147
2283
  /**
2148
- * Returns a new client with new options applied.
2284
+ * Returns a new client with new options applied. The original client remains unchanged.
2285
+ *
2149
2286
  * @example
2150
2287
  * ```
2151
2288
  * const dbNoValidation = db.$setOptions({ ...db.$options, validateInput: false });
2152
2289
  * ```
2153
2290
  */
2154
- $setOptions<NewOptions extends ClientOptions<Schema>>(options: NewOptions): ClientContract<Schema, NewOptions, ExtQueryArgs, ExtClientMembers>;
2291
+ $setOptions<NewOptions extends ClientOptions<Schema>>(options: NewOptions): ClientContract<Schema, NewOptions, ExtQueryArgs, ExtClientMembers, ExtResult>;
2155
2292
  /**
2156
- * Returns a new client enabling/disabling query args validation.
2293
+ * Returns a new client enabling/disabling query args validation. The original client remains unchanged.
2157
2294
  *
2158
2295
  * @deprecated Use {@link $setOptions} instead.
2159
2296
  */
2160
- $setInputValidation(enable: boolean): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2297
+ $setInputValidation(enable: boolean): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2161
2298
  /**
2162
2299
  * The Kysely query builder instance.
2300
+ *
2301
+ * @example
2302
+ * ```
2303
+ * db.$qb.selectFrom('User').selectAll().where('id', '=', 1).execute();
2304
+ * ```
2163
2305
  */
2164
2306
  readonly $qb: ToKysely<Schema>;
2165
2307
  /**
@@ -2168,26 +2310,45 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2168
2310
  readonly $qbRaw: AnyKysely;
2169
2311
  /**
2170
2312
  * Starts an interactive transaction.
2313
+ *
2314
+ * @example
2315
+ * ```
2316
+ * await db.$transaction(async (tx) => {
2317
+ * const user = await tx.user.update({ where: { id: 1 }, data: { name: 'Alice' } });
2318
+ * const post = await tx.post.create({ data: { title: 'Hello World', authorId: user.id } });
2319
+ * return { user, posts: [post] };
2320
+ * ```
2171
2321
  */
2172
- $transaction<T>(callback: (tx: TransactionClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>) => Promise<T>, options?: {
2322
+ $transaction<T>(callback: (tx: TransactionClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>) => Promise<T>, options?: {
2173
2323
  isolationLevel?: TransactionIsolationLevel;
2174
2324
  }): Promise<T>;
2175
2325
  /**
2176
- * Starts a sequential transaction.
2326
+ * Starts a sequential transaction that runs the provided operations in order.
2327
+ *
2328
+ * @example
2329
+ * ```
2330
+ * await db.$transaction([
2331
+ * db.user.update({ where: { id: 1 }, data: { name: 'Alice' } }),
2332
+ * db.post.create({ data: { title: 'Hello World', authorId: 1 } }),
2333
+ * ]);
2177
2334
  */
2178
2335
  $transaction<P extends ZenStackPromise<Schema, any>[]>(arg: [...P], options?: {
2179
2336
  isolationLevel?: TransactionIsolationLevel;
2180
2337
  }): Promise<UnwrapTuplePromises<P>>;
2181
2338
  /**
2182
- * Returns a new client with the specified plugin installed.
2339
+ * Returns a new client with the specified plugin installed. The original client remains unchanged.
2340
+ *
2341
+ * @see {@link https://zenstack.dev/docs/orm/plugins/|Plugin Documentation}
2183
2342
  */
2184
- $use<PluginSchema extends SchemaDef = Schema, PluginExtQueryArgs extends ExtQueryArgsBase = {}, PluginExtClientMembers extends ExtClientMembersBase = {}>(plugin: RuntimePlugin<PluginSchema, PluginExtQueryArgs, PluginExtClientMembers>): ClientContract<Schema, Options, ExtQueryArgs & PluginExtQueryArgs, ExtClientMembers & PluginExtClientMembers>;
2343
+ $use<PluginSchema extends SchemaDef = Schema, PluginExtQueryArgs extends ExtQueryArgsBase = {}, PluginExtClientMembers extends ExtClientMembersBase = {}, PluginExtResult extends ExtResultBase<PluginSchema> = {}, _R = {}>(plugin: RuntimePlugin<PluginSchema, PluginExtQueryArgs, PluginExtClientMembers, PluginExtResult> & {
2344
+ result?: ExtResultInferenceArgs<Schema, _R>;
2345
+ }): ClientContract<Schema, Options, ExtQueryArgs & PluginExtQueryArgs, ExtClientMembers & PluginExtClientMembers, ExtResult & PluginExtResult>;
2185
2346
  /**
2186
- * Returns a new client with the specified plugin removed.
2347
+ * Returns a new client with the specified plugin removed. The original client remains unchanged.
2187
2348
  */
2188
- $unuse(pluginId: string): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>;
2349
+ $unuse(pluginId: string): ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>;
2189
2350
  /**
2190
- * Returns a new client with all plugins removed.
2351
+ * Returns a new client with all plugins removed. The original client remains unchanged.
2191
2352
  */
2192
2353
  $unuseAll(): ClientContract<Schema, Options>;
2193
2354
  /**
@@ -2210,14 +2371,14 @@ type ClientContract<Schema extends SchemaDef, Options extends ClientOptions<Sche
2210
2371
  /**
2211
2372
  * Returns diagnostics information such as cache and slow query statistics.
2212
2373
  */
2213
- $diagnostics(): Promise<Diagnostics>;
2374
+ get $diagnostics(): Promise<Diagnostics>;
2214
2375
  } & {
2215
- [Key in GetSlicedModels<Schema, Options> as Uncapitalize<Key>]: ModelOperations<Schema, Key, Options, ExtQueryArgs>;
2376
+ [Key in GetSlicedModels<Schema, Options> as Uncapitalize<Key>]: ModelOperations<Schema, Key, Options, ExtQueryArgs, ExtResult>;
2216
2377
  } & ProcedureOperations<Schema, Options> & ExtClientMembers;
2217
2378
  /**
2218
2379
  * The contract for a client in a transaction.
2219
2380
  */
2220
- type TransactionClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends ExtClientMembersBase> = Omit<ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers>, TransactionUnsupportedMethods>;
2381
+ type TransactionClientContract<Schema extends SchemaDef, Options extends ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtClientMembers extends ExtClientMembersBase, ExtResult extends ExtResultBase<Schema> = {}> = Omit<ClientContract<Schema, Options, ExtQueryArgs, ExtClientMembers, ExtResult>, TransactionUnsupportedMethods>;
2221
2382
  type ProcedureOperations<Schema extends SchemaDef, Options extends ClientOptions<Schema> = ClientOptions<Schema>> = Schema['procedures'] extends Record<string, ProcedureDef> ? {
2222
2383
  /**
2223
2384
  * Custom procedures.
@@ -2250,8 +2411,8 @@ type CRUD_EXT = CRUD | 'post-update';
2250
2411
  declare const CRUD_EXT: readonly ["create", "read", "update", "delete", "post-update"];
2251
2412
  type SliceOperations<T extends Record<string, unknown>, Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema>> = Omit<{
2252
2413
  [Key in keyof T as Key extends GetSlicedOperations<Schema, Model, Options> ? Key : never]: T[Key];
2253
- }, IsDelegateModel<Schema, Model> extends true ? OperationsIneligibleForDelegateModels : never>;
2254
- type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase> = CommonModelOperations<Schema, Model, Options, ExtQueryArgs> & (Schema['provider']['type'] extends 'mysql' ? {} : {
2414
+ }, ModelAllowsCreate<Schema, Model> extends true ? never : OperationsRequiringCreate>;
2415
+ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtResult extends ExtResultBase<Schema> = {}> = CommonModelOperations<Schema, Model, Options, ExtQueryArgs, ExtResult> & (Schema['provider']['type'] extends 'mysql' ? {} : {
2255
2416
  /**
2256
2417
  * Creates multiple entities and returns them.
2257
2418
  * @param args - create args. See {@link createMany} for input. Use
@@ -2270,7 +2431,7 @@ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema
2270
2431
  * });
2271
2432
  * ```
2272
2433
  */
2273
- createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2434
+ createManyAndReturn<T extends CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, CreateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2274
2435
  /**
2275
2436
  * Updates multiple entities and returns them.
2276
2437
  * @param args - update args. Only scalar fields are allowed for data.
@@ -2293,9 +2454,9 @@ type AllModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema
2293
2454
  * });
2294
2455
  * ```
2295
2456
  */
2296
- updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2457
+ updateManyAndReturn<T extends UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: Subset<T, UpdateManyAndReturnArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2297
2458
  });
2298
- type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase> = {
2459
+ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends QueryOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase, ExtResult extends ExtResultBase<Schema> = {}> = {
2299
2460
  /**
2300
2461
  * Returns a list of entities.
2301
2462
  * @param args - query args
@@ -2377,35 +2538,35 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2377
2538
  * }); // result: `{ _count: { posts: number } }`
2378
2539
  * ```
2379
2540
  */
2380
- findMany<T extends FindManyArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>[]>;
2541
+ findMany<T extends FindManyArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindManyArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>[]>;
2381
2542
  /**
2382
2543
  * Returns a uniquely identified entity.
2383
2544
  * @param args - query args
2384
2545
  * @returns a single entity or null if not found
2385
2546
  * @see {@link findMany}
2386
2547
  */
2387
- findUnique<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options> | null>;
2548
+ findUnique<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
2388
2549
  /**
2389
2550
  * Returns a uniquely identified entity or throws `NotFoundError` if not found.
2390
2551
  * @param args - query args
2391
2552
  * @returns a single entity
2392
2553
  * @see {@link findMany}
2393
2554
  */
2394
- findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2555
+ findUniqueOrThrow<T extends FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, FindUniqueArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2395
2556
  /**
2396
2557
  * Returns the first entity.
2397
2558
  * @param args - query args
2398
2559
  * @returns a single entity or null if not found
2399
2560
  * @see {@link findMany}
2400
2561
  */
2401
- findFirst<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options> | null>;
2562
+ findFirst<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult> | null>;
2402
2563
  /**
2403
2564
  * Returns the first entity or throws `NotFoundError` if not found.
2404
2565
  * @param args - query args
2405
2566
  * @returns a single entity
2406
2567
  * @see {@link findMany}
2407
2568
  */
2408
- findFirstOrThrow<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2569
+ findFirstOrThrow<T extends FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args?: SelectSubset<T, FindFirstArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2409
2570
  /**
2410
2571
  * Creates a new entity.
2411
2572
  * @param args - create args
@@ -2458,7 +2619,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2458
2619
  * });
2459
2620
  * ```
2460
2621
  */
2461
- create<T extends CreateArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, CreateArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2622
+ create<T extends CreateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, CreateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2462
2623
  /**
2463
2624
  * Creates multiple entities. Only scalar fields are allowed.
2464
2625
  * @param args - create args
@@ -2602,7 +2763,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2602
2763
  * });
2603
2764
  * ```
2604
2765
  */
2605
- update<T extends UpdateArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, UpdateArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2766
+ update<T extends UpdateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, UpdateArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2606
2767
  /**
2607
2768
  * Updates multiple entities.
2608
2769
  * @param args - update args. Only scalar fields are allowed for data.
@@ -2644,7 +2805,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2644
2805
  * });
2645
2806
  * ```
2646
2807
  */
2647
- upsert<T extends UpsertArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, UpsertArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2808
+ upsert<T extends UpsertArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, UpsertArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2648
2809
  /**
2649
2810
  * Deletes a uniquely identifiable entity.
2650
2811
  * @param args - delete args
@@ -2664,7 +2825,7 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2664
2825
  * }); // result: `{ id: string; email: string }`
2665
2826
  * ```
2666
2827
  */
2667
- delete<T extends DeleteArgs<Schema, Model, Options, ExtQueryArgs>>(args: SelectSubset<T, DeleteArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options>>;
2828
+ delete<T extends DeleteArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>(args: SelectSubset<T, DeleteArgs<Schema, Model, Options, ExtQueryArgs, ExtResult>>): ZenStackPromise<Schema, SimplifiedPlainResult<Schema, Model, T, Options, ExtResult>>;
2668
2829
  /**
2669
2830
  * Deletes multiple entities.
2670
2831
  * @param args - delete args
@@ -2775,8 +2936,8 @@ type CommonModelOperations<Schema extends SchemaDef, Model extends GetModels<Sch
2775
2936
  */
2776
2937
  exists<T extends ExistsArgs<Schema, Model, Options, ExtQueryArgs>>(args?: Subset<T, ExistsArgs<Schema, Model, Options, ExtQueryArgs>>): ZenStackPromise<Schema, boolean>;
2777
2938
  };
2778
- type OperationsIneligibleForDelegateModels = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert';
2779
- type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}> = SliceOperations<AllModelOperations<Schema, Model, Options, ExtQueryArgs>, Schema, Model, Options>;
2939
+ type OperationsRequiringCreate = 'create' | 'createMany' | 'createManyAndReturn' | 'upsert';
2940
+ type ModelOperations<Schema extends SchemaDef, Model extends GetModels<Schema>, Options extends ClientOptions<Schema> = ClientOptions<Schema>, ExtQueryArgs extends ExtQueryArgsBase = {}, ExtResult extends ExtResultBase<Schema> = {}> = SliceOperations<AllModelOperations<Schema, Model, Options, ExtQueryArgs, ExtResult>, Schema, Model, Options>;
2780
2941
  /**
2781
2942
  * Type for auth context that includes both scalar and relation fields.
2782
2943
  * Relations are recursively included to allow nested auth data like { user: { profile: { ... } } }
@@ -2815,6 +2976,10 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2815
2976
  constructor(client: ClientContract<Schema, Options, ExtQueryArgs, any>);
2816
2977
  constructor(schema: Schema, options?: Options);
2817
2978
  private get plugins();
2979
+ /**
2980
+ * Returns model field entries, excluding Unsupported fields.
2981
+ */
2982
+ private getModelFields;
2818
2983
  private shouldIncludeRelations;
2819
2984
  private nextOptions;
2820
2985
  private getCache;
@@ -2852,6 +3017,7 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2852
3017
  private makeCountSelectionSchema;
2853
3018
  private makeRelationSelectIncludeSchema;
2854
3019
  private makeOmitSchema;
3020
+ private addExtResultFields;
2855
3021
  private makeIncludeSchema;
2856
3022
  private makeOrderBySchema;
2857
3023
  private makeDistinctSchema;
@@ -2912,10 +3078,7 @@ declare class ZodSchemaFactory<Schema extends SchemaDef, Options extends ClientO
2912
3078
  */
2913
3079
  private trimFilterOperators;
2914
3080
  private createUnionFilterSchema;
2915
- /**
2916
- * Checks if a model is included in the slicing configuration.
2917
- * Returns true if the model is allowed, false if it's excluded.
2918
- */
3081
+ private canCreateModel;
2919
3082
  private isModelAllowed;
2920
3083
  }
2921
3084
 
@@ -3016,13 +3179,18 @@ declare function requireTypeDef(schema: SchemaDef, type: string): _zenstackhq_sc
3016
3179
  declare function getField(schema: SchemaDef, model: string, field: string): FieldDef | undefined;
3017
3180
  declare function requireField(schema: SchemaDef, modelOrType: string, field: string): FieldDef;
3018
3181
  /**
3019
- * Gets all model fields, by default non-relation, non-computed, non-inherited fields only.
3182
+ * Gets all model fields, by default non-relation, non-computed, non-inherited, non-unsupported fields only.
3020
3183
  */
3021
3184
  declare function getModelFields(schema: SchemaDef, model: string, options?: {
3022
3185
  relations?: boolean;
3023
3186
  computed?: boolean;
3024
3187
  inherited?: boolean;
3188
+ unsupported?: boolean;
3025
3189
  }): FieldDef[];
3190
+ /**
3191
+ * Checks if a field is of `Unsupported` type.
3192
+ */
3193
+ declare function isUnsupportedField(fieldDef: FieldDef): boolean;
3026
3194
  declare function getIdFields<Schema extends SchemaDef>(schema: SchemaDef, model: GetModels<Schema>): readonly string[] | undefined;
3027
3195
  declare function requireIdFields(schema: SchemaDef, model: string): readonly string[];
3028
3196
  declare function getRelationForeignKeyFieldPairs(schema: SchemaDef, model: string, relationField: string): {
@@ -3124,6 +3292,7 @@ declare const queryUtils_isInheritedField: typeof isInheritedField;
3124
3292
  declare const queryUtils_isRelationField: typeof isRelationField;
3125
3293
  declare const queryUtils_isScalarField: typeof isScalarField;
3126
3294
  declare const queryUtils_isTypeDef: typeof isTypeDef;
3295
+ declare const queryUtils_isUnsupportedField: typeof isUnsupportedField;
3127
3296
  declare const queryUtils_makeDefaultOrderBy: typeof makeDefaultOrderBy;
3128
3297
  declare const queryUtils_requireField: typeof requireField;
3129
3298
  declare const queryUtils_requireIdFields: typeof requireIdFields;
@@ -3132,7 +3301,7 @@ declare const queryUtils_requireTypeDef: typeof requireTypeDef;
3132
3301
  declare const queryUtils_stripAlias: typeof stripAlias;
3133
3302
  declare const queryUtils_tmpAlias: typeof tmpAlias;
3134
3303
  declare namespace queryUtils {
3135
- export { queryUtils_TEMP_ALIAS_PREFIX as TEMP_ALIAS_PREFIX, queryUtils_aggregate as aggregate, queryUtils_buildJoinPairs as buildJoinPairs, queryUtils_ensureArray as ensureArray, queryUtils_extractFieldName as extractFieldName, queryUtils_extractIdFields as extractIdFields, queryUtils_extractModelName as extractModelName, queryUtils_fieldHasDefaultValue as fieldHasDefaultValue, queryUtils_flattenCompoundUniqueFilters as flattenCompoundUniqueFilters, queryUtils_getDelegateDescendantModels as getDelegateDescendantModels, queryUtils_getDiscriminatorField as getDiscriminatorField, queryUtils_getEnum as getEnum, queryUtils_getField as getField, queryUtils_getIdFields as getIdFields, queryUtils_getIdValues as getIdValues, queryUtils_getManyToManyRelation as getManyToManyRelation, queryUtils_getModel as getModel, queryUtils_getModelFields as getModelFields, queryUtils_getRelationForeignKeyFieldPairs as getRelationForeignKeyFieldPairs, queryUtils_getTypeDef as getTypeDef, queryUtils_getUniqueFields as getUniqueFields, queryUtils_hasModel as hasModel, queryUtils_isEnum as isEnum, queryUtils_isForeignKeyField as isForeignKeyField, queryUtils_isInheritedField as isInheritedField, queryUtils_isRelationField as isRelationField, queryUtils_isScalarField as isScalarField, queryUtils_isTypeDef as isTypeDef, queryUtils_makeDefaultOrderBy as makeDefaultOrderBy, queryUtils_requireField as requireField, queryUtils_requireIdFields as requireIdFields, queryUtils_requireModel as requireModel, queryUtils_requireTypeDef as requireTypeDef, queryUtils_stripAlias as stripAlias, queryUtils_tmpAlias as tmpAlias };
3304
+ export { queryUtils_TEMP_ALIAS_PREFIX as TEMP_ALIAS_PREFIX, queryUtils_aggregate as aggregate, queryUtils_buildJoinPairs as buildJoinPairs, queryUtils_ensureArray as ensureArray, queryUtils_extractFieldName as extractFieldName, queryUtils_extractIdFields as extractIdFields, queryUtils_extractModelName as extractModelName, queryUtils_fieldHasDefaultValue as fieldHasDefaultValue, queryUtils_flattenCompoundUniqueFilters as flattenCompoundUniqueFilters, queryUtils_getDelegateDescendantModels as getDelegateDescendantModels, queryUtils_getDiscriminatorField as getDiscriminatorField, queryUtils_getEnum as getEnum, queryUtils_getField as getField, queryUtils_getIdFields as getIdFields, queryUtils_getIdValues as getIdValues, queryUtils_getManyToManyRelation as getManyToManyRelation, queryUtils_getModel as getModel, queryUtils_getModelFields as getModelFields, queryUtils_getRelationForeignKeyFieldPairs as getRelationForeignKeyFieldPairs, queryUtils_getTypeDef as getTypeDef, queryUtils_getUniqueFields as getUniqueFields, queryUtils_hasModel as hasModel, queryUtils_isEnum as isEnum, queryUtils_isForeignKeyField as isForeignKeyField, queryUtils_isInheritedField as isInheritedField, queryUtils_isRelationField as isRelationField, queryUtils_isScalarField as isScalarField, queryUtils_isTypeDef as isTypeDef, queryUtils_isUnsupportedField as isUnsupportedField, queryUtils_makeDefaultOrderBy as makeDefaultOrderBy, queryUtils_requireField as requireField, queryUtils_requireIdFields as requireIdFields, queryUtils_requireModel as requireModel, queryUtils_requireTypeDef as requireTypeDef, queryUtils_stripAlias as stripAlias, queryUtils_tmpAlias as tmpAlias };
3136
3305
  }
3137
3306
 
3138
3307
  type VisitResult = void | {
@@ -3170,4 +3339,4 @@ declare namespace schemaUtils {
3170
3339
  export { schemaUtils_ExpressionVisitor as ExpressionVisitor, schemaUtils_MatchingExpressionVisitor as MatchingExpressionVisitor, type schemaUtils_VisitResult as VisitResult };
3171
3340
  }
3172
3341
 
3173
- export { type AfterEntityMutationCallback, type AggregateArgs, type AggregateResult, AllCrudOperations, type AllModelOperations, AllReadOperations, AnyNull, AnyNullClass, type AnyPlugin, type AuthType, BaseCrudDialect, type BatchResult, type BeforeEntityMutationCallback, type BooleanFilter, type BytesFilter, CRUD, CRUD_EXT, type ClientConstructor, type ClientContract, type ClientOptions, type ComputedFieldsOptions, CoreCreateOperations, CoreCrudOperations, CoreDeleteOperations, CoreReadOperations, CoreUpdateOperations, CoreWriteOperations, type CountArgs, type CountResult, type CreateArgs, type CreateInput, type CreateManyAndReturnArgs, type CreateManyArgs, type CreateManyInput, type DateTimeFilter, DbNull, DbNullClass, type DefaultModelResult, type DeleteArgs, type DeleteManyArgs, type EntityMutationHooksDef, type ExistsArgs, type ExtClientMembersBase, type ExtQueryArgsBase, type FilterKind, type FindArgs, type FindFirstArgs, type FindManyArgs, type FindUniqueArgs, type GetAllIncludedOperations, type GetIncludedOperations, type GetProcedure, type GetProcedureNames, type GetProcedureParams, type GetQueryOptions, type GetSlicedFilterKindsForField, type GetSlicedModels, type GetSlicedOperations, type GetSlicedProcedures, type GroupByArgs, type GroupByResult, type HasComputedFields, type HasProcedures, type IncludeInput, InputValidator, type JsonArray, type JsonFilter, JsonNull, JsonNullClass, type JsonNullValues, type JsonObject, type JsonValue, kyselyUtils as KyselyUtils, type ModelOperations, type ModelResult, type ModelSlicingOptions, type NullsOrder, type NumberFilter, ORMError, ORMErrorReason, type OmitConfig, type OmitInput, type OnKyselyQueryArgs, type OnKyselyQueryCallback, type OnProcedureHookContext, type OperationsIneligibleForDelegateModels, type OrderBy, type PluginAfterEntityMutationArgs, type PluginBeforeEntityMutationArgs, type ProcedureEnvelope, type ProcedureFunc, type ProcedureHandlerFunc, type ProcedureOperations, type ProceduresOptions, type ProceedKyselyQueryFunction, type QueryOptions, queryUtils as QueryUtils, RejectedByPolicyReason, type RuntimePlugin, schemaUtils as SchemaUtils, type SelectIncludeOmit, type SelectInput, type SelectSubset, type SimplifiedPlainResult, type SimplifiedResult, type SlicingOptions, type SortOrder, type StringFilter, type Subset, type ToKysely, type TransactionClientContract, TransactionIsolationLevel, type TypeDefResult, type TypedJsonFilter, type UpdateArgs, type UpdateInput, type UpdateManyAndReturnArgs, type UpdateManyArgs, type UpsertArgs, type WhereInput, type WhereUniqueInput, type ZModelFunction, type ZModelFunctionContext, ZenStackClient, type ZenStackPromise, createQuerySchemaFactory, definePlugin, getCrudDialect };
3342
+ export { type AfterEntityMutationCallback, type AggregateArgs, type AggregateResult, AllCrudOperations, type AllModelOperations, AllReadOperations, AnyNull, AnyNullClass, type AnyPlugin, type AuthType, BaseCrudDialect, type BatchResult, type BeforeEntityMutationCallback, type BooleanFilter, type BytesFilter, CRUD, CRUD_EXT, type ClientConstructor, type ClientContract, type ClientOptions, type ComputedFieldsOptions, CoreCreateOperations, CoreCrudOperations, CoreDeleteOperations, CoreReadOperations, CoreUpdateOperations, CoreWriteOperations, type CountArgs, type CountResult, type CreateArgs, type CreateInput, type CreateManyAndReturnArgs, type CreateManyArgs, type CreateManyInput, type DateTimeFilter, DbNull, DbNullClass, type DefaultModelResult, type DeleteArgs, type DeleteManyArgs, type EntityMutationHooksDef, type ExistsArgs, type ExtClientMembersBase, type ExtQueryArgsBase, type ExtResultBase, type ExtResultInferenceArgs, type ExtResultSelectOmitFields, type ExtractExtResult, type FilterKind, type FindArgs, type FindFirstArgs, type FindManyArgs, type FindUniqueArgs, type GetAllIncludedOperations, type GetIncludedOperations, type GetProcedure, type GetProcedureNames, type GetProcedureParams, type GetQueryOptions, type GetSlicedFilterKindsForField, type GetSlicedModels, type GetSlicedOperations, type GetSlicedProcedures, type GroupByArgs, type GroupByResult, type HasComputedFields, type HasProcedures, type IncludeInput, InputValidator, type JsonArray, type JsonFilter, JsonNull, JsonNullClass, type JsonNullValues, type JsonObject, type JsonValue, kyselyUtils as KyselyUtils, type MapModelFieldType, type ModelAllowsCreate, type ModelHasRequiredUnsupportedField, type ModelOperations, type ModelResult, type ModelSlicingOptions, type NullsOrder, type NumberFilter, ORMError, ORMErrorReason, type OmitConfig, type OmitInput, type OnKyselyQueryArgs, type OnKyselyQueryCallback, type OnProcedureHookContext, type OperationsRequiringCreate, type OrderBy, type PluginAfterEntityMutationArgs, type PluginBeforeEntityMutationArgs, type ProcedureEnvelope, type ProcedureFunc, type ProcedureHandlerFunc, type ProcedureOperations, type ProceduresOptions, type ProceedKyselyQueryFunction, type QueryOptions, queryUtils as QueryUtils, RejectedByPolicyReason, type RuntimePlugin, schemaUtils as SchemaUtils, type SelectAwareExtResult, type SelectIncludeOmit, type SelectInput, type SelectSubset, type SimplifiedPlainResult, type SimplifiedResult, type SlicingOptions, type SortOrder, type StringFilter, type Subset, type ToKysely, type TransactionClientContract, TransactionIsolationLevel, type TypeDefResult, type TypedJsonFilter, type UpdateArgs, type UpdateInput, type UpdateManyAndReturnArgs, type UpdateManyArgs, type UpsertArgs, type WhereInput, type WhereUniqueInput, type ZModelFunction, type ZModelFunctionContext, ZenStackClient, type ZenStackPromise, createQuerySchemaFactory, definePlugin, getCrudDialect };