import { type IAttachable } from '../../../../Behaviors/Attachable';
import { CustomElement } from '../../../Abstracts/CustomElement';
import type { IAdornerElementProps } from './IAdornerElementProps';
declare const AdornerElement_base: import("../../../../../Index").ControlBehaviorReturn<import("../../../../../Index").ControlBehaviorReturn<typeof CustomElement, IAttachable>, import("../../../../Behaviors/Disableable").IDisableableProps>;
/**
 * Adorner - Abstract base class for decorative overlay elements attached to controls.
 *
 * @description
 * The AdornerElement provides foundational functionality for creating decorative overlay elements
 * that attach to and enhance other controls. Adorners are lightweight UI enhancements that appear
 * in response to mouse interactions (hover, move, leave, down) and can be positioned relative to
 * their target control using the Attachable behavior. Common use cases include tooltips, badges,
 * resize handles, selection indicators, and contextual helpers. This abstract class manages the
 * lifecycle of adorner DOM elements, handles mouse event subscriptions, and provides extension
 * points for subclasses to implement custom show/hide behavior.
 *
 * @name Adorner
 * @category Primitives
 *
 * @dependency {Attachable} - Positioning behavior for attaching to target elements
 * @dependency {Disableable} - Disabled state management
 *
 * @example
 * Creating a simple tooltip adorner:
 * ```typescript
 * export class TooltipElement extends AdornerElement {
 *     protected show(): void {
 *         const tooltip = this.create<HTMLDivElement>({
 *             classes: 'mosaik-tooltip'
 *         });
 *         tooltip.textContent = this.getAttribute('tooltip-text') || '';
 *     }
 *
 *     protected hide(): void {
 *         this.dispose();
 *     }
 * }
 * ```
 *
 * @example
 * Creating a badge adorner:
 * ```typescript
 * export class BadgeAdorner extends AdornerElement {
 *     private _badgeElement: HTMLElement | null = null;
 *
 *     protected show(): void {
 *         if (!this._badgeElement) {
 *             this._badgeElement = this.create<HTMLDivElement>({
 *                 classes: ['mosaik-badge', 'mosaik-badge-corner']
 *             });
 *         }
 *         this._badgeElement.style.display = 'block';
 *     }
 *
 *     protected hide(): void {
 *         if (this._badgeElement) {
 *             this._badgeElement.style.display = 'none';
 *         }
 *     }
 * }
 * ```
 *
 * @example
 * Using adorner with attachment configuration:
 * ```html
 * <mosaik-button control="my-button">Click Me</mosaik-button>
 * <custom-tooltip-adorner
 *     control="my-button"
 *     tooltip-text="Click to perform action"
 *     placement="top"
 *     offset="8">
 * </custom-tooltip-adorner>
 * ```
 *
 * @abstract
 * @public
 */
export declare abstract class AdornerElement extends AdornerElement_base implements IAdornerElementProps, IAttachable {
    private _adornerElement;
    private _mouseEnterSubscription;
    private _mouseMoveSubscription;
    private _mouseLeaveSubscription;
    private _mouseDownSubscription;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * @protected
     * @abstract
     */
    protected abstract show(): void;
    /**
     * @protected
     * @abstract
     */
    protected abstract hide(): void;
    /**
     * @protected
     */
    protected create<T extends HTMLElement>(config: {
        parent?: any;
        classes?: Array<string> | string;
    }): T;
    /**
     * @protected
     */
    protected dispose(): void;
}
export {};
//# sourceMappingURL=AdornerElement.d.ts.map