import { type IAttachable } from '../../../Behaviors/Attachable';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IConnectedCallback } from '../../Abstracts/Interfaces/IConnectedCallback';
import type { IDisconnectedCallback } from '../../Abstracts/Interfaces/IDisconnectedCallback';
import type { IRippleElementProps } from './IRippleElementProps';
import { CssTime } from '@breadstone/mosaik-themes';
declare const RippleElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => IAttachable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Ripple - An interactive visual effect component that creates expanding circular animations on user interaction.
 *
 * Provides tactile feedback through animated ripple effects that emanate from the point of user interaction.
 * Enhances user experience by giving immediate visual confirmation of clicks, taps, or other interactions
 * with a Material Design-inspired expanding circle animation.
 *
 * @name RippleElement
 * @element mosaik-ripple
 * @category Effects
 *
 * @slot - Default content area (typically empty as ripple is a visual effect overlay)
 *
 * @csspart ripple - Main ripple effect container
 * @csspart animation - Individual ripple animation elements
 *
 * @cssprop --ripple-background-color - Background color for the ripple effect
 * @cssprop --ripple-opacity - Opacity level for the ripple animation
 * @cssprop --ripple-duration - Animation duration for the ripple effect
 * @cssprop --ripple-scale - Maximum scale factor for the ripple expansion
 * @cssprop --ripple-easing - Easing function for the ripple animation
 *
 * @dependency CssTime - For handling CSS time values and animation timing
 *
 * @example
 * ```html
 * <!-- Basic button with ripple effect -->
 * <mosaik-button>
 *   <mosaik-ripple></mosaik-ripple>
 *   Click Me
 * </mosaik-button>
 *
 * <!-- Card with ripple feedback -->
 * <mosaik-card clickable="true">
 *   <mosaik-ripple></mosaik-ripple>
 *   <mosaik-text slot="header">Interactive Card</mosaik-text>
 *   <mosaik-text>Click anywhere on this card</mosaik-text>
 * </mosaik-card>
 *
 * <!-- Custom ripple attached to external element -->
 * <div id="custom-element" class="interactive-area">
 *   <mosaik-ripple for="custom-element"></mosaik-ripple>
 *   Custom Interactive Area
 * </div>
 *
 * <!-- Ripple with custom styling -->
 * <mosaik-button appearance="primary">
 *   <mosaik-ripple style="--ripple-background-color: rgba(255,255,255,0.3); --ripple-duration: 600ms;"></mosaik-ripple>
 *   Primary Button
 * </mosaik-button>
 *
 * <!-- Disabled ripple (no animation) -->
 * <mosaik-button disabled="true">
 *   <mosaik-ripple disabled="true"></mosaik-ripple>
 *   Disabled Button
 * </mosaik-button>
 * ```
 *
 * @public
 */
export declare class RippleElement extends RippleElement_base implements IConnectedCallback, IDisconnectedCallback, IAttachable, IRippleElementProps {
    private _mouseDownSubscription;
    private _centered;
    private _duration;
    /**
     * @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 `centered` property.
     *
     * @public
     * @attr
     */
    get centered(): boolean;
    set centered(value: boolean);
    /**
     * Gets or sets the `duration` property.
     *
     * @public
     * @attr
     */
    get duration(): CssTime;
    set duration(value: CssTime);
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @private
     */
    private onMouseDown;
    /**
     * @private
     */
    private getDimensions;
}
/**
 * @public
 */
export declare namespace RippleElement {
    type Props = IRippleElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-ripple': RippleElement;
    }
}
export {};
//# sourceMappingURL=RippleElement.d.ts.map