/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina/PublicLitElement";
import type { EditorType, InputMentionField } from "./types.js";

export abstract class ArcgisCkeditor5 extends LitElement {
  /**
   * The editor's text area will have a vertical resize handle if set to true
   *
   * @default false
   */
  accessor canResizeVertically: boolean | undefined;
  /**
   * language for ckeditor
   *
   * @default "en"
   */
  accessor currentLanguage: string;
  /**
   * Config to customize editor (will be merged with default config)
   * Default config will match html or markdown editor here:https://devtopia.esri.com/WebGIS/ckeditor5-build-classic.
   * Also includes default language and field expression mentions settings
   */
  accessor customConfig: any | undefined;
  /** The function that will be used to distinguish expressions from fields in the default mention configuration */
  accessor customExpressionCheck: ((field: {
      id: string;
      name: string;
  }) => boolean) | undefined;
  /**
   * Base configuration for editor
   *
   * @default "html"
   */
  accessor editorType: EditorType | undefined;
  /**
   * The fields / expressions in the default mention configuration will be grouped if set to true
   *
   * @default false
   */
  accessor groupFieldsAndExpressions: boolean | undefined;
  /**
   * Header text for expressions mention dropdown (assuming default mention configuration)
   *
   * @default ""
   */
  accessor intlExpressionsGroupHeading: string;
  /**
   * Header text for fields in mention dropdown (assuming default mention configuration)
   *
   * @default ""
   */
  accessor intlFieldsGroupHeading: string;
  /**
   * Placeholder text for editor
   *
   * @default ""
   */
  accessor intlTextPlaceHolder: string;
  /**
   * List of fields/expressions for the default mentions implementation
   * If you don't want mentions or are customizing the mention feed in customConfig, you do not need to supply this
   */
  accessor mentionFields: InputMentionField[] | undefined;
  /**
   * The toolbar will be hidden and the data will only be changeable through the `textData` prop if true
   *
   * @default false
   */
  accessor readOnly: boolean | undefined;
  /** Input data for editor in html / markdown text format */
  accessor textData: string | undefined;
  /** Get the current data in the editor. */
  getData(): Promise<any>;
  /** Set focus on the component. */
  setFocus(): Promise<void>;
  /** @deprecated use arcgisCreated instead */
  readonly arcgisCkeditor5Created: import("@arcgis/lumina").TargetedEvent<this, ArcgisCkeditor5>;
  /** @deprecated use arcgisDataUpdated instead */
  readonly arcgisCkeditor5DataUpdated: import("@arcgis/lumina").TargetedEvent<this, string>;
  /** @deprecated use arcgisSourceEditingChanged instead */
  readonly arcgisCkeditor5SourceEditingChanged: import("@arcgis/lumina").TargetedEvent<this, boolean>;
  /** Emitted when the editor has been created. */
  readonly arcgisCreated: import("@arcgis/lumina").TargetedEvent<this, ArcgisCkeditor5>;
  /** Emitted when the editor's data has been updated. */
  readonly arcgisDataUpdated: import("@arcgis/lumina").TargetedEvent<this, string>;
  /** Emitted when the editor's source editing mode has changed. */
  readonly arcgisSourceEditingChanged: import("@arcgis/lumina").TargetedEvent<this, boolean>;
  readonly "@eventTypes": {
    arcgisCkeditor5Created: ArcgisCkeditor5["arcgisCkeditor5Created"]["detail"];
    arcgisCkeditor5DataUpdated: ArcgisCkeditor5["arcgisCkeditor5DataUpdated"]["detail"];
    arcgisCkeditor5SourceEditingChanged: ArcgisCkeditor5["arcgisCkeditor5SourceEditingChanged"]["detail"];
    arcgisCreated: ArcgisCkeditor5["arcgisCreated"]["detail"];
    arcgisDataUpdated: ArcgisCkeditor5["arcgisDataUpdated"]["detail"];
    arcgisSourceEditingChanged: ArcgisCkeditor5["arcgisSourceEditingChanged"]["detail"];
  };
}