import { z } from 'zod';

/**
 * Cria factories zod para CPF e CNPJ. Como zod não usa mutation pattern
 * (diferente de joi/yup), passamos o namespace `z` e retornamos as
 * factories prontas pra usar.
 *
 * @param z - Namespace do zod (importado como `import { z } from 'zod'`).
 * @returns Objeto com `cpf(message?)` e `cnpj(message?)` retornando
 *   schemas zod de string.
 *
 * @example
 * ```ts
 * import { z } from 'zod'
 * import { zodValidator } from 'cpf-cnpj-validator/zod'
 *
 * const { cpf: zCpf, cnpj: zCnpj } = zodValidator(z)
 *
 * const User = z.object({
 *   cpf: zCpf(),
 *   cnpj: zCnpj('CNPJ é obrigatório e válido').optional()
 * })
 * ```
 */
declare function zodValidator(z: typeof z): {
    cpf: (message?: string) => z.ZodString;
    cnpj: (message?: string) => z.ZodString;
};

export { zodValidator };
