import { z, ZodTypeAny, RawCreateParams } from 'zod';
import { ChainedConfig, JSONPrimitive, JSONValue } from './types';
export declare function arrayOrNot<T extends ZodTypeAny>(schema: T, params?: RawCreateParams): z.ZodUnion<[z.ZodArray<T, "many">, T]>;
export declare function chained<Config, Utils = unknown>(config: z.ZodType<Config>, utils?: z.ZodType<Utils>, params?: RawCreateParams): z.ZodType<ChainedConfig<Config, Utils>>;
export declare const primitive: () => z.ZodType<JSONPrimitive, z.ZodTypeDef, JSONPrimitive>;
export declare const json: () => z.ZodType<JSONValue, z.ZodTypeDef, JSONValue>;
export declare const partialObj: <T extends z.ZodRawShape>(src: T) => z.ZodObject<{ [k in keyof T]: z.ZodOptional<T[k]>; }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<{ [k in keyof T]: z.ZodOptional<T[k]>; } extends infer T_2 extends z.ZodRawShape ? { [k_2 in keyof T_2]: { [k in keyof T]: z.ZodOptional<T[k]>; }[k_2]["_output"]; } : never> extends infer T_1 extends object ? { [k_1 in keyof T_1]: z.objectUtil.addQuestionMarks<{ [k in keyof T]: z.ZodOptional<T[k]>; } extends infer T_2 extends z.ZodRawShape ? { [k_2 in keyof T_2]: { [k in keyof T]: z.ZodOptional<T[k]>; }[k_2]["_output"]; } : never>[k_1]; } : never, z.objectUtil.addQuestionMarks<{ [k in keyof T]: z.ZodOptional<T[k]>; } extends infer T_4 extends z.ZodRawShape ? { [k_4 in keyof T_4]: { [k in keyof T]: z.ZodOptional<T[k]>; }[k_4]["_input"]; } : never> extends infer T_3 extends object ? { [k_3 in keyof T_3]: z.objectUtil.addQuestionMarks<{ [k in keyof T]: z.ZodOptional<T[k]>; } extends infer T_4 extends z.ZodRawShape ? { [k_4 in keyof T_4]: { [k in keyof T]: z.ZodOptional<T[k]>; }[k_4]["_input"]; } : never>[k_3]; } : never>;
export declare const anyFunction: () => z.ZodFunction<any, any>;
export type Literal = string | number | boolean | null | undefined;
export declare const unionLiterals: <T extends Literal[]>(literals: [...T]) => z.ZodType<T[number], z.ZodTypeDef, T[number]>;
export declare const literals: <T extends Literal[]>(literals: [...T]) => z.ZodType<T[number], z.ZodTypeDef, T[number]>;
export * from 'zod';
export * from 'zod-validation-error';
