import { DefaultListProps } from '../defaults';
import type { CSSProperties } from 'vue';
import type { ListConstructorProps, Alignment } from '../types';
declare const createList: ({ name, getOffset, getItemSize, getItemOffset, getEstimatedTotalSize, getStartIndexForOffset, getStopIndexForStartIndex, initCache, clearCache, validateProps, }: ListConstructorProps<typeof DefaultListProps>) => import("vue").DefineComponent<{
    cache: {
        type: import("vue").PropType<number>;
        default: number;
    };
    className: {
        type: import("vue").PropType<string>;
        default: string;
    };
    containerElement: {
        type: (StringConstructor | ObjectConstructor)[];
        default: string;
    };
    data: {
        type: import("vue").PropType<any[]>;
        default: () => any[];
    };
    direction: {
        type: import("vue").PropType<import("../types").Direction>;
        default: string;
        validator: (val: import("../types").Direction) => boolean;
    };
    estimatedItemSize: {
        type: import("vue").PropType<number>;
    };
    height: {
        type: import("vue").PropType<string | number>;
        required: boolean;
    };
    layout: {
        type: import("vue").PropType<import("../types").LayoutDirection>;
        default: string;
    };
    initScrollOffset: {
        type: NumberConstructor;
        default: number;
    };
    innerElement: {
        type: (StringConstructor | ObjectConstructor)[];
        default: string;
    };
    total: {
        type: import("vue").PropType<number>;
        required: boolean;
    };
    itemSize: {
        type: import("vue").PropType<number | import("../types").ItemSize>;
        required: boolean;
    };
    style: {
        type: import("vue").PropType<import("../types").StyleValue>;
        default: () => {};
    };
    useIsScrolling: {
        type: BooleanConstructor;
        default: boolean;
    };
    width: {
        type: import("vue").PropType<string | number>;
        required: boolean;
    };
}, {
    clientSize: import("vue").ComputedRef<string | number>;
    estimatedTotalSize: import("vue").ComputedRef<number>;
    windowStyle: import("vue").ComputedRef<({
        position: string;
        overflow: string;
        WebkitOverflowScrolling: string;
        willChange: string;
    } | {
        direction: import("../types").Direction;
        height: string | number;
        width: string | number;
        position?: undefined;
        overflow?: undefined;
        WebkitOverflowScrolling?: undefined;
        willChange?: undefined;
    })[]>;
    windowRef: import("vue").Ref<HTMLElement>;
    innerRef: import("vue").Ref<HTMLElement>;
    innerStyle: import("vue").ComputedRef<{
        height: string;
        pointerEvents: string;
        width: string;
    }>;
    itemsToRender: import("vue").ComputedRef<number[]>;
    scrollbarRef: any;
    states: import("vue").Ref<{
        isScrolling: boolean;
        scrollDir: string;
        scrollOffset: number;
        updateRequested: boolean;
        isScrollbarDragging: boolean;
    }>;
    getItemStyle: (idx: number) => CSSProperties;
    onScroll: (e: Event) => void;
    onScrollbarScroll: (distanceToGo: number, totalSteps: number) => void;
    onWheel: (e: WheelEvent) => void;
    scrollTo: (offset: number) => void;
    scrollToItem: (idx: number, alignment?: Alignment) => void;
    resetScrollTop: () => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("scroll" | "item-rendered")[], "scroll" | "item-rendered", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
    cache?: unknown;
    className?: unknown;
    containerElement?: unknown;
    data?: unknown;
    direction?: unknown;
    estimatedItemSize?: unknown;
    height?: unknown;
    layout?: unknown;
    initScrollOffset?: unknown;
    innerElement?: unknown;
    total?: unknown;
    itemSize?: unknown;
    style?: unknown;
    useIsScrolling?: unknown;
    width?: unknown;
} & {
    data: any[];
    style: {};
    direction: import("../types").Direction;
    layout: import("../types").LayoutDirection;
    className: string;
    cache: number;
    containerElement: string;
    initScrollOffset: number;
    innerElement: string;
    useIsScrolling: boolean;
} & {
    height?: string | number;
    width?: string | number;
    total?: number;
    estimatedItemSize?: number;
    itemSize?: number | import("../types").ItemSize;
}> & {
    onScroll?: (...args: any[]) => any;
    "onItem-rendered"?: (...args: any[]) => any;
}, {
    data: any[];
    style: {};
    direction: import("../types").Direction;
    layout: import("../types").LayoutDirection;
    className: string;
    cache: number;
    containerElement: string;
    initScrollOffset: number;
    innerElement: string;
    useIsScrolling: boolean;
}>;
export default createList;
