declare module "react-cool-inview" { import type { ReactElement } from "react"; import { createElement } from "react"; export interface IntersectionObserverEntryV2 extends IntersectionObserverEntry { readonly isVisible?: boolean; } export interface ScrollDirection { readonly vertical?: "up" | "down"; readonly horizontal?: "left" | "right"; } export interface Event { readonly entry: IntersectionObserverEntryV2; readonly scrollDirection: ScrollDirection; observe: (element?: T | null) => void; unobserve: () => void; } export interface OnChange { (event: Event & { inView: boolean }): void; } export interface OnEnter { (event: Event): void; } export type OnLeave = OnEnter; export interface Options { root?: HTMLElement | null; rootMargin?: string; threshold?: number | number[]; trackVisibility?: boolean; delay?: number; unobserveOnEnter?: boolean; onChange?: OnChange; onEnter?: OnEnter; onLeave?: OnLeave; } export interface Return extends Omit, "entry"> { inView: boolean; entry?: IntersectionObserverEntryV2; updatePosition?: () => void; } export const useInView: ( options?: Options ) => Return; export interface InViewProps extends Options { children: ReactElement; } export const InView: (props: InViewProps) => ReturnType; }