import type { ChartStreamGLHandle } from './ChartStreamGL';
export interface UseChartRangeOptions {
    /** Sliding window size for x-axis (number of ticks visible). Required. */
    xWindow: number;
    /**
     * Fixed y-axis domain. When provided, y auto-tracking is disabled.
     * Use when the range is known (e.g. 0-100 for percentages).
     */
    yDomain?: [number, number];
    /**
     * Padding factor for auto-tracked y-axis (default: 0.1 = 10%).
     * Applied symmetrically above max and below min.
     */
    yPadding?: number;
    /**
     * Anchor y=0 in the center of the y-axis (default: false).
     * When true, y-domain is always symmetric around 0.
     */
    yCenter?: boolean;
}
export interface UseChartRangeReturn {
    /** Current x-axis domain — pass to Chart xDomain prop */
    xDomain: [number, number];
    /** Current y-axis domain — pass to Chart yDomain prop */
    yDomain: [number, number];
    /**
     * Push a data point. Updates domains synchronously, then optionally
     * forwards to a stream ref.
     */
    push(x: number, y: number, streamRef?: React.RefObject<ChartStreamGLHandle | null>): void;
    /** Reset all tracking state */
    reset(): void;
}
/**
 * Tracks streaming data ranges and provides xDomain/yDomain for Chart.
 *
 * Domain updates are synchronous with every push — no throttling, no lag.
 * This ensures the chart's declared domain always matches the rendered data.
 *
 * @example
 * ```
 * const {xDomain, yDomain, push} = useChartRange({xWindow: 300, yPadding: 0.1});
 *
 * <Chart xDomain={xDomain} yDomain={yDomain} ...>
 *   <ChartStreamGL handleRef={streamRef} ... />
 * </Chart>
 * ```
 */
export declare function useChartRange({ xWindow, yDomain: fixedYDomain, yPadding, yCenter, }: UseChartRangeOptions): UseChartRangeReturn;
//# sourceMappingURL=useChartRange.d.ts.map