import { AfterViewInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ControlContainer, ControlValueAccessor, FormControl, FormGroup, Validator } from '@angular/forms';
import { DomSanitizer } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { DynamicType, FormField } from '@seniorsistemas/angular-components/dynamic-form';
import { LocaleService } from '@seniorsistemas/angular-components/locale';
import { CustomFieldsService } from './custom-fields.service';
import * as i0 from "@angular/core";
export declare class CustomFieldsComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator, OnChanges, AfterViewInit {
    private readonly customFieldsService;
    private readonly localeService;
    private readonly sanitizer;
    private readonly translateService;
    private readonly controlContainer;
    domain: string;
    service: string;
    entity: string;
    invalidErrorLabel: string;
    entityObject: any;
    customFieldsEndpoint: string;
    fileLocationEndpoint: string;
    requestAccessEndpoint: string;
    requiredErrorMessage: string;
    displayTimeInfoSign: number;
    showFileUploadDate: boolean;
    ready$: BehaviorSubject<boolean> | null;
    disableFields: boolean | undefined;
    protected rowType: DynamicType;
    fields: FormField[];
    formGroup: FormGroup;
    private ready;
    private onChange;
    private onTouched;
    private value;
    private readonly ngUsubscribe;
    private uploadCanceled;
    private hasBlob;
    private hasUploaded;
    constructor(customFieldsService: CustomFieldsService, localeService: LocaleService, sanitizer: DomSanitizer, translateService: TranslateService, controlContainer: ControlContainer);
    get hasCustomFields(): boolean;
    get parentForm(): FormGroup;
    get parentControl(): FormControl;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    registerOnChange(fn: Function): void;
    registerOnTouched(fn: Function): void;
    writeValue(value: any): void;
    setDisabledState(isDisabled: boolean): void;
    getCustomFields(): Observable<any>;
    validate(): any;
    cleanFields(): void;
    private enableOrDisableFields;
    private _validateInputs;
    private _createForm;
    private parseValuesForFields;
    /**
     * Algumas equipes só setam valor no formulário, após o carregamento da tela
     * Como é bem padrão isso, foi necessário criar esse método para gerar o file
     * após setar o valor no formulário
     */
    private createFilesIfSetFormValuesAfterInit;
    private parseFieldsValues;
    private isTypeNumberOrEnum;
    private getFormField;
    private getEnumParameters;
    private getBooleanParameters;
    private getBlobParameters;
    /**
     * É necessário criar o fieldCustomization quando há um Blob na entidade para gerar o
     * com os fields inseridos e deletados.
     */
    private createFieldCustomization;
    private createBlobToFileUpload;
    private downloadFile;
    private uploadFile;
    private removeFile;
    private cancelUpload;
    private defaltCatchError;
    private getTranslateLabel;
    private addDisplayTimeInfoSignToFields;
    static ɵfac: i0.ɵɵFactoryDeclaration<CustomFieldsComponent, [null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CustomFieldsComponent, "s-custom-fields", never, { "domain": { "alias": "domain"; "required": true; }; "service": { "alias": "service"; "required": true; }; "entity": { "alias": "entity"; "required": true; }; "invalidErrorLabel": { "alias": "invalidErrorLabel"; "required": false; }; "entityObject": { "alias": "entityObject"; "required": false; }; "customFieldsEndpoint": { "alias": "customFieldsEndpoint"; "required": false; }; "fileLocationEndpoint": { "alias": "fileLocationEndpoint"; "required": false; }; "requestAccessEndpoint": { "alias": "requestAccessEndpoint"; "required": false; }; "requiredErrorMessage": { "alias": "requiredErrorMessage"; "required": false; }; "displayTimeInfoSign": { "alias": "displayTimeInfoSign"; "required": false; }; "showFileUploadDate": { "alias": "showFileUploadDate"; "required": false; }; "ready$": { "alias": "ready$"; "required": false; }; "disableFields": { "alias": "disableFields"; "required": false; }; }, {}, never, never, false, never>;
}
