import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { AppointmentFileWhereInputObjectSchema as AppointmentFileWhereInputObjectSchema } from './objects/AppointmentFileWhereInput.schema';
import { AppointmentFileOrderByWithAggregationInputObjectSchema as AppointmentFileOrderByWithAggregationInputObjectSchema } from './objects/AppointmentFileOrderByWithAggregationInput.schema';
import { AppointmentFileScalarWhereWithAggregatesInputObjectSchema as AppointmentFileScalarWhereWithAggregatesInputObjectSchema } from './objects/AppointmentFileScalarWhereWithAggregatesInput.schema';
import { AppointmentFileScalarFieldEnumSchema } from './enums/AppointmentFileScalarFieldEnum.schema';
import { AppointmentFileCountAggregateInputObjectSchema as AppointmentFileCountAggregateInputObjectSchema } from './objects/AppointmentFileCountAggregateInput.schema';
import { AppointmentFileMinAggregateInputObjectSchema as AppointmentFileMinAggregateInputObjectSchema } from './objects/AppointmentFileMinAggregateInput.schema';
import { AppointmentFileMaxAggregateInputObjectSchema as AppointmentFileMaxAggregateInputObjectSchema } from './objects/AppointmentFileMaxAggregateInput.schema';
import { AppointmentFileAvgAggregateInputObjectSchema as AppointmentFileAvgAggregateInputObjectSchema } from './objects/AppointmentFileAvgAggregateInput.schema';
import { AppointmentFileSumAggregateInputObjectSchema as AppointmentFileSumAggregateInputObjectSchema } from './objects/AppointmentFileSumAggregateInput.schema';

export const AppointmentFileGroupBySchema: z.ZodType<Prisma.AppointmentFileGroupByArgs> = z.object({ where: AppointmentFileWhereInputObjectSchema.optional(), orderBy: z.union([AppointmentFileOrderByWithAggregationInputObjectSchema, AppointmentFileOrderByWithAggregationInputObjectSchema.array()]).optional(), having: AppointmentFileScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(AppointmentFileScalarFieldEnumSchema), _count: z.union([ z.literal(true), AppointmentFileCountAggregateInputObjectSchema ]).optional(), _min: AppointmentFileMinAggregateInputObjectSchema.optional(), _max: AppointmentFileMaxAggregateInputObjectSchema.optional(), _avg: AppointmentFileAvgAggregateInputObjectSchema.optional(), _sum: AppointmentFileSumAggregateInputObjectSchema.optional() }).strict() as unknown as z.ZodType<Prisma.AppointmentFileGroupByArgs>;

export const AppointmentFileGroupByZodSchema = z.object({ where: AppointmentFileWhereInputObjectSchema.optional(), orderBy: z.union([AppointmentFileOrderByWithAggregationInputObjectSchema, AppointmentFileOrderByWithAggregationInputObjectSchema.array()]).optional(), having: AppointmentFileScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(AppointmentFileScalarFieldEnumSchema), _count: z.union([ z.literal(true), AppointmentFileCountAggregateInputObjectSchema ]).optional(), _min: AppointmentFileMinAggregateInputObjectSchema.optional(), _max: AppointmentFileMaxAggregateInputObjectSchema.optional(), _avg: AppointmentFileAvgAggregateInputObjectSchema.optional(), _sum: AppointmentFileSumAggregateInputObjectSchema.optional() }).strict();