import { OverlayMetrics } from "./geometry";
export type OverlayInvalidationReason = "viewport" | "layout" | "text" | "adornment-data";
type OverlayMode = "scrolling" | "static";
type MeasurementCallback = (metrics: OverlayMetrics, reasons: ReadonlySet<OverlayInvalidationReason>) => void;
type ScrollCallback = (metrics: OverlayMetrics) => void;
type IframeOverlayContextValue = {
    iframe: HTMLIFrameElement | null;
    getMetrics: () => OverlayMetrics;
    invalidateGeometry: (reason: OverlayInvalidationReason | OverlayInvalidationReason[]) => void;
    subscribeMeasurement: (callback: MeasurementCallback, interests?: Iterable<OverlayInvalidationReason>) => () => void;
    subscribeScroll: (callback: ScrollCallback) => () => void;
};
export declare function useIframeOverlay(): IframeOverlayContextValue;
export declare function IframeOverlayProvider({ iframe, scrollScale, visualScale, mode, children, }: {
    iframe: HTMLIFrameElement | null;
    scrollScale?: number;
    visualScale?: number;
    mode?: OverlayMode;
    children: React.ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export {};
