import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { NpiProviderIncludeObjectSchema as NpiProviderIncludeObjectSchema } from './objects/NpiProviderInclude.schema';
import { NpiProviderOrderByWithRelationInputObjectSchema as NpiProviderOrderByWithRelationInputObjectSchema } from './objects/NpiProviderOrderByWithRelationInput.schema';
import { NpiProviderWhereInputObjectSchema as NpiProviderWhereInputObjectSchema } from './objects/NpiProviderWhereInput.schema';
import { NpiProviderWhereUniqueInputObjectSchema as NpiProviderWhereUniqueInputObjectSchema } from './objects/NpiProviderWhereUniqueInput.schema';
import { NpiProviderScalarFieldEnumSchema } from './enums/NpiProviderScalarFieldEnum.schema';

// Select schema needs to be in file to prevent circular imports
//------------------------------------------------------

export const NpiProviderFindFirstOrThrowSelectSchema: z.ZodType<Prisma.NpiProviderSelect> = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    npiNumber: z.boolean().optional(),
    providerName: z.boolean().optional(),
    sortOrder: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    user: z.boolean().optional(),
    claims: z.boolean().optional(),
    payments: z.boolean().optional(),
    commissionBatches: z.boolean().optional(),
    appointmentProcedures: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.NpiProviderSelect>;

export const NpiProviderFindFirstOrThrowSelectZodSchema = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    npiNumber: z.boolean().optional(),
    providerName: z.boolean().optional(),
    sortOrder: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    user: z.boolean().optional(),
    claims: z.boolean().optional(),
    payments: z.boolean().optional(),
    commissionBatches: z.boolean().optional(),
    appointmentProcedures: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const NpiProviderFindFirstOrThrowSchema: z.ZodType<Prisma.NpiProviderFindFirstOrThrowArgs> = z.object({ select: NpiProviderFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => NpiProviderIncludeObjectSchema.optional()), orderBy: z.union([NpiProviderOrderByWithRelationInputObjectSchema, NpiProviderOrderByWithRelationInputObjectSchema.array()]).optional(), where: NpiProviderWhereInputObjectSchema.optional(), cursor: NpiProviderWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([NpiProviderScalarFieldEnumSchema, NpiProviderScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.NpiProviderFindFirstOrThrowArgs>;

export const NpiProviderFindFirstOrThrowZodSchema = z.object({ select: NpiProviderFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => NpiProviderIncludeObjectSchema.optional()), orderBy: z.union([NpiProviderOrderByWithRelationInputObjectSchema, NpiProviderOrderByWithRelationInputObjectSchema.array()]).optional(), where: NpiProviderWhereInputObjectSchema.optional(), cursor: NpiProviderWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([NpiProviderScalarFieldEnumSchema, NpiProviderScalarFieldEnumSchema.array()]).optional() }).strict();