import type { Assume, Column } from 'drizzle-orm'; import type { z } from 'zod/v4'; import type { IsEnumDefined, IsNever, Json } from './utils.js'; type HasBaseColumn = TColumn extends { _: { baseColumn: Column | undefined; }; } ? IsNever extends false ? true : false : false; export type GetZodType> | true | undefined> = HasBaseColumn extends true ? z.ZodArray, TCoerce>> : TColumn['_']['columnType'] extends 'PgUUID' ? z.ZodUUID : IsEnumDefined extends true ? z.ZodEnum<{ [K in Assume[number]]: K; }> : TColumn['_']['columnType'] extends 'PgGeometry' | 'PgPointTuple' ? z.ZodTuple<[z.ZodNumber, z.ZodNumber], null> : TColumn['_']['columnType'] extends 'PgLine' ? z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null> : TColumn['_']['data'] extends Date ? CanCoerce extends true ? z.coerce.ZodCoercedDate : z.ZodDate : TColumn['_']['data'] extends Buffer ? z.ZodType : TColumn['_']['dataType'] extends 'array' ? z.ZodArray[number], '', TCoerce>> : TColumn['_']['data'] extends Record ? TColumn['_']['columnType'] extends 'PgJson' | 'PgJsonb' | 'MySqlJson' | 'SingleStoreJson' | 'SQLiteTextJson' | 'SQLiteBlobJson' ? z.ZodType : z.ZodObject<{ [K in keyof TColumn['_']['data']]: GetZodPrimitiveType; }, { out: {}; in: {}; }> : TColumn['_']['dataType'] extends 'json' ? z.ZodType : GetZodPrimitiveType; type CanCoerce> | true | undefined, TTo extends 'bigint' | 'boolean' | 'date' | 'number' | 'string'> = TCoerce extends true ? true : TCoerce extends Record ? TCoerce[TTo] extends true ? true : false : false; type GetZodPrimitiveType> | true | undefined> = TColumnType extends 'MySqlTinyInt' | 'SingleStoreTinyInt' | 'PgSmallInt' | 'PgSmallSerial' | 'MySqlSmallInt' | 'MySqlMediumInt' | 'SingleStoreSmallInt' | 'SingleStoreMediumInt' | 'PgInteger' | 'PgSerial' | 'MySqlInt' | 'SingleStoreInt' | 'PgBigInt53' | 'PgBigSerial53' | 'MySqlBigInt53' | 'MySqlSerial' | 'SingleStoreBigInt53' | 'SingleStoreSerial' | 'SQLiteInteger' | 'MySqlYear' | 'SingleStoreYear' ? CanCoerce extends true ? z.coerce.ZodCoercedNumber : z.ZodInt : TData extends number ? CanCoerce extends true ? z.coerce.ZodCoercedNumber : z.ZodNumber : TData extends bigint ? CanCoerce extends true ? z.coerce.ZodCoercedBigInt : z.ZodBigInt : TData extends boolean ? CanCoerce extends true ? z.coerce.ZodCoercedBoolean : z.ZodBoolean : TData extends string ? CanCoerce extends true ? z.coerce.ZodCoercedString : z.ZodString : z.ZodType; type HandleSelectColumn = TColumn['_']['notNull'] extends true ? TSchema : z.ZodNullable; type HandleInsertColumn = TColumn['_']['notNull'] extends true ? TColumn['_']['hasDefault'] extends true ? z.ZodOptional : TSchema : z.ZodOptional>; type HandleUpdateColumn = TColumn['_']['notNull'] extends true ? z.ZodOptional : z.ZodOptional>; export type HandleColumn> | true | undefined> = TType extends 'select' ? HandleSelectColumn, TColumn> : TType extends 'insert' ? HandleInsertColumn, TColumn> : TType extends 'update' ? HandleUpdateColumn, TColumn> : GetZodType; export {};