import { DataUnit } from '@sankhyalabs/core';
import { EventEmitter } from '../../../../stencil-public-runtime';
import { SnkFormConfigManager } from '../../../snk-form-config/SnkFormConfigManager';
import { IFormCardConfig } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
import { DataState } from '../../../snk-data-unit/snk-data-unit';
import { IGuideItem } from '@sankhyalabs/ezui/dist/types/components/ez-guide-navigator/interfaces';
import { PresentationMode } from '../../../../lib';
import { VIEW_MODE } from '../../../../lib/utils/constants';
import { SnkMessageBuilder } from '../../../../lib/message/SnkMessageBuilder';
import { GuideBuilder } from '../GuideBuilder';
import { PropsCustomEditor } from '../../interfaces/PropsCustomEditor';
import { ICustomRender, ICustomEditor } from '@sankhyalabs/ezui/dist/types/utils';
import { PropsCustomRender } from '../../interfaces/PropsCustomRender';
export declare class SnkDetailView {
  private _element;
  private static REGEX_FORM_ID;
  private _formMetadata;
  private _configName;
  private _snkGrid;
  private _snkFormView;
  private _snkDataUnit;
  private _viewStack;
  private _levelPath;
  private _fieldSearch;
  private _keyboardManager;
  private _disabledButtons;
  private _currentView;
  attachmentRegisterKey: string;
  private _fieldToGetFocus;
  _hasToCreateFieldSearch: boolean;
  /**
   * Gerenciador de configuração do formulário.
   */
  formConfigManager: SnkFormConfigManager;
  /**
   * Determina todo o caminho desde o pai até chegar neste nível
   */
  dataUnitName: string;
  /**
   * Identificador de recursos como configurações e acesso.
   */
  resourceID: string;
  /**
   * Caminho do identificador da guia vinculada.
   */
  guideItemPath: Array<IGuideItem>;
  /**
   * Nome da entidade detail.
   */
  entityName: string;
  /**
   * Descrição amigável do cadastro detalhe.
   */
  label: string;
  /**
   * Instância do DataUnit detail.
   */
  dataUnit: DataUnit;
  /**
   * Representa o formulário selecionado.
   */
  selectedForm: string;
  /**
   * Representa o estado do dataUnit detail.
   */
  dataState: DataState;
  messagesBuilder: SnkMessageBuilder;
  branchGuide: IGuideItem;
  /**
   * Define se a edição está habilitada na grid.
   */
  canEdit: boolean;
  /**
   * Define o identificador do container de elementos customizados da Taskbar.
   */
  taskbarCustomContainerId: string;
  /**
   * Registra um editor customizado para campos da grade e formulário.
   */
  customEditors: PropsCustomEditor;
  /**
   * Render customizados da grade.
   */
  customRenders: PropsCustomRender;
  /**
   * Altera o modo de apresentação dos botões do snk-taskbar.
   */
  presentationMode: PresentationMode;
  observeDataUnit(newDataUnit: DataUnit, oldDataUnit: DataUnit): void;
  observerDataState(newValue: DataState, oldValue: DataState): void;
  /**
  * Muda o modo de visualização do componente entre VIEW_MODE.GRID e VIEW_MODE.FORM
  * @param mode - Novo modo que o componente deve ser apresentado.
  */
  changeViewMode(mode: VIEW_MODE): Promise<void>;
  /**
   * Abre o configurador de grid.
   */
  configGrid(): Promise<void>;
  showUp(): Promise<void>;
  /**
   * Registra um editor customizado para campos da grade e formulário.
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor): Promise<void>;
  observerPropsCustomEditor(newValue: PropsCustomEditor): Promise<void>;
  /**
   * Registra um render customizado para colunas da grid.
   */
  addGridCustomRender(fieldName: string, customRender: ICustomRender): Promise<void>;
  /**
   * Emitido quando há necessidade de atualizar a estrutura de guias.
   */
  snkDetailGuidesChange: EventEmitter<GuideBuilder>;
  /**
   * Emitido quando há necessidade de comutar entre grid e form.
   */
  snkSwitchGuide: EventEmitter<string>;
  /**
   * Responsável por notificar quando ocorrer a renderização de itens do formulário.
   */
  formItemsReady: EventEmitter<Array<HTMLElement>>;
  onContentCardChanged(evt: CustomEvent<{
    formName: string;
    cardConfig: IFormCardConfig;
    propertyChanged: string;
  }>): void;
  observeCustomRenders(newValue: object): Promise<void>;
  private updateLabel;
  private getFormGuideId;
  private stripFormPattern;
  private loadMetadata;
  private dataUnitReadyHandler;
  private updateViewStack;
  private getFormFields;
  private emitSwitchEvent;
  private handleAttachBack;
  private executeActionHandler;
  private getAttachmentRegisterKey;
  private handleDataStateChange;
  componentWillLoad(): void;
  componentDidLoad(): Promise<void>;
  disconnectedCallback(): void;
  private dataUnitActionHandler;
  private addErrorBadgeToBranchGuide;
  private normalizeBranchGuideId;
  private getSettingsListForm;
  private getFieldsSearch;
  private fieldsOptionLoader;
  private onSelectField;
  private clearFieldToFocusHandler;
  private initKeyboardManager;
  render(): any;
}
