import { DataUnit } from '@sankhyalabs/core';
import { IRecordValidator } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
import { EventEmitter } from '../../stencil-public-runtime';
import { DataState } from '../snk-data-unit/snk-data-unit';
import { SnkFormConfigManager } from '../snk-form-config/SnkFormConfigManager';
import { SnkMessageBuilder } from '../../lib/message/SnkMessageBuilder';
import { ICustomEditor } from '@sankhyalabs/ezui/dist/types/utils';
export declare class SnkForm {
  private _snkDataUnit;
  private _customEditors;
  private _form;
  _element: HTMLElement;
  _dataUnit: DataUnit;
  _dataState: DataState;
  _showFormConfig: boolean;
  _configManager: SnkFormConfigManager;
  /**
   * Nome usado para guardar/recuperar as configurações do formulário.
   */
  configName: string;
  /**
   * Validador responsável por checar a integridade das informações do registro.
   */
  recordsValidator: IRecordValidator;
  /**
   * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção.
   */
  messagesBuilder: SnkMessageBuilder;
  /**
   * Chave da configuração legada do formulário.
   */
  formLegacyConfigName: string;
  /**
   * Identificador de recursos como configurações e acesso.
   */
  resourceID: string;
  /**
   * @deprecated Esta propriedade foi descontinuada. Ela não tem mais efeito sobre o componente.
   */
  exit: EventEmitter<void>;
  /**
   * @deprecated Esta propriedade foi descontinuada. Ela não tem mais efeito sobre o componente.
   */
  actionClick: EventEmitter<string>;
  /**
   * Responsável por notificar quando ocorrer a renderização de itens do formulário.
   * OBS: Emitido no subcomponente snk-form-view
   */
  formItemsReady: EventEmitter<Array<HTMLElement>>;
  /**
   * Exibe a janela de configurações do formulário.
   * @async
   * @returns {Promise<void>}
   */
  showConfig(): Promise<void>;
  /**
   * Fecha a janela de configurações do formulário.
   * @async
   * @returns {Promise<void>}
   */
  hideConfig(): Promise<void>;
  /**
   * Registra um editor customizado para campos do formulário.
   * @async
   * @param {string} fieldName - Nome do campo.
   * @param {ICustomEditor} customEditor - Editor customizado.
   * @returns {Promise<void>}
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor): Promise<void>;
  /**
   * Altera/adiciona uma propriedade nos metadados do campo.
   * @async
   * @param {string} fieldName - Nome do campo.
   * @param {string} propName - Nome da propriedade.
   * @param {any} value - Valor da propriedade.
   * @returns {Promise<void>}
   */
  setFieldProp(fieldName: string, propName: string, value: any): Promise<void>;
  /**
   * Valida o formulário.
   * @async
   * @returns {Promise<void>}
   * @description
   * Este método executa a validação do formulário, verificando se todos os campos estão
   * preenchidos corretamente de acordo com as regras definidas.
   * Se a validação falhar, uma exceção será lançada com os detalhes dos erros encontrados.
   * Caso contrário, o método será resolvido sem erros.
   */
  validate(): Promise<void>;
  private closeConfig;
  private dataunitReady;
  private setCustomEditors;
  componentDidRender(): Promise<void>;
  componentWillLoad(): Promise<void>;
  private handleDataStateChange;
  private addFormLegacyConfig;
  render(): any;
}
