/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { editor } from "monaco-editor";
import type { 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 {
  /** @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;
  };
  /** @internal */
  protected messages: Partial<{
      loading: string;
      profileempty: string;
      tables: string;
  }> & T9nMeta<{
      loading: string;
      profileempty: string;
      tables: string;
  }>;
  /** @default "none" */
  accessor openedSidePanel: SidePanelName;
  accessor profile: 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"];
  };
}