import { IChangedEventDetail, IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IRangeBaseElementProps } from './IRangeBaseElementProps';
declare const RangeBaseElement_base: import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorBase<CustomElement>, import("../../../Behaviors/Rangeable").IRangeableProps<number>>;
/**
 * Range base - A range represents a control that enables users to select a value from a given minimum and maximum range.
 *
 * @fires valueChanged - Fired when the value is changed.
 *
 * @public
 * @abstract
 */
export declare abstract class RangeBaseElement extends RangeBaseElement_base implements IRangeBaseElementProps {
    private readonly _valueChanged;
    private _value;
    /**
     * Constructs a new instance of the `RageBaseElement` class.
     *
     * @remarks
     * This constructor must be public, otherwise it doesn't work with mixins/behaivors.
     *
     * @public
     */
    constructor();
    /**
     * Specifies the value of the `Range`.
     *
     * @public
     * @attr
     */
    get value(): number;
    set value(value: number);
    /**
     * Called when the value is changed.
     * Provides reference to the `IChangedEventDetail` with old and new value as event argument.
     *
     * @public
     * @eventProperty
     * @readonly
     */
    get valueChanged(): IEventEmitter<IChangedEventDetail<RangeBaseElement, number>>;
    /**
     * This method is invoked when the Value property changes.
     *
     * @protected
     */
    protected onValueChanged(prev: number, next: number): void;
}
/**
 * @public
 */
declare global {
    interface HTMLElementEventMap {
        valueChanged: CustomEvent<IChangedEventDetail<RangeBaseElement, number>>;
    }
}
export {};
//# sourceMappingURL=RangeBaseElement.d.ts.map