import type { ChartObservation } from "./ObservationStore";
import type { InterrogationFocus } from "./useChartInterrogation";
export interface UseChartFocusOptions {
    /** Limit attention to a specific chart instance. Required when the page has more than one. */
    chartId?: string;
    /**
     * Which observation types count as "focused." Default is hover + click +
     * selection — anything that signals user attention. Set to ["click"] for
     * sticky-focus UIs where hover doesn't change the AI's reference point.
     */
    types?: ChartObservation["type"][];
}
/**
 * Convenience hook: returns the latest `InterrogationFocus` for use with
 * `useChartInterrogation`'s `focus` option. Internally subscribes to the
 * observation store and converts the latest matching observation into the
 * focus shape.
 *
 * Pair with `<Chart onObservation={…} chartId="myChart" />` and an
 * `<ObservationProvider>` ancestor.
 *
 * Returns `null` when no qualifying observation has fired yet.
 *
 * @example
 * function ChartWithChat({ data }) {
 *   const focus = useChartFocus({ chartId: "sales" })
 *   const { ask, history, annotations } = useChartInterrogation({
 *     data,
 *     focus,                    // ← latest hovered/clicked datum threads in
 *     onQuery: async (q, ctx) => {
 *       // ctx.focus is the same `focus` value passed above
 *       return askLLM({ question: q, focus: ctx.focus, summary: ctx.summary })
 *     },
 *   })
 *   return (
 *     <>
 *       <LineChart data={data} chartId="sales" annotations={annotations} />
 *       <YourChatUI history={history} onAsk={ask} />
 *     </>
 *   )
 * }
 */
export declare function useChartFocus(options?: UseChartFocusOptions): InterrogationFocus | null;
