import { ZodObject } from 'zod' import { AnyZodObject, objectInputType, objectOutputType, UnknownKeysParam, ZodEffects, ZodRawShape, ZodTypeAny } from 'zod/lib/types' import { addEffect } from './addEffect' export const mergeWithEffect = , Input = objectInputType>(a: ZodEffects>, b: Incoming) => { return addEffect(a.innerType().merge(b), a._def.effect) } export const mergeWithEffects = , aInput = objectInputType, bOutput extends { [x: string]: unknown } = objectOutputType, bInput extends { [x: string]: unknown } = objectInputType>(a: ZodEffects>, b: ZodEffects>) => { const base = a.innerType().merge(b.innerType()) return addEffect(addEffect(base, a._def.effect), b._def.effect) }