import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { AlphaChangedEvent, ColorAreaChangedEvent, ColorChangedEvent, ColorFormatChangedEvent, HueChangedEvent, IColorChangedEventDetail, IColorFormatChangedEventDetail, IPaletteChangedEventDetail, PaletteAddEvent, PaletteChangedEvent } from '../../../events';
import type { ColorEditorFormat } from '../../../Types/ColorEditorFormat';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IColorEditorElementProps } from './IColorEditorElementProps';
import { IColorPalette } from './IColorPalette';
declare const ColorEditorElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Focusable").IFocusableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Color Editor - A comprehensive color picker component with area, sliders, inputs, and palette.
 *
 * @description
 * The Color Editor component is a complete color picker solution that combines multiple
 * sub-components to provide a rich color selection experience. It includes:
 * - A 2D saturation/value area for fine-tuning color
 * - A hue slider for selecting the base hue
 * - An optional alpha slider for transparency
 * - A color swatch preview
 * - Input fields for precise color entry in multiple formats
 * - Optional color palettes for quick selection
 *
 * All sub-components can be enabled or disabled individually, allowing for
 * customizable color picker configurations.
 *
 * @name ColorEditor
 * @element mosaik-color-editor
 * @category Media
 *
 * @slot alpha-slider - Custom alpha slider component
 * @slot area - Custom color area component
 * @slot eye-dropper - The eye-dropper slot.
 * @slot hue-slider - Custom hue slider component
 * @slot inputs - Custom inputs component
 * @slot palette - Custom palette component
 * @slot swatch - Custom color swatch component
 *
 * @csspart tools - The main tools container
 * @csspart eye-dropper-button - The eye-dropper-button part.
 * @csspart inputs - Container for input fields
 * @csspart palette - Container for color palette
 * @csspart sliders - Container for hue and alpha sliders
 * @csspart tools - The tools part.
 * @csspart tools-row - Row container for sliders and swatch
 *
 * @cssprop {String} --color-editor-background-color - The editor background color CSS custom property.
 * @cssprop {String} --color-editor-border-color - The editor border color CSS custom property.
 * @cssprop {String} --color-editor-border-radius - The editor border radius CSS custom property.
 * @cssprop {String} --color-editor-border-style - The editor border style CSS custom property.
 * @cssprop {String} --color-editor-border-width - The editor border width CSS custom property.
 * @cssprop {String} --color-editor-focus-ring-active-width - The editor focus ring active width CSS custom property.
 * @cssprop {String} --color-editor-focus-ring-color - The editor focus ring color CSS custom property.
 * @cssprop {String} --color-editor-focus-ring-inward-offset - The editor focus ring inward offset CSS custom property.
 * @cssprop {String} --color-editor-focus-ring-outward-offset - The editor focus ring outward offset CSS custom property.
 * @cssprop {String} --color-editor-font-family - The editor font family CSS custom property.
 * @cssprop {String} --color-editor-font-letter-spacing - The editor font letter spacing CSS custom property.
 * @cssprop {String} --color-editor-font-line-height - The editor font line height CSS custom property.
 * @cssprop {String} --color-editor-font-size - The editor font size CSS custom property.
 * @cssprop {String} --color-editor-font-text-decoration - The editor font text decoration CSS custom property.
 * @cssprop {String} --color-editor-font-text-transform - The editor font text transform CSS custom property.
 * @cssprop {String} --color-editor-font-weight - The editor font weight CSS custom property.
 * @cssprop {String} --color-editor-foreground-color - The editor foreground color CSS custom property.
 * @cssprop {String} --color-editor-gap - The editor gap CSS custom property.
 * @cssprop {String} --color-editor-height - The editor height CSS custom property.
 * @cssprop {String} --color-editor-padding-bottom - The editor padding bottom CSS custom property.
 * @cssprop {String} --color-editor-padding-left - The editor padding left CSS custom property.
 * @cssprop {String} --color-editor-padding-right - The editor padding right CSS custom property.
 * @cssprop {String} --color-editor-padding-top - The editor padding top CSS custom property.
 * @cssprop {String} --color-editor-shadow - The editor shadow CSS custom property.
 * @cssprop {String} --color-editor-shadow-blur - The editor shadow blur CSS custom property.
 * @cssprop {String} --color-editor-shadow-color - The editor shadow color CSS custom property.
 * @cssprop {String} --color-editor-shadow-offset-x - The editor shadow offset x CSS custom property.
 * @cssprop {String} --color-editor-shadow-offset-y - The editor shadow offset y CSS custom property.
 * @cssprop {String} --color-editor-shadow-spread - The editor shadow spread CSS custom property.
 * @cssprop {String} --color-editor-transition-duration - The editor transition duration CSS custom property.
 * @cssprop {String} --color-editor-transition-mode - The editor transition mode CSS custom property.
 * @cssprop {String} --color-editor-transition-property - The editor transition property CSS custom property.
 * @cssprop {String} --color-editor-translate - The editor translate CSS custom property.
 * @cssprop {String} --color-editor-width - The editor width CSS custom property.
 *
 * @fires colorChanged {ColorChangedEvent} - Fired when the color value changes
 * @fires colorFormatChanged {ColorFormatChangedEvent} - Fired when the color format is changed
 * @fires paletteChanged {PaletteChangedEvent} - Fired when custom palette colors change
 *
 * @dependency mosaik-button - The Button element.
 * @dependency mosaik-color-editor-alpha-slider - The Color Editor Alpha Slider element.
 * @dependency mosaik-color-editor-area - The Color Editor Area element.
 * @dependency mosaik-color-editor-hue-slider - The Color Editor Hue Slider element.
 * @dependency mosaik-color-editor-inputs - The Color Editor Inputs element.
 * @dependency mosaik-color-editor-palette - The Color Editor Palette element.
 * @dependency mosaik-color-editor-swatch - The Color Editor Swatch element.
 *
 * @example
 * Basic usage:
 * ```html
 * <mosaik-color-editor></mosaik-color-editor>
 * ```
 *
 * @example
 * With an initial color and format:
 * ```html
 * <mosaik-color-editor color="#4a90d9" format="hex"></mosaik-color-editor>
 * ```
 *
 * @example
 * Disabled state:
 * ```html
 * <mosaik-color-editor color="#ff0000" disabled></mosaik-color-editor>
 * ```
 *
 * @public
 */
