import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { ClaimWhereInputObjectSchema as ClaimWhereInputObjectSchema } from './objects/ClaimWhereInput.schema';
import { ClaimOrderByWithAggregationInputObjectSchema as ClaimOrderByWithAggregationInputObjectSchema } from './objects/ClaimOrderByWithAggregationInput.schema';
import { ClaimScalarWhereWithAggregatesInputObjectSchema as ClaimScalarWhereWithAggregatesInputObjectSchema } from './objects/ClaimScalarWhereWithAggregatesInput.schema';
import { ClaimScalarFieldEnumSchema } from './enums/ClaimScalarFieldEnum.schema';
import { ClaimCountAggregateInputObjectSchema as ClaimCountAggregateInputObjectSchema } from './objects/ClaimCountAggregateInput.schema';
import { ClaimMinAggregateInputObjectSchema as ClaimMinAggregateInputObjectSchema } from './objects/ClaimMinAggregateInput.schema';
import { ClaimMaxAggregateInputObjectSchema as ClaimMaxAggregateInputObjectSchema } from './objects/ClaimMaxAggregateInput.schema';
import { ClaimAvgAggregateInputObjectSchema as ClaimAvgAggregateInputObjectSchema } from './objects/ClaimAvgAggregateInput.schema';
import { ClaimSumAggregateInputObjectSchema as ClaimSumAggregateInputObjectSchema } from './objects/ClaimSumAggregateInput.schema';

export const ClaimGroupBySchema: z.ZodType<Prisma.ClaimGroupByArgs> = z.object({ where: ClaimWhereInputObjectSchema.optional(), orderBy: z.union([ClaimOrderByWithAggregationInputObjectSchema, ClaimOrderByWithAggregationInputObjectSchema.array()]).optional(), having: ClaimScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(ClaimScalarFieldEnumSchema), _count: z.union([ z.literal(true), ClaimCountAggregateInputObjectSchema ]).optional(), _min: ClaimMinAggregateInputObjectSchema.optional(), _max: ClaimMaxAggregateInputObjectSchema.optional(), _avg: ClaimAvgAggregateInputObjectSchema.optional(), _sum: ClaimSumAggregateInputObjectSchema.optional() }).strict() as unknown as z.ZodType<Prisma.ClaimGroupByArgs>;

export const ClaimGroupByZodSchema = z.object({ where: ClaimWhereInputObjectSchema.optional(), orderBy: z.union([ClaimOrderByWithAggregationInputObjectSchema, ClaimOrderByWithAggregationInputObjectSchema.array()]).optional(), having: ClaimScalarWhereWithAggregatesInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), by: z.array(ClaimScalarFieldEnumSchema), _count: z.union([ z.literal(true), ClaimCountAggregateInputObjectSchema ]).optional(), _min: ClaimMinAggregateInputObjectSchema.optional(), _max: ClaimMaxAggregateInputObjectSchema.optional(), _avg: ClaimAvgAggregateInputObjectSchema.optional(), _sum: ClaimSumAggregateInputObjectSchema.optional() }).strict();