import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { IPaletteAddEventDetail, IPaletteChangedEventDetail, IPaletteSelectEventDetail } from '../../../events';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IColorEditorPaletteElementProps } from './IColorEditorPaletteElementProps';
import { IColorPalette } from './IColorPalette';
declare const ColorEditorPaletteElement_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 Palette - A component for displaying and selecting colors from predefined palettes.
 *
 * @name ColorEditorPalette
 * @element mosaik-color-editor-palette
 *
 * @description
 * The Color Editor Palette component displays a grid of color swatches from one or more
 * predefined palettes. Users can select colors from the palette and optionally add custom
 * colors to a user palette. The component supports switching between multiple palettes
 * via a panel interface.
 *
 * @category Media
 *
 * @fires paletteSelect {PaletteSelectEvent} - Fired when a color is selected from the palette
 * @fires paletteAdd {PaletteAddEvent} - Fired when the add button is clicked (for custom palette)
 * @fires paletteChanged {PaletteChangedEvent} - Fired when the active palette is changed
 * @fires paletteCustomChanged {PaletteChangedEvent} - Fired when colors are added or removed from the custom palette. Detail contains { colors: Array<string> }
 *
 * @csspart header - The header row containing title and switcher
 * @csspart title - The palette name display
 * @csspart switcher - The button to open palette selector panel
 * @csspart colors - The container for color swatches
 * @csspart color-item - Individual color swatch buttons
 * @csspart add-button - The button to add current color to custom palette
 * @csspart panel - The palette selector panel
 * @csspart panel-item-more - The "+N" text showing remaining colors count
 *
 * @public
 */
export declare class ColorEditorPaletteElement extends ColorEditorPaletteElement_base implements IColorEditorPaletteElementProps {
    private readonly _paletteSelect;
    private readonly _paletteAdd;
    private readonly _paletteChanged;
    private readonly _paletteCustomChanged;
    private _palettes;
    private _selectedPalette;
    private _allowAdd;
    private _currentColor;
    private _panelOpen;
    private _panelAnchor;
    /**
     * Constructs a new instance of the ColorEditorPaletteElement 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 available 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);
    /**
     * Gets or sets whether to show the add button (for custom palettes).
     *
     * @public
     */
    get allowAdd(): boolean;
    set allowAdd(value: boolean);
    /**
     * Gets or sets the current color (used for adding to custom palette).
     *
     * @public
     * @attr
     */
    get currentColor(): string;
    set currentColor(value: string);
    /**
     * Called when a color is selected from the palette.
     * Provides reference to `{@link IPaletteSelectEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteSelect(): IEventEmitter<IPaletteSelectEventDetail>;
    /**
     * Called when the add button is clicked.
     * Provides reference to `{@link IPaletteAddEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteAdd(): IEventEmitter<IPaletteAddEventDetail>;
    /**
     * Called when the active palette is changed.
     * Provides reference to `{@link IPaletteChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteChanged(): IEventEmitter<IPaletteChangedEventDetail>;
    /**
     * Called when colors are added or removed from the custom palette.
     * Provides reference to `{@link IPaletteChangedEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteCustomChanged(): IEventEmitter<IPaletteChangedEventDetail>;
    /**
     * Gets whether the panel is open.
     *
     * @public
     */
    get panelOpen(): boolean;
    /**
     * Gets or sets the anchor element for the panel.
     * When set, the panel will be positioned and sized relative to this element.
     *
     * @public
     */
    get panelAnchor(): HTMLElement | null;
    set panelAnchor(value: HTMLElement | null);
    /**
     * Gets the computed panel styles based on the anchor element.
     *
     * @public
     */
    getPanelStyles(): string;
    /**
     * Gets the currently active palette.
     *
     * @public
     */
    getActivePalette(): IColorPalette | undefined;
    /**
     * Handles color item click.
     *
     * @public
     */
    handleColorClick(color: string): void;
    /**
     * Handles add button click.
     *
     * @public
     */
    handleAddClick(): void;
    /**
     * Handles switcher button click.
     *
     * @public
     */
    handleSwitcherClick(): void;
    /**
     * Handles panel close.
     *
     * @public
     */
    handlePanelClose(): void;
    /**
     * Handles palette selection from panel.
     *
     * @public
     */
    handlePaletteSelect(paletteName: string): void;
    /**
     * Adds a color to the custom palette.
     *
     * @param color - The color to add
     * @public
     */
    addColorToCustomPalette(color: string): void;
    /**
     * Removes a color from the custom palette.
     *
     * @param color - The color to remove
     * @public
     */
    removeColorFromCustomPalette(color: string): void;
    /**
     * Gets the colors from the custom (mutable) palette.
     *
     * @returns The array of colors in the custom palette
     * @public
     */
    getCustomPaletteColors(): Array<string>;
    /**
     * Sets the colors for the custom (mutable) palette.
     * This replaces all existing colors in the custom palette.
     *
     * @param colors - The array of colors to set
     * @public
     */
    setCustomPaletteColors(colors: Array<string>): void;
}
/**
 * @public
 */
export declare namespace ColorEditorPaletteElement {
    type Props = IColorEditorPaletteElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-color-editor-palette': ColorEditorPaletteElement;
    }
}
export {};
//# sourceMappingURL=ColorEditorPaletteElement.d.ts.map