import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { PatientDocumentWhereInputObjectSchema as PatientDocumentWhereInputObjectSchema } from './objects/PatientDocumentWhereInput.schema';
import { PatientDocumentOrderByWithAggregationInputObjectSchema as PatientDocumentOrderByWithAggregationInputObjectSchema } from './objects/PatientDocumentOrderByWithAggregationInput.schema';
import { PatientDocumentScalarWhereWithAggregatesInputObjectSchema as PatientDocumentScalarWhereWithAggregatesInputObjectSchema } from './objects/PatientDocumentScalarWhereWithAggregatesInput.schema';
import { PatientDocumentScalarFieldEnumSchema } from './enums/PatientDocumentScalarFieldEnum.schema';
import { PatientDocumentCountAggregateInputObjectSchema as PatientDocumentCountAggregateInputObjectSchema } from './objects/PatientDocumentCountAggregateInput.schema';
import { PatientDocumentMinAggregateInputObjectSchema as PatientDocumentMinAggregateInputObjectSchema } from './objects/PatientDocumentMinAggregateInput.schema';
import { PatientDocumentMaxAggregateInputObjectSchema as PatientDocumentMaxAggregateInputObjectSchema } from './objects/PatientDocumentMaxAggregateInput.schema';
import { PatientDocumentAvgAggregateInputObjectSchema as PatientDocumentAvgAggregateInputObjectSchema } from './objects/PatientDocumentAvgAggregateInput.schema';
import { PatientDocumentSumAggregateInputObjectSchema as PatientDocumentSumAggregateInputObjectSchema } from './objects/PatientDocumentSumAggregateInput.schema';

export const PatientDocumentGroupBySchema: z.ZodType<Prisma.PatientDocumentGroupByArgs> = z.object({ where: PatientDocumentWhereInputObjectSchema.optional(), orderBy: z.union([PatientDocumentOrderByWithAggregationInputObjectSchema, PatientDocumentOrderByWithAggregationInputObjectSchema.array()]).optional(), having: PatientDocumentScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(PatientDocumentScalarFieldEnumSchema), _count: z.union([ z.literal(true), PatientDocumentCountAggregateInputObjectSchema ]).optional(), _min: PatientDocumentMinAggregateInputObjectSchema.optional(), _max: PatientDocumentMaxAggregateInputObjectSchema.optional(), _avg: PatientDocumentAvgAggregateInputObjectSchema.optional(), _sum: PatientDocumentSumAggregateInputObjectSchema.optional() }).strict() as unknown as z.ZodType<Prisma.PatientDocumentGroupByArgs>;

export const PatientDocumentGroupByZodSchema = z.object({ where: PatientDocumentWhereInputObjectSchema.optional(), orderBy: z.union([PatientDocumentOrderByWithAggregationInputObjectSchema, PatientDocumentOrderByWithAggregationInputObjectSchema.array()]).optional(), having: PatientDocumentScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(PatientDocumentScalarFieldEnumSchema), _count: z.union([ z.literal(true), PatientDocumentCountAggregateInputObjectSchema ]).optional(), _min: PatientDocumentMinAggregateInputObjectSchema.optional(), _max: PatientDocumentMaxAggregateInputObjectSchema.optional(), _avg: PatientDocumentAvgAggregateInputObjectSchema.optional(), _sum: PatientDocumentSumAggregateInputObjectSchema.optional() }).strict();