import { ValidationOptions } from 'class-validator';

/**
 * Decorator de propriedade que valida um CPF via class-validator.
 * Padrão idiomático em NestJS + DTOs.
 *
 * Requer `reflect-metadata` importado no bootstrap da aplicação e as
 * flags `experimentalDecorators` + `emitDecoratorMetadata` no tsconfig.
 *
 * @param options - `ValidationOptions` padrão do class-validator
 *   (message, each, groups, always, context).
 *
 * @example
 * ```ts
 * import 'reflect-metadata'
 * import { IsCPF } from 'cpf-cnpj-validator/class-validator'
 *
 * class UserDTO {
 *   @IsCPF({ message: 'CPF deve ser válido' })
 *   cpf!: string
 * }
 * ```
 */
declare function IsCPF(options?: ValidationOptions): PropertyDecorator;
/**
 * Decorator de propriedade que valida um CNPJ via class-validator.
 * Aceita tanto CNPJs numéricos legados quanto o novo formato
 * alfanumérico da Nota Técnica RFB 49/2024.
 *
 * Requer `reflect-metadata` importado no bootstrap da aplicação e as
 * flags `experimentalDecorators` + `emitDecoratorMetadata` no tsconfig.
 *
 * @param options - `ValidationOptions` padrão do class-validator.
 *
 * @example
 * ```ts
 * import 'reflect-metadata'
 * import { IsCNPJ } from 'cpf-cnpj-validator/class-validator'
 *
 * class CompanyDTO {
 *   @IsCNPJ()
 *   cnpj!: string  // aceita '12.ABC.345/01DE-35'
 * }
 * ```
 */
declare function IsCNPJ(options?: ValidationOptions): PropertyDecorator;

export { IsCNPJ, IsCPF };
