/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { editor } from "monaco-editor";
import type { EditorProfileDefinition, IEditorProfileDefinition, SidePanelName } from "../types.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";

/**
 * The ArcGIS SQL Layer Editor is a code editor for writing and editing sql query layer scripts
 * If the user provides a profile with a variable of type `dataCatalogDatastore`. The editor will
 * configure monaco language support for the dialect specified in the data catalog datastore.
 * Otherwise it will default to postgres.
 *
 * @internal
 */
export abstract class ArcgisSqlLayerEditor extends LitElement {
  /**
   * Options to update on the editor.
   * For example:
   * ```json
   * {
   *   "fontSize": 18
   * }
   * ```
   *
   * To get the full list of available options, see the Monaco Editor options [documentation](https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor_editor_api.editor.IEditorOptions.html) for more details.
   */
  accessor editorOptions: editor.IEditorOptions & editor.IGlobalEditorOptions | undefined;
  /** @default false */
  accessor hideSideBar: boolean;
  /**
   * Replace localized message strings with your own strings.
   *
   * **Note**: Individual message keys may change between releases.
   */
  accessor messageOverrides: {
      loading?: string | undefined;
      profileempty?: string | undefined;
      tables?: string | undefined;
      placeholder?: string | undefined;
      placeholderexample?: string | undefined;
  };
  /** @internal */
  protected messages: Partial<{
      loading: string;
      profileempty: string;
      tables: string;
      placeholder: string;
      placeholderexample: string;
  }> & T9nMeta<{
      loading: string;
      profileempty: string;
      tables: string;
      placeholder: string;
      placeholderexample: string;
  }>;
  /** @default "none" */
  accessor openedSidePanel: SidePanelName;
  accessor profile: EditorProfileDefinition | IEditorProfileDefinition | undefined;
  /** @default "" */
  accessor script: string;
  setFocus(): Promise<void>;
  readonly arcgisDiagnosticsChange: import("@arcgis/lumina").TargetedEvent<this, editor.IMarkerData[]>;
  readonly arcgisScriptChange: import("@arcgis/lumina").TargetedEvent<this, string>;
  readonly "@eventTypes": {
    arcgisDiagnosticsChange: ArcgisSqlLayerEditor["arcgisDiagnosticsChange"]["detail"];
    arcgisScriptChange: ArcgisSqlLayerEditor["arcgisScriptChange"]["detail"];
  };
}