import { AbstractControl, FormGroup } from "@angular/forms";
import { ValidatorFn } from "@angular/forms/";
import { FormField, Option } from "@seniorsistemas/angular-components";
import { FieldValidatorsObject } from "../../core/interfaces/field-validators-object";
export declare function isObject(item: any): boolean;
export declare function convertBooleanString(value: any): any;
export declare function isValid(value: any): boolean;
/**
 *  Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.
 *  Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)
 *
 * @param formControlName Nome do controle do formulário.
 * @param keyError Nome do error a ser exibido em tela.
 * @param isInvalid Se houver algum erro de validação no campo.
 */
export declare function setErrors(formControlName: string, keyError: string, isInvalid: boolean): void;
/**
 * Faz loop do nos controls do formulário e subArray caso existir
 * setando os inválidos
 * Ex.: verifyValidationsForm.call(this.initialGroup);
 */
export declare function verifyValidationsForm(): void;
/**
 * Retorna a idade de acordo com a data de nascimento.
 */
export declare function getYears(birthday: any): number;
export declare function setRequired(formGroup: FormGroup, name: string, required: boolean, validators?: ValidatorFn[]): void;
/**
 * Esse método tem como função setar os campos enable ou disable.
 * @param formGroup FormGroup onde se encontra os campos a serem alterados.
 * @param condition Condição para validação. True = enabled, False = disabled.
 * @param fields Campos a serem manipulados.
 * @param fieldsToClear Campos a serem limpos. É opicional e se não foi passado o método limpará os mesmos campos dos fields.
 */
export declare function configEnabledFields(formGroup: FormGroup, condition: boolean, fields: Array<string>, fieldsToClear?: Array<string>): void;
/**
 * Esse método tem como função setar os campos como requeridos ou não.
 *
 * @param formGroup FormGroup onde se encontra os campos a serem alterados.
 * @param condition Se será ou não requeridos.
 * @param fields Lista de campos.
 */
export declare function setRequiredFields(formGroup: FormGroup, condition: boolean, fields: Array<string>): void;
/**
 * Esse método tem como função setar validações dinâmicas nos campos.
 *
 * @param formGroup FormGroup onde se encontra os campos a serem alterados.
 * @param fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].
 */
export declare function setValidatorsAndDisableFields(formGroup: FormGroup, fields: Array<FieldValidatorsObject>): void;
export declare function setValidator(formGroup: FormGroup, name: string, validators?: ValidatorFn[]): void;
/**
 * Esse método tem como função setar os campos enable ou disable.
 * @param formGroup FormGroup onde se encontra os campos a serem alterados.
 * @param condition Condição para validação. True = disabled, False = enabled.
 * @param field Campo a ser manipulados.
 * @param clearValue Campos a ser limpos. É opicional e se não foi passado o método limpará o campo do field.
 */
export declare function setDisableField(formGroup: FormGroup, condition: boolean, field: string, clearValue?: boolean): void;
/**
 * Esse método tem como função limpar o valor dos campos.
 *
 * @param formGroup FormGroup onde se encontra os campos a serem limpos.
 * @param fields Campos a serem limpos.
 */
export declare function clearValues(formGroup: FormGroup, fields: Array<string>): void;
/**
 * Remove os caracteres que não sejam números do valor
 * @param value valor a ser tratado
 * @returns string O valor sem caracteres especiais
 */
export declare function removeCharacteresSpecials(value: any): string;
export declare function getEnumQuery(name: string, value: any, multiple?: boolean): string;
export declare function getEnumTextSearchQuery(name: string, value: any, options: Option[]): string;
export declare function createEnumFilterString(formField: FormField, value: any, opts?: {
    textSeachEnum: boolean;
}): string;
export declare function createFilterString(formField: FormField, value: any, opts?: {
    textSeachEnum: boolean;
}): string;
/**
 * Atualiza e força validação somente dos campos especificados.
 * @param abstractControl FormGroup ou FormArray raiz.
 * @param fields Lista de caminhos dos campos a validar. Ex.: ['nome', 'endereco.rua', 'itens.0.quantidade']
 */
export declare function validateSpecificControls(abstractControl: AbstractControl, fields: string[]): void;
/**
 * Força validação de um único AbstractControl.
 */
export declare function updateSingleControl(control: AbstractControl): void;
