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.
 *
 * @name ColorEditor
 * @element mosaik-color-editor
 *
 * @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.
 *
 * @category Media
 *
 * @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
 *
 * @slot area - Custom color area component
 * @slot hue-slider - Custom hue slider component
 * @slot alpha-slider - Custom alpha slider component
 * @slot swatch - Custom color swatch component
 * @slot inputs - Custom inputs component
 * @slot palette - Custom palette component
 *
 * @csspart tools - The main tools container
 * @csspart tools-row - Row container for sliders and swatch
 * @csspart sliders - Container for hue and alpha sliders
 * @csspart inputs - Container for input fields
 * @csspart palette - Container for color palette
 *
 * @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 `{@link is}` property.
     * The `{@link 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 `{@link IColorChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get colorChanged(): IEventEmitter<IColorChangedEventDetail>;
    /**
     * Called when the color format is changed.
     * Provides reference to `{@link IColorFormatChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get colorFormatChanged(): IEventEmitter<IColorFormatChangedEventDetail>;
    /**
     * Called when custom palette colors change.
     * Provides reference to `{@link 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