/**
 * Chat ID Manager Service
 *
 * Centralized chat ID management with promise-based locking to prevent
 * concurrent chat ID creation. Ensures only one chat ID is created per session.
 */
declare class SessionManager {
    private static instance;
    private chatId;
    private tabId;
    private initializationPromise;
    private constructor();
    /**
     * Intercept link clicks to append tab_id for cross-domain navigation.
     * This ensures the same tab_id is preserved when navigating to external domains.
     */
    private setupLinkInterceptor;
    /**
     * Get or create a tab ID that persists across same-tab navigations.
     * Priority:
     * 1. URL parameter (_mktx_tab) - for cross-domain navigation
     * 2. sessionStorage - for same-origin navigation
     * 3. Generate new - for new tabs
     */
    private getOrCreateTabId;
    /**
     * Remove _mktx_tab parameter from URL without page reload
     */
    private cleanupTabIdFromUrl;
    /**
     * Generate a unique tab ID
     */
    private generateTabId;
    /**
     * Get the current tab ID
     */
    getTabId(): string | null;
    /**
     * Get singleton instance
     */
    static getInstance(): SessionManager;
    /**
     * Get current chat ID without creating a new one
     */
    getChatId(): string | null;
    /**
     * Get or create chat ID with promise-based locking
     * If multiple calls happen concurrently, they all wait for the same promise
     */
    getOrCreateChatId(): Promise<string>;
    /**
     * Create a new chat ID - oRPC returns data directly
     */
    private createChatId;
    /**
     * Clear the current chat ID (for testing/reset purposes)
     */
    clearChatId(): void;
    /**
     * Reset the singleton instance (for testing purposes)
     */
    static resetInstance(): void;
    private getStoredChatId;
    private storeChatId;
}
export declare const sessionManager: SessionManager;
export {};
//# sourceMappingURL=SessionManager.d.ts.map