import { CSSProperties, Component, PropType, DefineComponent, ExtractPropTypes, ShallowRef, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { Key } from '../_util/type';
import { VueTypeValidableDef } from 'vue-types';
export type ScrollAlign = 'top' | 'bottom' | 'auto';
export type ScrollConfig = {
    index: number;
    align?: ScrollAlign;
    offset?: number;
} | {
    key: Key;
    align?: ScrollAlign;
    offset?: number;
};
export type ScrollTo = (arg: number | ScrollConfig) => void;
export interface ListState {
    scrollTop: number;
    scrollMoving: boolean;
}
declare const List: DefineComponent<ExtractPropTypes<{
    prefixCls: StringConstructor;
    data: VueTypeValidableDef<unknown[]> & {
        default: () => unknown[];
    };
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    /** If not match virtual scroll condition, Set List still use height of container. */
    fullHeight: {
        type: BooleanConstructor;
        default: undefined;
    };
    itemKey: {
        type: PropType<Key | ((item: Record<string, any>) => Key)>;
        required: true;
    };
    component: {
        type: PropType<string | Component>;
    };
    /** Set `false` will always use real scroll instead of virtual one */
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    children: FunctionConstructor;
    onScroll: FunctionConstructor;
    onMousedown: FunctionConstructor;
    onMouseenter: FunctionConstructor;
    onVisibleChange: PropType<(visibleList: any[], fullList: any[]) => void>;
}>, {
    state: {
        scrollTop: number;
        scrollMoving: boolean;
    };
    mergedData: ShallowRef<never[], never[]>;
    componentStyle: ComputedRef<CSSProperties | null>;
    onFallbackScroll: (e: UIEvent) => void;
    onScrollBar: (newScrollTop: number) => void;
    componentRef: ShallowRef<HTMLDivElement | undefined, HTMLDivElement | undefined>;
    useVirtual: ComputedRef<boolean>;
    calRes: {
        scrollHeight?: number | undefined;
        start?: number | undefined;
        end?: number | undefined;
        offset?: number | undefined;
    };
    collectHeight: () => void;
    setInstance: (item: Record<string, any>, instance: HTMLElement) => void;
    sharedConfig: {
        getKey: (item: Record<string, any>) => undefined;
    };
    scrollBarRef: ShallowRef<any, any>;
    fillerInnerRef: ShallowRef<HTMLDivElement | undefined, HTMLDivElement | undefined>;
    delayHideScrollBar: () => void;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
    prefixCls: StringConstructor;
    data: VueTypeValidableDef<unknown[]> & {
        default: () => unknown[];
    };
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    /** If not match virtual scroll condition, Set List still use height of container. */
    fullHeight: {
        type: BooleanConstructor;
        default: undefined;
    };
    itemKey: {
        type: PropType<Key | ((item: Record<string, any>) => Key)>;
        required: true;
    };
    component: {
        type: PropType<string | Component>;
    };
    /** Set `false` will always use real scroll instead of virtual one */
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    children: FunctionConstructor;
    onScroll: FunctionConstructor;
    onMousedown: FunctionConstructor;
    onMouseenter: FunctionConstructor;
    onVisibleChange: PropType<(visibleList: any[], fullList: any[]) => void>;
}>> & Readonly<{}>, {
    data: unknown[];
    virtual: boolean;
    fullHeight: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default List;
