/**
 * BufferProvider — React lifecycle shell for the V4 batched-event buffers.
 *
 * Phase 2b of the analytics V4 pivot (SCRUM-259). The accumulation /
 * dedupe / flush machinery lives in
 * `@seekora-ai/ui-sdk-core/analytics/bufferFactory` so it can be unit
 * tested without React and reused by future vue/vanilla wrappers. This
 * file is the React-specific shell:
 *
 *   - threads the SearchProvider's TrackContext into the factory,
 *   - registers `beforeunload`/`pagehide` listeners so navigation-time
 *     clicks survive,
 *   - exposes the three buffers via React context to descendants.
 *
 * Three buffers are exposed:
 *   - impression  — `Search Impression` (debounced ~100 ms).
 *   - click       — `Object Clicked` + `Object Clicked Outside Search`
 *                   (idle-timeout ~1000 ms OR unload OR explicit flush).
 *   - viewed      — `Object Viewed` (debounced ~250 ms).
 *
 * Usage (consumers):
 *   const buffer = useSearchImpressionBuffer();
 *   buffer.record(objectID, position, search_id, objectData?, surface?);
 *
 *   const click = useObjectClickedBuffer();
 *   click.record(objectID, position, search_id, objectData?, surface?);
 *   click.recordOutsideSearch(objectID, position?, objectData?, surface?);
 *
 *   const view = useObjectViewedBuffer();
 *   view.record(objectID, position?, objectData?, surface?);
 */
import React from "react";
import type { ReactNode } from "react";
import { type BufferConfig, type BufferTrio, type TrackContext } from "@seekora-ai/ui-sdk-core";
export type { BufferConfig, BufferTrio, BufferObjectData, SearchImpressionBuffer, ObjectClickedBuffer, ObjectViewedBuffer, } from "@seekora-ai/ui-sdk-core";
export { createBufferTrio } from "@seekora-ai/ui-sdk-core";
export interface BufferProviderProps {
    children: ReactNode;
    /**
     * Override the TrackContext used by the buffers. By default, the
     * provider pulls from `useTrackContext()` (i.e. the SearchProvider
     * above). Tests / specialized harnesses can inject a fake.
     */
    ctxOverride?: TrackContext | null;
    /** Override the three timing knobs. Defaults: 100 / 250 / 1000 ms. */
    config?: BufferConfig;
}
/**
 * Wraps descendants with the three V4 batched-event buffers.
 *
 * `SearchResults` / recommendation widgets / PDP related-rails should be
 * descendants. Cards inside those subtrees pick up the buffers via the
 * `useSearchImpressionBuffer` / `useObjectClickedBuffer` /
 * `useObjectViewedBuffer` accessor hooks.
 *
 * Without a `<SearchProvider>` above (or without a TrackContext on it)
 * every buffer becomes a no-op and silently drops `record()` calls.
 */
export declare const BufferProvider: React.FC<BufferProviderProps>;
/** Pull the full buffer trio (used by integration tests + advanced callers). */
export declare function useBufferTrio(): BufferTrio | null;
//# sourceMappingURL=BufferProvider.d.ts.map