/** * Protocol-independent DOM-style event fan-out. * * Owners perform event-specific state updates before calling * {@link dispatch}. Dispatch then invokes the singular handler followed by a * snapshot of listeners in insertion order. * * @typeParam EventMap - Maps event names to their listener parameter types. */ export declare class EventDispatcher> { private readonly _eventSlots; /** Set, replace, or clear the singular handler for an event. */ setHandler(event: K, handler: ((params: EventMap[K]) => void) | undefined): void; /** Get the singular handler for an event, if one is set. */ getHandler(event: K): ((params: EventMap[K]) => void) | undefined; /** Add a listener. Listeners run in insertion order after the handler. */ addEventListener(event: K, handler: (params: EventMap[K]) => void): void; /** Remove the first matching listener, if present. */ removeEventListener(event: K, handler: (params: EventMap[K]) => void): void; /** * Dispatch an event to its singular handler and a listener snapshot. * Listener mutations during dispatch take effect on the next dispatch. */ dispatch(event: K, params: EventMap[K]): void; private _ensureEventSlot; } /** * Tracks which JSON-RPC methods already have a handler registered through the * owning `App` / `AppBridge`, so a second direct `setRequestHandler` / * `setNotificationHandler` call for the same method throws instead of * silently replacing the first handler (the base SDK `Protocol` replaces). * * The `on*` setters use {@link replace} for DOM-style replace semantics, and * `removeRequestHandler` / `removeNotificationHandler` use {@link release}. * * @internal */ export declare class MethodRegistry { private readonly _methods; /** Claim `method`. Throws if a handler is already registered for it. */ claim(method: string, via: string): void; /** Claim `method` with replace semantics (never throws). */ replace(method: string): void; /** Release `method` so it can be claimed again. */ release(method: string): void; has(method: string): boolean; }