import { type Channel, type JsonRpcRequest, type JsonRpcResponse } from '../transport.js'; import type { ProviderDetail } from './types.js'; /** Options for creating a {@link BrowserExtensionChannel}. */ export interface BrowserExtensionChannelOptions { /** The provider details obtained during extension discovery. */ providerDetail: ProviderDetail; /** * The window to listen for extension events on. * @default globalThis.window */ window?: Window; } /** * A {@link Channel} implementation that communicates with a browser * extension signer via the ICRC-94 provider API. * * Messages are sent through `providerDetail.sendMessage` and responses * are validated as JSON-RPC before being dispatched to listeners. * The channel is automatically closed if the extension fires an * `icrc94:unexpectedlyClosed` event. */ export declare class BrowserExtensionChannel implements Channel { #private; constructor(options: BrowserExtensionChannelOptions); /** Whether this channel has been closed. */ get closed(): boolean; addEventListener(...[event, listener]: [event: 'close', listener: () => void] | [event: 'response', listener: (response: JsonRpcResponse) => void]): () => void; /** * Sends a JSON-RPC request to the extension via `providerDetail.sendMessage`. * The response is validated as JSON-RPC before being dispatched. * Non-JSON-RPC responses are silently ignored. * @param request - The JSON-RPC request to send to the extension. */ send(request: JsonRpcRequest): Promise; /** Dismisses the extension and notifies all close listeners. */ close(): Promise; }