import { DataUnit } from '@sankhyalabs/core';
import { IFormConfig } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
import { EventEmitter } from '../../stencil-public-runtime';
import { SnkMessageBuilder } from '../../lib/message/SnkMessageBuilder';
import { IGuideConfig } from './FormConfigHelper';
import { SnkFormConfigManager } from './SnkFormConfigManager';
export declare class SnkFormConfig {
  private guidesMap;
  private refFieldsLayout;
  private availableFields;
  private guidesList;
  private groupsList;
  private selectedGuide;
  private _formConfig;
  private configOptions;
  private originalConfigSelected;
  private configSelected;
  private hasChanges;
  private optionConfigChanged;
  /**
   * Repositório de dados, controla a manipulação dos dados.
   */
  dataUnit: DataUnit;
  /**
   * Campos de configuração de formulário.
   */
  configManager: SnkFormConfigManager;
  /**
   * Ignora os campos "somente leitura" no modo de inserção.
   */
  ignoreReadOnlyFormFields?: boolean;
  /**
   * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção.
   */
  messagesBuilder: SnkMessageBuilder;
  /**
   * Emitido ao fechar as configurações.
   */
  configClose: EventEmitter<void>;
  /**
   * Emitido ao salvar as configurações.
   */
  configChange: EventEmitter<IFormConfig>;
  handleFieldConfigChanged(): void;
  handleFormConfigOptionSelected({ detail }: CustomEvent): Promise<void>;
  handleAddFieldToGuide({ detail: fieldItem }: CustomEvent): Promise<void>;
  handleSetFieldAsAvailable({ detail }: CustomEvent): Promise<void>;
  handleRemoveFieldFromAvailable({ detail }: CustomEvent): Promise<void>;
  observeSelectedGuide(guide: IGuideConfig): void;
  observeConfigManager(): void;
  private showNoGuideSelectedDialog;
  private showCanNotAddFieldToGuideDialog;
  /**
   * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
   * através de um pequeno modulo na estrutura da aplicação:
   * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
   * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-form.msg.ts"
   */
  private getMessage;
  private initializeUserConfig;
  private loadConfigByUser;
  private handleLoadDefaultConfig;
  private isConfigDefaultSelected;
  private loadFormConfig;
  private initializeAvailableFields;
  private getInitialOrder;
  private loadGuides;
  private getConfig;
  private handleSelectGuide;
  private handleLayoutChanged;
  private getIsDefaultConfig;
  private getTabsToSave;
  private handleSaveConfig;
  private buildConfigToSave;
  private handleAvailableFieldListChanged;
  private handleSetFieldListAsAvailable;
  private handleGuideDeleted;
  private handleGuideListChanged;
  private handleGuideRenamed;
  private handleCreateNewGuide;
  private getGuideNames;
  componentWillRender(): Promise<void>;
  componentWillLoad(): Promise<void>;
  render(): any;
}
