import Cls from './helper/class-names';
import EventManager from './helper/event-manager';
export declare enum IScrollbarSize {
    Large = "large",
    Normal = "normal",
    Small = "small"
}
/**
 * 滚动条配置项类型定义
 * @property {string[]} handlers - 需要启用的处理器名称列表
 * @property {number | null} maxScrollbarLength - 滚动条的最大长度，单位像素
 * @property {number | null} minScrollbarLength - 滚动条的最小长度，单位像素
 * @property {number} scrollingThreshold - 滚动事件的节流时间，单位毫秒
 * @property {number} scrollXMarginOffset - 水平滚动条的边距偏移量，单位像素
 * @property {number} scrollYMarginOffset - 垂直滚动条的边距偏移量，单位像素
 * @property {boolean} suppressScrollX - 是否禁用水平滚动条
 * @property {boolean} suppressScrollY - 是否禁用垂直滚动条
 * @property {boolean} swipeEasing - 是否启用触控滑动时的缓动效果
 * @property {boolean} useBothWheelAxes - 是否在滚动时同时滚动两个轴
 * @property {boolean} wheelPropagation - 是否启用滚轮事件传播
 * @property {number} wheelSpeed - 滚轮滚动速度
 */
export type ISettingPropType = {
    handlers: string[];
    maxScrollbarLength: null | number;
    minScrollbarLength: null | number;
    scrollingThreshold: number;
    scrollXMarginOffset: number;
    scrollYMarginOffset: number;
    suppressScrollX: boolean;
    suppressScrollY: boolean;
    swipeEasing: boolean;
    useBothWheelAxes: boolean;
    wheelPropagation: boolean;
    wheelSpeed: number;
    onScollCallback?: (...args: any[]) => void;
    classPrefix?: string;
    scrollSize: IScrollbarSize;
};
export type VirtualElementOptions = {
    scrollHeight: number;
    scrollTop?: number;
    scrollLeft?: number;
    className: string;
    delegateElement: HTMLElement;
    onScollCallback: (...args: any[]) => void;
};
export declare class VirtualElement {
    isVirtualElement: boolean;
    scrollHeight: number;
    virtualScrollTop: number;
    virtualScrollLeft: number;
    scrollTop: number;
    onScollCallback: (...args: any[]) => void;
    delegateElement: HTMLElement;
    constructor({ scrollHeight, delegateElement, onScollCallback }: Partial<VirtualElementOptions>);
    handleScrollChanged(prop: string): void;
    scrollTo({ x, y }: {
        x: any;
        y: any;
    }): void;
}
export default class BkScrollbar {
    element: Partial<HTMLElement> | Partial<VirtualElement>;
    containerWidth: number;
    containerHeight: number;
    contentWidth: number;
    settings: ISettingPropType;
    contentHeight: number;
    isRtl: boolean;
    isNegativeScroll: boolean;
    negativeScrollAdjustment: number;
    event: EventManager;
    ownerDocument: Document;
    scrollbarXRail: HTMLDivElement;
    scrollbarX: HTMLDivElement;
    scrollbarXActive: boolean;
    scrollbarXWidth: number;
    scrollbarXLeft: number;
    scrollbarXBottom: number;
    isScrollbarXUsingBottom: boolean;
    scrollbarXTop: number;
    railBorderXWidth: number;
    railXMarginWidth: number;
    railXWidth: number;
    railXRatio: number;
    scrollbarYRail: HTMLDivElement;
    scrollbarY: HTMLDivElement;
    scrollbarYActive: boolean;
    scrollbarYHeight: number;
    scrollbarYTop: number;
    scrollbarYRight: number;
    isScrollbarYUsingRight: boolean;
    scrollbarYLeft: number;
    scrollbarYOuterWidth: number;
    railBorderYWidth: number;
    railYMarginHeight: number;
    railYHeight: number;
    railYRatio: number;
    reach: {
        x: string;
        y: string;
    };
    isAlive: boolean;
    lastScrollTop: number;
    lastScrollLeft: number;
    cls: Cls;
    /**
     * 构造函数
     * @param {Element | string} element - 滚动条元素或选择器字符串
     * @param {Partial<ISettingPropType>} userSettings - 用户配置
     */
    constructor(element: (Partial<Element> | Partial<VirtualElement>) | string, userSettings?: Partial<ISettingPropType>);
    /**
     * 更新滚动条
     */
    update(virtaulElement?: VirtualElement): void;
    /**
     * 滚动事件处理
     * @param {Event} _e - 滚动事件
     */
    onScroll(_e: any): void;
    scrollTo({ x, y }: {
        x: any;
        y: any;
    }): void;
    /**
     * 销毁滚动条实例
     */
    destroy(): void;
    /**
     * 移除滚动条相关的类名
     */
    removePsClasses(): void;
}
