import type { Transport } from '../transport.js'; import { BrowserExtensionChannel, type BrowserExtensionChannelOptions } from './browserExtensionChannel.js'; import type { ProviderDetail } from './types.js'; /** Error thrown by {@link BrowserExtensionTransport} for transport-level failures. */ export declare class BrowserExtensionTransportError extends Error { } /** Options for creating a {@link BrowserExtensionTransport}. */ export type BrowserExtensionTransportOptions = BrowserExtensionChannelOptions; /** Options for {@link BrowserExtensionTransport.discover}. */ export interface DiscoverBrowserExtensionOptions { /** * Time in milliseconds to wait for browser extensions to announce themselves * via `icrc94:announceProvider` events. * @default 100 */ discoveryDuration?: number; /** * The window to listen for extension events on. * @default globalThis.window */ window?: Window; } /** Options for {@link BrowserExtensionTransport.findTransport}. */ export interface EstablishBrowserExtensionTransportOptions extends DiscoverBrowserExtensionOptions, Omit { /** The UUID of the browser extension to connect to. */ uuid: string; } /** * ICRC-94 transport for communicating with browser extension signers. * * Browser extensions announce themselves via `icrc94:announceProvider` * window events. Use {@link BrowserExtensionTransport.discover} to find installed extensions, or * {@link BrowserExtensionTransport.findTransport} to connect to a specific one by UUID. * @see https://github.com/dfinity/wg-identity-authentication/blob/main/topics/icrc_94_multi_injected_provider_discovery.md * @example * ```ts * // Discover all installed extensions * const providers = await BrowserExtensionTransport.discover(); * * // Or connect to a specific extension by UUID * const transport = await BrowserExtensionTransport.findTransport({ uuid: "..." }); * const signer = new Signer({ transport }); * ``` */ export declare class BrowserExtensionTransport implements Transport { #private; constructor(options: BrowserExtensionTransportOptions); /** * Discovers all installed browser extension signers by dispatching * an `icrc94:requestProvider` event and collecting `icrc94:announceProvider` * responses. Waits for `discoveryDuration` ms before returning. * @param root0 - The discovery options. * @param root0.discoveryDuration - Time in milliseconds to wait for announcements. * @param root0.window - The window to listen for extension events on. * @returns The discovered extension providers, deduplicated by UUID. */ static discover({ discoveryDuration, window, }?: DiscoverBrowserExtensionOptions): Promise; /** * Discovers extensions and connects to the one matching the given UUID. * @param options - The options including UUID and discovery settings. * @throws {BrowserExtensionTransportError} If no extension with the given * UUID is found. */ static findTransport(options: EstablishBrowserExtensionTransportOptions): Promise; /** Creates a new {@link BrowserExtensionChannel} for this extension. */ establishChannel(): Promise; }