import { EventEmitter } from '../../depsNode.native'; import { QAAToSDKEvents, QAEventMap, SDKToQAAEvents } from '../common/types'; /** * Global, type-safe Event Bus for QA Assistant ↔ SDK communication. * Implements singleton pattern to ensure a single shared instance. */ declare class QAEventBus extends EventEmitter { private static instance; /** * SDK and QA Assistant modules. */ private constructor(); /** * Return the singleton instance of the QAEventBus. * * Usage: * const bus = QAEventBus.getInstance(); */ static getInstance(): QAEventBus; /** * Emit a QA event (typed across both directions). * * @template K - Key of QAEventMap * @param event - Event name (union of QAAToSDKEvents | SDKToQAAEvents) * @param data - Payload associated with the event */ emitQAEvent(event: K, data?: QAEventMap[K]): void; /** * Emit an event originating from the QA Assistant to the SDK. * * @template K - Key of QAAToSDKEvents * @param event - Event name in QAAToSDKEvents * @param data - Payload for the SDK listener */ emitQAEventToSDK(event: K, data?: QAAToSDKEvents[K]): void; /** * Emit an event originating from the SDK to the QA Assistant. * * @template K - Key of SDKToQAAEvents * @param event - Event name in SDKToQAAEvents * @param data - Payload for the QA Assistant listener */ emitQAEventToQAA(event: K, data?: SDKToQAAEvents[K]): void; /** * Register a typed listener for any QA event (both directions). * * Returns a cleanup function that removes the registered listener. * * @template K - Key of QAEventMap * @param event - Event name * @param listener - Callback invoked with the event payload * @returns cleanup function to remove this listener */ onQAEvent(event: K, listener: (data: QAEventMap[K]) => void): () => void; /** * Register a typed listener for events coming from the QA Assistant to the SDK. * * Returns a cleanup function that removes the registered listener. * * @template K - Key of SDKToQAAEvents * @param event - Event name from the QA Assistant * @param listener - Callback invoked with the event payload * @returns cleanup function to remove this listener */ onQAEventFromSDK(event: K, listener: (data: SDKToQAAEvents[K]) => void): () => void; /** * Register a typed listener for events coming from the SDK to the QA Assistant. * * Returns a cleanup function that removes the registered listener. * * @template K - Key of QAAToSDKEvents * @param event - Event name from the SDK * @param listener - Callback invoked with the event payload * @returns cleanup function to remove this listener */ onQAEventFromQAA(event: K, listener: (data: QAAToSDKEvents[K]) => void): () => void; /** * Remove a specific typed listener for a QA event. * * @template K - Key of QAEventMap * @param event - Event name * @param listener - Previously registered listener to remove */ offQAEvent(event: K, listener: (data: QAEventMap[K]) => void): void; /** * Remove all listeners for a given QA event. * * @template K - Key of QAEventMap * @param event - Event name to clear listeners for */ removeAllListenersForEvent(event: K): void; /** * Quick check to determine if QA Assistant is currently active/listening. * * @returns true if there are active listeners for QA events, false otherwise */ isQAActive(): boolean; } export declare const ABTastyQAEventBus: QAEventBus; export type ABTastyQAEventBusType = typeof ABTastyQAEventBus; export {};