/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina/PublicLitElement";
import type { IPopoverProps } from "../../utils/types.js";
import type { T9nMeta } from "@arcgis/lumina/controllers";
import type { Popover as Popover } from "@esri/calcite-components/components/calcite-popover";

export abstract class ArcgisColorInput extends LitElement {
  /** @internal */
  protected _messages: Partial<{
      clearColor: string;
      commitColor: string;
      deleteColor: string;
      noColor: string;
      recentColors: string;
      selectColor: string;
  }> & T9nMeta<{
      clearColor: string;
      commitColor: string;
      deleteColor: string;
      noColor: string;
      recentColors: string;
      selectColor: string;
  }>;
  /**
   * Display option to set no color.
   *
   * @default false
   */
  accessor clearable: boolean;
  /** The selected color as a HEX value. If not set it will display a 'transparent' color swatch. */
  accessor color: string | undefined;
  /**
   * Control whether the component should be displayed in a compact style (i.e., fewer recent color options).
   *
   * @default false
   */
  accessor compact: boolean;
  /**
   * Control whether the component is disabled.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * If true, do not display recent colors.
   *
   * @default false
   */
  accessor hideRecentColors: boolean;
  /** Replace localized message strings with your own strings. */
  accessor messageOverrides: {
      clearColor?: string | undefined;
      commitColor?: string | undefined;
      deleteColor?: string | undefined;
      noColor?: string | undefined;
      recentColors?: string | undefined;
      selectColor?: string | undefined;
  };
  /**
   * Determines where the popup color picker will be positioned relative to the color input.
   *
   * @default "auto"
   */
  accessor placement: Popover["placement"];
  /** Convenience prop to specify common popover props. */
  accessor popoverProps: IPopoverProps | undefined;
  /**
   * If true, allow transparency to be modified within the color picker.
   *
   * @default false
   */
  accessor showTransparency: boolean;
  /**
   * The id of the local storage element that will store recent colors.
   *
   * @default "arcgis-color-input-storage-colors"
   */
  accessor storageId: string;
  /** Close the component. */
  close(): Promise<void>;
  /** Set focus on the component. */
  setFocus(): Promise<void>;
  /** Emitted when the color has changed. */
  readonly arcgisChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** @deprecated use arcgisChange instead */
  readonly arcgisColorInputChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** @deprecated use arcgisPickerClose instead */
  readonly arcgisColorInputPopoverClose: import("@arcgis/lumina").TargetedEvent<this, string>;
  /** @deprecated use arcgisPickerOpen instead */
  readonly arcgisColorInputPopoverOpen: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** @deprecated use arcgisSwatchUpdate instead */
  readonly arcgisColorInputSwatchUpdate: import("@arcgis/lumina").TargetedEvent<this, string | undefined>;
  readonly arcgisPickerClose: import("@arcgis/lumina").TargetedEvent<this, string>;
  readonly arcgisPickerOpen: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Emitted when a color swatch is updated (emits selected color hex). */
  readonly arcgisSwatchUpdate: import("@arcgis/lumina").TargetedEvent<this, string | undefined>;
  readonly "@eventTypes": {
    arcgisChange: ArcgisColorInput["arcgisChange"]["detail"];
    arcgisColorInputChange: ArcgisColorInput["arcgisColorInputChange"]["detail"];
    arcgisColorInputPopoverClose: ArcgisColorInput["arcgisColorInputPopoverClose"]["detail"];
    arcgisColorInputPopoverOpen: ArcgisColorInput["arcgisColorInputPopoverOpen"]["detail"];
    arcgisColorInputSwatchUpdate: ArcgisColorInput["arcgisColorInputSwatchUpdate"]["detail"];
    arcgisPickerClose: ArcgisColorInput["arcgisPickerClose"]["detail"];
    arcgisPickerOpen: ArcgisColorInput["arcgisPickerOpen"]["detail"];
    arcgisSwatchUpdate: ArcgisColorInput["arcgisSwatchUpdate"]["detail"];
  };
}