export declare class ColorEditorElement extends ColorEditorElement_base implements IColorEditorElementProps {
    private readonly _colorChanged;
    private readonly _colorFormatChanged;
    private readonly _paletteChanged;
    private _color;
    private _format;
    private _showAlpha;
    private _showInputs;
    private _showPalette;
    private _showEyeDropper;
    private _showSwatch;
    private _palettes;
    private _selectedPalette;
    private _hue;
    private _saturation;
    private _value;
    private _alpha;
    /**
     * Constructs a new instance of the ColorEditorElement class.
     *
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the color value.
     *
     * @public
     * @attr
     */
    get color(): string;
    set color(value: string);
    /**
     * Gets or sets the color format for the inputs.
     *
     * @public
     * @attr
     */
    get format(): ColorEditorFormat;
    set format(value: ColorEditorFormat);
    /**
     * Gets or sets whether to show the alpha slider and input.
     *
     * @public
     */
    get showAlpha(): boolean;
    set showAlpha(value: boolean);
    /**
     * Gets or sets whether to show the color inputs.
     *
     * @public
     */
    get showInputs(): boolean;
    set showInputs(value: boolean);
    /**
     * Gets or sets whether to show the color palette.
     *
     * @public
     */
    get showPalette(): boolean;
    set showPalette(value: boolean);
    /**
     * Gets or sets whether to show the eye dropper button.
     *
     * @public
     */
    get showEyeDropper(): boolean;
    set showEyeDropper(value: boolean);
    /**
     * Gets or sets whether to show the color swatch preview.
     *
     * @public
     */
    get showSwatch(): boolean;
    set showSwatch(value: boolean);
    /**
     * Gets or sets the available color palettes.
     *
     * @public
     */
    get palettes(): Array<IColorPalette>;
    set palettes(value: Array<IColorPalette>);
    /**
     * Gets or sets the currently selected palette name.
     *
     * @public
     * @attr
     */
    get selectedPalette(): string;
    set selectedPalette(value: string);
    /**
     * Called when the color value changes.
     * Provides reference to `IColorChangedEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get colorChanged(): IEventEmitter<IColorChangedEventDetail>;
    /**
     * Called when the color format is changed.
     * Provides reference to `IColorFormatChangedEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get colorFormatChanged(): IEventEmitter<IColorFormatChangedEventDetail>;
    /**
     * Called when custom palette colors change.
     * Provides reference to `IPaletteChangedEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteChanged(): IEventEmitter<IPaletteChangedEventDetail>;
    /**
     * Gets the current hue value.
     *
     * @public
     * @readonly
     */
    get hue(): number;
    /**
     * Gets the current saturation value.
     *
     * @public
     * @readonly
     */
    get saturation(): number;
    /**
     * Gets the current value (brightness).
     *
     * @public
     * @readonly
     */
    get value(): number;
    /**
     * Gets the current alpha value.
     *
     * @public
     * @readonly
     */
    get alpha(): number;
    /**
     * Gets the display color for templates.
     *
     * @public
     */
    getDisplayColor(): string;
    /**
     * Handles area change events.
     *
     * @private
     */
    onAreaChange(event: ColorAreaChangedEvent): void;
    /**
     * Handles hue slider change events.
     *
     * @private
     */
    onHueChange(event: HueChangedEvent): void;
    /**
     * Handles alpha slider change events.
     *
     * @private
     */
    onAlphaChange(event: AlphaChangedEvent): void;
    /**
     * Handles inputs change events.
     *
     * @private
     */
    onInputsChange(event: ColorChangedEvent): void;
    /**
     * Handles inputs format change events.
     *
     * @private
     */
    onInputsFormatChange(event: ColorFormatChangedEvent): void;
    /**
     * Handles palette color selection.
     *
     * @private
     */
    onPaletteSelect(event: PaletteAddEvent): void;
    /**
     * Handles palette add button click.
     *
     * @private
     */
    onPaletteAdd(event: PaletteAddEvent): void;
    /**
     * Handles palette change.
     *
     * @private
     */
    onPaletteChange(event: PaletteChangedEvent): void;
    /**
     * Opens the native eye dropper tool (if supported).
     *
     * @private
     */
    onOpenEyeDropper(): Promise<void>;
    /**
     * Syncs internal HSV state from the color property.
     *
     * @private
     */
    private syncHsvFromColor;
    /**
     * Builds a color string from internal HSV state.
     *
     * @private
     */
    private buildColorFromHsv;
    /**
     * Updates the color property from HSV state and emits change event.
     *
     * @private
     */
    private updateColorAndEmit;
}
/**
 * @public
 */
export declare namespace ColorEditorElement {
    type Props = IColorEditorElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-color-editor': ColorEditorElement;
    }
}
export {};
//# sourceMappingURL=ColorEditorElement.d.ts.map