/** * Type utilities for select inference * @generated by @constructive-io/graphql-codegen * DO NOT EDIT - changes will be overwritten */ export interface ConnectionResult { nodes: T[]; totalCount: number; pageInfo: PageInfo; } export interface PageInfo { hasNextPage: boolean; hasPreviousPage: boolean; startCursor?: string | null; endCursor?: string | null; } export interface FindManyArgs { select?: TSelect; where?: TWhere; orderBy?: TOrderBy[]; first?: number; last?: number; after?: string; before?: string; offset?: number; } export interface FindFirstArgs { select?: TSelect; where?: TWhere; orderBy?: TOrderBy[]; } export interface CreateArgs { data: TData; select?: TSelect; } export interface UpdateArgs { where: TWhere; data: TData; select?: TSelect; } export type FindOneArgs = { select?: TSelect; } & Record; export interface DeleteArgs { where: TWhere; select?: TSelect; } export interface BulkInsertArgs { data: TData[]; select?: TSelect; onConflict?: TOnConflict; } export interface BulkUpsertArgs { data: TData[]; select?: TSelect; onConflict: TOnConflict; } export interface BulkUpdateArgs { where: TWhere; data: TData; select?: TSelect; } export interface BulkDeleteArgs { where: TWhere; select?: TSelect; } export interface BulkMutationResult { affectedCount: number; returning: T[]; } type DepthLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10; type DecrementDepth = { 0: 0; 1: 0; 2: 1; 3: 2; 4: 3; 5: 4; 6: 5; 7: 6; 8: 7; 9: 8; 10: 9; }; /** * Recursively validates select objects, rejecting unknown keys. * * NOTE: Depth is intentionally capped to avoid circular-instantiation issues * in very large cyclic schemas. */ export type DeepExact = Depth extends 0 ? T extends Shape ? T : never : T extends Shape ? Exclude extends never ? { [K in keyof T]: K extends keyof Shape ? T[K] extends { select: infer NS; } ? Extract extends { select?: infer ShapeNS; } ? DeepExact & { select: DeepExact, DecrementDepth[Depth]>; }, Extract, DecrementDepth[Depth]> : never : T[K] : never; } : never : never; /** * Enforces exact select shape while keeping contextual typing on `S extends XxxSelect`. * Use this as an intersection in overloads: * `{ select: S } & StrictSelect`. */ export type StrictSelect = S extends DeepExact ? {} : never; /** * Hook-optimized strict select variant. * * Uses a shallower recursion depth to keep editor autocomplete responsive * in large schemas while still validating common nested-select mistakes. */ export type HookStrictSelect = S extends DeepExact ? {} : never; /** * Infer result type from select configuration */ export type InferSelectResult = TSelect extends undefined ? TEntity : { [K in keyof TSelect as TSelect[K] extends false | undefined ? never : K]: TSelect[K] extends true ? K extends keyof TEntity ? TEntity[K] : never : TSelect[K] extends { select: infer NestedSelect; } ? K extends keyof TEntity ? NonNullable extends ConnectionResult ? ConnectionResult> : InferSelectResult, NestedSelect> | (null extends TEntity[K] ? null : never) : never : K extends keyof TEntity ? TEntity[K] : never; }; export {};