import { DataUnit } from "@sankhyalabs/core";
import { IFormViewField } from "@sankhyalabs/ezui/dist/types/components/ez-form-view/interfaces/IFormViewField";
import { EventEmitter } from "../../../stencil-public-runtime";
import { FormMetadata } from "@sankhyalabs/ezui/dist/collection/utils/form";
import { IFormCardConfig, IRecordValidator, ISummaryField } from "@sankhyalabs/ezui/dist/types/utils/form/interfaces";
import { ICustomEditor } from "@sankhyalabs/ezui/dist/types/utils/customEditor/interfaces/ICustomEditor";
import { PropsCustomEditor } from "../interfaces/PropsCustomEditor";
export declare class SnkFormView {
  private _dataBinder;
  private _formView;
  private _customEditors;
  private _fieldProps;
  private _ezPopoverFieldColumn;
  private _headerContainer;
  private _singleColumn;
  /**
  * Caminho amigável para se chegar a este detalhe.
  */
  levelPath: string;
  /**
   * Campo para o buscador de campos.
   */
  fieldSearch: HTMLEzSearchElement;
  /**
  * Texto para ser apresentado como título do componente
  */
  label: string;
  /**
  * Identificador único do componente, esse é utilizado para identificar o
  * componente no evento de `snkContentCardChanged`
  */
  name: string;
  /**
  * Lista de campos para serem apresentados
  * no formulário.
  */
  fields: Array<IFormViewField>;
  /**
  * Metadados de campos que definem quais campos são obrigatórios,
  * quais devem ser limpos durante a cópia de registros e valores
  * padões dos campos.
  */
  formMetadata: FormMetadata;
  /**
  * Define a instância do DataUnit que deve se ligar ao formulário.
  */
  dataUnit: DataUnit;
  /**
  * Define se o componente será apresentado no modo default ou no modo
  * resumido.
  */
  contracted: boolean;
  /**
   * Define se o card está fixado ou não.
  */
  fixed: boolean;
  summaryFields: Array<ISummaryField>;
  /**
* Define se o botão de expandir deve ser apresentado.
*/
  canExpand: boolean;
  /**
   * Define se o botão de fixar deve ser apresentado.
   */
  canFix: boolean;
  /**
   * Validador responsável por checar a integridade das informações do registro.
   */
  recordsValidator: IRecordValidator;
  /**
   * Determina o campo que deve ficar em evidência.
  */
  fieldToFocus: string;
  /**
   * Registra um editor customizado para campos da grade e formulário.
   */
  customEditors: PropsCustomEditor;
  /**
   * Lista de propriedades que serão alteradas/adicionadas por coluna.
   */
  fieldsProps: object;
  /**
   * Emitido quando a configuração do card é alterada.
   */
  snkContentCardChanged: EventEmitter<{
    formName: string;
    cardConfig: IFormCardConfig;
    propertyChanged: string;
  }>;
  /**
   * Emitido quando o campo recebe foco
   */
  snkRequestClearFieldToFocus: EventEmitter<void>;
  /**
   * Responsável por notificar quando ocorrer a renderização de itens do formulário.
   */
  formItemsReady: EventEmitter<Array<HTMLElement>>;
  showUp(): Promise<void>;
  /**
   * Registra um editor customizado para campos da grade e formulário
   */
  addCustomEditor(fieldName: string, customEditor: ICustomEditor, detailContext?: string): Promise<void>;
  /**
   * Altera/adiciona uma propriedade nos metadados do campo.
   */
  setFieldProp(fieldName: string, propName: string, value: any): Promise<void>;
  /**
   * Exibe a busca de campos ancorada ao container de cabeçalho do snk-form-view.
   */
  showSearchField(): Promise<void>;
  observePropsCustomEditor(newValue: PropsCustomEditor): void;
  observeFieldsProps(newValue: object): Promise<void>;
  private changeFix;
  private changeContracted;
  private emitEvent;
  private getCardSummary;
  private getSummaryFields;
  private bindFields;
  private handleFormItemsReady;
  disconnectedCallback(): void;
  componentDidLoad(): void;
  private initLayoutFormConfig;
  private setSingleColumn;
  private registerNotifyListeners;
  componentDidRender(): void;
  private setCustomEditors;
  private setFieldProps;
  render(): any;
}
