import { DataUnit } from '@sankhyalabs/core';
import { SnkFormConfigManager } from '../../../snk-dynaform-form-config/SnkFormConfigManager';
import { IFormCardConfig } from '@sankhyalabs/ezui/dist/types/utils/form/interfaces';
import { DataState } from '../../../snk-data-unit/snk-data-unit';
import { PresentationMode } from '../../../../lib';
import { VIEW_MODE } from '../../../../lib/utils/constants';
import { SnkMessageBuilder } from '../../../../lib/message/SnkMessageBuilder';
import { PropsCustomEditor } from '../../interfaces/PropsCustomEditor';
import { ICustomRender, ICustomEditor } from '@sankhyalabs/ezui/dist/types/utils';
import { PropsCustomRender } from '../../interfaces/PropsCustomRender';
export declare class SnkDynaformDetailView {
  private _element?;
  private _formMetadata?;
  private _configName?;
  private _snkGrid?;
  private _snkFormView?;
  private _snkDataUnit?;
  private _viewStack?;
  private _fieldSearch?;
  private _snkAttach?;
  private _keyboardManager?;
  private _taskbarProcessor;
  private _columnSearch?;
  static MAIN_TAB: string;
  private _currentView;
  attachmentRegisterKey?: string;
  private _fieldToGetFocus?;
  _hasToCreateFieldSearch: boolean;
  private _selectedSheet?;
  private _selectedUITab?;
  private _internalErrorTabs;
  private _selectedRecordPKDisplay?;
  /**
   * 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;
  /**
   * 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 na inicialização.
   * Após o primeiro render, o estado interno _selectedSheet assume o controle.
   */
  selectedForm?: string;
  /**
   * Representa o estado do dataUnit detail.
   */
  dataState?: DataState;
  messagesBuilder?: SnkMessageBuilder;
  /**
   * 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>;
  onContentCardChanged(evt: CustomEvent<{
    formName: string;
    cardConfig: IFormCardConfig;
    propertyChanged: string;
  }>): void;
  observeCustomRenders(newValue: {
    [key: string]: ICustomRender;
  }): Promise<void>;
  private loadMetadata;
  private initSelectedSheet;
  private dataUnitReadyHandler;
  private getFormFields;
  private removeUiTabName;
  private getUITabFields;
  private hasMultipleSheets;
  private selectedSheetIsDetail;
  private isSheetDisabled;
  private buildInternalTabItems;
  private onInternalTabChange;
  private executeActionHandler;
  private getAttachmentRegisterKey;
  private handleDataStateChange;
  private buildSelectedRecordPKDisplay;
  private renderSelectedRecordHeader;
  componentWillLoad(): void;
  componentWillRender(): void;
  private initializeTaskbarProcessor;
  private buildDetailTaskbarManager;
  componentDidLoad(): Promise<void>;
  disconnectedCallback(): void;
  private dataUnitActionHandler;
  private findSheetOfField;
  private normalizeDataUnitName;
  private getSettingsListForm;
  private getFieldsSearch;
  private fieldsOptionLoader;
  private onSelectField;
  private clearFieldToFocusHandler;
  private getColumnSearch;
  private buildTaskbarCustomActionsList;
  private buildSearchColumnTaskbarAction;
  private initKeyboardManager;
  private renderTabSelector;
  private renderUITabForm;
  private renderSubDetail;
  private renderViewStack;
  render(): any;
}
