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

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

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

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

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

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

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

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