import { IEventEmitter } from '@breadstone/mosaik-elements';
import { UpDownSpinPosition } from '../../../Types/UpDownSpinPosition';
import { CustomElement } from '../../Abstracts/CustomElement';
import { ISpinEvent, type ISpinEventDetail } from './Events/ISpinEventDetail';
import type { IUpDownSpinnerElementProps } from './IUpDownSpinnerElementProps';
declare const UpDownSpinnerElement_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/Sizeable").ISizeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Updown Spinner - A visual element that represents a spinner with alternating upward and downward motion.
 * It is commonly used to indicate ongoing processes or loading states within an application.
 *
 * @category Indicators
 * @element mosaik-updown-spinner
 *
 * @slot prefix - The prefix slot.
 * @slot suffix - The suffix slot.
 * @slot - The default slot.
 *
 * @fires spinned - Called when the element is spinned.
 *
 * @public
 */
export declare class UpDownSpinnerElement extends UpDownSpinnerElement_base implements IUpDownSpinnerElementProps {
    private readonly _spinned;
    private _delay;
    private _interval;
    private _position;
    private _increaseDisabled;
    private _increaseIcon;
    private _decreaseDisabled;
    private _decreaseIcon;
    private _focusable;
    /**
     * @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 `delay` property.
     *
     * @public
     * @attr
     */
    get delay(): number;
    set delay(value: number);
    /**
     * Gets or sets the `interval` property.
     *
     * @public
     * @attr
     */
    get interval(): number;
    set interval(value: number);
    /**
     * Gets or sets the `position` property.
     *
     * @public
     * @attr
     */
    get position(): UpDownSpinPosition;
    set position(value: UpDownSpinPosition);
    /**
     * Gets or sets the `increaseDisabled` property.
     *
     * @public
     * @attr
     */
    get increaseDisabled(): boolean;
    set increaseDisabled(value: boolean);
    /**
     * Gets or sets the `increaseIcon` property.
     *
     * @public
     * @attr
     */
    get increaseIcon(): string;
    set increaseIcon(value: string);
    /**
     * Gets or sets the `decreaseDisabled` property.
     *
     * @public
     * @attr
     */
    get decreaseDisabled(): boolean;
    set decreaseDisabled(value: boolean);
    /**
     * Gets or sets the `decreaseIcon` property.
     *
     * @public
     * @attr
     */
    get decreaseIcon(): string;
    set decreaseIcon(value: string);
    /**
     * Gets or sets the `focusable` property.
     *
     * @public
     * @attr
     */
    get focusable(): boolean;
    set focusable(value: boolean);
    /**
     * Called when <ACTION>.
     * Provides reference to `ISpinEventDetail` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get spinned(): IEventEmitter<ISpinEventDetail>;
    /**
     * Emits the {@link spinned} event.
     *
     * @protected
     */
    protected onSpinned(args: ISpinEventDetail): void;
    /**
     * @private
     * @template
     */
    onIncrease(event?: Event): void;
    /**
     * @private
     * @template
     */
    onDecrease(event?: Event): void;
}
/**
 * @public
 */
export declare namespace UpDownSpinnerElement {
    type Props = IUpDownSpinnerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-updown-spinner': UpDownSpinnerElement;
    }
    interface HTMLElementEventMap {
        spinned: ISpinEvent;
    }
}
export {};
//# sourceMappingURL=UpDownSpinnerElement.d.ts.map