import { DataUnit } from '@sankhyalabs/core';
import { EventEmitter, VNode } from '../../../stencil-public-runtime';
import { DataState } from '../../snk-data-unit/snk-data-unit';
import { SnkFormConfigManager } from '../../snk-form-config/SnkFormConfigManager';
import { IFormCardConfig, IFormConfig, IRecordValidator } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
import { FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
import { IBreadcrumbItem } from '@sankhyalabs/ezui/dist/types/components/ez-breadcrumb/ez-breadcrumb';
import { IGuideItem } from '@sankhyalabs/ezui/dist/types/components/ez-guide-navigator/interfaces';
import { Action, TaskbarManager } from '../../snk-taskbar/snk-taskbar';
import { PresentationMode } from '../../../lib';
import { SnkMessageBuilder } from '../../../lib/message/SnkMessageBuilder';
import { PropsCustomEditor } from '../interfaces/PropsCustomEditor';
import { ICustomEditor, ICustomRender } from '@sankhyalabs/ezui/dist/types/utils';
export declare class SnkGuidesViewer {
  private _element;
  private _configManager;
  private _masterFormMetadata;
  private _guideNavigator;
  private _taskbarProcessor;
  private _snkConfigurator;
  private _currentDetail;
  private _fieldSearch;
  private _guideHasChanged;
  private _guideBuilders;
  private _container;
  private _keyboardManager;
  /**
   * Instância do DataUnit master.
   */
  dataUnit: DataUnit;
  /**
   * Representa o estado do dataUnit master.
   */
  dataState: DataState;
  /**
   * Nome usado para guardar/recuperar as configurações do formulário.
   */
  configName: string;
  /**
   * Determina todo o caminho de entidades.
   */
  entityPath: string;
  /**
   * Ações a serem colocadas no botão "Mais opções" do componente snk-taskbar.
   */
  actionsList: Array<Action>;
  /**
   * Validador responsável por checar a integridade das informações do registro.
   */
  recordsValidator: IRecordValidator;
  /**
   * Configuração do formulário master.
   */
  masterFormConfig: IFormConfig;
  /**
   * Guia selecionada.
   */
  selectedGuide: IGuideItem;
  /**
   * Gerenciador das barras de tarefas. É possível determinar botões específicos
   * ou mesmo gerenciar o estado dos botões.
   */
  taskbarManager: TaskbarManager;
  /**
   * Responsável por flexibilizar e padronizar o uso de mensagens nos blocos de construção.
   */
  messagesBuilder: SnkMessageBuilder;
  /**
   * Define se a edição está habilitada na grid.
   */
  canEdit: boolean;
  /**
   * Altera o modo de apresentação dos botões do snk-taskbar.
   */
  presentationMode: PresentationMode;
  /**
   * Identificador de recursos como configurações e acesso.
   */
  resourceID: string;
  /**
   * Define o identificador do container de elementos customizados da Taskbar da aba de detalhes.
   */
  detailTaskbarCustomContainerId: string;
  /**
   * Chave da configuração legado do formulário.
   */
  formLegacyConfigName: string;
  /**
  * Ativa inserção de registros no modo grade.
  */
  enableGridInsert?: boolean;
  /**
   * Ignora os campos "somente leitura" no modo de inserção.
   */
  ignoreReadOnlyFormFields?: boolean;
  /**
   * Fornece  uma função para obter um título customizado do formulário.
   */
  getCustomTitle: () => string;
  _hasToCreateFieldSearch: boolean;
  _breadcrumbItems: Array<IBreadcrumbItem>;
  _guides: Array<IGuideItem>;
  _formEditorConfigManager: SnkFormConfigManager;
  _formEditorDataUnit: DataUnit;
  private _fieldToGetFocus;
  private _customEditors;
  private _customRenders;
  private _fieldsProps;
  private _mainForm;
  observeDataUnit(): void;
  observeDataState(newValue: DataState, oldValue: DataState): void;
  observeMasterFormConfig(): void;
  /**
  * Abre o configurador do formulário
  * @param detail - Define se a configuração que está sendo carregada é
  * referente a um form detail.
  */
  showFormConfig(detail?: boolean): Promise<void>;
  /**
   * Registra um editor customizado para campos da grade e formulário
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor): Promise<void>;
  /**
   * Registra um render customizado para colunas da grid.
   */
  addGridCustomRender(fieldName: string, customRender: ICustomRender): Promise<void>;
  /**
   * Altera/adiciona uma propriedade nos metadados do campo.
   */
  setFieldProp(fieldName: string, propName: string, value: any): Promise<void>;
  /**
   * Atribui o foco para o componente.
   */
  setFocus(): Promise<void>;
  /**
   * Emitido quando a configuração do formulário master é definida.
   */
  snkMasterFormConfigChange: EventEmitter<IFormConfig>;
  /**
   * Emitido quando o botão de voltar é acionado.
   */
  exit: EventEmitter<void>;
  /**
   * Emitido sempre que houver click de botão ou ação.
   */
  actionClick: EventEmitter<string>;
  /**
  * Responsável por notificar quando ocorrer a renderização de itens do formulário.
  */
  formItemsReady: EventEmitter<Array<HTMLElement>>;
  private exitViewer;
  onActionClick(evt: CustomEvent<string>): void;
  onContentCardChanged(evt: CustomEvent<{
    formName: string;
    cardConfig: IFormCardConfig;
    propertyChanged: string;
  }>): void;
  /**
   * 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-crud.msg.ts"
   */
  private getMessage;
  private loadGuides;
  private hasToDisableDetails;
  private isDetail;
  private updateGuide;
  private getTaskBarId;
  private loadTaskbarProcessor;
  private buildBtnsRegularMode;
  private buildDisabledButtons;
  private handleAddGridMode;
  private buildInvisibleButtons;
  static updateContentCard(formName: string, cardConfig: IFormCardConfig, propertyChanged: string, configManager: SnkFormConfigManager): Promise<Map<string, IFormCardConfig>>;
  static buildFixedForms(params: BuildFixedFormParams): Array<VNode>;
  private wrapDetail;
  private getDataUnitName;
  private getContent;
  private onBreadcrumbClickHandler;
  private updateSelectedGuideHandler;
  private changeGuideHandler;
  private clearFieldToFocusHandler;
  private resetGuideBadge;
  private canClearGuideBadge;
  private isIncludedInChildrenList;
  private hasChildren;
  private getChildrenIdList;
  private getConfigViewMode;
  private changeConfigViewMode;
  private openConfig;
  private noGuideSelected;
  private addFormLegacyConfigName;
  private setMasterFormConfig;
  componentWillLoad(): void;
  componentDidRender(): void;
  private getFieldsSearch;
  private fieldsOptionLoader;
  private onSelectField;
  private getActionsList;
  private getSettingsListForm;
  buildTaskBar(): any;
  private dataUnitActionHandler;
  private addErrorBadgeToGuide;
  private openGuideNavigator;
  private getBadge;
  private getGuideName;
  private getTitle;
  private getTitleTooltip;
  private buildRecordIdsArray;
  componentDidLoad(): void;
  disconnectedCallback(): void;
  private initKeyboardManager;
  render(): any;
}
interface BuildFixedFormParams {
  formConfig: IFormConfig;
  formMetadata: FormMetadata;
  selectedForm: string;
  dataUnit: DataUnit;
  recordsValidator: IRecordValidator;
  levelPath?: string;
  fieldToFocus?: string;
  onRequestClearFieldToFocus?: Function;
  propsCustomEditor: PropsCustomEditor;
  fieldsProps: object;
}
export {};
