import { z } from 'zod';
import { KebabCase } from '../../../../utils/nestjs-shared';
import { ObjectLiteral } from '../../../../types';
import { RelationPropsArray, RelationPropsTypeName, RelationPrimaryColumnType, TypeForId } from '../../types';
declare function getZodResultData<K extends string, P extends TypeForId, T extends true | false = false>(typeName: K, primaryType: P, isPatch: T): z.ZodOptional<z.ZodObject<{
    data: z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never> | z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>;
}, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
    data: z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never> | z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>;
}>, any> extends infer T_3 ? { [k_2 in keyof T_3]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
    data: z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never> | z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>;
}>, any>[k_2]; } : never, z.baseObjectInputType<{
    data: z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never> | z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>;
}> extends infer T_4 ? { [k_3 in keyof T_4]: z.baseObjectInputType<{
    data: z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never> | z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>;
}>[k_3]; } : never>>;
declare function getZodResultDataArray<K extends string, P extends TypeForId, T extends true | false = false>(typeName: K, primaryType: P, isPatch: T): z.ZodOptional<z.ZodObject<{
    data: z.ZodArray<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, "many"> | z.ZodArray<z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>, "many"> | z.ZodArray<z.ZodNullable<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>>, "atleastone"> | z.ZodArray<z.ZodEffects<z.ZodObject<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never>, "atleastone">;
}, "strip", z.ZodTypeAny, {
    data: (z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never)[] | ((z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never) | null)[] | [(z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never) | null, ...((z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never) | null)[]] | [z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never, ...(z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any> extends infer T_1 ? { [k in keyof T_1]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>, any>[k]; } : never)[]];
}, {
    data: (z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never)[] | ((z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never) | null)[] | [(z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never) | null, ...((z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never) | null)[]] | [z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never, ...(z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }> extends infer T_2 ? { [k_1 in keyof T_2]: z.baseObjectInputType<{
        id: z.ZodString;
        type: z.ZodLiteral<K>;
    }>[k_1]; } : never)[]];
}>>;
type ZodResultData<K extends string, P extends TypeForId, I extends boolean, T extends true | false = false> = I extends true ? ReturnType<typeof getZodResultDataArray<K, P, T>> : ReturnType<typeof getZodResultData<K, P, T>>;
export declare function zodRelationships<E extends ObjectLiteral, S extends true | false = false>(relationArrayProps: RelationPropsArray<E>, relationPopsName: RelationPropsTypeName<E>, primaryColumnType: RelationPrimaryColumnType<E>, isPatch: S): z.ZodEffects<z.ZodObject<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }, "strict", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>, any>[k]; } : never, z.baseObjectInputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>[k_1]; } : never>, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>, any>[k]; } : never, z.baseObjectInputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{ [K in keyof RelationPropsArray<E>]: ZodResultData<KebabCase<RelationPropsTypeName<E>[K]>, RelationPrimaryColumnType<E>[K], RelationPropsArray<E>[K], S>; }>[k_1]; } : never>;
export type ZodRelationships<T extends ObjectLiteral, K extends true | false = false> = ReturnType<typeof zodRelationships<T, K>>;
export type Relationships<T extends ObjectLiteral, K extends true | false = false> = z.infer<ZodRelationships<T, K>>;
export {};
