import type { IEventDetail } from '@breadstone/mosaik-elements';
import { ColorEditorFormat } from '../Types/ColorEditorFormat';
/**
 * Represents the event detail for alpha (opacity) change events.
 *
 * @public
 */
export interface IAlphaChangedEventDetail extends IEventDetail {
    /**
     * The alpha/opacity value (0-1).
     */
    readonly alpha: number;
}
/**
 * Event fired when alpha/opacity changes.
 *
 * @public
 */
export type AlphaChangedEvent = CustomEvent<IAlphaChangedEventDetail>;
/**
 * Represents the event detail for hue change events.
 *
 * @public
 */
export interface IHueChangedEventDetail extends IEventDetail {
    /**
     * The hue value (0-360).
     */
    readonly hue: number;
}
/**
 * Event fired when hue changes.
 *
 * @public
 */
export type HueChangedEvent = CustomEvent<IHueChangedEventDetail>;
/**
 * Represents the event detail for shade change events.
 *
 * @public
 */
export interface IShadeChangedEventDetail extends IEventDetail {
    /**
     * The shade/value component.
     */
    readonly shade: number;
}
/**
 * Event fired when shade changes.
 *
 * @public
 */
export type ShadeChangedEvent = CustomEvent<IShadeChangedEventDetail>;
/**
 * Represents the event detail for color change events.
 *
 * @public
 */
export interface IColorChangedEventDetail extends IEventDetail {
    /**
     * The color value (hex, rgb, etc.).
     */
    readonly color: string;
    /**
     * The hue component (0-360).
     */
    readonly hue?: number;
    /**
     * The saturation component (0-100).
     */
    readonly saturation?: number;
    /**
     * The value/brightness component (0-100).
     */
    readonly value?: number;
    /**
     * The alpha/opacity component (0-1).
     */
    readonly alpha?: number;
    /**
     * The color format string.
     */
    readonly format?: string;
}
/**
 * Event fired when color changes.
 *
 * @public
 */
export type ColorChangedEvent = CustomEvent<IColorChangedEventDetail>;
/**
 * Represents the event detail for color area change events.
 *
 * @public
 */
export interface IColorAreaChangedEventDetail extends IEventDetail {
    /**
     * The saturation component (0-100).
     */
    readonly saturation: number;
    /**
     * The value/brightness component (0-100).
     */
    readonly value: number;
    /**
     * The hue component (0-360).
     */
    readonly hue: number;
}
/**
 * Event fired when color area changes.
 *
 * @public
 */
export type ColorAreaChangedEvent = CustomEvent<IColorAreaChangedEventDetail>;
/**
 * Represents the event detail for color format change events.
 *
 * @public
 */
export interface IColorFormatChangedEventDetail extends IEventDetail {
    /**
     * The format string.
     */
    readonly format: ColorEditorFormat;
}
/**
 * Event fired when color format changes.
 *
 * @public
 */
export type ColorFormatChangedEvent = CustomEvent<IColorFormatChangedEventDetail>;
/**
 * Represents the event detail for palette change events.
 *
 * @public
 */
export interface IPaletteChangedEventDetail extends IEventDetail {
    /**
     * The palette colors.
     */
    readonly colors?: ReadonlyArray<string>;
    /**
     * The palette name.
     */
    readonly palette?: string;
}
/**
 * Event fired when palette changes.
 *
 * @public
 */
export type PaletteChangedEvent = CustomEvent<IPaletteChangedEventDetail>;
/**
 * Represents the event detail for palette add events.
 *
 * @public
 */
export interface IPaletteAddEventDetail extends IEventDetail {
    /**
     * The color value (hex, rgb, etc.).
     */
    readonly color: string;
}
/**
 * Event fired when a color is added to palette.
 *
 * @public
 */
export type PaletteAddEvent = CustomEvent<IPaletteAddEventDetail>;
/**
 * Represents the event detail for palette select events.
 *
 * @public
 */
export interface IPaletteSelectEventDetail extends IEventDetail {
    /**
     * The color value (hex, rgb, etc.).
     */
    readonly color: string;
    /**
     * The index of the selected color.
     */
    readonly index?: number;
}
/**
 * Event fired when a color is selected from palette.
 *
 * @public
 */
export type PaletteSelectEvent = CustomEvent<IPaletteSelectEventDetail>;
/**
 * Represents the event detail for swatch copy events.
 *
 * @public
 */
export interface ISwatchCopyEventDetail extends IEventDetail {
    /**
     * The color value (hex, rgb, etc.).
     */
    readonly color: string;
}
/**
 * Event fired when a swatch color is copied.
 *
 * @public
 */
export type SwatchCopyEvent = CustomEvent<ISwatchCopyEventDetail>;
declare global {
    interface HTMLElementEventMap {
        alphaChanged: AlphaChangedEvent;
        hueChanged: HueChangedEvent;
        shadeChanged: ShadeChangedEvent;
        colorChanged: ColorChangedEvent;
        colorAreaChanged: ColorAreaChangedEvent;
        colorFormatChanged: ColorFormatChangedEvent;
        paletteChanged: PaletteChangedEvent;
        paletteCustomChanged: PaletteChangedEvent;
        paletteAdd: PaletteAddEvent;
        paletteSelect: PaletteSelectEvent;
        swatchCopy: SwatchCopyEvent;
    }
}
//# sourceMappingURL=ColorEvents.d.ts.map