import { ListEmits, ListProps } from './list';
import { UseVirtualListOptions } from '@vueuse/core';
import { CSSProperties, Ref, SetupContext } from 'vue';
type ReusableTemplateProps = {
    loading: boolean;
    empty: boolean;
};
type ELElement = HTMLElement | SVGAElement | null | undefined;
export declare function useList(props: ListProps, emit: SetupContext<ListEmits>['emit']): {
    readonly ctx: {
        _ref: Ref<any, any>;
        _itemRef: Ref<HTMLElement, HTMLElement>;
        _boxRef: Ref<ELElement, ELElement>;
        _headerRef: Ref<ELElement, ELElement>;
        _mainRef: Ref<ELElement, ELElement>;
        _footerRef: Ref<ELElement, ELElement>;
        wrapStyle: import('vue').ComputedRef<unknown>;
        wrapClass: import('vue').ComputedRef<unknown>;
        styles: Ref<Record<string, CSSProperties>, Record<string, CSSProperties>>;
        $slots: Readonly<{
            [name: string]: import('vue').Slot<any>;
        }>;
        _dataSource: import('vue').ComputedRef<import('../..').ContactsItem[]>;
        _loading: import('vue').WritableComputedRef<import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>, import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>>;
        virtualOptions: import('vue').ComputedRef<UseVirtualListOptions>;
        mainHeight: Ref<number, number>;
        tag: Ref<string, string>;
        mode: Ref<import('@yanzhen-libs/utils-vue').EpPropMergeType<import('vue').PropType<readonly ["default", "virtual", "tree"]>, "default" | "virtual" | "tree", unknown>, import('@yanzhen-libs/utils-vue').EpPropMergeType<import('vue').PropType<readonly ["default", "virtual", "tree"]>, "default" | "virtual" | "tree", unknown>>;
        disabled: Ref<import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>, import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>>;
        loading: Ref<import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>, import('@yanzhen-libs/utils-vue').EpPropMergeType<BooleanConstructor, unknown, unknown>>;
        dataSource: Ref<import('../..').ContactsItem[], import('../..').ContactsItem[]>;
        distance: Ref<number, number>;
        style?: Ref<any, any>;
        class?: Ref<any, any>;
        height?: Ref<string | number, string | number>;
        "onUpdate:loading"?: Ref<(loading: boolean) => void, (loading: boolean) => void>;
        onLoadMore?: Ref<import('./list').ListLoadMoreFn, import('./list').ListLoadMoreFn>;
    };
    readonly templates: {
        DefineEmptyTemplate: import('@vueuse/core').DefineTemplateComponent<ReusableTemplateProps, Record<string, import('vue').Slot>>;
        ReusableEmptyTemplate: import('@vueuse/core').ReuseTemplateComponent<ReusableTemplateProps, Record<string, import('vue').Slot>>;
        DefineItemTemplate: import('@vueuse/core').DefineTemplateComponent<{
            class: any;
            item: any;
            index: number;
        }, Record<string, import('vue').Slot>>;
        ReusableItemTemplate: import('@vueuse/core').ReuseTemplateComponent<{
            class: any;
            item: any;
            index: number;
        }, Record<string, import('vue').Slot>>;
    };
};
export {};
