import { z } from '@strapi/utils';
interface FormattedZodError {
    path: string[];
    message: string;
    name: 'ValidationError';
    value: undefined;
}
interface FormattedZodErrors {
    errors: FormattedZodError[];
    message: string;
}
/**
 * Transforms a ZodError into the same shape as formatYupErrors from @strapi/utils.
 * Only keeps the first error per path to match Yup behavior.
 */
declare const formatZodErrors: (zodError: z.ZodError) => FormattedZodErrors;
/**
 * Zod schema for Strapi entity IDs.
 * Matches the StrapiIDSchema from @strapi/utils/yup:
 * accepts strings or non-negative integers.
 */
declare const strapiID: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
/**
 * Async Zod validator matching the signature of validateYupSchema from @strapi/utils.
 *
 * Usage:
 *   const validate = validateZodAsync(mySchema);
 *   const data = await validate(body);            // throws ValidationError on failure
 *   const data = await validate(body, 'Custom');  // throws with custom message
 */
declare const validateZodAsync: <T extends z.Schema>(schema: T) => (data: unknown, errorMessage?: string) => Promise<z.infer<T>>;
export { formatZodErrors, strapiID, validateZodAsync };
export type { FormattedZodError, FormattedZodErrors };
//# sourceMappingURL=zod.d.ts.map