/**
 * NavigationMonitor - Centralized History API patching.
 *
 * This is the SINGLE point in the SDK that wraps history.pushState and
 * history.replaceState. All other modules that need to react to navigation
 * (ContextManager, overlay runner, tour executor, SmartCanvasApp) must
 * subscribe to this monitor instead of patching the History API directly.
 *
 * This prevents the "quadruple-patching" problem where multiple SDK modules
 * each wrap pushState/replaceState independently, creating a fragile chain
 * that can break when combined with React Router, GA4, and GTM — all of
 * which also wrap the History API.
 */
export type NavigationMethod = 'pushState' | 'replaceState' | 'popstate';
export type NavigationListener = (url: string, method: NavigationMethod) => void;
export interface NavigationDiagnostics {
    /** Whether pushState was native (not already wrapped) when we captured it */
    isNative: boolean;
    /** Number of active subscribers */
    subscriberCount: number;
}
export declare class NavigationMonitor {
    private listeners;
    private capturedPushState;
    private capturedReplaceState;
    private wasNative;
    private destroyed;
    constructor();
    /**
     * Subscribe to navigation events.
     * Returns an unsubscribe function.
     */
    subscribe(listener: NavigationListener): () => void;
    /**
     * Get diagnostics about the History API chain.
     */
    diagnose(): NavigationDiagnostics;
    /**
     * Restore the History API to the state we captured and remove all listeners.
     */
    destroy(): void;
    private onPopState;
    private notify;
    private isNativeFunction;
}
