import type { RealtimeFrameHandle } from "../../realtime/types";
/**
 * Status enum exposed by the hook.
 *
 * - `"idle"` — no pushes have happened yet since mount.
 * - `"active"` — at least one push has happened within the
 *   threshold window.
 * - `"stale"` — pushes have stopped or slowed; last push is older
 *   than `staleThresholdMs`.
 */
export type StreamStatus = "idle" | "active" | "stale";
export interface StreamStatusOptions {
    /** Time in ms since the last push before status flips to `"stale"`.
     *  @default 5000 */
    staleThresholdMs?: number;
    /** Polling interval for status transitions. Smaller = more
     *  responsive but higher cost. @default 1000 */
    pollIntervalMs?: number;
}
export interface StreamStatusResult<THandle extends RealtimeFrameHandle = RealtimeFrameHandle> {
    /** Ref to pass to the chart's `ref` prop. The hook intercepts
     *  push/pushMany calls on this ref so it can timestamp them. */
    ref: React.MutableRefObject<THandle | null>;
    /** Current status. Re-renders the consumer on transition. */
    status: StreamStatus;
    /** Timestamp (from `performance.now()`) of the most recent push,
     *  or null when no push has happened yet. */
    lastPushTime: number | null;
}
/**
 * Track ingest activity on a push-API chart and expose status.
 */
export declare function useStreamStatus<THandle extends RealtimeFrameHandle = RealtimeFrameHandle>(options?: StreamStatusOptions): StreamStatusResult<THandle>;
