import { DataUnit } from "@sankhyalabs/core";
import { EventEmitter } from "../../stencil-public-runtime";
import { ICustomEditor } from "../../utils/customEditor/interfaces/ICustomEditor";
import { IFieldConfig, IFormConfig, IRecordValidator } from '../../utils/form/interfaces';
import { FormItems } from "../ez-form-view/structure";
import { Tab } from "../ez-tabselector/ez-tabselector";
export declare class EzForm {
  private _element;
  private _formView;
  private _store;
  private _staticFields;
  private _dataBinder;
  private _customEditors;
  private _application;
  private _fieldSearch;
  private _ezPopoverSearchField;
  private _container;
  private _keyboardManager;
  private _i18n;
  private _fieldsProps;
  private _singleColumn;
  /**
   * Unidade de dados. Responsável pelo controle de edição de registros e
   * informações pertinentes aos campos.
   */
  dataUnit: DataUnit;
  /**
   * Configuração do formulário.
   */
  config: IFormConfig;
  /**
   * Define um validador responsável pela integridade dos registros.
   */
  recordsValidator: IRecordValidator;
  /**
   * Determina o campo que deve ficar em evidência.
   */
  fieldToFocus: string;
  /**
   * Define se os campos que serão apresentados são todos estáticos. Quando verdadeira, ocorrerá no DataBinder o bind dos campos com o DataUnit.
   */
  onlyStaticFields: boolean;
  /**
   * Define se o formulario deve exibir um buscador de coluna com uso do Ctrl+F
   */
  useSearchField: boolean;
  /**
   * Define uma ancoragem
   */
  elementFocusSearchField: HTMLElement;
  /**
   * Emitido quando o campo recebe foco
   */
  ezFormRequestClearFieldToFocus: EventEmitter<void>;
  /**
   * Emitido quando o campo recebe foco
   */
  ezFormSetFields: EventEmitter<Array<IFieldConfig>>;
  /**
   * Evento disparado quando o formulário está disponível na DOM.
   */
  ezReady: EventEmitter<void>;
  /**
   * Responsável por notificar quando ocorrer a renderização de itens do formulário.
   */
  formItemsReady: EventEmitter<FormItems>;
  /**
   * Realiza validação no conteúdo de todos os campos.
   */
  validate(): Promise<void>;
  /**
   * Registra um editor customizado para campos da grade e formulário.
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor, detailContext?: string): Promise<void>;
  observeConfig(): void;
  /**
   * Altera/adiciona uma propriedade nos metadados do campo.
   */
  setFieldProp(fieldName: string, propName: string, value: any): Promise<void>;
  private getDynamicContent;
  private buildFormContent;
  private renderFieldColumn;
  private getFormFields;
  private fieldsOptionLoader;
  private onSelectField;
  private initKeyboardManager;
  componentDidLoad(): void;
  private processMetadata;
  private isStatic;
  private bindFields;
  componentWillLoad(): Promise<void>;
  setSingleColumn(layoutFormConfig: any): Promise<void>;
  registerNotifyListeners(layoutFormConfig: any): Promise<void>;
  onDataUnitAction: (action: any) => void;
  componentDidRender(): void;
  private setCustomEditors;
  private handleFieldToFocus;
  private setFieldsProps;
  disconnectedCallback(): void;
  buildIdTabSelector(tabs: Array<Tab>): Array<Tab>;
  render(): any;
}
