import { ValidatorFn } from '@angular/forms';

/**
 * Cria um `ValidatorFn` do Angular Reactive Forms que valida CPF.
 * Retorna `null` quando o valor é vazio (delegando a obrigatoriedade
 * ao `Validators.required`) ou quando o CPF é válido; retorna
 * `{ cpf: <valor> }` caso contrário.
 *
 * @example
 * ```ts
 * import { cpfValidator } from 'cpf-cnpj-validator/angular'
 *
 * new FormGroup({
 *   cpf: new FormControl('', [Validators.required, cpfValidator()])
 * })
 * ```
 */
declare const cpfValidator: () => ValidatorFn;
/**
 * Cria um `ValidatorFn` do Angular Reactive Forms que valida CNPJ,
 * aceitando tanto o formato numérico legado quanto o novo alfanumérico
 * da Nota Técnica RFB 49/2024.
 *
 * @example
 * ```ts
 * import { cnpjValidator } from 'cpf-cnpj-validator/angular'
 *
 * new FormControl('', [cnpjValidator()])
 * // aceita '12.ABC.345/01DE-35'
 * ```
 */
declare const cnpjValidator: () => ValidatorFn;
/**
 * API legada estilo classe, compatível com a proposta original da PR #21
 * do @rodzappa. Permite usar diretamente como validador no array de
 * Validators sem invocar factory:
 *
 * @example
 * ```ts
 * import { AngularValidator } from 'cpf-cnpj-validator/angular'
 *
 * new FormControl('', [AngularValidator.cpf, AngularValidator.cnpj])
 * ```
 */
declare class AngularValidator {
    static cpf: ValidatorFn;
    static cnpj: ValidatorFn;
}

export { AngularValidator, cnpjValidator, cpfValidator };
