/// <reference types="../index.d.ts" />
import type { ArcgisArcadeEditor } from "../components/arcgis-arcade-editor/customElement.js";
import type { ArcgisCodeEditor } from "../components/arcgis-code-editor/customElement.js";
import type { CodeEditorShell } from "../components/arcgis-code-editor-shell/customElement.js";
import type { ArcgisCodeViewer } from "../components/arcgis-code-viewer/customElement.js";
import type { ArcgisSqlExpressionEditor } from "../components/arcgis-sql-expression-editor/customElement.js";
import type { ArcgisSqlLayerEditor } from "../components/arcgis-sql-layer-editor/customElement.js";
import { JSXBase as StencilJsx } from "@stencil/core/internal";
import type { EventHandler } from "@arcgis/lumina";

interface StencilArcgisArcadeEditor extends Partial<Pick<ArcgisArcadeEditor, "arcadeAssistant" | "customPanels" | "disableAssistant" | "editorOptions" | "enableDebugger" | "externalExecutor" | "hideDocumentationActions" | "hideSideBar" | "messageOverrides" | "openedSidePanel" | "profile" | "script" | "sideActionBarExpanded" | "snippets" | "suggestions" | "testData">>, StencilJsx.HTMLAttributes<ArcgisArcadeEditor> {
  onArcgisDiagnosticsChange?: EventHandler<ArcgisArcadeEditor["arcgisDiagnosticsChange"]>;
  onArcgisScriptChange?: EventHandler<ArcgisArcadeEditor["arcgisScriptChange"]>;
}

interface StencilArcgisCodeEditor extends Partial<Pick<ArcgisCodeEditor, "editorOptions" | "language" | "modelId" | "value">>, StencilJsx.HTMLAttributes<ArcgisCodeEditor> {
  onArcgisSelectionChange?: EventHandler<ArcgisCodeEditor["arcgisSelectionChange"]>;
  onArcgisValueChange?: EventHandler<ArcgisCodeEditor["arcgisValueChange"]>;
}

interface StencilArcgisCodeEditorShell extends StencilJsx.HTMLAttributes<CodeEditorShell> {
}

interface StencilArcgisCodeViewer extends Partial<Pick<ArcgisCodeViewer, "language" | "lineNumbers" | "round">>, StencilJsx.HTMLAttributes<ArcgisCodeViewer> {
}

interface StencilArcgisSqlExpressionEditor extends Partial<Pick<ArcgisSqlExpressionEditor, "hideDescriptionsInFieldsPanel" | "hideSideBar" | "messageOverrides" | "profile" | "script">>, StencilJsx.HTMLAttributes<ArcgisSqlExpressionEditor> {
  onArcgisDiagnosticsChange?: EventHandler<ArcgisSqlExpressionEditor["arcgisDiagnosticsChange"]>;
  onArcgisScriptChange?: EventHandler<ArcgisSqlExpressionEditor["arcgisScriptChange"]>;
}

interface StencilArcgisSqlLayerEditor extends Partial<Pick<ArcgisSqlLayerEditor, "editorOptions" | "hideSideBar" | "messageOverrides" | "openedSidePanel" | "profile" | "script">>, StencilJsx.HTMLAttributes<ArcgisSqlLayerEditor> {
  onArcgisDiagnosticsChange?: EventHandler<ArcgisSqlLayerEditor["arcgisDiagnosticsChange"]>;
  onArcgisScriptChange?: EventHandler<ArcgisSqlLayerEditor["arcgisScriptChange"]>;
}

interface ExposedElements {
  "arcgis-arcade-editor": StencilArcgisArcadeEditor;
  "arcgis-code-editor": StencilArcgisCodeEditor;
  "arcgis-code-editor-shell": StencilArcgisCodeEditorShell;
  "arcgis-code-viewer": StencilArcgisCodeViewer;
  "arcgis-sql-expression-editor": StencilArcgisSqlExpressionEditor;
  "arcgis-sql-layer-editor": StencilArcgisSqlLayerEditor;
}

export namespace JSX {
  export interface IntrinsicElements extends ExposedElements {}
}

declare module "@stencil/core/internal/stencil-public-runtime" {
  export namespace h.JSX {
    interface IntrinsicElements extends ExposedElements {}
  }
}