import type { Ref, RefObject, DependencyList } from "react";
import type { RealtimeFrameHandle } from "../../realtime/types";
type FrameVariant = "xy" | "network" | "geo-points" | "geo-lines";
interface Options {
    /**
     * Variant decides which default method bodies are emitted. The
     * concrete `frameRef` shape must match the variant — the helper
     * trusts the caller here rather than fighting TypeScript's
     * discriminated-union narrowing across heterogeneous frame handle
     * types (`StreamXYFrameHandle` vs `StreamNetworkFrameHandle` vs
     * `StreamGeoFrameHandle`). A regression test in
     * `useFrameImperativeHandle.test.ts` exercises each variant's
     * defaults plus the `getScales` omission for network/geo.
     */
    variant: FrameVariant;
    frameRef: RefObject<unknown>;
    overrides?: Partial<RealtimeFrameHandle>;
    deps?: DependencyList;
}
/**
 * Wire up the HOC's exposed `ref` to the inner frame ref using the
 * shape conventions for the chosen variant. Pass `overrides` to
 * replace specific methods (e.g. a wrapped `push` or a custom `clear`
 * that runs HOC-side cleanup before delegating to the frame); the
 * variant's defaults fill in everything else.
 */
export declare function useFrameImperativeHandle(ref: Ref<RealtimeFrameHandle> | undefined, options: Options): void;
export {};
