import * as React from 'react'; declare type Omit = Pick>; declare type RenderProps = { inView: boolean; entry: IntersectionObserverEntry | undefined; ref: React.RefObject | ((node?: Element | null) => void); }; export declare type IntersectionOptions = IntersectionObserverInit & { /** Only trigger the inView callback once */ triggerOnce?: boolean; debounce?: number; }; export declare type IntersectionObserverProps = IntersectionOptions & { /** * Children expects a function that receives an object * contain an `inView` boolean and `ref` that should be * assigned to the element root. */ children: (fields: RenderProps) => React.ReactNode; /** Call this function whenever the in view state changes */ onChange?: (inView: boolean, entry: IntersectionObserverEntry) => void; }; /** * Types specific to the PlainChildren rendering of InView * */ export declare type PlainChildrenProps = IntersectionOptions & { children: React.ReactNode; /** * Render the wrapping element as this element. * @default `'div'` */ as?: React.ElementType; /** * Element tag to use for the wrapping component * @deprecated Replace with the 'as' prop */ tag?: React.ElementType; /** Call this function whenever the in view state changes */ onChange?: (inView: boolean, entry: IntersectionObserverEntry) => void; } & Omit, 'onChange'>; export declare type HookResponse = [((node?: Element | null) => void), boolean, IntersectionObserverEntry | undefined]; export {};