import { ReactNode } from 'react'; type ExtractArgs = T[keyof T] extends (...args: infer A) => any ? A : any[]; type EventState> = T & { (key?: keyof T, fun?: T[keyof T]): EventState; (target?: Partial): EventState; }; type Vec2 = [x: number, y: number]; interface ScrollState { _active: boolean; active: boolean; _value: Vec2; value: Vec2; delta: Vec2; offset: Vec2; movement: Vec2; target: El; event: Event; memo: any; isScrollStart: boolean; isScrolling: boolean; isScrollEnd: boolean; timeout: number; clearTimeout(): void; scroll(self: ScrollState): void; scrollStart(e: Event): void; scrolling(e: Event): void; scrollEnd(e: Event): void; mount(target: El): void; clean(target: null): void; ref(traget: El | null): void; tick?: () => void; } type ScrollConfig = Partial> | ScrollState['scroll']; declare const useScroll: (config: ScrollConfig) => EventState>; interface ScrollProps extends Partial> { children: (state: ScrollState) => ReactNode; } declare const Scroll: (props: ScrollProps) => ReactNode; export { Scroll, type ScrollProps, useScroll as default, useScroll };