import { Module, TModuleOnCallbacksProps } from '../../base';
import { TRequiredProps } from '../../internal/requiredProps';
import { IScrollbarCallbacksMap, IScrollbarMutableProps, IScrollbarStaticProps } from './types';
export * from './types';
type TC = IScrollbarCallbacksMap;
type TS = IScrollbarStaticProps;
type TM = IScrollbarMutableProps;
/**
 * A custom scrollbar component. Supports both `window` and `HTMLElement` containers.
 *
 * [Documentation](https://vevetjs.com/docs/Scrollbar)
 *
 * @group Components
 */
export declare class Scrollbar extends Module<TC, TS, TM> {
    /** Get default static properties */
    _getStatic(): TRequiredProps<TS>;
    /** Get default mutable properties */
    _getMutable(): TRequiredProps<TM>;
    /**
     * Scrollbar outer element.
     */
    private _outer;
    /**
     * Scrollbar track element (the container of the thumb).
     */
    private _track;
    /**
     * Scrollbar thumb element (draggable handle).
     */
    private _thumb;
    /** Save scroll value on swipe start */
    private _valueOnSwipeStart;
    /** Previous scroll value */
    private _prevScrollValue;
    /** Timeout for scroll action */
    private _addInActionTimeout?;
    /** Timeout for scroll action */
    private _removeInActionTimeout?;
    /** Detects if the container is RTL */
    private _isRtl;
    constructor(props?: TS & TM & TModuleOnCallbacksProps<TC, Scrollbar>, onCallbacks?: TModuleOnCallbacksProps<TC, Scrollbar>);
    get prefix(): string;
    /**
     * Scrollbar outer element
     */
    get outer(): HTMLElement;
    /**
     * The element to which the scrollbar is applied.
     */
    get container(): Window | HTMLElement | import("..").Snap;
    /**
     * Scrollbar track element (the container of the thumb).
     */
    get track(): HTMLElement;
    /**
     * Scrollbar thumb element (draggable handle).
     */
    get thumb(): HTMLElement;
    /** Scroll axis */
    get axis(): "x" | "y";
    /**
     * The element where the scrollbar is appended.
     * If `parent` is not set, it defaults to `container` or `document.body` (if applied to `window`).
     */
    get parent(): HTMLElement;
    /**
     * The actual scrollable element.
     * Returns `document.documentElement` for `window`, otherwise the `container` itself.
     */
    get scrollElement(): HTMLElement | import("..").Snap;
    /**
     * Returns the total scroll width/height of the content.
     */
    get scrollSize(): number;
    /**
     * Returns the total scrollable distance.
     */
    get scrollableSize(): number;
    /**
     * Returns scrollTop or scrollLeft of the scrollable element.
     */
    get scrollValue(): number;
    /** Returns the current track size. */
    get trackSize(): number;
    /** Returns the current thumb size. */
    get thumbSize(): number;
    /** Handles property mutations */
    protected _handleProps(props: Partial<TM>): void;
    /** Create elements */
    private _create;
    /** Create outer element */
    private _createOuter;
    /** Create track element */
    private _createTrack;
    /** Create thumb element */
    private _createThumb;
    /** Set resize events */
    private _setResize;
    /** Set scroll events */
    private _setOnscroll;
    /** Set swipe events */
    private _setSwipe;
    /** Handles swipe start */
    private _handleSwipeStart;
    /** Handle swipe move */
    private _handleSwipeMove;
    /** Handle swipe end */
    private _handleSwipeEnd;
    /** Handle swipe touchmove */
    private _handleSwipeTouchMove;
    /** Handle swipe mousemove */
    private _handleSwipeMouseMove;
    /** Resize the scrollbar. */
    resize(): void;
    /** Render the scrollbar. */
    private _render;
    /** Handle scroll update */
    private _onScroll;
    /** Handle swipe move */
    private _onSwipeMove;
    /**
     * Destroys the component and cleans up resources.
     */
    protected _destroy(): void;
}
//# sourceMappingURL=index.d.ts.map