import { ComputedRef, CSSProperties, Directive, MaybeRefOrGetter, Ref } from 'vue'; import { CacheSnapshot, DefaultKeyField, DynamicScrollerView, ItemKey, ItemWithSize, KeyFieldValue, KeyValue, ScrollDirection, ValidKeyField, VScrollData } from '../types'; import { DynamicScrollerItemControllerCallbacks, DynamicScrollerItemControllerOptions, DynamicScrollerMeasurementContext } from './dynamicScrollerMeasurement'; import { UseRecycleScrollerReturn } from './useRecycleScroller'; export interface UseDynamicScrollerItemViewBindingOptions { view: DynamicScrollerView; watchData?: boolean; sizeDependencies?: Record | unknown[] | null; emitResize?: boolean; onResize?: DynamicScrollerItemControllerCallbacks['onResize']; } interface UseDynamicScrollerItemLegacyBindingOptions extends Omit, 'watchData' | 'emitResize'> { watchData?: boolean; emitResize?: boolean; onResize?: DynamicScrollerItemControllerCallbacks['onResize']; } export type UseDynamicScrollerItemBindingOptions = UseDynamicScrollerItemViewBindingOptions | UseDynamicScrollerItemLegacyBindingOptions; export interface UseDynamicScrollerOptions { items: MaybeRefOrGetter; keyField: KeyFieldValue; direction?: ScrollDirection; minItemSize: number | string; el: MaybeRefOrGetter; before?: MaybeRefOrGetter; after?: MaybeRefOrGetter; buffer?: number; pageMode?: boolean; shift?: boolean; cache?: CacheSnapshot; disableTransform?: boolean; flowMode?: boolean; hiddenPosition?: number; prerender?: number; emitUpdate?: boolean; updateInterval?: number; onResize?: () => void; onVisible?: () => void; onHidden?: () => void; onUpdate?: (startIndex: number, endIndex: number, visibleStartIndex: number, visibleEndIndex: number) => void; } type UseDynamicScrollerRecycleReturn = UseRecycleScrollerReturn, TKey>; type UseDynamicScrollerSizes = UseDynamicScrollerRecycleReturn['sizes']; type UseDynamicScrollerReady = UseDynamicScrollerRecycleReturn['ready']; type UseDynamicScrollerPool = Ref>>; type UseDynamicScrollerVisiblePool = ComputedRef>>; type UseDynamicScrollerHandleResize = UseDynamicScrollerRecycleReturn['handleResize']; type UseDynamicScrollerHandleVisibilityChange = UseDynamicScrollerRecycleReturn['handleVisibilityChange']; type UseDynamicScrollerGetScroll = UseDynamicScrollerRecycleReturn['getScroll']; type UseDynamicScrollerFindItemIndex = UseDynamicScrollerRecycleReturn['findItemIndex']; type UseDynamicScrollerGetItemOffset = UseDynamicScrollerRecycleReturn['getItemOffset']; type UseDynamicScrollerScrollToItem = UseDynamicScrollerRecycleReturn['scrollToItem']; type UseDynamicScrollerScrollToPosition = UseDynamicScrollerRecycleReturn['scrollToPosition']; type UseDynamicScrollerSortViews = UseDynamicScrollerRecycleReturn['sortViews']; type UseDynamicScrollerTotalSize = UseDynamicScrollerRecycleReturn['totalSize']; type UseDynamicScrollerUpdateVisibleItems = UseDynamicScrollerRecycleReturn['updateVisibleItems']; type UseDynamicScrollerCacheSnapshot = UseDynamicScrollerRecycleReturn['cacheSnapshot']; type UseDynamicScrollerRestoreCache = UseDynamicScrollerRecycleReturn['restoreCache']; type ResolvedDynamicScrollerItems> = TOptions['items'] extends MaybeRefOrGetter ? TItems : never; type InferredDynamicScrollerItem> = ResolvedDynamicScrollerItems[number]; type InferredDynamicScrollerKeyField> = Extract>>; export interface UseDynamicScrollerReturn> { vscrollData: VScrollData; itemsWithSize: ComputedRef>>; simpleArray: ComputedRef; resizeObserver: ResizeObserver | undefined; measurementContext: DynamicScrollerMeasurementContext; vDynamicScrollerItem: Directive>; pool: UseDynamicScrollerPool; visiblePool: UseDynamicScrollerVisiblePool; totalSize: UseDynamicScrollerTotalSize; startSpacerSize: UseDynamicScrollerRecycleReturn['startSpacerSize']; endSpacerSize: UseDynamicScrollerRecycleReturn['endSpacerSize']; ready: UseDynamicScrollerReady; sizes: UseDynamicScrollerSizes; forceUpdate: (clear?: boolean) => void; scrollToItem: UseDynamicScrollerScrollToItem; scrollToPosition: UseDynamicScrollerScrollToPosition; getScroll: UseDynamicScrollerGetScroll; findItemIndex: UseDynamicScrollerFindItemIndex; getItemOffset: UseDynamicScrollerGetItemOffset; updateVisibleItems: UseDynamicScrollerUpdateVisibleItems; handleResize: UseDynamicScrollerHandleResize; handleVisibilityChange: UseDynamicScrollerHandleVisibilityChange; sortViews: UseDynamicScrollerSortViews; cacheSnapshot: UseDynamicScrollerCacheSnapshot; restoreCache: UseDynamicScrollerRestoreCache; getItemSize: (item: TItem, index?: number) => number; getViewStyle: (view: DynamicScrollerView) => CSSProperties; scrollToBottom: () => void; onScrollerResize: () => void; onScrollerVisible: () => void; } export declare function useDynamicScroller = DefaultKeyField>(options: MaybeRefOrGetter & { keyField: ValidKeyField; }>): UseDynamicScrollerReturn>; export declare function useDynamicScroller>(options: MaybeRefOrGetter): UseDynamicScrollerReturn, ItemKey, InferredDynamicScrollerKeyField>>; export {};