import type { PropType, Ref, CSSProperties, ExtractPropTypes, InjectionKey, StyleValue } from 'vue';
import type { Arrayable } from '../../_utils/types';
type IEvent = {
    scrollTop: number;
    scrollLeft: number;
};
export declare const _props: {
    wrapClassName: {
        type: StringConstructor;
    };
    wrapStyle: {
        type: PropType<string | CSSProperties>;
    };
    barWidth: {
        type: NumberConstructor;
        default: number;
    };
    always: {
        type: BooleanConstructor;
    };
    minSize: {
        type: NumberConstructor;
        default: number;
    };
    native: {
        type: BooleanConstructor;
    };
    class: {
        type: PropType<string | Arrayable<Record<string, boolean>>>;
    };
    style: {
        type: PropType<StyleValue>;
    };
};
export declare const _emits: {
    scroll: ({ scrollTop, scrollLeft }: IEvent) => boolean;
};
export type ScrollbarProps = ExtractPropTypes<typeof _props>;
export type ScrollbarPropsEmits = typeof _emits;
export type ScrollbarInstance = {
    container: Ref<HTMLElement | undefined>;
    scrollTop: () => number;
    scrollLeft: () => number;
    SET_SCROLL_TOP: (value: number, animate?: boolean) => void;
    SET_SCROLL_LEFT: (value: number, animate?: boolean) => void;
};
export type ScrollbarInject = {
    dragging: Ref<boolean>;
    scrollbarElement: Ref<HTMLElement | undefined>;
    wrapElement: Ref<HTMLElement | undefined>;
};
export declare const scrollbarContextKey: InjectionKey<ScrollbarInject>;
export {};
