import { Easing } from '../../types/src/index.ts';
import { HighlightableElementEffect, HighlightableElementTextRevealStyle, HighlightableElementZoomStyle } from '../../types/src/highlightable-element';
import { default as CortexElement } from './cortex-element';

export default class HighlightableElement extends CortexElement {
    /**
     * The slot element.
     */
    readonly slotEl?: HTMLSlotElement;
    /**
     * Whether the gallery item has an event (excluding zoom).
     */
    hasEvent: boolean;
    /**
     * Specifies the easing function to use when highlighting the element.
     */
    easing: Easing;
    /**
     * Whether the gallery item highlights its border on hover.
     */
    highlightBorder: boolean;
    /**
     * Whether the gallery item highlights its color overlay on hover.
     */
    highlightColorOverlay: boolean;
    /**
     * Whether the gallery item highlights its drop shadow on hover.
     */
    highlightDropShadow: boolean;
    /**
     * Whether the gallery item highlights its background on hover.
     */
    highlightBackground: boolean;
    /**
     * Whether the gallery item highlights its opacity on hover.
     */
    highlightOpacity: boolean;
    /**
     * The effect of the gallery item.
     */
    effect: HighlightableElementEffect;
    /**
     * The style of the text reveal effect.
     */
    textRevealStyle: HighlightableElementTextRevealStyle;
    /**
     * The style of the zoom effect.
     */
    zoomStyle: HighlightableElementZoomStyle;
    /**
     * Whether the slot has content.
     */
    hasSlotContent: boolean;
    /**
     * Whether the slot content has data-item-id attribute.
     */
    isCustomSlot: boolean;
    /**
     * Is item being hover?
     */
    isHovering: boolean;
    get easeCSSVariable(): string;
    getHighlighterClass(): {
        [x: string]: boolean;
        highlighter: boolean;
        'highlighter--background': boolean;
        'highlighter--border': boolean;
        'highlighter--color-overlay': boolean;
        'highlighter--drop-shadow': boolean;
        'highlighter--opacity': boolean;
    };
    /**
     * Check if the slot has actual content (not just whitespace).
     */
    handleSlotChange(): void;
}
