import { useAggLabels } from "@agg-build/hooks";
import type { WsOrderEvent } from "@agg-build/sdk";
import { type ReactNode } from "react";
import { type ToastContextValue, type ToastTone } from "../primitives/toast";
interface AggNotificationEventsProviderProps {
    children?: ReactNode;
    /**
     * Toggle off without unmounting (e.g. partner is rendering a marketing page
     * where toasts would be noise). Defaults to `true`. The
     * `features.enableNotifications` flag on `<AggProvider config>` also gates
     * the bridge — if either is `false`, no toasts fire.
     */
    enabled?: boolean;
    /**
     * How many recent deposit rows the bridge keeps in its observation window.
     * The bridge mounts its own lightweight `useUserActivity({ type: "deposit" })`
     * query so it can catch lifecycle transitions even when no other page is
     * rendering the activity feed. Defaults to 25.
     */
    depositActivityLimit?: number;
}
/**
 * Global notification bridge. Subscribes to order WS events, withdrawal
 * lifecycle WS events, and the deposit activity feed; turns terminal
 * transitions into toasts via the existing `ToastProvider`. Auto-mounted by
 * `<ToastProvider>` — partners don't need to wire it manually.
 *
 * Bails to a transparent passthrough when no `<AggProvider>` is above it, so
 * a partner using `<ToastProvider>` standalone (e.g. a marketing page) keeps
 * working without hooking into the SDK.
 *
 * Toasts dedupe per `${kind}:${id}:${status}` so reconnect storms and polling
 * overlap don't double-fire, and the dedupe table is cleared on user-id change
 * so signing out / in cannot leak toasts from a prior session.
 */
export declare function AggNotificationEventsProvider({ children, enabled, depositActivityLimit, }: AggNotificationEventsProviderProps): JSX.Element;
export declare function resetOrderNotificationDedupe(): void;
interface HandleOrderArgs {
    event: WsOrderEvent;
    labels: ReturnType<typeof useAggLabels>;
    fireOnce: (key: string, tone: ToastTone, title: string, message: string, detail?: string) => void;
}
export declare function handleOrderEvent({ event, labels, fireOnce }: HandleOrderArgs): void;
export type { ToastContextValue };
