import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs';
import { PoDynamicFormField } from './interfaces/po-dynamic-form-field.interface';
import { PoDynamicFormBaseComponent } from './po-dynamic-form-base.component';
import { PoDynamicFormLoadService } from './po-dynamic-form-load/po-dynamic-form-load.service';
import { PoDynamicFormValidationService } from './po-dynamic-form-validation/po-dynamic-form-validation.service';
/**
 * @docsExtends PoDynamicFormBaseComponent
 *
 * @example
 *
 * <example name="po-dynamic-form-basic" title="PO Dynamic Form Basic">
 *  <file name="sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.html"> </file>
 *  <file name="sample-po-dynamic-form-basic/sample-po-dynamic-form-basic.component.ts"> </file>
 * </example>
 *
 * <example name="po-dynamic-form-register" title="PO Dynamic Form - Register">
 *  <file name="sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.html"> </file>
 *  <file name="sample-po-dynamic-form-register/sample-po-dynamic-form-register.component.ts"> </file>
 *  <file name="sample-po-dynamic-form-register/sample-po-dynamic-form-register.service.ts"> </file>
 * </example>
 *
 * <example name="po-dynamic-form-container" title="PO Dynamic Form - Container">
 *  <file name="sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.html"> </file>
 *  <file name="sample-po-dynamic-form-container/sample-po-dynamic-form-container.component.ts"> </file>
 *  <file name="sample-po-dynamic-form-container/sample-po-dynamic-form-container.service.ts"> </file>
 * </example>
 *
 */
export declare class PoDynamicFormComponent extends PoDynamicFormBaseComponent implements OnInit, OnDestroy {
    private readonly changes;
    private readonly loadService;
    private readonly validationService;
    fieldsComponent: {
        focus: (property: string) => void;
        updatePreviousValue: () => void;
        showAdditionalHelp: (property: string) => void;
    };
    disabledForm: boolean;
    displayAdditionalHelp: boolean;
    private _form;
    private onLoadSubscription;
    private sendFormSubscription;
    private readonly comboOptionSubject;
    set form(value: NgForm);
    get form(): NgForm;
    constructor(changes: ChangeDetectorRef, loadService: PoDynamicFormLoadService, validationService: PoDynamicFormValidationService);
    ngOnDestroy(): void;
    ngOnInit(): void;
    /**
     * Função que atribui foco ao campo desejado.
     *
     * Para utilizá-la é necessário capturar a instância do `dynamic form`, como por exemplo:
     *
     * ``` html
     * <po-dynamic-form #dynamicForm [p-fields]="fields"></po-dynamic-form>
     * ```
     *
     * ``` javascript
     * import { PoDynamicFormComponent, PoDynamicFormField } from '@po-ui/ng-components';
     *
     * ...
     *
     * @ViewChild('dynamicForm', { static: true }) dynamicForm: PoDynamicFormComponent;
     *
     * fields: Array<PoDynamicFormField> = [
     *   { property: 'fieldOne' },
     *   { property: 'fieldTwo' }
     * ];
     *
     * fieldFocus() {
     *   this.dynamicForm.focus('fieldTwo');
     * }
     * ```
     *
     * @param {string} property Nome da propriedade atribuída ao `PoDynamicFormField.property`.
     */
    focus(property: string): void;
    getObjectValue(): Observable<any>;
    sendObjectValue(objectValue: any): void;
    /**
     * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.
     * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `keydown`.
     *
     * ```
     * import { PoDynamicModule } from '@po-ui/ng-components';
     * ...
     * @ViewChild('dynamicForm', { static: true }) dynamicForm: PoDynamicFormComponent;
     *
     * fields: Array<PoDynamicFormField> = [
     *  {
     *    property: 'name',
     *    ...
     *    help: 'Mensagem de ajuda.',
     *    helper: 'Mensagem de ajuda complementar com o componente po-helper implementado.',
     *    keydown: this.onKeyDown.bind(this, 'name')
     *  },
     * ]
     *
     * onKeyDown(property: string, event: KeyboardEvent): void {
     *  if (event.code === 'F9') {
     *    this.dynamicForm.showAdditionalHelp(property);
     *  }
     * }
     * ```
     *
     * @param { string } property Identificador da coluna.
     */
    showAdditionalHelp(property: string): void;
    validateForm(field: PoDynamicFormField): void;
    private applyFormUpdatesOnLoad;
    private applyFormValidation;
    private disableForm;
    private emitForm;
    private loadDataOnInitialize;
    private removeListeners;
    private setFocusOnFieldByProperty;
    private updateModelOnLoad;
    private updateModelWithValidation;
}
