import { type Ref } from "vue"; export type UseIntersectionObserverOptions = { /** Element to observe; the observer reinitializes whenever this ref changes. */ target: Readonly>; /** * Resolves the scroll container that clips the target. Grid consumers must * provide the actual scrolling container, such as `.k-grid-content`. The * observer reinitializes whenever the resolved root element changes. */ root: () => Element | null; /** * One or more intersection ratios from `0` through `1`. `0` observes entry * and complete departure; `1` observes full visibility. Defaults to `1`. */ threshold?: number | number[]; /** Called whenever the target's intersection state changes. */ onChange: (entry: IntersectionObserverEntry) => void; }; export type UseIntersectionObserverReturn = { /** Stops observing the current target. Observation resumes if the target ref changes. */ disconnect: () => void; }; /** * Observes a reactive element against a lazily resolved clipping root. * * By default, the observer uses a threshold of `1`, so consumers are notified * when the target is no longer fully visible within its root. The observer * reinitializes whenever the target or resolved root changes. If * `IntersectionObserver` is unavailable (e.g. SSR), this is a no-op. */ export declare const useIntersectionObserver: (options: UseIntersectionObserverOptions) => UseIntersectionObserverReturn;