import { useScroll } from '@vueuse/core';
import { ExtractPropTypes, UnwrapNestedRefs } from 'vue';
import { ExtractEmitsTypes } from '@yanzhen-libs/utils-vue';
import { ContactsItem } from '../../contacts/src/constants';
export type ListLoadMoreState = UnwrapNestedRefs<ReturnType<typeof useScroll>>;
export type ListLoadMoreFn = (state?: ListLoadMoreState) => void;
export declare const listOptions: {
    ns: any;
    name: any;
};
export declare const listName: any;
export declare const listModes: readonly ["default", "virtual", "tree"];
export declare const listProps: {
    class: {
        type: import('vue').PropType<any>;
    };
    style: {
        type: import('vue').PropType<any>;
    };
    mode: import('@yanzhen-libs/utils-vue').EpPropFinalized<import('vue').PropType<readonly ["default", "virtual", "tree"]>, "default" | "virtual" | "tree", unknown, "default", boolean>;
    dataSource: import('@yanzhen-libs/utils-vue').EpPropFinalized<import('vue').PropType<ContactsItem[]>, unknown, unknown, () => any[], boolean>;
    loading: import('@yanzhen-libs/utils-vue').EpPropFinalized<BooleanConstructor, unknown, unknown, boolean, boolean>;
    disabled: import('@yanzhen-libs/utils-vue').EpPropFinalized<BooleanConstructor, unknown, unknown, boolean, boolean>;
    height: {
        type: (StringConstructor | NumberConstructor)[];
    };
    distance: import('@yanzhen-libs/utils-vue').EpPropFinalized<NumberConstructor, unknown, unknown, number, boolean>;
    tag: import('@yanzhen-libs/utils-vue').EpPropFinalized<StringConstructor, unknown, unknown, string, boolean>;
    onLoadMore: {
        type: import('vue').PropType<ListLoadMoreFn>;
    };
    "onUpdate:loading": {
        type: import('vue').PropType<(loading: boolean) => void>;
    };
};
export declare const listEmits: {
    "load-more": (state?: {
        x: number;
        y: number;
        isScrolling: boolean;
        arrivedState: {
            left: boolean;
            right: boolean;
            top: boolean;
            bottom: boolean;
        };
        directions: {
            left: boolean;
            right: boolean;
            top: boolean;
            bottom: boolean;
        };
        measure: () => void;
    }) => boolean;
    "update:loading": (loading: boolean) => boolean;
};
export type ListProps = ExtractPropTypes<typeof listProps>;
export type ListPropsKey = keyof ListProps;
export type ListEmits = ExtractEmitsTypes<typeof listEmits>;
