@tezos-x/octez.connect-dapp 5.0.4 → 5.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"DAppClient.js","sourceRoot":"","sources":["../../../src/dapp-client/DAppClient.ts"],"names":[],"mappings":"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","sourcesContent":["import bs58check from 'bs58check'\nimport {\n ConnectionContext,\n AccountInfo,\n TransportType,\n StorageKey,\n BeaconMessageType,\n PermissionScope,\n PermissionResponse,\n NetworkType,\n SignPayloadResponse,\n SignPayloadRequest,\n OperationResponse,\n OperationRequest,\n BroadcastResponse,\n BroadcastRequest,\n ErrorResponse,\n BeaconMessage,\n RequestPermissionInput,\n RequestPermissionNetwork,\n PermissionResponseAccounts,\n RequestSignPayloadInput,\n RequestOperationInput,\n RequestBroadcastInput,\n PermissionRequest,\n PermissionResponseOutput,\n PermissionRequestInput,\n SignPayloadResponseOutput,\n SignPayloadRequestInput,\n OperationResponseOutput,\n OperationRequestInput,\n BroadcastResponseOutput,\n BroadcastRequestInput,\n BeaconRequestInputMessage,\n Network,\n Origin,\n PeerInfo,\n BeaconErrorType,\n AppMetadata,\n ExtendedP2PPairingResponse,\n ExtendedPostMessagePairingResponse,\n SigningType,\n ExtendedPeerInfo,\n Optional,\n ColorMode,\n IgnoredRequestInputProperties,\n WalletInfo,\n BeaconMessageWrapper,\n Blockchain,\n BlockchainMessage,\n BlockchainRequestV3,\n BlockchainResponseV3,\n PermissionRequestV3,\n PermissionResponseV3,\n BeaconBaseMessage,\n AcknowledgeResponse,\n ExtendedWalletConnectPairingResponse,\n ProofOfEventChallengeRequest,\n ProofOfEventChallengeResponse,\n ProofOfEventChallengeRequestInput,\n RequestProofOfEventChallengeInput,\n ChangeAccountRequest,\n PeerInfoType,\n App,\n AppBase,\n DesktopApp,\n ExtensionApp,\n WebApp,\n SimulatedProofOfEventChallengeRequestInput,\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse,\n RequestSimulatedProofOfEventChallengeInput,\n TransportStatus,\n ErrorContext\n // PermissionRequestV3\n // RequestEncryptPayloadInput,\n // EncryptPayloadResponseOutput,\n // EncryptPayloadResponse,\n // EncryptPayloadRequest\n} from '@tezos-x/octez.connect-types'\nimport {\n Client,\n Transport,\n AppMetadataManager,\n Serializer,\n LocalStorage,\n BeaconError,\n getAccountIdentifier,\n getSenderId,\n Logger,\n ClientEvents,\n StorageValidator,\n SDK_VERSION,\n IndexedDBStorage,\n MultiTabChannel,\n BACKEND_URL,\n getError,\n usesWrappedMessages,\n buildErrorContext,\n UnknownBeaconError,\n AbortedBeaconError,\n compareBeaconVersion,\n isMultiNetworkVersion,\n VersionUnsupportedBeaconError,\n NetworksUnsupportedBeaconError,\n normalizeTezosCaip2,\n isValidTezosCaip2,\n networkFromTezosCaip2,\n networkTypeFromTezosCaip2,\n resolveRequiredMinimumVersion,\n negotiateEnvelopeVersion,\n effectivePeerVersion,\n MESSAGE_WRAPPED_FROM_VERSION,\n DEFAULT_WALLETCONNECT_PROJECT_ID,\n wrapBeaconMessage\n} from '@tezos-x/octez.connect-core'\nimport { TezosBlockchain } from '@tezos-x/octez.connect-blockchain-tezos'\nimport {\n getAddressFromPublicKey,\n ExposedPromise,\n generateGUID,\n toHex,\n signMessage,\n CONTRACT_PREFIX,\n prefixPublicKey,\n isValidAddress,\n getKeypairFromSeed\n} from '@tezos-x/octez.connect-utils'\nimport { PostMessageTransport } from '@tezos-x/octez.connect-transport-postmessage'\nimport {\n AlertButton,\n closeToast,\n getColorMode,\n setColorMode,\n setDesktopList,\n setExtensionList,\n setWebList,\n setiOSList,\n getiOSList,\n getDesktopList,\n getExtensionList,\n getWebList,\n isBrowser,\n isDesktop,\n isMobileOS,\n isIOS,\n currentOS\n} from '@tezos-x/octez.connect-ui'\nimport { WalletConnectTransport } from '@tezos-x/octez.connect-transport-walletconnect'\nimport { messageEvents } from '../beacon-message-events'\nimport { BlockExplorer } from '../utils/block-explorer'\nimport { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType, BeaconEventHandler } from '../events'\nimport { TzktBlockExplorer } from '../utils/tzkt-blockexplorer'\n\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport'\nimport { DappP2PTransport } from '../transports/DappP2PTransport'\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport'\nimport { DAppClientOptions } from './DAppClientOptions'\n\nconst logger = new Logger('DAppClient')\n\n// Surfaced when a permission response yields zero account records.\nconst EMPTY_PERMISSION_ACCOUNTS_MESSAGE =\n 'Wallet permission response did not include any accounts. Please re-pair the wallet and try again.'\n\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport class DAppClient extends Client {\n /**\n * The description of the app\n */\n public readonly description?: string\n\n /**\n * The block explorer used by the SDK\n */\n public readonly blockExplorer: BlockExplorer\n\n /**\n * Automatically switch between apps on Mobile Devices (Enabled by Default)\n */\n private readonly enableAppSwitching: boolean\n\n /**\n * Enable metrics tracking (Disabled by Default)\n */\n private enableMetrics?: boolean\n\n private userId?: string\n\n public network: Network\n\n protected readonly events: BeaconEventHandler = new BeaconEventHandler()\n\n protected postMessageTransport: DappPostMessageTransport | undefined\n protected p2pTransport: DappP2PTransport | undefined\n protected walletConnectTransport: DappWalletConnectTransport | undefined\n\n protected wcProjectId?: string\n protected wcRelayUrl?: string\n\n /**\n * WalletConnect is enabled by default (as in 4.8.x) using the shared\n * DEFAULT_WALLETCONNECT_PROJECT_ID unless `walletConnectOptions` overrides it.\n * Set `disableWalletConnect: true` to opt out. When false, no WC transport is\n * built, listened to, or offered for pairing.\n */\n protected isWalletConnectEnabled: boolean = true\n\n private isGetActiveAccountHandled: boolean = false\n\n private readonly openRequestsOtherTabs = new Set<string>()\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests = new Map<\n string,\n ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >\n >()\n\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount: ExposedPromise<AccountInfo | undefined> = new ExposedPromise()\n\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer: ExposedPromise<PeerInfoType | undefined> = new ExposedPromise()\n\n private _initPromise: Promise<TransportType> | undefined\n private _initPromiseReject: ((reason?: ErrorResponse | AbortedBeaconError) => void) | undefined\n private isInitPending: boolean = false\n\n /**\n * Networks mapped for the next WalletConnect session proposal when\n * `requestPermissions` runs before the WalletConnect transport exists (it\n * is created lazily in `init`). Applied and cleared right after creation.\n */\n private pendingWcProposalNetworks: NetworkType[] | undefined\n\n private readonly activeAccountLoaded: Promise<AccountInfo | undefined>\n\n private readonly appMetadataManager: AppMetadataManager\n\n private readonly termsAndConditionsUrl?: string\n\n private readonly privacyPolicyUrl?: string\n\n private readonly errorMessages: Record<string, Record<string | number, string>>\n\n private readonly featuredWallets: string[] | undefined\n\n public readonly requiredMinimumVersion: string\n\n private readonly storageValidator: StorageValidator\n\n private readonly beaconIDB = new IndexedDBStorage('beacon', ['bug_report', 'metrics'])\n\n private debounceSetActiveAccount: boolean = false\n\n private readonly multiTabChannel = new MultiTabChannel(\n 'octez.connect-sdk-channel',\n this.onBCMessageHandler.bind(this),\n this.onElectedLeaderhandler.bind(this)\n )\n\n constructor(config: DAppClientOptions) {\n super({\n storage: config && config.storage ? config.storage : new LocalStorage(),\n ...config\n })\n this.description = config.description\n // WalletConnect is enabled BY DEFAULT (as in 4.8.x) with the shared\n // ecosystem projectId, so dApps don't have to register with WalletConnect\n // Cloud to offer WC wallets (e.g. Kukai Mobile) — the free tier covers the\n // ecosystem's volume. `walletConnectOptions` overrides the projectId/relay,\n // `disableWalletConnect: true` opts out entirely (e.g. environments where\n // the WC provider cannot run, see #32).\n this.isWalletConnectEnabled = !config.disableWalletConnect\n this.wcProjectId = this.isWalletConnectEnabled\n ? config.walletConnectOptions?.projectId || DEFAULT_WALLETCONNECT_PROJECT_ID\n : undefined\n this.wcRelayUrl = this.isWalletConnectEnabled ? config.walletConnectOptions?.relayUrl : undefined\n\n this.featuredWallets = config.featuredWallets\n\n this.events = new BeaconEventHandler(config.eventHandlers, config.disableDefaultEvents ?? false)\n this.blockExplorer = config.blockExplorer ?? new TzktBlockExplorer()\n this.network = config.network ?? { type: config.preferredNetwork ?? NetworkType.MAINNET }\n setColorMode(config.colorMode ?? ColorMode.LIGHT)\n\n this.termsAndConditionsUrl = config.termsAndConditionsUrl\n this.privacyPolicyUrl = config.privacyPolicyUrl\n\n this.errorMessages = config.errorMessages ?? {}\n\n this.appMetadataManager = new AppMetadataManager(this.storage)\n this.storageValidator = new StorageValidator(this.storage)\n\n this.enableAppSwitching =\n config.enableAppSwitching === undefined ? true : Boolean(config.enableAppSwitching)\n\n this.enableMetrics = config.enableMetrics ? true : false\n\n this.requiredMinimumVersion = resolveRequiredMinimumVersion(config.requiredMinimumVersion)\n\n // Tezos is the default chain: the wrapped-only pipeline routes every\n // request/response through the registry handler, so registration is no\n // longer a consumer obligation. addBlockchain stays public — a later\n // registration under 'tezos' overrides this default.\n this.addBlockchain(new TezosBlockchain())\n\n // Subscribe to storage changes and update the active account if it changes on other tabs\n this.storage.subscribeToStorageChanged(async (event) => {\n if (event.eventType === 'storageCleared') {\n this.setActiveAccount(undefined)\n\n return\n }\n if (event.eventType === 'entryModified') {\n if (event.key === this.storage.getPrefixedKey(StorageKey.ACTIVE_ACCOUNT)) {\n const accountIdentifier = event.newValue\n if (!accountIdentifier || accountIdentifier === 'undefined') {\n this.setActiveAccount(undefined)\n } else {\n const account = await this.getAccount(accountIdentifier)\n this.setActiveAccount(account)\n }\n\n return\n }\n if (event.key === this.storage.getPrefixedKey(StorageKey.ENABLE_METRICS)) {\n this.enableMetrics = Boolean(await this.storage.get(StorageKey.ENABLE_METRICS))\n\n return\n }\n if (event.key === this.storage.getPrefixedKey(StorageKey.BEACON_SDK_SECRET_SEED)) {\n this._keyPair = new ExposedPromise()\n this._beaconId = new ExposedPromise()\n await this.initSDK()\n\n return\n }\n }\n })\n\n this.activeAccountLoaded = this.storage\n .get(StorageKey.ACTIVE_ACCOUNT)\n .then(async (activeAccountIdentifier) => {\n if (activeAccountIdentifier) {\n const account = await this.accountManager.getAccount(activeAccountIdentifier)\n await this.setActiveAccount(account)\n\n return account\n } else {\n await this.setActiveAccount(undefined)\n\n return undefined\n }\n })\n .catch(async (storageError) => {\n logger.error(storageError)\n await this.resetInvalidState(false)\n this.events.emit(BeaconEvent.INVALID_ACCOUNT_DEACTIVATED)\n\n return undefined\n })\n\n this.handleResponse = async (\n wireMessage: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>,\n connectionInfo: ConnectionContext\n ): Promise<void> => {\n // Negotiated wire: a flat arrival is the legacy v2 dialect (from a\n // v4.8.x wallet answering a flat request) and is already the shape the\n // pipeline consumes. Wrapped arrivals carry Tezos payloads that are\n // normalized back to those same flat shapes — the wire dialect stays\n // invisible to integrators. Non-Tezos wrapped payloads keep the\n // pass-through of the generic permissionRequest/request API.\n const isWrapped = usesWrappedMessages(wireMessage.version)\n\n // Issue #33: a V3-versioned message can arrive without its wrapped payload.\n // Drop it safely instead of dereferencing an undefined payload, which would\n // throw an unhandled rejection inside the transport subscription callback.\n if (isWrapped && !(wireMessage as BeaconMessageWrapper<BeaconBaseMessage>).message) {\n logger.log(\n 'handleResponse',\n 'Received wrapped message with undefined payload; dropping',\n wireMessage\n )\n\n return\n }\n\n const normalized = isWrapped\n ? this.normalizeWrappedTezosMessage(wireMessage as BeaconMessageWrapper<BeaconBaseMessage>)\n : (wireMessage as BeaconMessage)\n const message = normalized ?? wireMessage\n const typedMessage =\n normalized ?? (wireMessage as BeaconMessageWrapper<BeaconBaseMessage>).message\n\n let appMetadata: AppMetadata | undefined = normalized\n ? (typedMessage as PermissionResponse).appMetadata\n : (typedMessage as unknown as PermissionResponseV3).blockchainData?.appMetadata\n\n if (!appMetadata && !normalized) {\n const storedMetadata = await Promise.all([\n this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP),\n this.storage.get(StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP),\n this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP)\n ])\n\n for (const peers of storedMetadata) {\n const peer: any = peers.find((peer: any) => peer.senderId === message.senderId)\n if (!peer) {\n continue\n }\n\n const wallet = await this.getWalletInfo()\n\n appMetadata = {\n name: peer.name,\n senderId: peer.senderId,\n icon: wallet.icon\n }\n\n break\n }\n }\n\n if (this.openRequestsOtherTabs.has(message.id)) {\n // Relay the ORIGINAL wrapped envelope, not the normalized flat\n // message: the receiving tab funnels this straight back into its own\n // handleResponse, whose wrapped-only contract would drop a flat\n // arrival (version '4' with no `.message` payload) and leave the\n // other tab's request pending forever.\n this.multiTabChannel.postMessage({\n type: 'RESPONSE',\n data: {\n message: wireMessage,\n connectionInfo\n },\n id: message.id\n })\n\n if (typedMessage.type !== BeaconMessageType.Acknowledge) {\n this.openRequestsOtherTabs.delete(message.id)\n }\n\n return\n }\n\n const openRequest = this.openRequests.get(message.id)\n\n logger.log('### openRequest ###', openRequest)\n logger.log('handleResponse', 'Received message', message, connectionInfo)\n logger.log('### message ###', JSON.stringify(message))\n logger.log('### connectionInfo ###', connectionInfo)\n\n const handleDisconnect = async (): Promise<void> => {\n this.analytics.track('event', 'DAppClient', 'Disconnect received from Wallet')\n\n const relevantTransport =\n connectionInfo.origin === Origin.P2P\n ? this.p2pTransport\n : connectionInfo.origin === Origin.WALLETCONNECT\n ? this.walletConnectTransport\n : (this.postMessageTransport ?? (await this.transport))\n\n if (relevantTransport) {\n const peers: ExtendedPeerInfo[] = await relevantTransport.getPeers()\n const peer: ExtendedPeerInfo | undefined = peers.find(\n (peerEl) => peerEl.senderId === message.senderId\n )\n\n if (peer) {\n await relevantTransport.removePeer(peer)\n }\n }\n\n await this.removeAccountsForPeerIds([message.senderId])\n await this.events.emit(BeaconEvent.CHANNEL_CLOSED)\n\n // Reset transport state so next requestPermissions() shows pairing modal\n this.postMessageTransport = undefined\n this.p2pTransport = undefined\n this.walletConnectTransport = undefined\n await this.setTransport(undefined)\n await this.setActivePeer(undefined)\n }\n\n if (openRequest && typedMessage.type === BeaconMessageType.Acknowledge) {\n this.analytics.track('event', 'DAppClient', 'Acknowledge received from Wallet')\n logger.log('handleResponse', `acknowledge message received for ${message.id}`)\n\n this.events\n .emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: typedMessage as AcknowledgeResponse,\n extraInfo: {},\n walletInfo: await this.getWalletInfo()\n })\n .catch(console.error)\n } else if (openRequest) {\n // Define valid response types that should resolve a request\n const validResponseTypes = [\n BeaconMessageType.PermissionResponse,\n BeaconMessageType.OperationResponse,\n BeaconMessageType.SignPayloadResponse,\n BeaconMessageType.BroadcastResponse,\n BeaconMessageType.ProofOfEventChallengeResponse,\n BeaconMessageType.SimulatedProofOfEventChallengeResponse,\n BeaconMessageType.BlockchainResponse,\n BeaconMessageType.Error\n ]\n\n // Only process if it's a valid response type\n if (validResponseTypes.includes(typedMessage.type)) {\n if (typedMessage.type === BeaconMessageType.PermissionResponse && appMetadata) {\n await this.appMetadataManager.addAppMetadata(appMetadata)\n }\n\n if (typedMessage.type === BeaconMessageType.Error) {\n openRequest.reject(typedMessage as ErrorResponse)\n } else {\n openRequest.resolve({ message, connectionInfo })\n }\n this.openRequests.delete(typedMessage.id)\n } else {\n // Log unexpected message types but don't resolve the request\n logger.warn(\n 'handleResponse',\n `Received unexpected message type \"${typedMessage.type}\" for request ${message.id}. Expected a response type, not a request type.`\n )\n }\n } else {\n if (typedMessage.type === BeaconMessageType.Disconnect) {\n await handleDisconnect()\n } else if (typedMessage.type === BeaconMessageType.ChangeAccountRequest) {\n await this.onNewAccount(typedMessage as ChangeAccountRequest, connectionInfo)\n }\n }\n\n if (this._transport.isResolved()) {\n const transport = await this.transport\n\n if (\n transport instanceof WalletConnectTransport &&\n !this.openRequests.has('session_update')\n ) {\n this.openRequests.set('session_update', new ExposedPromise())\n }\n }\n }\n\n this.storageValidator\n .validate()\n .then(async (isValid) => {\n const account = await this.activeAccountLoaded\n\n if (!isValid) {\n const info = await this.getWalletInfo(undefined, account, false)\n info.type =\n info.type === 'extension' && account?.origin.type === Origin.P2P ? 'mobile' : info.type\n await this.storage.set(StorageKey.LAST_SELECTED_WALLET, {\n icon: info.icon ?? '',\n key: info.name,\n type: info.type ?? 'web',\n name: info.name,\n url: info.deeplink\n })\n\n const nowValid = await this.storageValidator.validate()\n\n if (!nowValid) {\n this.resetInvalidState(false)\n }\n }\n\n if (account && account.origin.type !== 'p2p') {\n this.init()\n }\n })\n .catch((err) => logger.error(err.message))\n\n this.sendMetrics(\n `enable-metrics?${ this.addQueryParam('version', SDK_VERSION)}`,\n undefined,\n (res) => {\n if (!res.ok) {\n res.status === 426\n ? console.error('Metrics are no longer supported for this version, please upgrade.')\n : console.warn(\n 'Network error encountered. Metrics sharing have been automatically disabled.'\n )\n }\n this.enableMetrics = res.ok\n this.storage.set(StorageKey.ENABLE_METRICS, res.ok)\n },\n () => {\n this.enableMetrics = false\n this.storage.set(StorageKey.ENABLE_METRICS, false)\n }\n )\n\n this.initUserID().catch((err) => logger.error(err.message))\n }\n\n private async checkIfBCLeaderExists() {\n // broadcast channel does not work on mobile\n if (isMobileOS(window)) {\n return true\n }\n\n const hasLeader = await this.multiTabChannel.hasLeader()\n\n if (hasLeader) {\n return this.multiTabChannel.isLeader()\n }\n\n await this.multiTabChannel.getLeadership()\n\n return this.multiTabChannel.isLeader()\n }\n\n private async onElectedLeaderhandler() {\n if (!this._transport.isResolved()) {\n return\n }\n\n const tranport = await this.transport\n\n if (tranport.type !== TransportType.WALLETCONNECT) {\n return\n }\n\n if (tranport.connectionStatus === TransportStatus.CONNECTED) {\n return\n }\n\n await tranport.connect()\n }\n\n private async onBCMessageHandler(message: any) {\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n case BeaconMessageType.OperationRequest:\n case BeaconMessageType.SignPayloadRequest:\n case BeaconMessageType.BroadcastRequest:\n case BeaconMessageType.ProofOfEventChallengeRequest:\n case BeaconMessageType.SimulatedProofOfEventChallengeRequest:\n this.prepareRequest(message)\n break\n case BeaconMessageType.BlockchainRequest:\n this.prepareRequest(message, true)\n break\n case 'RESPONSE':\n this.handleResponse(message.data.message, message.data.connectionInfo)\n break\n case 'DISCONNECT':\n this._transport.isResolved() && this.disconnect()\n break\n default:\n logger.error('onBCMessageHandler', 'message type not recognized', message)\n }\n }\n\n private async prepareRequest(message: any, isV3 = false) {\n if (!this.multiTabChannel.isLeader()) {\n return\n }\n\n // block until the transport is ready\n const transport = (await this._transport.promise) as DappWalletConnectTransport\n await transport.waitForResolution()\n\n this.openRequestsOtherTabs.add(message.id)\n isV3\n ? this.makeRequestV3(message.data, message.id)\n : this.makeRequest(message.data, false, message.id)\n }\n\n private async createStateSnapshot() {\n if (!localStorage || !this.enableMetrics) {\n return\n }\n const keys = Object.values(StorageKey).filter(\n (key) => !key.includes('wc@2') && !key.includes('secret') && !key.includes('account')\n ) as unknown as StorageKey[]\n\n try {\n for (const key of keys) {\n await this.beaconIDB.set(key, this.storage.getPrefixedKey(key))\n }\n } catch (err: any) {\n logger.error('createStateSnapshot', err.message)\n }\n }\n\n private async initUserID() {\n const id = await this.storage.get(StorageKey.USER_ID)\n\n if (id) {\n this.userId = id\n\n return\n }\n\n this.userId = await generateGUID()\n\n this.storage.set(StorageKey.USER_ID, this.userId)\n }\n\n public async initInternalTransports(): Promise<void> {\n const seed = await this.storage.get(StorageKey.BEACON_SDK_SECRET_SEED)\n if (!seed) {\n throw new Error('Secret seed not found')\n }\n const keyPair = await getKeypairFromSeed(seed)\n\n if (this.postMessageTransport || this.p2pTransport || this.walletConnectTransport) {\n return\n }\n\n this.postMessageTransport = new DappPostMessageTransport(this.name, keyPair, this.storage)\n await this.addListener(this.postMessageTransport)\n\n this.p2pTransport = new DappP2PTransport(\n this.name,\n keyPair,\n this.storage,\n this.matrixNodes,\n this.iconUrl,\n this.appUrl\n )\n\n await this.addListener(this.p2pTransport)\n\n // WalletConnect is on by default; skip building/listening the transport\n // only when explicitly disabled via disableWalletConnect (#32).\n if (this.isWalletConnectEnabled) {\n const wcOptions = {\n projectId: this.wcProjectId,\n relayUrl: this.wcRelayUrl,\n metadata: {\n name: this.name,\n description: this.description ?? '',\n url: this.appUrl ?? '',\n icons: this.iconUrl ? [this.iconUrl] : []\n }\n }\n\n this.walletConnectTransport = new DappWalletConnectTransport(\n this.name,\n keyPair,\n this.storage,\n {\n network: this.network.type,\n opts: wcOptions\n },\n this.checkIfBCLeaderExists.bind(this)\n )\n\n // Apply proposal networks requested before the transport existed\n // (requestPermissions runs before init creates the transport).\n if (this.pendingWcProposalNetworks) {\n this.walletConnectTransport.setProposalNetworks(this.pendingWcProposalNetworks)\n this.pendingWcProposalNetworks = undefined\n }\n\n this.initEvents()\n\n await this.addListener(this.walletConnectTransport)\n }\n }\n\n private initEvents() {\n if (!this.walletConnectTransport) {\n return\n }\n\n this.walletConnectTransport.setEventHandler(\n ClientEvents.CLOSE_ALERT,\n this.hideUI.bind(this, ['alert', 'toast'])\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.RESET_STATE,\n this.channelClosedHandler.bind(this)\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.WC_ACK_NOTIFICATION,\n this.wcToastHandler.bind(this)\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.ON_RELAYER_ERROR,\n this.onRelayerError.bind(this)\n )\n }\n\n private async onRelayerError() {\n await this.resetInvalidState(false)\n\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.RELAYER_ERROR,\n error,\n async (errorContext) => errorContext\n )\n }\n\n private async wcToastHandler(status: string) {\n const walletInfo = await (async (): Promise<WalletInfo> => {\n try {\n return await this.getWalletInfo()\n } catch {\n return { name: 'wallet' }\n }\n })()\n\n await this.events.emit(BeaconEvent.HIDE_UI, ['alert'])\n if (status === 'pending') {\n this.events.emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: {} as any,\n extraInfo: {} as any,\n walletInfo\n })\n } else {\n const error = getError(BeaconErrorType.ABORTED_ERROR, undefined)\n await this.emitEventWithErrorContext(\n BeaconEvent.PERMISSION_REQUEST_ERROR,\n error,\n async (errorContext) => ({\n errorResponse: { errorType: BeaconErrorType.ABORTED_ERROR } as any,\n walletInfo,\n errorContext\n })\n )\n }\n }\n private async channelClosedHandler(type: TransportType) {\n const transport = await this.transport\n\n if (transport.type !== type) {\n return\n }\n\n await this.events.emit(BeaconEvent.CHANNEL_CLOSED)\n this.setActiveAccount(undefined)\n await this.disconnect()\n }\n\n /**\n * Destroy the instance.\n *\n * WARNING: Call `destroy` whenever you no longer need dAppClient\n * as it frees internal subscriptions to the transport and therefore the instance may no longer work properly.\n * If you wish to disconnect your dApp, use `disconnect` instead.\n */\n async destroy(): Promise<void> {\n await this.createStateSnapshot()\n await super.destroy()\n }\n\n public async init(\n transport?: Transport<any>,\n substratePairing?: boolean\n ): Promise<TransportType> {\n if (this._initPromise) {\n return this._initPromise\n }\n\n try {\n await this.activeAccountLoaded\n } catch {\n //\n }\n\n this._initPromise = new Promise<TransportType>(async (resolve, reject) => {\n this._initPromiseReject = reject\n\n if (transport) {\n await this.addListener(transport)\n\n resolve(await super.init(transport))\n } else if (this._transport.isSettled()) {\n await (await this.transport).connect()\n\n resolve(await super.init(await this.transport))\n } else {\n const activeAccount = await this.getActiveAccount()\n const stopListening = () => {\n if (this.postMessageTransport) {\n this.postMessageTransport.stopListeningForNewPeers().catch(console.error)\n }\n if (this.p2pTransport) {\n this.p2pTransport.stopListeningForNewPeers().catch(console.error)\n }\n if (this.walletConnectTransport) {\n this.walletConnectTransport.stopListeningForNewPeers().catch(console.error)\n }\n }\n\n await this.initInternalTransports()\n\n if (\n !this.postMessageTransport ||\n !this.p2pTransport ||\n (this.isWalletConnectEnabled && !this.walletConnectTransport)\n ) {\n return\n }\n\n this.postMessageTransport.connect().then().catch(console.error)\n\n if (activeAccount && activeAccount.origin) {\n const origin = activeAccount.origin.type\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n resolve(await super.init(this.postMessageTransport))\n } else if (origin === Origin.P2P) {\n resolve(await super.init(this.p2pTransport))\n } else if (origin === Origin.WALLETCONNECT && this.walletConnectTransport) {\n resolve(await super.init(this.walletConnectTransport))\n } else {\n // The persisted active account was paired over WalletConnect but WC\n // has since been disabled (`disableWalletConnect`, #32) or failed to\n // initialize, so there is no matching transport to\n // restore. Without this branch none of the conditions above call\n // resolve() and the init promise created above never settles, so\n // init() (and every later call awaiting it) hangs forever. Resolve on\n // the always-available P2P transport so the SDK stays usable and the\n // stale WC account can be re-paired.\n logger.warn(\n 'init',\n 'Active account was paired over WalletConnect but WC is disabled; falling back to the P2P transport'\n )\n resolve(await super.init(this.p2pTransport))\n }\n } else {\n const p2pTransport = this.p2pTransport\n const postMessageTransport = this.postMessageTransport\n const walletConnectTransport = this.walletConnectTransport\n\n postMessageTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'postmessage transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'Extension connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.postMessageTransport).catch(console.error)\n stopListening()\n resolve(TransportType.POST_MESSAGE)\n })\n .catch(console.error)\n\n p2pTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'p2p transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'octez.connect Wallet connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.p2pTransport).catch(console.error)\n stopListening()\n resolve(TransportType.P2P)\n })\n .catch(console.error)\n\n walletConnectTransport\n ?.listenForNewPeer((peer) => {\n logger.log('init', 'walletconnect transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'WalletConnect Wallet connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.walletConnectTransport).catch(console.error)\n stopListening()\n resolve(TransportType.WALLETCONNECT)\n })\n .catch(console.error)\n\n PostMessageTransport.getAvailableExtensions()\n .then(async (extensions) => {\n this.analytics.track('event', 'DAppClient', 'Extensions detected', { extensions })\n })\n .catch((error) => {\n this._initPromise = undefined\n this._initPromiseReject = undefined\n console.error(error)\n })\n\n const abortHandler = async () => {\n logger.log('init', 'ABORTED')\n this.sendMetrics(\n 'performance-metrics/save',\n await this.buildPayload('connect', 'abort')\n )\n await Promise.all([\n postMessageTransport.disconnect(),\n // p2pTransport.disconnect(), do not abort connection manually\n walletConnectTransport?.disconnect()\n ])\n this.postMessageTransport = this.walletConnectTransport = this.p2pTransport = undefined\n this._activeAccount.isResolved() && this.clearActiveAccount()\n\n this.events.emit(BeaconEvent.PAIR_ABORTED).catch((emitError) => console.warn(emitError))\n\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n }\n this._initPromise = undefined\n this._initPromiseReject = undefined\n }\n\n const serializer = new Serializer()\n const p2pPeerInfo = new Promise<string>(async (resolve) => {\n try {\n await p2pTransport.connect()\n } catch (err: any) {\n logger.error(err)\n await this.hideUI(['alert']) // hide pairing alert\n const error = new UnknownBeaconError()\n setTimeout(() => {\n this.emitEventWithErrorContext(\n BeaconEvent.GENERIC_ERROR,\n error,\n async (errorContext) => ({\n message: err.message,\n errorContext\n })\n ).catch((emitError) => console.warn(emitError))\n }, 1000)\n abortHandler()\n resolve('')\n\n return\n }\n resolve(await serializer.serialize(await p2pTransport.getPairingRequestInfo()))\n })\n\n const walletConnectPeerInfo = new Promise<string>(async (resolve) => {\n // When WC is disabled there is no transport to pair through (#32).\n resolve(\n walletConnectTransport\n ? (await walletConnectTransport.getPairingRequestInfo()).uri\n : ''\n )\n })\n\n const postmessagePeerInfo = new Promise<string>(async (resolve) => {\n resolve(await serializer.serialize(await postMessageTransport.getPairingRequestInfo()))\n })\n\n this.events\n .emit(BeaconEvent.PAIR_INIT, {\n p2pPeerInfo,\n postmessagePeerInfo,\n walletConnectPeerInfo,\n networkType: this.network.type,\n abortedHandler: abortHandler.bind(this),\n analytics: this.analytics,\n featuredWallets: this.featuredWallets,\n termsAndConditionsUrl: this.termsAndConditionsUrl,\n privacyPolicyUrl: this.privacyPolicyUrl,\n substratePairing\n })\n .catch((emitError) => console.warn(emitError))\n }\n }\n })\n\n return this._initPromise\n }\n\n /**\n * Returns the active account\n */\n public async getActiveAccount(): Promise<AccountInfo | undefined> {\n return this._activeAccount.promise\n }\n\n private async isInvalidState(account: AccountInfo) {\n const activeAccount = await this._activeAccount.promise\n\n return !activeAccount\n ? false\n : activeAccount?.address !== account?.address && !this.isGetActiveAccountHandled\n }\n\n private async resetInvalidState(emit: boolean = true) {\n this.accountManager.removeAllAccounts()\n this._activeAccount = ExposedPromise.resolve<AccountInfo | undefined>(undefined)\n this.storage.set(StorageKey.ACTIVE_ACCOUNT, undefined)\n emit && this.events.emit(BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE)\n !emit && this.hideUI(['alert'])\n await Promise.all([\n this.postMessageTransport?.disconnect(),\n this.walletConnectTransport?.disconnect()\n ])\n this.postMessageTransport = this.p2pTransport = this.walletConnectTransport = undefined\n await this.setActivePeer(undefined)\n await this.setTransport(undefined)\n this._initPromise = undefined\n }\n\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n public async setActiveAccount(account?: AccountInfo): Promise<void> {\n if (!this.isGetActiveAccountHandled) {\n console.warn(\n `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET.\n For more information, visit: https://octez-connect.tezos.com/guides/migration-guide`\n )\n }\n\n if (account && this._activeAccount.isSettled() && (await this.isInvalidState(account))) {\n const tranport = await this.transport\n\n if (tranport instanceof WalletConnectTransport && tranport.wasDisconnectedByWallet()) {\n await this.resetInvalidState()\n\n return\n }\n }\n\n // when I'm resetting the activeAccount\n if (!account && this._activeAccount.isResolved() && (await this.getActiveAccount())) {\n const transport = await this.transport\n const activeAccount = await this.getActiveAccount()\n\n if (!transport || !activeAccount) {\n return\n }\n\n if (!this.debounceSetActiveAccount && transport instanceof WalletConnectTransport) {\n this.debounceSetActiveAccount = true\n this._initPromise = undefined\n this.postMessageTransport = this.p2pTransport = this.walletConnectTransport = undefined\n if (this.multiTabChannel.isLeader() || isMobileOS(window)) {\n await transport.disconnect()\n this.openRequestsOtherTabs.clear()\n } else {\n this.multiTabChannel.postMessage({\n type: 'DISCONNECT'\n })\n }\n Array.from(this.openRequests.entries())\n .filter(([id, _promise]) => id !== 'session_update')\n .forEach(([id, promise]) => {\n promise.reject({\n type: BeaconMessageType.Error,\n errorType: BeaconErrorType.ABORTED_ERROR,\n id,\n senderId: '',\n // SDK-synthesized rejection consumed in-process (never hits the\n // wire); stamped with the wrapped baseline for consistency.\n version: negotiateEnvelopeVersion(undefined)\n })\n })\n this.openRequests.clear()\n this.debounceSetActiveAccount = false\n }\n }\n\n if (this._activeAccount.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activeAccount = ExposedPromise.resolve<AccountInfo | undefined>(account)\n } else {\n this._activeAccount.resolve(account)\n }\n\n if (!this.isGetActiveAccountHandled && this._transport.isResolved()) {\n const transport = await this.transport\n\n if (transport instanceof WalletConnectTransport && transport.wasDisconnectedByWallet()) {\n await this.resetInvalidState()\n\n return\n }\n }\n\n if (account) {\n const origin = account.origin.type\n await this.initInternalTransports()\n\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n await this.setTransport(this.postMessageTransport)\n } else if (origin === Origin.P2P) {\n await this.setTransport(this.p2pTransport)\n } else if (origin === Origin.WALLETCONNECT && this.walletConnectTransport) {\n await this.setTransport(this.walletConnectTransport)\n this.walletConnectTransport.forceUpdate('INIT')\n } else if (origin === Origin.WALLETCONNECT) {\n // WalletConnect is opt-out/disabled (#32) but this persisted account was\n // paired over WC. There is no WC transport to bind; setting the transport\n // to `undefined` would leave the client unable to send any request. Fall\n // back to the always-available P2P transport so the SDK stays usable\n // (the stale WC account can be re-paired).\n logger.warn(\n 'setActiveAccount',\n 'Active account was paired over WalletConnect but WC is disabled; falling back to the P2P transport'\n )\n await this.setTransport(this.p2pTransport)\n }\n if (this._transport.isResolved()) {\n const transport = await this.transport\n\n if (transport.connectionStatus === TransportStatus.NOT_CONNECTED) {\n await transport.connect()\n }\n }\n const peer = await this.getPeer(account)\n await this.setActivePeer(peer)\n } else {\n await this.setActivePeer(undefined)\n await this.setTransport(undefined)\n }\n\n await this.storage.set(\n StorageKey.ACTIVE_ACCOUNT,\n account ? account.accountIdentifier : undefined\n )\n\n await this.events.emit(BeaconEvent.ACTIVE_ACCOUNT_SET, account)\n\n return\n }\n\n /**\n * Clear the active account\n */\n public clearActiveAccount(): Promise<void> {\n return this.setActiveAccount()\n }\n\n public async setColorMode(colorMode: ColorMode): Promise<void> {\n return setColorMode(colorMode)\n }\n\n public async getColorMode(): Promise<ColorMode> {\n return getColorMode()\n }\n\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n public async getAppMetadata(): Promise<AppMetadata> {\n return this.getOwnAppMetadata()\n }\n\n public async showPrepare(): Promise<void> {\n const walletInfo = await (async () => {\n try {\n return await this.getWalletInfo()\n } catch {\n return undefined\n }\n })()\n await this.events.emit(BeaconEvent.SHOW_PREPARE, { walletInfo })\n }\n\n public async hideUI(elements: ('alert' | 'toast')[]): Promise<void> {\n await this.events.emit(BeaconEvent.HIDE_UI, elements)\n }\n\n private async tryToAppSwitch() {\n if (!isMobileOS(window) || !this.enableAppSwitching) {\n return\n }\n\n const wallet = await this.getWalletInfo()\n\n if (wallet.type !== 'mobile' || !wallet.deeplink) {\n return\n }\n\n const link = isIOS(window) ? wallet.deeplink : (`${wallet.deeplink}wc?uri=` as any)\n\n if (!link?.length) {\n return\n }\n\n window.location = link\n }\n\n private addQueryParam(paramName: string, paramValue: string): string {\n return `${paramName }=${ paramValue}`\n }\n\n private async buildPayload(\n action: 'connect' | 'message' | 'disconnect',\n status: 'start' | 'abort' | 'success' | 'error'\n ): Promise<RequestInit> {\n const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n const transport = this._activeAccount.isResolved()\n ? ((await this.getActiveAccount())?.origin.type ?? 'UNKNOWN')\n : 'UNKNOWN'\n\n return {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n userId: this.userId,\n os: currentOS(),\n walletName: wallet?.name ?? 'init',\n walletType: wallet?.type ?? 'init',\n sdkVersion: SDK_VERSION,\n transport,\n time: new Date(),\n action,\n status\n })\n }\n }\n\n private async updateMetricsStorage(payload: string) {\n const queue = await this.beaconIDB.getAllKeys('metrics')\n\n if (queue.length >= 1000) {\n const key = queue.shift()!\n this.beaconIDB.delete(key.toString(), 'metrics')\n }\n\n this.beaconIDB.set(String(Date.now()), payload, 'metrics')\n }\n\n private sendMetrics(\n uri: string,\n options?: RequestInit,\n thenHandler?: (res: Response) => void,\n catchHandler?: (err: Error) => void\n ) {\n if (!this.enableMetrics && uri === 'performance-metrics/save') {\n options && this.updateMetricsStorage(options.body as string)\n }\n if (!this.enableMetrics) {\n return\n }\n\n fetch(`${BACKEND_URL}/${uri}`, options)\n .then((res) => thenHandler && thenHandler(res))\n .catch((err: Error) => {\n console.warn('Network error encountered. Metrics sharing have been automatically disabled.')\n logger.error(err.message)\n this.enableMetrics = false // in the event of a network error, stop sending metrics\n catchHandler && catchHandler(err)\n })\n }\n\n private async checkMakeRequest() {\n const isResolved = this._transport.isResolved()\n const isWCInstance = isResolved && (await this.transport) instanceof WalletConnectTransport\n await this.multiTabChannel.init()\n const isLeader = this.multiTabChannel.isLeader()\n\n return !isResolved || !isWCInstance || isLeader || isMobileOS(window)\n }\n\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n public async removeAccount(accountIdentifier: string): Promise<void> {\n const removeAccountResult = super.removeAccount(accountIdentifier)\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (activeAccount && activeAccount.accountIdentifier === accountIdentifier) {\n await this.setActiveAccount(undefined)\n }\n\n return removeAccountResult\n }\n\n /**\n * Remove all accounts and set active account to undefined\n */\n public async removeAllAccounts(): Promise<void> {\n await super.removeAllAccounts()\n await this.setActiveAccount(undefined)\n }\n\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n public async removePeer(\n peer: ExtendedPeerInfo,\n sendDisconnectToPeer: boolean = false\n ): Promise<void> {\n const transport = await this.transport\n\n const removePeerResult = transport.removePeer(peer)\n\n await this.removeAccountsForPeers([peer])\n\n if (sendDisconnectToPeer) {\n await this.sendDisconnectToPeer(peer, transport)\n }\n\n return removePeerResult\n }\n\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n public async removeAllPeers(sendDisconnectToPeers: boolean = false): Promise<void> {\n const transport = await this.transport\n\n const peers: ExtendedPeerInfo[] = await transport.getPeers()\n const removePeerResult = transport.removeAllPeers()\n\n await this.removeAccountsForPeers(peers)\n\n if (sendDisconnectToPeers) {\n const disconnectPromises = peers.map((peer) => this.sendDisconnectToPeer(peer, transport))\n\n await Promise.all(disconnectPromises)\n }\n\n return removePeerResult\n }\n\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n public async subscribeToEvent<K extends BeaconEvent>(\n internalEvent: K,\n eventCallback: BeaconEventHandlerFunction<BeaconEventType[K]>\n ): Promise<void> {\n if (internalEvent === BeaconEvent.ACTIVE_ACCOUNT_SET) {\n this.isGetActiveAccountHandled = true\n }\n\n await this.events.on(internalEvent, eventCallback)\n }\n\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n public async checkPermissions(type: BeaconMessageType): Promise<boolean> {\n if (\n [\n BeaconMessageType.PermissionRequest,\n BeaconMessageType.ProofOfEventChallengeRequest,\n BeaconMessageType.SimulatedProofOfEventChallengeRequest\n ].includes(type)\n ) {\n return true\n }\n\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (!activeAccount) {\n throw await this.sendInternalError('No active account set!')\n }\n\n const permissions = activeAccount.scopes\n\n switch (type) {\n case BeaconMessageType.OperationRequest:\n return permissions.includes(PermissionScope.OPERATION_REQUEST)\n case BeaconMessageType.SignPayloadRequest:\n return permissions.includes(PermissionScope.SIGN)\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadRequest:\n // return permissions.includes(PermissionScope.ENCRYPT)\n case BeaconMessageType.BroadcastRequest:\n return true\n default:\n return false\n }\n }\n\n public async sendNotification(\n title: string,\n message: string,\n payload: string,\n protocolIdentifier: string\n ): Promise<string> {\n const activeAccount = await this.getActiveAccount()\n\n if (\n !activeAccount ||\n (activeAccount &&\n !activeAccount.scopes.includes(PermissionScope.NOTIFICATION) &&\n !activeAccount.notification)\n ) {\n throw new Error('notification permissions not given')\n }\n\n if (!activeAccount.notification?.token) {\n throw new Error('No AccessToken')\n }\n\n const url = activeAccount.notification?.apiUrl\n\n if (!url) {\n throw new Error('No Push URL set')\n }\n\n return this.sendNotificationWithAccessToken({\n url,\n recipient: activeAccount.address,\n title,\n body: message,\n payload,\n protocolIdentifier,\n accessToken: activeAccount.notification?.token\n })\n }\n\n public override addBlockchain(chain: Blockchain): void {\n super.addBlockchain(chain)\n chain.getWalletLists().then((walletLists) => {\n setDesktopList(walletLists.desktopList)\n setExtensionList(walletLists.extensionList)\n setWebList(walletLists.webList)\n setiOSList(walletLists.iOSList)\n })\n }\n\n public async permissionRequest(\n input: PermissionRequestV3\n ): Promise<PermissionResponseV3> {\n logger.log('permissionRequest', input)\n const blockchain = this.blockchains.get(input.blockchainIdentifier)\n if (!blockchain) {\n throw new Error(`Blockchain \"${input.blockchainIdentifier}\" not supported by dAppClient`)\n }\n\n const request: PermissionRequestV3 = {\n ...input,\n type: BeaconMessageType.PermissionRequest,\n blockchainData: {\n ...input.blockchainData,\n appMetadata: await this.getOwnAppMetadata()\n }\n }\n\n logger.log('REQUESTION PERMIMISSION V3', 'xxx', request)\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n const logId = `makeRequestV3 ${Date.now()}`\n logger.time(true, logId)\n\n const { message: response, connectionInfo } = await this.requireResponse(\n this.makeRequestV3<\n PermissionRequestV3,\n BeaconMessageWrapper<PermissionResponseV3>\n >(request),\n request as any,\n logId\n )\n logger.time(false, logId)\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n logger.log('RESPONSE V3', response, connectionInfo)\n\n // The version stamp lives on the wrapper envelope, not the inner payload;\n // reading response.message.version would always miss and collapse to '0',\n // misrouting v4 responses when no peer is persisted yet.\n const walletPeerV3 = await this.getPeer()\n const walletPeerVersionV3: string = effectivePeerVersion(walletPeerV3) ?? response.version\n const partialAccountInfos = await blockchain.getAccountInfosFromPermissionResponse(\n response.message,\n walletPeerVersionV3\n )\n\n const blockchainDataScopes = (\n response.message.blockchainData as { scopes?: PermissionScope[] }\n ).scopes\n const accountInfos: AccountInfo[] = partialAccountInfos.map(\n (p) =>\n ({\n accountIdentifier: p.accountId,\n senderId: response.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n address: p.address,\n publicKey: p.publicKey,\n network: p.network,\n scopes: blockchainDataScopes ?? p.scopes,\n connectedAt: new Date().getTime(),\n chainData: response.message.blockchainData\n } as unknown as AccountInfo)\n )\n\n await this.accountManager.addAccounts(accountInfos)\n const accountInfo: AccountInfo | undefined = accountInfos[0]\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n await this.setActiveAccount(accountInfo)\n\n await blockchain.handleResponse({\n request,\n account: accountInfo,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n await this.notifySuccess(request as any, {\n account: accountInfo,\n output: {\n address: accountInfo.address,\n network: { type: 'substrate' },\n scopes: []\n } as any,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n // return output\n return response.message\n }\n\n public async request(input: BlockchainRequestV3): Promise<BlockchainResponseV3> {\n logger.log('request', input)\n const blockchain = this.blockchains.get(input.blockchainIdentifier)\n if (!blockchain) {\n throw new Error(`Blockchain \"${blockchain}\" not supported by dAppClient`)\n }\n\n await blockchain.validateRequest(input)\n\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const request: BlockchainRequestV3 = {\n ...input,\n type: BeaconMessageType.BlockchainRequest,\n accountId: activeAccount.accountIdentifier\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n\n const logId = `makeRequestV3 ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequestV3<\n BlockchainRequestV3,\n BeaconMessageWrapper<BlockchainResponseV3>\n >(request)\n : this.makeRequestBC<any, any>(request)\n\n const { message: response, connectionInfo } = await this.requireResponse(\n res,\n request as any,\n logId\n )\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await blockchain.handleResponse({\n request,\n account: activeAccount,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n await this.notifySuccess(\n request as any,\n {\n walletInfo: await this.getWalletInfo()\n } as any\n )\n\n return response.message\n }\n\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n public async requestPermissions(\n input?: RequestPermissionInput\n ): Promise<PermissionResponseOutput> {\n if ((input as any)?.network) {\n throw new Error(\n '[BEACON] the \"network\" property is no longer accepted in input. Please provide it when instantiating DAppClient.'\n )\n }\n\n const request: PermissionRequestInput = {\n appMetadata: await this.getOwnAppMetadata(),\n type: BeaconMessageType.PermissionRequest,\n network: this.network,\n scopes:\n input && input.scopes\n ? input.scopes\n : [PermissionScope.OPERATION_REQUEST, PermissionScope.SIGN]\n }\n\n // Dedupe by the normalized CAIP-2 chainId so equivalent input entries\n // ('NetX…' and 'tezos:NetX…') collapse to one canonical wire entry.\n if (input?.networks && input.networks.length > 0) {\n const dedupedNetworks = Array.from(\n new Map(\n input.networks.map((n: RequestPermissionNetwork) => {\n const chainId = normalizeTezosCaip2(n.chainId)\n\n return [chainId, { ...n, chainId }]\n })\n ).values()\n )\n request.networks = dedupedNetworks\n\n // Multi-network over WalletConnect travels via the session proposal,\n // not the wire payload (WC peers have no beacon version handshake).\n // Map each requested chain id to its named network for the proposal;\n // ids without a static genesis mapping are skipped here (the\n // NetworksUnsupportedBeaconError guard above reports them when the\n // dApp opted into requiredMinimumVersion '4').\n const proposalNetworkTypes: NetworkType[] = []\n for (const { chainId } of dedupedNetworks) {\n const networkType = networkTypeFromTezosCaip2(chainId)\n if (networkType === undefined) {\n logger.debug(\n 'requestPermissions',\n `No static network mapping for \"${chainId}\"; excluded from the WalletConnect proposal`\n )\n continue\n }\n proposalNetworkTypes.push(networkType)\n }\n\n if (this.walletConnectTransport) {\n this.walletConnectTransport.setProposalNetworks(proposalNetworkTypes)\n } else {\n // The WalletConnect transport is created lazily inside init() (run\n // by makeRequest below, before the pairing proposal is built); stash\n // the networks and apply them right after creation.\n this.pendingWcProposalNetworks = proposalNetworkTypes\n }\n }\n\n this.analytics.track('event', 'DAppClient', 'Permission requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res =\n (await this.checkMakeRequest()) || !(await this.getActiveAccount())\n ? this.makeRequest<PermissionRequest, PermissionResponse>(request, undefined, undefined)\n : this.makeRequestBC<PermissionRequest, PermissionResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'success'))\n\n logger.log('requestPermissions', '######## MESSAGE #######')\n logger.log('requestPermissions', message)\n\n // Capability-aware peer version (legacy wallets echo the dApp's version\n // at pairing — see effectivePeerVersion); fall back to the response\n // envelope version when no peer is persisted yet.\n const walletPeer = await this.getPeer()\n const walletPeerVersion = effectivePeerVersion(walletPeer) ?? message.version\n\n // Gate the freshly-paired wallet against the dApp's required minimum (a\n // no-op under the default, permissive minimum). Throws\n // VersionUnsupportedBeaconError when the wallet is too old.\n this.assertWalletVersionMeetsMinimum(walletPeerVersion)\n\n const isV4Session = isMultiNetworkVersion(walletPeerVersion)\n\n const messageAccounts = (message as { accounts?: PermissionResponseAccounts }).accounts\n const multiNetworkAccounts: PermissionResponseAccounts | null =\n isV4Session &&\n messageAccounts &&\n typeof messageAccounts === 'object' &&\n !Array.isArray(messageAccounts)\n ? messageAccounts\n : null\n let accountInfo: AccountInfo | undefined\n\n if (isV4Session) {\n const requestedNetworks: string[] = (request.networks ?? []).map((n) =>\n normalizeTezosCaip2(n.chainId)\n )\n const servedChainIds: string[] = multiNetworkAccounts\n ? Object.keys(multiNetworkAccounts).map(normalizeTezosCaip2)\n : []\n\n const isMinimumVersionV4OrHigher = isMultiNetworkVersion(this.requiredMinimumVersion)\n // Reject silently-degraded responses: a v4 session with >=2 networks\n // requested but no accounts fanout returned.\n if (requestedNetworks.length >= 2 && isMinimumVersionV4OrHigher) {\n const missing = requestedNetworks.filter((c) => !servedChainIds.includes(c))\n if (missing.length > 0) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks,\n unsupportedNetworks: missing\n })\n }\n }\n }\n\n if (isV4Session && multiNetworkAccounts) {\n const builtAccounts = await this.buildAccountInfosFromV4Fanout(\n message,\n multiNetworkAccounts,\n walletPeerVersion ?? '0',\n connectionInfo\n )\n await this.accountManager.addAccounts(builtAccounts)\n accountInfo = builtAccounts[0]\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n await this.setActiveAccount(accountInfo)\n logger.log('requestPermissions', '######## MULTI-NETWORK ACCOUNTS #######', builtAccounts.length)\n } else {\n accountInfo = await this.onNewAccount(message, connectionInfo)\n logger.log('requestPermissions', '######## ACCOUNT INFO #######')\n logger.log('requestPermissions', JSON.stringify(accountInfo))\n await this.accountManager.addAccount(accountInfo)\n }\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n\n const output: PermissionResponseOutput = {\n ...message,\n walletKey: accountInfo.walletKey,\n address: accountInfo.address,\n accountInfo\n }\n\n await this.notifySuccess(request, {\n account: accountInfo,\n output,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Permission received', {\n address: accountInfo.address\n })\n\n return output\n }\n\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n public async requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput) {\n const activeAccount = await this.getActiveAccount()\n\n if (!activeAccount)\n {throw new Error('Please request permissions before doing a proof of event challenge')}\n if (\n activeAccount.walletType !== 'abstracted_account' &&\n activeAccount.verificationType !== 'proof_of_event'\n )\n {throw new Error(\n 'This wallet is not an abstracted account and thus cannot perform proof of event'\n )}\n\n const request: ProofOfEventChallengeRequestInput = {\n type: BeaconMessageType.ProofOfEventChallengeRequest,\n contractAddress: activeAccount.address,\n payload: input.payload\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<ProofOfEventChallengeRequest, ProofOfEventChallengeResponse>(request)\n : this.makeRequestBC<ProofOfEventChallengeRequest, ProofOfEventChallengeResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n this.analytics.track(\n 'event',\n 'DAppClient',\n `Proof of event challenge ${message.isAccepted ? 'accepted' : 'refused'}`,\n { address: activeAccount.address }\n )\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n return message\n }\n\n /**\n * Send a simulated proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * It's the same than `requestProofOfEventChallenge` but rather than executing operations on the blockchain to prove the identity,\n * The wallet will return a list of operations that you'll be able to run on your side to verify the identity of the abstracted account\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the SimulatedProofOfEventChallenge message.\n */\n public async requestSimulatedProofOfEventChallenge(\n input: RequestSimulatedProofOfEventChallengeInput\n ) {\n const activeAccount = await this.getActiveAccount()\n\n if (!activeAccount)\n {throw new Error('Please request permissions before doing a proof of event challenge')}\n if (\n activeAccount.walletType !== 'abstracted_account' &&\n activeAccount.verificationType !== 'proof_of_event'\n ) {\n throw new Error(\n 'This wallet is not an abstracted account and thus cannot perform a simulated proof of event'\n )\n }\n\n const request: SimulatedProofOfEventChallengeRequestInput = {\n type: BeaconMessageType.SimulatedProofOfEventChallengeRequest,\n contractAddress: activeAccount.address,\n ...input\n }\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse\n >(request)\n : this.makeRequestBC<\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse\n >(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n\n this.analytics.track(\n 'event',\n 'DAppClient',\n `Simulated proof of event challenge ${!message.errorMessage ? 'accepted' : 'refused'}`,\n { address: activeAccount.address }\n )\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n return message\n }\n\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n public async requestSignPayload(\n input: RequestSignPayloadInput\n ): Promise<SignPayloadResponseOutput> {\n if (!input.payload) {\n throw await this.sendInternalError('Payload must be provided')\n }\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const payload = input.payload\n\n if (typeof payload !== 'string') {\n throw new Error('Payload must be a string')\n }\n\n const signingType = ((): SigningType => {\n switch (input.signingType) {\n case SigningType.OPERATION:\n if (!payload.startsWith('03')) {\n throw new Error(\n 'When using signing type \"OPERATION\", the payload must start with prefix \"03\"'\n )\n }\n\n return SigningType.OPERATION\n\n case SigningType.MICHELINE:\n if (!payload.startsWith('05')) {\n throw new Error(\n 'When using signing type \"MICHELINE\", the payload must start with prefix \"05\"'\n )\n }\n\n return SigningType.MICHELINE\n\n case SigningType.RAW:\n default:\n return SigningType.RAW\n }\n })()\n\n this.analytics.track('event', 'DAppClient', 'Signature requested')\n\n const request: SignPayloadRequestInput = {\n type: BeaconMessageType.SignPayloadRequest,\n signingType,\n payload,\n sourceAddress: input.sourceAddress || activeAccount.address\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<SignPayloadRequest, SignPayloadResponse>(request)\n : this.makeRequestBC<SignPayloadRequest, SignPayloadResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Signature response')\n\n return message\n }\n\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n // TODO: ENCRYPTION\n // public async requestEncryptPayload(\n // input: RequestEncryptPayloadInput\n // ): Promise<EncryptPayloadResponseOutput> {\n // if (!input.payload) {\n // throw await this.sendInternalError('Payload must be provided')\n // }\n // const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n // if (!activeAccount) {\n // throw await this.sendInternalError('No active account!')\n // }\n\n // const payload = input.payload\n\n // if (typeof payload !== 'string') {\n // throw new Error('Payload must be a string')\n // }\n\n // if (typeof input.encryptionCryptoOperation === 'undefined') {\n // throw new Error('encryptionCryptoOperation must be defined')\n // }\n\n // if (typeof input.encryptionType === 'undefined') {\n // throw new Error('encryptionType must be defined')\n // }\n\n // const request: EncryptPayloadRequestInput = {\n // type: BeaconMessageType.EncryptPayloadRequest,\n // cryptoOperation: input.encryptionCryptoOperation,\n // encryptionType: input.encryptionType,\n // payload,\n // sourceAddress: input.sourceAddress || activeAccount.address\n // }\n\n // const { message, connectionInfo } = await this.makeRequest<\n // EncryptPayloadRequest,\n // EncryptPayloadResponse\n // >(request).catch(async (requestError: ErrorResponse) => {\n // throw await this.handleRequestError(request, requestError)\n // })\n\n // await this.notifySuccess(request, {\n // account: activeAccount,\n // output: message,\n // connectionContext: connectionInfo,\n // walletInfo: await this.getWalletInfo()\n // })\n\n // return message\n // }\n\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n public async requestOperation(input: RequestOperationInput): Promise<OperationResponseOutput> {\n if (!input.operationDetails) {\n throw await this.sendInternalError('Operation details must be provided')\n }\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const resolvedNetwork: Network | string = await this.resolveOperationNetwork(\n input.network,\n activeAccount\n )\n\n const request: OperationRequestInput = {\n type: BeaconMessageType.OperationRequest,\n network: resolvedNetwork,\n operationDetails: input.operationDetails,\n sourceAddress: activeAccount.address || ''\n }\n\n this.analytics.track('event', 'DAppClient', 'Operation requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<OperationRequest, OperationResponse>(request)\n : this.makeRequestBC<OperationRequest, OperationResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Operation response')\n\n return message\n }\n\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n public async requestBroadcast(input: RequestBroadcastInput): Promise<BroadcastResponseOutput> {\n if (!input.signedTransaction) {\n throw await this.sendInternalError('Signed transaction must be provided')\n }\n\n // Add error message for deprecation of network\n // TODO: Remove when we remove deprecated preferredNetwork\n if (input.network !== undefined && this.network.type !== input.network?.type) {\n console.error(\n '[BEACON] The network specified in the DAppClient constructor does not match the network set in the broadcast request. Please set the network in the constructor. Setting it during the Broadcast Request is deprecated.'\n )\n }\n\n const request: BroadcastRequestInput = {\n type: BeaconMessageType.BroadcastRequest,\n network: this.network,\n signedTransaction: input.signedTransaction\n }\n\n this.analytics.track('event', 'DAppClient', 'Broadcast requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<BroadcastRequest, BroadcastResponse>(request)\n : this.makeRequestBC<BroadcastRequest, BroadcastResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n network: this.network,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Broadcast response')\n\n return message\n }\n\n protected async setActivePeer(peer?: PeerInfoType): Promise<void> {\n if (this._activePeer.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activePeer = ExposedPromise.resolve(peer)\n } else {\n this._activePeer.resolve(peer)\n }\n\n if (!peer) {\n return\n }\n\n await this.initInternalTransports()\n\n if (peer.type === 'postmessage-pairing-response') {\n await this.setTransport(this.postMessageTransport)\n } else if (peer.type === 'p2p-pairing-response') {\n await this.setTransport(this.p2pTransport)\n }\n }\n\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected async setTransport(transport?: Transport<any>): Promise<void> {\n if (!transport) {\n this._initPromise = undefined\n }\n\n const result = super.setTransport(transport)\n\n const event = transport ? { ...(transport as any) } : undefined\n\n // remove keyPair, to prevent dApps from accidentaly leaking the privateKey\n if (event) {\n event.client = {\n ...event.client,\n keyPair: undefined\n }\n }\n\n await this.events.emit(BeaconEvent.ACTIVE_TRANSPORT_SET, event)\n\n return result\n }\n\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private async sendInternalError(errorMessage: string): Promise<void> {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: errorMessage,\n errorContext\n })\n )\n throw new Error(errorMessage)\n }\n\n private async emitEventWithErrorContext<T extends BeaconEvent>(\n event: T,\n error: BeaconError | Error,\n buildPayload: (errorContext: ErrorContext) => Promise<BeaconEventType[T]> | BeaconEventType[T],\n ...additionalArgs: any[]\n ): Promise<void> {\n const transport = this._transport.isResolved() ? await this.transport : undefined\n const errorContext = await buildErrorContext(error, this.storage, transport?.type)\n const payload = await buildPayload(errorContext)\n await this.events.emit(event, payload, ...additionalArgs)\n }\n\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private async removeAccountsForPeers(peersToRemove: ExtendedPeerInfo[]): Promise<void> {\n const peerIdsToRemove = peersToRemove.map((peer) => peer.senderId)\n\n return this.removeAccountsForPeerIds(peerIdsToRemove)\n }\n\n private async removeAccountsForPeerIds(peerIds: string[]): Promise<void> {\n const accounts = await this.accountManager.getAccounts()\n\n // Remove all accounts with origin of the specified peer\n const accountsToRemove = accounts.filter((account) => peerIds.includes(account.senderId))\n const accountIdentifiersToRemove = accountsToRemove.map(\n (accountInfo) => accountInfo.accountIdentifier\n )\n await this.accountManager.removeAccounts(accountIdentifiersToRemove)\n\n // Check if one of the accounts that was removed was the active account and if yes, set it to undefined\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (activeAccount) {\n if (accountIdentifiersToRemove.includes(activeAccount.accountIdentifier)) {\n await this.setActiveAccount(undefined)\n }\n }\n }\n\n private async requireResponse<T>(\n responsePromise: Promise<T | undefined>,\n request: BeaconRequestInputMessage,\n logId: string\n ): Promise<T> {\n try {\n return (await responsePromise)!\n } catch (requestError) {\n const error = requestError as ErrorResponse | AbortedBeaconError\n if (error instanceof AbortedBeaconError) {\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort'))\n logger.time(false, logId)\n throw error\n }\n const errorResponse = error\n errorResponse.errorType === BeaconErrorType.ABORTED_ERROR\n ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort'))\n : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error'))\n logger.time(false, logId)\n throw await this.handleRequestError(request, errorResponse)\n }\n }\n\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private async handleRequestError(\n request: BeaconRequestInputMessage,\n beaconError: ErrorResponse\n ): Promise<void> {\n logger.error('handleRequestError', 'error response', beaconError)\n if (beaconError.errorType) {\n const buttons: AlertButton[] = []\n if (beaconError.errorType === BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR) {\n const actionCallback = async (): Promise<void> => {\n const operationRequest: OperationRequestInput = request as OperationRequestInput\n // if the account we requested is not available, we remove it locally\n let accountInfo: AccountInfo | undefined\n if (operationRequest.sourceAddress && operationRequest.network) {\n const networkForId: Network =\n typeof operationRequest.network === 'string'\n ? networkFromTezosCaip2(normalizeTezosCaip2(operationRequest.network))\n : operationRequest.network\n const accountIdentifier = await getAccountIdentifier(\n operationRequest.sourceAddress,\n networkForId\n )\n accountInfo = await this.getAccount(accountIdentifier)\n\n if (accountInfo) {\n await this.removeAccount(accountInfo.accountIdentifier)\n }\n }\n }\n\n buttons.push({ text: 'Remove account', actionCallback })\n }\n\n const peer = await this.getPeer()\n const activeAccount = await this.getActiveAccount()\n\n // If we sent a permission request, received an error and there is no active account, we need to reset the DAppClient.\n // This most likely means that the user rejected the first permission request after pairing a wallet, so we \"forget\" the paired wallet to allow the user to pair again.\n if (\n request.type === BeaconMessageType.PermissionRequest &&\n (await this.getActiveAccount()) === undefined\n ) {\n this._initPromise = undefined\n this.postMessageTransport = undefined\n this.p2pTransport = undefined\n this.walletConnectTransport = undefined\n await this.setTransport()\n await this.setActivePeer()\n }\n\n const error = getError(beaconError.errorType, beaconError.errorData)\n await this.emitEventWithErrorContext(\n messageEvents[request.type].error,\n error,\n async (errorContext) => ({\n errorResponse: beaconError,\n walletInfo: await this.getWalletInfo(peer, activeAccount),\n errorMessages: this.errorMessages,\n errorContext\n }),\n buttons\n ).catch((emitError) => logger.error('handleRequestError', emitError))\n\n throw getError(beaconError.errorType, beaconError.errorData)\n }\n\n throw beaconError\n }\n\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private async notifySuccess(\n request: BeaconRequestInputMessage,\n response:\n | {\n account: AccountInfo\n output: PermissionResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: ProofOfEventChallengeResponse\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: SimulatedProofOfEventChallengeResponse\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: OperationResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n output: SignPayloadResponseOutput\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n // | {\n // output: EncryptPayloadResponseOutput\n // connectionContext: ConnectionContext\n // walletInfo: WalletInfo\n // }\n | {\n network: Network\n output: BroadcastResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n ): Promise<void> {\n this.events\n .emit(messageEvents[request.type].success, response)\n .catch((emitError) => console.warn(emitError))\n }\n\n private async getWalletInfoFromStorage() {\n return await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n }\n\n private async updateStorageWallet(walletInfo: WalletInfo) {\n const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n\n if (!wallet) {\n return\n }\n\n wallet.name = walletInfo.name\n wallet.icon = walletInfo.icon ?? wallet.icon\n this.storage.set(StorageKey.LAST_SELECTED_WALLET, wallet)\n }\n\n private async getWalletInfo(\n peer?: PeerInfo,\n account?: AccountInfo,\n readFromStorage: boolean = true\n ): Promise<WalletInfo> {\n const selectedAccount = account ? account : await this.getActiveAccount()\n\n const selectedPeer = peer ? peer : await this.getPeer(selectedAccount)\n\n let walletInfo: WalletInfo | undefined\n if (selectedAccount) {\n walletInfo = await this.appMetadataManager.getAppMetadata(selectedAccount.senderId)\n }\n\n let storageWallet\n\n if (readFromStorage) {\n storageWallet = await this.getWalletInfoFromStorage()\n }\n\n if (!walletInfo) {\n walletInfo = {\n name: selectedPeer?.name ?? storageWallet?.key ?? '',\n icon: selectedPeer?.icon ?? storageWallet?.icon,\n type: storageWallet?.type\n }\n\n this.updateStorageWallet(walletInfo)\n }\n\n const lowerCaseCompare = (str1?: string, str2?: string): boolean => {\n if (str1 && str2) {\n return str1.toLowerCase() === str2.toLowerCase()\n }\n\n return false\n }\n\n const getOrgName = (name: string) => name.split(/[_\\s]+/)[0]\n\n const apps: AppBase[] = [\n ...getiOSList(),\n ...getWebList(),\n ...getDesktopList(),\n ...getExtensionList()\n ].filter((app: AppBase) =>\n lowerCaseCompare(getOrgName(app.key), getOrgName(walletInfo?.name ?? 'wallet'))\n )\n\n // TODO: Remove once all wallets send the icon?\n const mobile = (apps as App[]).find(\n (app) => app.universalLink || app.key.includes('ios') || app.key.includes('mobile')\n )\n const browser = (apps as WebApp[]).find((app) => app.links)\n const desktop = (apps as DesktopApp[]).find((app) => app.downloadLink)\n const extension = (apps as ExtensionApp[]).find((app) => app.id)\n\n const appTypeMap = {\n extension: { app: extension, type: 'extension' },\n desktop: { app: desktop, type: 'desktop' },\n mobile: { app: mobile, type: 'mobile' },\n web: { app: browser, type: 'web' }\n }\n\n const defaultType = (): {\n app: AppBase | undefined\n type: 'extension' | 'mobile' | 'web' | 'desktop' | undefined\n } => {\n if (isBrowser(window) && browser) {return { app: browser, type: 'web' }}\n if (isDesktop(window) && desktop) {return { app: desktop, type: 'desktop' }}\n if (isBrowser(window) && extension) {return { app: extension, type: 'extension' }}\n if (mobile) {return { app: mobile, type: 'mobile' }}\n\n return { app: undefined, type: undefined }\n }\n\n const { app, type } = storageWallet ? appTypeMap[storageWallet.type] : defaultType()\n\n if (app) {\n let deeplink: string | undefined\n if (app.hasOwnProperty('links')) {\n deeplink = (app as WebApp).links[selectedAccount?.network.type ?? this.network.type]\n } else if (app.hasOwnProperty('deepLink')) {\n deeplink = (app as App).deepLink\n }\n\n return {\n name: app?.name ?? walletInfo.name,\n icon: app?.logo ?? walletInfo.icon,\n deeplink,\n type: type as any\n }\n }\n\n return walletInfo\n }\n\n // Throws VersionUnsupportedBeaconError when a wallet that reported a version\n // is below requiredMinimumVersion (or reports a malformed one). Callers pass\n // the EFFECTIVE version (see effectivePeerVersion): a declared version is\n // only trusted alongside the v5 `protocolVersion` pairing marker; a\n // marker-less wallet that declared one counts as '2' (legacy wallets echo\n // the dApp's version, so the raw peer.version may read deceptively high).\n // A peer that never reported a version (WalletConnect pairings, legacy\n // pairings predating versioning) is treated as unknown and allowed through,\n // so raising the minimum never retroactively breaks an already-paired\n // session on a pure read.\n private assertWalletVersionMeetsMinimum(walletVersion: string | undefined): void {\n if (walletVersion === undefined) {\n return\n }\n\n const min = this.requiredMinimumVersion\n\n let cmp: number\n try {\n cmp = compareBeaconVersion(walletVersion, min)\n } catch {\n // A present-but-malformed version cannot be shown to meet the minimum.\n throw new VersionUnsupportedBeaconError(min, walletVersion)\n }\n\n if (cmp < 0) {\n throw new VersionUnsupportedBeaconError(min, walletVersion)\n }\n }\n\n // Distinct CAIP-2 chain ids across all session accounts. Reads the account\n // store, so callers should avoid it on paths that can decide without it.\n private async getSessionChainIds(): Promise<string[]> {\n const allAccounts = await this.accountManager.getAccounts()\n\n return Array.from(\n new Set(\n allAccounts\n .map((a) => a.network?.chainId)\n .filter((c): c is string => typeof c === 'string' && c.length > 0)\n )\n )\n }\n\n // Resolves the network for an outgoing operation. Returns the supplied\n // CAIP-2 string (validated and confirmed in-session), or the active\n // account's Network when there is no ambiguity. Throws on a multi-network\n // session when no network is supplied.\n private async resolveOperationNetwork(\n inputNetwork: string | undefined,\n activeAccount: AccountInfo\n ): Promise<Network | string> {\n if (inputNetwork) {\n if (!isValidTezosCaip2(inputNetwork)) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [inputNetwork],\n unsupportedNetworks: [inputNetwork],\n customMessage: `Malformed CAIP-2 string: \"${inputNetwork}\". Expected format: tezos:<NetID>.`\n })\n }\n // Fast path: the active account is already on the requested network, so\n // it is trivially in-session — skip the account-store read.\n if (inputNetwork === activeAccount.network?.chainId) {\n return inputNetwork\n }\n const knownChainIds = await this.getSessionChainIds()\n // Tolerate pre-multi-network sessions with no recorded chain ids: such a\n // wallet (v2/v3) expects a Network object, not a bare CAIP-2 string it\n // cannot interpret, so return the active account's Network rather than the\n // string. (There is exactly one network in a session with no chain ids.)\n if (knownChainIds.length === 0) {\n return activeAccount.network || this.network\n }\n if (!knownChainIds.includes(inputNetwork)) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [inputNetwork],\n unsupportedNetworks: [inputNetwork]\n })\n }\n\n return inputNetwork\n }\n\n // No explicit network: a session spanning more than one chain is ambiguous.\n const sessionChainIds = await this.getSessionChainIds()\n if (sessionChainIds.length > 1) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [],\n unsupportedNetworks: []\n })\n }\n\n return activeAccount.network || this.network\n }\n\n private async getPeer(account?: AccountInfo): Promise<PeerInfo | undefined> {\n let peer: PeerInfo | undefined\n\n if (account) {\n logger.log('getPeer', 'We have an account', account)\n const postMessagePeers: ExtendedPostMessagePairingResponse[] =\n (await this.postMessageTransport?.getPeers()) ?? []\n const p2pPeers: ExtendedP2PPairingResponse[] = (await this.p2pTransport?.getPeers()) ?? []\n const walletConnectPeers: ExtendedWalletConnectPairingResponse[] =\n (await this.walletConnectTransport?.getPeers()) ?? []\n const peers = [...postMessagePeers, ...p2pPeers, ...walletConnectPeers]\n\n logger.log('getPeer', 'Found peers', peers, account)\n\n peer = peers.find((peerEl) => peerEl.senderId === account.senderId)\n if (!peer) {\n // We could not find an exact match for a sender, so we most likely received it over a relay\n peer = peers.find((peerEl) => (peerEl as any).id === account.origin.id)\n }\n } else {\n peer = await this._activePeer.promise\n logger.log('getPeer', 'Active peer', peer)\n }\n\n // NB: getPeer() is a pure read used during session resumption, error\n // handling and wallet-info lookups, so it must not throw on an\n // under-minimum peer (that would wipe a resumed session or mask the real\n // wallet error). The version gate is enforced at the pairing response and\n // at request-send time instead — see assertWalletVersionMeetsMinimum.\n return peer\n }\n\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n\n // Maps each flat Tezos request type to its wrapped blockchainData\n // discriminator + scope (the pre-fork flat wire strings, kept verbatim;\n // mirrored by the wallet-side flat-output normalization).\n private static readonly FLAT_REQUEST_PAYLOAD_TYPES: Partial<\n Record<BeaconMessageType, { type: string; scope: string }>\n > = {\n [BeaconMessageType.OperationRequest]: { type: 'operation_request', scope: 'operation_request' },\n [BeaconMessageType.SignPayloadRequest]: { type: 'sign_payload_request', scope: 'sign' },\n [BeaconMessageType.BroadcastRequest]: { type: 'broadcast_request', scope: 'broadcast' },\n [BeaconMessageType.ProofOfEventChallengeRequest]: {\n type: 'proof_of_event_challenge_request',\n scope: 'proof_of_event'\n },\n [BeaconMessageType.SimulatedProofOfEventChallengeRequest]: {\n type: 'simulated_proof_of_event_challenge_request',\n scope: 'proof_of_event'\n }\n }\n\n // Wrapped Tezos response blockchainData discriminators → the flat\n // BeaconMessageType the request* methods (and integrators) consume.\n private static readonly TEZOS_PAYLOAD_TO_FLAT_TYPE: Record<string, BeaconMessageType> = {\n operation_response: BeaconMessageType.OperationResponse,\n sign_payload_response: BeaconMessageType.SignPayloadResponse,\n broadcast_response: BeaconMessageType.BroadcastResponse,\n proof_of_event_challenge_response: BeaconMessageType.ProofOfEventChallengeResponse,\n simulated_proof_of_event_challenge_response:\n BeaconMessageType.SimulatedProofOfEventChallengeResponse\n }\n\n private static readonly TEZOS_IDENTIFIERS: readonly string[] = ['tezos', 'xtz']\n\n // Build the wrapped Tezos wire message for a flat request input. The v4\n // multi-network `networks` field is stripped for peers negotiated below\n // v4 — a v3 peer must never see v4 payload fields.\n private wrapTezosRequest(\n flat: { type: BeaconMessageType } & Record<string, unknown>,\n envelope: { id: string; version: string; senderId: string },\n account?: AccountInfo\n ): BeaconMessageWrapper<BlockchainMessage> {\n if (flat.type === BeaconMessageType.PermissionRequest) {\n const blockchainData = { ...flat } as Record<string, unknown>\n delete blockchainData.type\n if (!isMultiNetworkVersion(envelope.version)) {\n delete blockchainData.networks\n }\n\n return wrapBeaconMessage(envelope, {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.PermissionRequest,\n blockchainData\n })\n }\n\n const payloadMeta = DAppClient.FLAT_REQUEST_PAYLOAD_TYPES[flat.type]\n if (!payloadMeta) {\n throw new Error(`Cannot send a \"${flat.type}\" message: not a Tezos request type`)\n }\n\n const payload = { ...flat } as Record<string, unknown>\n delete payload.type\n\n return wrapBeaconMessage(envelope, {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.BlockchainRequest,\n accountId: account?.accountIdentifier ?? '',\n blockchainData: {\n type: payloadMeta.type,\n scope: payloadMeta.scope,\n ...payload\n }\n })\n }\n\n // Normalize a wrapped Tezos wire message back to the flat shape the\n // pre-fork pipeline (request* methods, onNewAccount, integrator events)\n // consumes. Returns undefined for non-Tezos payloads, which keep the\n // wrapped pass-through of the generic permissionRequest/request API.\n private normalizeWrappedTezosMessage(\n wrapper: BeaconMessageWrapper<BeaconBaseMessage>\n ): BeaconMessage | undefined {\n const inner = wrapper.message as unknown as {\n type: BeaconMessageType\n blockchainIdentifier?: string\n blockchainData?: Record<string, unknown>\n error?: { type?: unknown; data?: unknown }\n description?: string\n }\n const envelope = { id: wrapper.id, version: wrapper.version, senderId: wrapper.senderId }\n\n // Chain-agnostic control messages.\n if (inner.type === BeaconMessageType.Acknowledge || inner.type === BeaconMessageType.Disconnect) {\n return { ...envelope, type: inner.type }\n }\n if (inner.type === BeaconMessageType.Error) {\n return {\n ...envelope,\n type: BeaconMessageType.Error,\n errorType: (inner.error?.type as BeaconErrorType) ?? BeaconErrorType.UNKNOWN_ERROR,\n errorData: inner.error?.data,\n description: inner.description\n }\n }\n\n if (\n inner.blockchainIdentifier === undefined ||\n !DAppClient.TEZOS_IDENTIFIERS.includes(inner.blockchainIdentifier)\n ) {\n return undefined\n }\n\n if (\n inner.type === BeaconMessageType.PermissionResponse ||\n inner.type === BeaconMessageType.ChangeAccountRequest\n ) {\n return { ...envelope, type: inner.type, ...(inner.blockchainData ?? {}) } as BeaconMessage\n }\n\n if (inner.type === BeaconMessageType.BlockchainResponse) {\n const payloadType = inner.blockchainData?.type\n const flatType =\n typeof payloadType === 'string'\n ? DAppClient.TEZOS_PAYLOAD_TO_FLAT_TYPE[payloadType]\n : undefined\n if (!flatType) {\n return undefined\n }\n const payload = { ...(inner.blockchainData ?? {}) }\n delete payload.type\n\n return { ...envelope, type: flatType, ...payload } as BeaconMessage\n }\n\n return undefined\n }\n\n private makeRequest<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse?: undefined | false,\n otherTabMessageId?: string\n ): Promise<{\n message: U\n connectionInfo: ConnectionContext\n }>\n private makeRequest<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse: true,\n otherTabMessageId?: string\n ): Promise<undefined>\n private async makeRequest<T extends BeaconRequestInputMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse?: boolean,\n otherTabMessageId?: string\n ) {\n const messageId = otherTabMessageId ?? (await generateGUID())\n\n if (this._initPromise && this.isInitPending) {\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n this._initPromiseReject = undefined\n }\n await Promise.all([\n this.postMessageTransport?.disconnect(),\n this.walletConnectTransport?.disconnect()\n ])\n this._initPromise = undefined\n this.hideUI(['toast'])\n }\n\n logger.log('makeRequest', 'starting')\n this.isInitPending = true\n await this.init()\n this.isInitPending = false\n logger.log('makeRequest', 'after init')\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n if (!(await this.checkPermissions(requestInput.type))) {\n this.events.emit(BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError))\n\n throw new Error('No permissions to send this request to wallet!')\n }\n\n if (!this.beaconId) {\n throw await this.sendInternalError('octez.connect ID not defined')\n }\n\n const account = await this.getActiveAccount()\n\n const peer = await this.getPeer(account)\n\n // Enforce the dApp's required minimum before a request leaves the SDK.\n // No-op under the default (permissive) minimum; otherwise rejects an\n // under-minimum wallet with VersionUnsupportedBeaconError.\n this.assertWalletVersionMeetsMinimum(effectivePeerVersion(peer))\n\n // The wire dialect is negotiated per peer — min(effective peer version,\n // BEACON_VERSION), floor '2'. The effective version is capability-aware:\n // legacy wallets ECHO the dApp's version in their pairing response, so\n // peer.version alone would misread a 4.8.x wallet as v4; only peers that\n // sent the v5 `protocolVersion` marker are trusted. A wrapped-capable\n // peer receives the flat requestInput (the unchanged public shape)\n // mapped onto the wrapped Tezos payload; a legacy peer receives the flat\n // v2 message it has always spoken. Integrators never see either dialect.\n const negotiatedVersion = negotiateEnvelopeVersion(effectivePeerVersion(peer))\n const requestSenderId = await getSenderId(await this.beaconId)\n\n let request: BeaconMessageWrapper<BlockchainMessage> | BeaconMessage\n if (usesWrappedMessages(negotiatedVersion)) {\n const wrapped = this.wrapTezosRequest(\n requestInput,\n { id: messageId, version: negotiatedVersion, senderId: requestSenderId },\n account\n )\n await this.blockchains.get('tezos')?.validateRequest(wrapped.message)\n request = wrapped\n } else {\n request = {\n id: messageId,\n version: negotiatedVersion,\n senderId: requestSenderId,\n ...requestInput\n } as unknown as BeaconMessage\n }\n\n let exposed\n\n if (!skipResponse) {\n exposed = new ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(request.id, exposed)\n }\n\n const payload = await new Serializer(this.getPeerProtocolVersion(peer)).serialize(request)\n\n const walletInfo = await this.getWalletInfo(peer, account)\n\n logger.log('makeRequest', 'sending message', request)\n try {\n // Hook for performance measurement\n if ((window as any).__beaconPerf?.onBeforeSend) {\n (window as any).__beaconPerf.onBeforeSend()\n }\n ;(await this.transport).send(payload, peer)\n if (\n requestInput.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n } catch (sendError) {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n errorContext,\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: async () => {\n closeToast()\n this.disconnect()\n }\n }\n ]\n })\n )\n throw sendError\n }\n\n if (!otherTabMessageId) {\n this.events\n .emit(messageEvents[requestInput.type].sent, {\n walletInfo: {\n ...walletInfo,\n name: walletInfo.name ?? 'Wallet'\n },\n extraInfo: {\n resetCallback: async () => {\n this.disconnect()\n }\n }\n })\n .catch((emitError) => console.warn(emitError))\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed?.promise as any // TODO: fix type\n }\n\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private async makeRequestV3<\n T extends BlockchainMessage,\n U extends BeaconMessageWrapper<BlockchainMessage>\n >(\n requestInput: T,\n otherTabMessageId?: string\n ): Promise<{\n message: U\n connectionInfo: ConnectionContext\n }> {\n if (this._initPromise && this.isInitPending) {\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n this._initPromiseReject = undefined\n }\n await Promise.all([\n this.postMessageTransport?.disconnect(),\n this.walletConnectTransport?.disconnect()\n ])\n this._initPromise = undefined\n this.hideUI(['toast'])\n }\n\n const messageId = otherTabMessageId ?? (await generateGUID())\n logger.log('makeRequest', 'starting')\n this.isInitPending = true\n await this.init(undefined, true)\n this.isInitPending = false\n logger.log('makeRequest', 'after init')\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n if (!this.beaconId) {\n throw await this.sendInternalError('octez.connect ID not defined')\n }\n\n const account = await this.getActiveAccount()\n\n const peer = await this.getPeer(account)\n\n // Enforce the dApp's required minimum before a request leaves the SDK.\n this.assertWalletVersionMeetsMinimum(effectivePeerVersion(peer))\n\n // The envelope carries the version negotiated against the effective\n // (capability-aware) peer version — see effectivePeerVersion: legacy\n // wallets echo the dApp's version, so only peers that sent the v5\n // `protocolVersion` marker are trusted with the v4 dialect. Unlike\n // makeRequest, this path is wrapper-only (the v3 blockchainData shape\n // has no flat equivalent), so it floors at '3' instead of '2': a legacy\n // wallet routes a version-'3' wrapper through its v3 branch, whereas a\n // '2'-stamped wrapper would be misrouted as flat and silently dropped.\n const negotiatedVersion = negotiateEnvelopeVersion(effectivePeerVersion(peer))\n const request: BeaconMessageWrapper<BlockchainMessage> = {\n id: messageId,\n version: usesWrappedMessages(negotiatedVersion)\n ? negotiatedVersion\n : String(MESSAGE_WRAPPED_FROM_VERSION),\n senderId: await getSenderId(await this.beaconId),\n message: requestInput\n }\n\n const exposed = new ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(request.id, exposed)\n\n const payload = await new Serializer(this.getPeerProtocolVersion(peer)).serialize(request)\n\n const walletInfo = await this.getWalletInfo(peer, account)\n\n logger.log('makeRequest', 'sending message', request)\n try {\n // Hook for performance measurement\n if ((window as any).__beaconPerf?.onBeforeSend) {\n (window as any).__beaconPerf.onBeforeSend()\n }\n ;(await this.transport).send(payload, peer)\n if (\n request.message.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n } catch (sendError) {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n errorContext,\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: async () => {\n closeToast()\n this.disconnect()\n }\n }\n ]\n })\n )\n throw sendError\n }\n\n const index = requestInput.type as any as BeaconMessageType\n\n this.events\n .emit(messageEvents[index].sent, {\n walletInfo: {\n ...walletInfo,\n name: walletInfo.name ?? 'Wallet'\n },\n extraInfo: {\n resetCallback: async () => {\n this.disconnect()\n }\n }\n })\n .catch((emitError) => console.warn(emitError))\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed.promise as any // TODO: fix type\n }\n\n private async makeRequestBC<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n request: Optional<T, IgnoredRequestInputProperties>\n ): Promise<\n | {\n message: U\n connectionInfo: ConnectionContext\n }\n | undefined\n > {\n if (!this._transport.isResolved()) {\n return\n }\n\n const transport = await this.transport\n\n if (transport.type !== TransportType.WALLETCONNECT) {\n return\n }\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n const id = await generateGUID()\n\n this.multiTabChannel.postMessage({\n type: request.type,\n data: request,\n id\n })\n\n if (\n request.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n\n this.events\n .emit(messageEvents[BeaconMessageType.PermissionRequest].sent, {\n walletInfo: await this.getWalletInfo(),\n extraInfo: {\n resetCallback: () => this.disconnect()\n }\n })\n .catch((emitError) => console.warn(emitError))\n\n const exposed = new ExposedPromise<\n {\n message: U\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(id, exposed as any)\n\n return exposed.promise\n }\n\n public async disconnect() {\n if (!this._transport.isResolved()) {\n throw new Error('No transport available.')\n }\n\n const transport = await this.transport\n\n if (transport.connectionStatus === TransportStatus.NOT_CONNECTED) {\n throw new Error('Not connected.')\n }\n\n await this.createStateSnapshot()\n this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'start'))\n\n const peers = await transport.getPeers()\n if (peers.length > 0) {\n const shouldNotifyPeers = !(transport instanceof WalletConnectTransport)\n await this.removeAllPeers(shouldNotifyPeers)\n }\n\n await this.clearActiveAccount()\n if (!(transport instanceof WalletConnectTransport)) {\n try {\n await transport.disconnect()\n } catch (disconnectError) {\n const message = disconnectError instanceof Error ? disconnectError.message : String(disconnectError)\n if (typeof message === 'string' && message.includes('Syncing stopped manually')) {\n logger.log('disconnect', 'Matrix sync stopped manually')\n } else {\n throw disconnectError\n }\n }\n }\n this.postMessageTransport = undefined\n this.p2pTransport = undefined\n this.walletConnectTransport = undefined\n\n await this.setTransport()\n this._initPromise = undefined\n this._initPromiseReject = undefined\n this.isInitPending = false\n this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'success'))\n }\n\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest(\n id: string,\n promise: ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >\n ): void {\n logger.log('addOpenRequest', this.name, `adding request ${id} and waiting for answer`)\n this.openRequests.set(id, promise)\n }\n\n private async sendNotificationWithAccessToken(notification: {\n url: string\n recipient: string\n title: string\n body: string\n payload: string\n protocolIdentifier: string\n accessToken: string\n }): Promise<string> {\n const { url, recipient, title, body, payload, protocolIdentifier, accessToken } = notification\n const timestamp = new Date().toISOString()\n\n const keypair = await this.keyPair\n\n const rawPublicKey = keypair.publicKey\n\n const prefix = Buffer.from(new Uint8Array([13, 15, 37, 217]))\n\n const publicKey = bs58check.encode(Buffer.concat([prefix, Buffer.from(rawPublicKey)]))\n\n const constructedString = [\n 'Tezos Signed Message: ',\n recipient,\n title,\n body,\n timestamp,\n payload\n ].join(' ')\n\n const bytes = toHex(constructedString)\n const payloadBytes = `05` + `01${ bytes.length.toString(16).padStart(8, '0') }${bytes}`\n\n const signature = await signMessage(payloadBytes, {\n secretKey: Buffer.from(keypair.secretKey)\n })\n\n const notificationResponse = await fetch(`${url}/send`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n recipient,\n title,\n body,\n timestamp,\n payload,\n accessToken,\n protocolIdentifier,\n sender: {\n name: this.name,\n publicKey,\n signature\n }\n })\n })\n\n if (!notificationResponse.ok) {\n throw new Error(\n `sendNotification failed: ${notificationResponse.status} ${notificationResponse.statusText}`\n )\n }\n\n return notificationResponse.json()\n }\n\n // Delegate the per-network unpacking to the Tezos blockchain plug-in (the\n // single owner of the v4 fanout shape) and enrich each returned record with\n // the envelope-level AccountInfo metadata that the parser doesn't see.\n private async buildAccountInfosFromV4Fanout(\n message: PermissionResponse,\n fanout: PermissionResponseAccounts,\n peerVersion: string,\n connectionInfo: ConnectionContext\n ): Promise<AccountInfo[]> {\n // Keyed by the CAIP-2 namespace `'tezos'`, which is also the wire-format\n // `blockchainIdentifier` carried by PermissionRequestV3/Response. The\n // dApp must have registered `new TezosBlockchain()` via `addBlockchain`\n // before requesting permissions on the v4 path.\n const tezosBlockchain = this.blockchains.get('tezos')\n if (!tezosBlockchain) {\n throw new Error('Tezos blockchain handler is required to parse v4 permission responses')\n }\n\n // Normalize the legacy `pubkey`/`pubKey` aliases and prefix any raw key\n // before handing the fanout to the parser. The parser keeps publicKey\n // strings verbatim, so prefixing here keeps stored records canonical.\n const envelopePublicKey =\n message.publicKey ?? (message as { pubkey?: string }).pubkey\n const prefixedEnvelopePk = envelopePublicKey ? prefixPublicKey(envelopePublicKey) : undefined\n const prefixedFanout = Object.fromEntries(\n Object.entries(fanout).map(([cid, raw]) => [\n cid,\n { ...raw, publicKey: raw?.publicKey ? prefixPublicKey(raw.publicKey) : undefined }\n ])\n )\n const synthesizedResponse = {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.PermissionResponse,\n blockchainData: {\n ...message,\n publicKey: prefixedEnvelopePk,\n accounts: prefixedFanout\n }\n } as unknown as PermissionResponseV3<'tezos'>\n\n const partials = await tezosBlockchain.getAccountInfosFromPermissionResponse(\n synthesizedResponse,\n peerVersion\n )\n\n const walletKey = (await this.storage.get(StorageKey.LAST_SELECTED_WALLET))?.key\n\n return Promise.all(\n partials.map(async (p) => {\n if (!p.publicKey && !p.address) {\n throw new Error('PublicKey or Address must be defined for multi-network account')\n }\n const address: string = p.address || (await getAddressFromPublicKey(p.publicKey))\n // The parser keys by the address it saw; re-derive accountId if we\n // synthesized the address from a publicKey above.\n const accountIdentifier =\n p.address || !p.network ? p.accountId : await getAccountIdentifier(address, p.network)\n\n return {\n accountIdentifier,\n senderId: message.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n walletKey,\n address,\n publicKey: p.publicKey || undefined,\n // The v4 fanout parser always sets a Network (networkFromTezosCaip2);\n // the `?? this.network` fallback keeps the type `Network` (required by\n // AccountInfo) without an `as AccountInfo` assertion.\n network: p.network ?? this.network,\n scopes: message.scopes,\n threshold: message.threshold,\n notification: message.notification,\n connectedAt: new Date().getTime(),\n walletType: message.walletType ?? 'implicit',\n verificationType: message.verificationType,\n ...(message.verificationType === 'proof_of_event'\n ? { hasVerifiedChallenge: false }\n : {})\n }\n })\n )\n }\n\n private async onNewAccount(\n message: PermissionResponse | ChangeAccountRequest,\n connectionInfo: ConnectionContext\n ): Promise<AccountInfo> {\n // TODO: Migration code. Remove sometime after 1.0.0 release.\n const tempPK: string | undefined =\n message.publicKey || (message as any).pubkey || (message as any).pubKey\n\n const publicKey = tempPK ? prefixPublicKey(tempPK) : undefined\n\n if (!publicKey && !message.address) {\n throw new Error('PublicKey or Address must be defined')\n }\n\n const address = message.address ?? (await getAddressFromPublicKey(publicKey!))\n\n if (!isValidAddress(address)) {\n throw new Error(`Invalid address: \"${address}\"`)\n }\n\n if (\n message.walletType === 'abstracted_account' &&\n address.substring(0, 3) !== CONTRACT_PREFIX\n ) {\n throw new Error(\n `Invalid abstracted account address \"${address}\", it should be a ${CONTRACT_PREFIX} address`\n )\n }\n\n logger.log('######## MESSAGE #######')\n logger.log('onNewAccount', message)\n\n const walletKey = (await this.storage.get(StorageKey.LAST_SELECTED_WALLET))?.key\n\n const accountInfo: AccountInfo = {\n accountIdentifier: await getAccountIdentifier(address, message.network),\n senderId: message.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n walletKey,\n address,\n publicKey,\n network: message.network,\n scopes: message.scopes,\n threshold: message.threshold,\n notification: message.notification,\n connectedAt: new Date().getTime(),\n walletType: message.walletType ?? 'implicit',\n verificationType: message.verificationType,\n ...(message.verificationType === 'proof_of_event' ? { hasVerifiedChallenge: false } : {})\n }\n\n logger.log('accountInfo', '######## ACCOUNT INFO #######')\n\n logger.log('accountInfo', accountInfo)\n\n await this.accountManager.addAccount(accountInfo)\n await this.setActiveAccount(accountInfo)\n\n return accountInfo\n }\n}\n"]}
1
+ {"version":3,"file":"DAppClient.js","sourceRoot":"","sources":["../../../src/dapp-client/DAppClient.ts"],"names":[],"mappings":"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","sourcesContent":["import bs58check from 'bs58check'\nimport {\n ConnectionContext,\n AccountInfo,\n TransportType,\n StorageKey,\n BeaconMessageType,\n PermissionScope,\n PermissionResponse,\n NetworkType,\n SignPayloadResponse,\n SignPayloadRequest,\n OperationResponse,\n OperationRequest,\n BroadcastResponse,\n BroadcastRequest,\n ErrorResponse,\n BeaconMessage,\n RequestPermissionInput,\n RequestPermissionNetwork,\n PermissionResponseAccounts,\n RequestSignPayloadInput,\n RequestOperationInput,\n RequestBroadcastInput,\n PermissionRequest,\n PermissionResponseOutput,\n PermissionRequestInput,\n SignPayloadResponseOutput,\n SignPayloadRequestInput,\n OperationResponseOutput,\n OperationRequestInput,\n BroadcastResponseOutput,\n BroadcastRequestInput,\n BeaconRequestInputMessage,\n Network,\n Origin,\n PeerInfo,\n BeaconErrorType,\n AppMetadata,\n ExtendedP2PPairingResponse,\n ExtendedPostMessagePairingResponse,\n SigningType,\n ExtendedPeerInfo,\n Optional,\n ColorMode,\n IgnoredRequestInputProperties,\n WalletInfo,\n BeaconMessageWrapper,\n Blockchain,\n BlockchainMessage,\n BlockchainRequestV3,\n BlockchainResponseV3,\n PermissionRequestV3,\n PermissionResponseV3,\n BeaconBaseMessage,\n AcknowledgeResponse,\n ExtendedWalletConnectPairingResponse,\n ProofOfEventChallengeRequest,\n ProofOfEventChallengeResponse,\n ProofOfEventChallengeRequestInput,\n RequestProofOfEventChallengeInput,\n ChangeAccountRequest,\n PeerInfoType,\n App,\n AppBase,\n DesktopApp,\n ExtensionApp,\n WebApp,\n SimulatedProofOfEventChallengeRequestInput,\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse,\n RequestSimulatedProofOfEventChallengeInput,\n TransportStatus,\n ErrorContext\n // PermissionRequestV3\n // RequestEncryptPayloadInput,\n // EncryptPayloadResponseOutput,\n // EncryptPayloadResponse,\n // EncryptPayloadRequest\n} from '@tezos-x/octez.connect-types'\nimport {\n Client,\n Transport,\n AppMetadataManager,\n Serializer,\n LocalStorage,\n BeaconError,\n getAccountIdentifier,\n getSenderId,\n Logger,\n ClientEvents,\n StorageValidator,\n SDK_VERSION,\n IndexedDBStorage,\n MultiTabChannel,\n BACKEND_URL,\n getError,\n usesWrappedMessages,\n buildErrorContext,\n UnknownBeaconError,\n AbortedBeaconError,\n compareBeaconVersion,\n isMultiNetworkVersion,\n VersionUnsupportedBeaconError,\n NetworksUnsupportedBeaconError,\n normalizeTezosCaip2,\n isValidTezosCaip2,\n networkFromTezosCaip2,\n networkTypeFromTezosCaip2,\n resolveRequiredMinimumVersion,\n negotiateEnvelopeVersion,\n effectivePeerVersion,\n MESSAGE_WRAPPED_FROM_VERSION,\n DEFAULT_WALLETCONNECT_PROJECT_ID,\n wrapBeaconMessage\n} from '@tezos-x/octez.connect-core'\nimport { TezosBlockchain } from '@tezos-x/octez.connect-blockchain-tezos'\nimport {\n getAddressFromPublicKey,\n ExposedPromise,\n generateGUID,\n toHex,\n signMessage,\n CONTRACT_PREFIX,\n prefixPublicKey,\n isValidAddress,\n getKeypairFromSeed\n} from '@tezos-x/octez.connect-utils'\nimport { PostMessageTransport } from '@tezos-x/octez.connect-transport-postmessage'\nimport {\n AlertButton,\n closeToast,\n getColorMode,\n setColorMode,\n setDesktopList,\n setExtensionList,\n setWebList,\n setiOSList,\n getiOSList,\n getDesktopList,\n getExtensionList,\n getWebList,\n isBrowser,\n isDesktop,\n isMobileOS,\n isIOS,\n currentOS\n} from '@tezos-x/octez.connect-ui'\nimport { WalletConnectTransport } from '@tezos-x/octez.connect-transport-walletconnect'\nimport { messageEvents } from '../beacon-message-events'\nimport { BlockExplorer } from '../utils/block-explorer'\nimport { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType, BeaconEventHandler } from '../events'\nimport { TzktBlockExplorer } from '../utils/tzkt-blockexplorer'\n\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport'\nimport { DappP2PTransport } from '../transports/DappP2PTransport'\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport'\nimport { DAppClientOptions } from './DAppClientOptions'\n\nconst logger = new Logger('DAppClient')\n\n// Surfaced when a permission response yields zero account records.\nconst EMPTY_PERMISSION_ACCOUNTS_MESSAGE =\n 'Wallet permission response did not include any accounts. Please re-pair the wallet and try again.'\n\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport class DAppClient extends Client {\n /**\n * The description of the app\n */\n public readonly description?: string\n\n /**\n * The block explorer used by the SDK\n */\n public readonly blockExplorer: BlockExplorer\n\n /**\n * Automatically switch between apps on Mobile Devices (Enabled by Default)\n */\n private readonly enableAppSwitching: boolean\n\n /**\n * Enable metrics tracking (Disabled by Default)\n */\n private enableMetrics?: boolean\n\n private userId?: string\n\n public network: Network\n\n protected readonly events: BeaconEventHandler = new BeaconEventHandler()\n\n protected postMessageTransport: DappPostMessageTransport | undefined\n protected p2pTransport: DappP2PTransport | undefined\n protected walletConnectTransport: DappWalletConnectTransport | undefined\n\n protected wcProjectId?: string\n protected wcRelayUrl?: string\n\n /**\n * WalletConnect is enabled by default (as in 4.8.x) using the shared\n * DEFAULT_WALLETCONNECT_PROJECT_ID unless `walletConnectOptions` overrides it.\n * Set `disableWalletConnect: true` to opt out. When false, no WC transport is\n * built, listened to, or offered for pairing.\n */\n protected isWalletConnectEnabled: boolean = true\n\n private isGetActiveAccountHandled: boolean = false\n\n private readonly openRequestsOtherTabs = new Set<string>()\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests = new Map<\n string,\n ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >\n >()\n\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount: ExposedPromise<AccountInfo | undefined> = new ExposedPromise()\n\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer: ExposedPromise<PeerInfoType | undefined> = new ExposedPromise()\n\n private _initPromise: Promise<TransportType> | undefined\n private _initPromiseReject: ((reason?: ErrorResponse | AbortedBeaconError) => void) | undefined\n private isInitPending: boolean = false\n\n /**\n * Networks mapped for the next WalletConnect session proposal when\n * `requestPermissions` runs before the WalletConnect transport exists (it\n * is created lazily in `init`). Applied and cleared right after creation.\n */\n private pendingWcProposalNetworks: NetworkType[] | undefined\n\n private readonly activeAccountLoaded: Promise<AccountInfo | undefined>\n\n private readonly appMetadataManager: AppMetadataManager\n\n private readonly termsAndConditionsUrl?: string\n\n private readonly privacyPolicyUrl?: string\n\n private readonly errorMessages: Record<string, Record<string | number, string>>\n\n private readonly featuredWallets: string[] | undefined\n\n public readonly requiredMinimumVersion: string\n\n private readonly storageValidator: StorageValidator\n\n private readonly beaconIDB = new IndexedDBStorage('beacon', ['bug_report', 'metrics'])\n\n private debounceSetActiveAccount: boolean = false\n\n private readonly multiTabChannel = new MultiTabChannel(\n 'octez.connect-sdk-channel',\n this.onBCMessageHandler.bind(this),\n this.onElectedLeaderhandler.bind(this)\n )\n\n constructor(config: DAppClientOptions) {\n super({\n storage: config && config.storage ? config.storage : new LocalStorage(),\n ...config\n })\n this.description = config.description\n // WalletConnect is enabled BY DEFAULT (as in 4.8.x) with the shared\n // ecosystem projectId, so dApps don't have to register with WalletConnect\n // Cloud to offer WC wallets (e.g. Kukai Mobile) — the free tier covers the\n // ecosystem's volume. `walletConnectOptions` overrides the projectId/relay,\n // `disableWalletConnect: true` opts out entirely (e.g. environments where\n // the WC provider cannot run, see #32).\n this.isWalletConnectEnabled = !config.disableWalletConnect\n this.wcProjectId = this.isWalletConnectEnabled\n ? config.walletConnectOptions?.projectId || DEFAULT_WALLETCONNECT_PROJECT_ID\n : undefined\n this.wcRelayUrl = this.isWalletConnectEnabled ? config.walletConnectOptions?.relayUrl : undefined\n\n this.featuredWallets = config.featuredWallets\n\n this.events = new BeaconEventHandler(config.eventHandlers, config.disableDefaultEvents ?? false)\n this.blockExplorer = config.blockExplorer ?? new TzktBlockExplorer()\n this.network = config.network ?? { type: config.preferredNetwork ?? NetworkType.MAINNET }\n setColorMode(config.colorMode ?? ColorMode.LIGHT)\n\n this.termsAndConditionsUrl = config.termsAndConditionsUrl\n this.privacyPolicyUrl = config.privacyPolicyUrl\n\n this.errorMessages = config.errorMessages ?? {}\n\n this.appMetadataManager = new AppMetadataManager(this.storage)\n this.storageValidator = new StorageValidator(this.storage)\n\n this.enableAppSwitching =\n config.enableAppSwitching === undefined ? true : Boolean(config.enableAppSwitching)\n\n this.enableMetrics = config.enableMetrics ? true : false\n\n this.requiredMinimumVersion = resolveRequiredMinimumVersion(config.requiredMinimumVersion)\n\n // Tezos is the default chain: the wrapped-only pipeline routes every\n // request/response through the registry handler, so registration is no\n // longer a consumer obligation. addBlockchain stays public — a later\n // registration under 'tezos' overrides this default.\n this.addBlockchain(new TezosBlockchain())\n\n // Subscribe to storage changes and update the active account if it changes on other tabs\n this.storage.subscribeToStorageChanged(async (event) => {\n if (event.eventType === 'storageCleared') {\n this.setActiveAccount(undefined)\n\n return\n }\n if (event.eventType === 'entryModified') {\n if (event.key === this.storage.getPrefixedKey(StorageKey.ACTIVE_ACCOUNT)) {\n const accountIdentifier = event.newValue\n if (!accountIdentifier || accountIdentifier === 'undefined') {\n this.setActiveAccount(undefined)\n } else {\n const account = await this.getAccount(accountIdentifier)\n this.setActiveAccount(account)\n }\n\n return\n }\n if (event.key === this.storage.getPrefixedKey(StorageKey.ENABLE_METRICS)) {\n this.enableMetrics = Boolean(await this.storage.get(StorageKey.ENABLE_METRICS))\n\n return\n }\n if (event.key === this.storage.getPrefixedKey(StorageKey.BEACON_SDK_SECRET_SEED)) {\n this._keyPair = new ExposedPromise()\n this._beaconId = new ExposedPromise()\n await this.initSDK()\n\n return\n }\n }\n })\n\n this.activeAccountLoaded = this.storage\n .get(StorageKey.ACTIVE_ACCOUNT)\n .then(async (activeAccountIdentifier) => {\n if (activeAccountIdentifier) {\n const account = await this.accountManager.getAccount(activeAccountIdentifier)\n await this.setActiveAccount(account)\n\n return account\n } else {\n await this.setActiveAccount(undefined)\n\n return undefined\n }\n })\n .catch(async (storageError) => {\n logger.error(storageError)\n await this.resetInvalidState(false)\n this.events.emit(BeaconEvent.INVALID_ACCOUNT_DEACTIVATED)\n\n return undefined\n })\n\n this.handleResponse = async (\n wireMessage: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>,\n connectionInfo: ConnectionContext\n ): Promise<void> => {\n // Negotiated wire: a flat arrival is the legacy v2 dialect (from a\n // v4.8.x wallet answering a flat request) and is already the shape the\n // pipeline consumes. Wrapped arrivals carry Tezos payloads that are\n // normalized back to those same flat shapes — the wire dialect stays\n // invisible to integrators. Non-Tezos wrapped payloads keep the\n // pass-through of the generic permissionRequest/request API.\n // The wrapped dialect is identified by its payload, not by the absence of\n // a flat marker: `wrapBeaconMessage` only ever emits\n // { id, version, senderId, message }. Routing on the version alone dropped\n // every flat message stamped with the wrapped dialect's number -- which is\n // how a wallet built outside this SDK (or on <= 4.8.6, echoing the peer's\n // version) sends its `disconnect` -- so handleDisconnect never ran and the\n // dApp kept the account connected until the user disconnected a second\n // time (#52). Testing for `.message` positively routes that message down\n // the flat path, and still reads a non-conformant wallet's wrapped\n // envelope as wrapped even when it carries a redundant top-level `type`.\n const hasWrappedPayload = Boolean(\n (wireMessage as BeaconMessageWrapper<BeaconBaseMessage>).message\n )\n const isWrapped = usesWrappedMessages(wireMessage.version) && hasWrappedPayload\n\n // Issue #33: a V3-versioned message can arrive without its wrapped payload.\n // With no top-level `type` either it carries nothing to route on, so drop\n // it instead of dereferencing an undefined payload, which would throw an\n // unhandled rejection inside the transport subscription callback.\n if (\n usesWrappedMessages(wireMessage.version) &&\n !hasWrappedPayload &&\n !('type' in wireMessage)\n ) {\n logger.log(\n 'handleResponse',\n 'Received wrapped message with undefined payload; dropping',\n wireMessage\n )\n\n return\n }\n\n const normalized = isWrapped\n ? this.normalizeWrappedTezosMessage(wireMessage as BeaconMessageWrapper<BeaconBaseMessage>)\n : (wireMessage as BeaconMessage)\n const message = normalized ?? wireMessage\n const typedMessage =\n normalized ?? (wireMessage as BeaconMessageWrapper<BeaconBaseMessage>).message\n\n if (\n (connectionInfo.origin === Origin.P2P &&\n message.senderId !== (await getSenderId(connectionInfo.id))) ||\n (connectionInfo.origin === Origin.EXTENSION &&\n !(await this.isPairedWallet(message.senderId, connectionInfo)))\n ) {\n logger.warn('handleResponse', 'dropping message: senderId does not match its sender')\n\n return\n }\n\n let appMetadata: AppMetadata | undefined = normalized\n ? (typedMessage as PermissionResponse).appMetadata\n : (typedMessage as unknown as PermissionResponseV3).blockchainData?.appMetadata\n\n if (!appMetadata && !normalized) {\n const storedMetadata = await Promise.all([\n this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP),\n this.storage.get(StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP),\n this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP)\n ])\n\n for (const peers of storedMetadata) {\n const peer: any = peers.find((peer: any) => peer.senderId === message.senderId)\n if (!peer) {\n continue\n }\n\n const wallet = await this.getWalletInfo()\n\n appMetadata = {\n name: peer.name,\n senderId: peer.senderId,\n icon: wallet.icon\n }\n\n break\n }\n }\n\n if (this.openRequestsOtherTabs.has(message.id)) {\n // Relay the ORIGINAL wrapped envelope, not the normalized flat\n // message: the receiving tab funnels this straight back into its own\n // handleResponse, whose wrapped-only contract would drop a flat\n // arrival (version '4' with no `.message` payload) and leave the\n // other tab's request pending forever.\n this.multiTabChannel.postMessage({\n type: 'RESPONSE',\n data: {\n message: wireMessage,\n connectionInfo\n },\n id: message.id\n })\n\n if (typedMessage.type !== BeaconMessageType.Acknowledge) {\n this.openRequestsOtherTabs.delete(message.id)\n }\n\n return\n }\n\n const openRequest = this.openRequests.get(message.id)\n\n logger.log('### openRequest ###', openRequest)\n logger.log('handleResponse', 'Received message', message, connectionInfo)\n logger.log('### message ###', JSON.stringify(message))\n logger.log('### connectionInfo ###', connectionInfo)\n\n // endSession=false: a saved but inactive wallet removes only its own records.\n const handleDisconnect = async (endSession: boolean = true): Promise<void> => {\n this.analytics.track('event', 'DAppClient', 'Disconnect received from Wallet')\n\n const relevantTransport =\n connectionInfo.origin === Origin.P2P\n ? this.p2pTransport\n : connectionInfo.origin === Origin.WALLETCONNECT\n ? this.walletConnectTransport\n : (this.postMessageTransport ?? (await this.transport))\n\n if (relevantTransport) {\n const peers: ExtendedPeerInfo[] = await relevantTransport.getPeers()\n const peer: ExtendedPeerInfo | undefined = peers.find(\n (peerEl) => peerEl.senderId === message.senderId\n )\n\n if (peer) {\n await relevantTransport.removePeer(peer)\n }\n }\n\n await this.removeAccountsForPeerIds([message.senderId])\n if (!endSession) {\n return\n }\n await this.events.emit(BeaconEvent.CHANNEL_CLOSED)\n\n // Reset transport state so next requestPermissions() shows pairing modal\n await this.dropTransports()\n await this.setTransport(undefined)\n await this.setActivePeer(undefined)\n }\n\n if (openRequest && typedMessage.type === BeaconMessageType.Acknowledge) {\n this.analytics.track('event', 'DAppClient', 'Acknowledge received from Wallet')\n logger.log('handleResponse', `acknowledge message received for ${message.id}`)\n\n this.events\n .emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: typedMessage as AcknowledgeResponse,\n extraInfo: {},\n walletInfo: await this.getWalletInfo()\n })\n .catch(console.error)\n } else if (openRequest) {\n // Define valid response types that should resolve a request\n const validResponseTypes = [\n BeaconMessageType.PermissionResponse,\n BeaconMessageType.OperationResponse,\n BeaconMessageType.SignPayloadResponse,\n BeaconMessageType.BroadcastResponse,\n BeaconMessageType.ProofOfEventChallengeResponse,\n BeaconMessageType.SimulatedProofOfEventChallengeResponse,\n BeaconMessageType.BlockchainResponse,\n BeaconMessageType.Error\n ]\n\n // Only process if it's a valid response type\n if (validResponseTypes.includes(typedMessage.type)) {\n if (typedMessage.type === BeaconMessageType.PermissionResponse && appMetadata) {\n await this.appMetadataManager.addAppMetadata(appMetadata)\n }\n\n if (typedMessage.type === BeaconMessageType.Error) {\n openRequest.reject(typedMessage as ErrorResponse)\n } else {\n openRequest.resolve({ message, connectionInfo })\n }\n this.openRequests.delete(typedMessage.id)\n } else {\n // Log unexpected message types but don't resolve the request\n logger.warn(\n 'handleResponse',\n `Received unexpected message type \"${typedMessage.type}\" for request ${message.id}. Expected a response type, not a request type.`\n )\n }\n } else {\n if (typedMessage.type === BeaconMessageType.Disconnect) {\n await this.onUnsolicitedDisconnect(message.senderId, connectionInfo, handleDisconnect)\n } else if (typedMessage.type === BeaconMessageType.ChangeAccountRequest) {\n if (await this.isActiveWallet(message.senderId, connectionInfo)) {\n await this.onNewAccount(typedMessage as ChangeAccountRequest, connectionInfo)\n } else {\n logger.warn('handleResponse', 'ignoring change account from a non-active wallet')\n }\n }\n }\n\n if (this._transport.isResolved()) {\n const transport = await this.transport\n\n if (\n transport instanceof WalletConnectTransport &&\n !this.openRequests.has('session_update')\n ) {\n this.openRequests.set('session_update', new ExposedPromise())\n }\n }\n }\n\n this.storageValidator\n .validate()\n .then(async (isValid) => {\n const account = await this.activeAccountLoaded\n\n if (!isValid) {\n const info = await this.getWalletInfo(undefined, account, false)\n info.type =\n info.type === 'extension' && account?.origin.type === Origin.P2P ? 'mobile' : info.type\n await this.storage.set(StorageKey.LAST_SELECTED_WALLET, {\n icon: info.icon ?? '',\n key: info.name,\n type: info.type ?? 'web',\n name: info.name,\n url: info.deeplink\n })\n\n const nowValid = await this.storageValidator.validate()\n\n if (!nowValid) {\n this.resetInvalidState(false)\n }\n }\n\n if (account && account.origin.type !== 'p2p') {\n this.init()\n }\n })\n .catch((err) => logger.error(err.message))\n\n this.sendMetrics(\n `enable-metrics?${ this.addQueryParam('version', SDK_VERSION)}`,\n undefined,\n (res) => {\n if (!res.ok) {\n res.status === 426\n ? console.error('Metrics are no longer supported for this version, please upgrade.')\n : console.warn(\n 'Network error encountered. Metrics sharing have been automatically disabled.'\n )\n }\n this.enableMetrics = res.ok\n this.storage.set(StorageKey.ENABLE_METRICS, res.ok)\n },\n () => {\n this.enableMetrics = false\n this.storage.set(StorageKey.ENABLE_METRICS, false)\n }\n )\n\n this.initUserID().catch((err) => logger.error(err.message))\n }\n\n private async checkIfBCLeaderExists() {\n // broadcast channel does not work on mobile\n if (isMobileOS(window)) {\n return true\n }\n\n const hasLeader = await this.multiTabChannel.hasLeader()\n\n if (hasLeader) {\n return this.multiTabChannel.isLeader()\n }\n\n await this.multiTabChannel.getLeadership()\n\n return this.multiTabChannel.isLeader()\n }\n\n private async onElectedLeaderhandler() {\n if (!this._transport.isResolved()) {\n return\n }\n\n const tranport = await this.transport\n\n if (tranport.type !== TransportType.WALLETCONNECT) {\n return\n }\n\n if (tranport.connectionStatus === TransportStatus.CONNECTED) {\n return\n }\n\n await tranport.connect()\n }\n\n private async onBCMessageHandler(message: any) {\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n case BeaconMessageType.OperationRequest:\n case BeaconMessageType.SignPayloadRequest:\n case BeaconMessageType.BroadcastRequest:\n case BeaconMessageType.ProofOfEventChallengeRequest:\n case BeaconMessageType.SimulatedProofOfEventChallengeRequest:\n this.prepareRequest(message)\n break\n case BeaconMessageType.BlockchainRequest:\n this.prepareRequest(message, true)\n break\n case 'RESPONSE':\n this.handleResponse(message.data.message, message.data.connectionInfo)\n break\n case 'DISCONNECT':\n this._transport.isResolved() && this.disconnect()\n break\n default:\n logger.error('onBCMessageHandler', 'message type not recognized', message)\n }\n }\n\n private async prepareRequest(message: any, isV3 = false) {\n if (!this.multiTabChannel.isLeader()) {\n return\n }\n\n // block until the transport is ready\n const transport = (await this._transport.promise) as DappWalletConnectTransport\n await transport.waitForResolution()\n\n this.openRequestsOtherTabs.add(message.id)\n isV3\n ? this.makeRequestV3(message.data, message.id)\n : this.makeRequest(message.data, false, message.id)\n }\n\n private async createStateSnapshot() {\n if (!localStorage || !this.enableMetrics) {\n return\n }\n const keys = Object.values(StorageKey).filter(\n (key) => !key.includes('wc@2') && !key.includes('secret') && !key.includes('account')\n ) as unknown as StorageKey[]\n\n try {\n for (const key of keys) {\n await this.beaconIDB.set(key, this.storage.getPrefixedKey(key))\n }\n } catch (err: any) {\n logger.error('createStateSnapshot', err.message)\n }\n }\n\n private async initUserID() {\n const id = await this.storage.get(StorageKey.USER_ID)\n\n if (id) {\n this.userId = id\n\n return\n }\n\n this.userId = await generateGUID()\n\n this.storage.set(StorageKey.USER_ID, this.userId)\n }\n\n /**\n * Disconnect the postMessage and P2P transports and drop all three instances.\n *\n * A dropped transport is not garbage. Its communication client keeps its\n * `window` handlers (postMessage) or its matrix sync (P2P) until it is told to\n * stop, so every path that used to just forget the instances left one more\n * live client behind per connection. Every such path goes through here.\n *\n * WalletConnect is left to each call site: its session is shared across tabs\n * and only the leader may close it, which the callers already handle.\n */\n private async dropTransports(): Promise<void> {\n const dropped = [this.postMessageTransport, this.p2pTransport].filter(\n (transport) => transport !== undefined\n )\n this.postMessageTransport = undefined\n this.p2pTransport = undefined\n this.walletConnectTransport = undefined\n\n // Best effort: a transport that fails to disconnect is still dropped, and\n // the others are still disconnected.\n await Promise.all(\n dropped.map((transport) =>\n transport.disconnect().catch((error: unknown) => {\n logger.warn('dropTransports', error instanceof Error ? error.message : String(error))\n })\n )\n )\n }\n\n public async initInternalTransports(): Promise<void> {\n const seed = await this.storage.get(StorageKey.BEACON_SDK_SECRET_SEED)\n if (!seed) {\n throw new Error('Secret seed not found')\n }\n const keyPair = await getKeypairFromSeed(seed)\n\n if (this.postMessageTransport || this.p2pTransport || this.walletConnectTransport) {\n return\n }\n\n this.postMessageTransport = new DappPostMessageTransport(this.name, keyPair, this.storage)\n await this.addListener(this.postMessageTransport)\n\n this.p2pTransport = new DappP2PTransport(\n this.name,\n keyPair,\n this.storage,\n this.matrixNodes,\n this.iconUrl,\n this.appUrl\n )\n\n await this.addListener(this.p2pTransport)\n\n // WalletConnect is on by default; skip building/listening the transport\n // only when explicitly disabled via disableWalletConnect (#32).\n if (this.isWalletConnectEnabled) {\n const wcOptions = {\n projectId: this.wcProjectId,\n relayUrl: this.wcRelayUrl,\n metadata: {\n name: this.name,\n description: this.description ?? '',\n url: this.appUrl ?? '',\n icons: this.iconUrl ? [this.iconUrl] : []\n }\n }\n\n this.walletConnectTransport = new DappWalletConnectTransport(\n this.name,\n keyPair,\n this.storage,\n {\n network: this.network.type,\n opts: wcOptions\n },\n this.checkIfBCLeaderExists.bind(this)\n )\n\n // Apply proposal networks requested before the transport existed\n // (requestPermissions runs before init creates the transport).\n if (this.pendingWcProposalNetworks) {\n this.walletConnectTransport.setProposalNetworks(this.pendingWcProposalNetworks)\n this.pendingWcProposalNetworks = undefined\n }\n\n this.initEvents()\n\n await this.addListener(this.walletConnectTransport)\n }\n }\n\n private initEvents() {\n if (!this.walletConnectTransport) {\n return\n }\n\n this.walletConnectTransport.setEventHandler(\n ClientEvents.CLOSE_ALERT,\n this.hideUI.bind(this, ['alert', 'toast'])\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.RESET_STATE,\n this.channelClosedHandler.bind(this)\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.WC_ACK_NOTIFICATION,\n this.wcToastHandler.bind(this)\n )\n this.walletConnectTransport.setEventHandler(\n ClientEvents.ON_RELAYER_ERROR,\n this.onRelayerError.bind(this)\n )\n }\n\n private async onRelayerError() {\n await this.resetInvalidState(false)\n\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.RELAYER_ERROR,\n error,\n async (errorContext) => errorContext\n )\n }\n\n private async wcToastHandler(status: string) {\n const walletInfo = await (async (): Promise<WalletInfo> => {\n try {\n return await this.getWalletInfo()\n } catch {\n return { name: 'wallet' }\n }\n })()\n\n await this.events.emit(BeaconEvent.HIDE_UI, ['alert'])\n if (status === 'pending') {\n this.events.emit(BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: {} as any,\n extraInfo: {} as any,\n walletInfo\n })\n } else {\n const error = getError(BeaconErrorType.ABORTED_ERROR, undefined)\n await this.emitEventWithErrorContext(\n BeaconEvent.PERMISSION_REQUEST_ERROR,\n error,\n async (errorContext) => ({\n errorResponse: { errorType: BeaconErrorType.ABORTED_ERROR } as any,\n walletInfo,\n errorContext\n })\n )\n }\n }\n private async channelClosedHandler(type: TransportType) {\n const transport = await this.transport\n\n if (transport.type !== type) {\n return\n }\n\n await this.events.emit(BeaconEvent.CHANNEL_CLOSED)\n this.setActiveAccount(undefined)\n await this.disconnect()\n }\n\n /**\n * Destroy the instance.\n *\n * WARNING: Call `destroy` whenever you no longer need dAppClient\n * as it frees internal subscriptions to the transport and therefore the instance may no longer work properly.\n * If you wish to disconnect your dApp, use `disconnect` instead.\n */\n async destroy(): Promise<void> {\n await this.createStateSnapshot()\n await this.dropTransports()\n await super.destroy()\n }\n\n public async init(\n transport?: Transport<any>,\n substratePairing?: boolean\n ): Promise<TransportType> {\n if (this._initPromise) {\n return this._initPromise\n }\n\n try {\n await this.activeAccountLoaded\n } catch {\n //\n }\n\n this._initPromise = new Promise<TransportType>(async (resolve, reject) => {\n this._initPromiseReject = reject\n\n if (transport) {\n await this.addListener(transport)\n\n resolve(await super.init(transport))\n } else if (this._transport.isSettled()) {\n await (await this.transport).connect()\n\n resolve(await super.init(await this.transport))\n } else {\n const activeAccount = await this.getActiveAccount()\n const stopListening = () => {\n if (this.postMessageTransport) {\n this.postMessageTransport.stopListeningForNewPeers().catch(console.error)\n }\n if (this.p2pTransport) {\n this.p2pTransport.stopListeningForNewPeers().catch(console.error)\n }\n if (this.walletConnectTransport) {\n this.walletConnectTransport.stopListeningForNewPeers().catch(console.error)\n }\n }\n\n await this.initInternalTransports()\n\n if (\n !this.postMessageTransport ||\n !this.p2pTransport ||\n (this.isWalletConnectEnabled && !this.walletConnectTransport)\n ) {\n return\n }\n\n this.postMessageTransport.connect().then().catch(console.error)\n\n if (activeAccount && activeAccount.origin) {\n const origin = activeAccount.origin.type\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n resolve(await super.init(this.postMessageTransport))\n } else if (origin === Origin.P2P) {\n resolve(await super.init(this.p2pTransport))\n } else if (origin === Origin.WALLETCONNECT && this.walletConnectTransport) {\n resolve(await super.init(this.walletConnectTransport))\n } else {\n // The persisted active account was paired over WalletConnect but WC\n // has since been disabled (`disableWalletConnect`, #32) or failed to\n // initialize, so there is no matching transport to\n // restore. Without this branch none of the conditions above call\n // resolve() and the init promise created above never settles, so\n // init() (and every later call awaiting it) hangs forever. Resolve on\n // the always-available P2P transport so the SDK stays usable and the\n // stale WC account can be re-paired.\n logger.warn(\n 'init',\n 'Active account was paired over WalletConnect but WC is disabled; falling back to the P2P transport'\n )\n resolve(await super.init(this.p2pTransport))\n }\n } else {\n const p2pTransport = this.p2pTransport\n const postMessageTransport = this.postMessageTransport\n const walletConnectTransport = this.walletConnectTransport\n\n postMessageTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'postmessage transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'Extension connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.postMessageTransport).catch(console.error)\n stopListening()\n resolve(TransportType.POST_MESSAGE)\n })\n .catch(console.error)\n\n p2pTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'p2p transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'octez.connect Wallet connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.p2pTransport).catch(console.error)\n stopListening()\n resolve(TransportType.P2P)\n })\n .catch(console.error)\n\n walletConnectTransport\n ?.listenForNewPeer((peer) => {\n logger.log('init', 'walletconnect transport peer connected', peer)\n this.analytics.track('event', 'DAppClient', 'WalletConnect Wallet connected', {\n peerName: peer.name\n })\n this.events\n .emit(BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError))\n\n this.setActivePeer(peer).catch(console.error)\n this.setTransport(this.walletConnectTransport).catch(console.error)\n stopListening()\n resolve(TransportType.WALLETCONNECT)\n })\n .catch(console.error)\n\n PostMessageTransport.getAvailableExtensions()\n .then(async (extensions) => {\n this.analytics.track('event', 'DAppClient', 'Extensions detected', { extensions })\n })\n .catch((error) => {\n this._initPromise = undefined\n this._initPromiseReject = undefined\n console.error(error)\n })\n\n const abortHandler = async () => {\n logger.log('init', 'ABORTED')\n // Popup closed: replies to the QR code / request it showed no longer count.\n stopListening()\n this.sendMetrics(\n 'performance-metrics/save',\n await this.buildPayload('connect', 'abort')\n )\n await Promise.all([\n walletConnectTransport?.disconnect(),\n // Disconnects postMessage and P2P -- `postMessageTransport` above\n // is this.postMessageTransport, so dropTransports() already owns\n // it -- and forgets all three. It also stops the P2P client\n // started for the pairing QR: if its start is still pending,\n // P2PCommunicationClient.start() notices the stop once the login\n // completes and shuts it down.\n this.dropTransports()\n ])\n this._activeAccount.isResolved() && this.clearActiveAccount()\n\n this.events.emit(BeaconEvent.PAIR_ABORTED).catch((emitError) => console.warn(emitError))\n\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n }\n this._initPromise = undefined\n this._initPromiseReject = undefined\n }\n\n const serializer = new Serializer()\n const p2pPeerInfo = new Promise<string>(async (resolve) => {\n try {\n await p2pTransport.connect()\n } catch (err: any) {\n logger.error(err)\n await this.hideUI(['alert']) // hide pairing alert\n const error = new UnknownBeaconError()\n setTimeout(() => {\n this.emitEventWithErrorContext(\n BeaconEvent.GENERIC_ERROR,\n error,\n async (errorContext) => ({\n message: err.message,\n errorContext\n })\n ).catch((emitError) => console.warn(emitError))\n }, 1000)\n abortHandler()\n resolve('')\n\n return\n }\n resolve(await serializer.serialize(await p2pTransport.getPairingRequestInfo()))\n })\n\n const walletConnectPeerInfo = new Promise<string>(async (resolve) => {\n // When WC is disabled there is no transport to pair through (#32).\n resolve(\n walletConnectTransport\n ? (await walletConnectTransport.getPairingRequestInfo()).uri\n : ''\n )\n })\n\n const postmessagePeerInfo = new Promise<string>(async (resolve) => {\n resolve(await serializer.serialize(await postMessageTransport.getPairingRequestInfo()))\n })\n\n this.events\n .emit(BeaconEvent.PAIR_INIT, {\n p2pPeerInfo,\n postmessagePeerInfo,\n walletConnectPeerInfo,\n networkType: this.network.type,\n abortedHandler: abortHandler.bind(this),\n analytics: this.analytics,\n featuredWallets: this.featuredWallets,\n termsAndConditionsUrl: this.termsAndConditionsUrl,\n privacyPolicyUrl: this.privacyPolicyUrl,\n substratePairing\n })\n .catch((emitError) => console.warn(emitError))\n }\n }\n })\n\n return this._initPromise\n }\n\n /**\n * Returns the active account\n */\n public async getActiveAccount(): Promise<AccountInfo | undefined> {\n return this._activeAccount.promise\n }\n\n private async isInvalidState(account: AccountInfo) {\n const activeAccount = await this._activeAccount.promise\n\n return !activeAccount\n ? false\n : activeAccount?.address !== account?.address && !this.isGetActiveAccountHandled\n }\n\n private async resetInvalidState(emit: boolean = true) {\n this.accountManager.removeAllAccounts()\n this._activeAccount = ExposedPromise.resolve<AccountInfo | undefined>(undefined)\n this.storage.set(StorageKey.ACTIVE_ACCOUNT, undefined)\n emit && this.events.emit(BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE)\n !emit && this.hideUI(['alert'])\n const walletConnectTransport = this.walletConnectTransport\n await Promise.all([walletConnectTransport?.disconnect(), this.dropTransports()])\n await this.setActivePeer(undefined)\n await this.setTransport(undefined)\n this._initPromise = undefined\n }\n\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n public async setActiveAccount(account?: AccountInfo): Promise<void> {\n if (!this.isGetActiveAccountHandled) {\n console.warn(\n `An active account has been received, but no active subscription was found for BeaconEvent.ACTIVE_ACCOUNT_SET.\n For more information, visit: https://octez-connect.tezos.com/guides/migration-guide`\n )\n }\n\n if (account && this._activeAccount.isSettled() && (await this.isInvalidState(account))) {\n const tranport = await this.transport\n\n if (tranport instanceof WalletConnectTransport && tranport.wasDisconnectedByWallet()) {\n await this.resetInvalidState()\n\n return\n }\n }\n\n // when I'm resetting the activeAccount\n if (!account && this._activeAccount.isResolved() && (await this.getActiveAccount())) {\n const transport = await this.transport\n const activeAccount = await this.getActiveAccount()\n\n if (!transport || !activeAccount) {\n return\n }\n\n if (!this.debounceSetActiveAccount && transport instanceof WalletConnectTransport) {\n this.debounceSetActiveAccount = true\n this._initPromise = undefined\n await this.dropTransports()\n if (this.multiTabChannel.isLeader() || isMobileOS(window)) {\n await transport.disconnect()\n this.openRequestsOtherTabs.clear()\n } else {\n this.multiTabChannel.postMessage({\n type: 'DISCONNECT'\n })\n }\n Array.from(this.openRequests.entries())\n .filter(([id, _promise]) => id !== 'session_update')\n .forEach(([id, promise]) => {\n promise.reject({\n type: BeaconMessageType.Error,\n errorType: BeaconErrorType.ABORTED_ERROR,\n id,\n senderId: '',\n // SDK-synthesized rejection consumed in-process (never hits the\n // wire); stamped with the wrapped baseline for consistency.\n version: negotiateEnvelopeVersion(undefined)\n })\n })\n this.openRequests.clear()\n this.debounceSetActiveAccount = false\n }\n }\n\n if (this._activeAccount.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activeAccount = ExposedPromise.resolve<AccountInfo | undefined>(account)\n } else {\n this._activeAccount.resolve(account)\n }\n\n if (!this.isGetActiveAccountHandled && this._transport.isResolved()) {\n const transport = await this.transport\n\n if (transport instanceof WalletConnectTransport && transport.wasDisconnectedByWallet()) {\n await this.resetInvalidState()\n\n return\n }\n }\n\n if (account) {\n const origin = account.origin.type\n await this.initInternalTransports()\n\n // Select the transport that matches the active account\n if (origin === Origin.EXTENSION) {\n await this.setTransport(this.postMessageTransport)\n } else if (origin === Origin.P2P) {\n await this.setTransport(this.p2pTransport)\n } else if (origin === Origin.WALLETCONNECT && this.walletConnectTransport) {\n await this.setTransport(this.walletConnectTransport)\n this.walletConnectTransport.forceUpdate('INIT')\n } else if (origin === Origin.WALLETCONNECT) {\n // WalletConnect is opt-out/disabled (#32) but this persisted account was\n // paired over WC. There is no WC transport to bind; setting the transport\n // to `undefined` would leave the client unable to send any request. Fall\n // back to the always-available P2P transport so the SDK stays usable\n // (the stale WC account can be re-paired).\n logger.warn(\n 'setActiveAccount',\n 'Active account was paired over WalletConnect but WC is disabled; falling back to the P2P transport'\n )\n await this.setTransport(this.p2pTransport)\n }\n if (this._transport.isResolved()) {\n const transport = await this.transport\n\n if (transport.connectionStatus === TransportStatus.NOT_CONNECTED) {\n await transport.connect()\n }\n }\n const peer = await this.getPeer(account)\n await this.setActivePeer(peer)\n } else {\n await this.setActivePeer(undefined)\n await this.setTransport(undefined)\n }\n\n await this.storage.set(\n StorageKey.ACTIVE_ACCOUNT,\n account ? account.accountIdentifier : undefined\n )\n\n await this.events.emit(BeaconEvent.ACTIVE_ACCOUNT_SET, account)\n\n return\n }\n\n /**\n * Clear the active account\n */\n public clearActiveAccount(): Promise<void> {\n return this.setActiveAccount()\n }\n\n public async setColorMode(colorMode: ColorMode): Promise<void> {\n return setColorMode(colorMode)\n }\n\n public async getColorMode(): Promise<ColorMode> {\n return getColorMode()\n }\n\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n public async getAppMetadata(): Promise<AppMetadata> {\n return this.getOwnAppMetadata()\n }\n\n public async showPrepare(): Promise<void> {\n const walletInfo = await (async () => {\n try {\n return await this.getWalletInfo()\n } catch {\n return undefined\n }\n })()\n await this.events.emit(BeaconEvent.SHOW_PREPARE, { walletInfo })\n }\n\n public async hideUI(elements: ('alert' | 'toast')[]): Promise<void> {\n await this.events.emit(BeaconEvent.HIDE_UI, elements)\n }\n\n private async tryToAppSwitch() {\n if (!isMobileOS(window) || !this.enableAppSwitching) {\n return\n }\n\n const wallet = await this.getWalletInfo()\n\n if (wallet.type !== 'mobile' || !wallet.deeplink) {\n return\n }\n\n const link = isIOS(window) ? wallet.deeplink : (`${wallet.deeplink}wc?uri=` as any)\n\n if (!link?.length) {\n return\n }\n\n window.location = link\n }\n\n private addQueryParam(paramName: string, paramValue: string): string {\n return `${paramName }=${ paramValue}`\n }\n\n private async buildPayload(\n action: 'connect' | 'message' | 'disconnect',\n status: 'start' | 'abort' | 'success' | 'error'\n ): Promise<RequestInit> {\n const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n const transport = this._activeAccount.isResolved()\n ? ((await this.getActiveAccount())?.origin.type ?? 'UNKNOWN')\n : 'UNKNOWN'\n\n return {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n userId: this.userId,\n os: currentOS(),\n walletName: wallet?.name ?? 'init',\n walletType: wallet?.type ?? 'init',\n sdkVersion: SDK_VERSION,\n transport,\n time: new Date(),\n action,\n status\n })\n }\n }\n\n private async updateMetricsStorage(payload: string) {\n const queue = await this.beaconIDB.getAllKeys('metrics')\n\n if (queue.length >= 1000) {\n const key = queue.shift()!\n this.beaconIDB.delete(key.toString(), 'metrics')\n }\n\n this.beaconIDB.set(String(Date.now()), payload, 'metrics')\n }\n\n private sendMetrics(\n uri: string,\n options?: RequestInit,\n thenHandler?: (res: Response) => void,\n catchHandler?: (err: Error) => void\n ) {\n if (!this.enableMetrics && uri === 'performance-metrics/save') {\n options && this.updateMetricsStorage(options.body as string)\n }\n if (!this.enableMetrics) {\n return\n }\n\n fetch(`${BACKEND_URL}/${uri}`, options)\n .then((res) => thenHandler && thenHandler(res))\n .catch((err: Error) => {\n console.warn('Network error encountered. Metrics sharing have been automatically disabled.')\n logger.error(err.message)\n this.enableMetrics = false // in the event of a network error, stop sending metrics\n catchHandler && catchHandler(err)\n })\n }\n\n private async checkMakeRequest() {\n const isResolved = this._transport.isResolved()\n const isWCInstance = isResolved && (await this.transport) instanceof WalletConnectTransport\n await this.multiTabChannel.init()\n const isLeader = this.multiTabChannel.isLeader()\n\n return !isResolved || !isWCInstance || isLeader || isMobileOS(window)\n }\n\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n public async removeAccount(accountIdentifier: string): Promise<void> {\n const removeAccountResult = super.removeAccount(accountIdentifier)\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (activeAccount && activeAccount.accountIdentifier === accountIdentifier) {\n await this.setActiveAccount(undefined)\n }\n\n return removeAccountResult\n }\n\n /**\n * Remove all accounts and set active account to undefined\n */\n public async removeAllAccounts(): Promise<void> {\n await super.removeAllAccounts()\n await this.setActiveAccount(undefined)\n }\n\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n public async removePeer(\n peer: ExtendedPeerInfo,\n sendDisconnectToPeer: boolean = false\n ): Promise<void> {\n const transport = await this.transport\n\n const removePeerResult = transport.removePeer(peer)\n\n await this.removeAccountsForPeers([peer])\n\n if (sendDisconnectToPeer) {\n await this.sendDisconnectToPeer(peer, transport)\n }\n\n return removePeerResult\n }\n\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n public async removeAllPeers(sendDisconnectToPeers: boolean = false): Promise<void> {\n const transport = await this.transport\n\n const peers: ExtendedPeerInfo[] = await transport.getPeers()\n const removePeerResult = transport.removeAllPeers()\n\n await this.removeAccountsForPeers(peers)\n\n if (sendDisconnectToPeers) {\n const disconnectPromises = peers.map((peer) => this.sendDisconnectToPeer(peer, transport))\n\n await Promise.all(disconnectPromises)\n }\n\n return removePeerResult\n }\n\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n public async subscribeToEvent<K extends BeaconEvent>(\n internalEvent: K,\n eventCallback: BeaconEventHandlerFunction<BeaconEventType[K]>\n ): Promise<void> {\n if (internalEvent === BeaconEvent.ACTIVE_ACCOUNT_SET) {\n this.isGetActiveAccountHandled = true\n }\n\n await this.events.on(internalEvent, eventCallback)\n }\n\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n public async checkPermissions(type: BeaconMessageType): Promise<boolean> {\n if (\n [\n BeaconMessageType.PermissionRequest,\n BeaconMessageType.ProofOfEventChallengeRequest,\n BeaconMessageType.SimulatedProofOfEventChallengeRequest\n ].includes(type)\n ) {\n return true\n }\n\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (!activeAccount) {\n throw await this.sendInternalError('No active account set!')\n }\n\n const permissions = activeAccount.scopes\n\n switch (type) {\n case BeaconMessageType.OperationRequest:\n return permissions.includes(PermissionScope.OPERATION_REQUEST)\n case BeaconMessageType.SignPayloadRequest:\n return permissions.includes(PermissionScope.SIGN)\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadRequest:\n // return permissions.includes(PermissionScope.ENCRYPT)\n case BeaconMessageType.BroadcastRequest:\n return true\n default:\n return false\n }\n }\n\n public async sendNotification(\n title: string,\n message: string,\n payload: string,\n protocolIdentifier: string\n ): Promise<string> {\n const activeAccount = await this.getActiveAccount()\n\n if (\n !activeAccount ||\n (activeAccount &&\n !activeAccount.scopes.includes(PermissionScope.NOTIFICATION) &&\n !activeAccount.notification)\n ) {\n throw new Error('notification permissions not given')\n }\n\n if (!activeAccount.notification?.token) {\n throw new Error('No AccessToken')\n }\n\n const url = activeAccount.notification?.apiUrl\n\n if (!url) {\n throw new Error('No Push URL set')\n }\n\n return this.sendNotificationWithAccessToken({\n url,\n recipient: activeAccount.address,\n title,\n body: message,\n payload,\n protocolIdentifier,\n accessToken: activeAccount.notification?.token\n })\n }\n\n public override addBlockchain(chain: Blockchain): void {\n super.addBlockchain(chain)\n chain.getWalletLists().then((walletLists) => {\n setDesktopList(walletLists.desktopList)\n setExtensionList(walletLists.extensionList)\n setWebList(walletLists.webList)\n setiOSList(walletLists.iOSList)\n })\n }\n\n public async permissionRequest(\n input: PermissionRequestV3\n ): Promise<PermissionResponseV3> {\n logger.log('permissionRequest', input)\n const blockchain = this.blockchains.get(input.blockchainIdentifier)\n if (!blockchain) {\n throw new Error(`Blockchain \"${input.blockchainIdentifier}\" not supported by dAppClient`)\n }\n\n const request: PermissionRequestV3 = {\n ...input,\n type: BeaconMessageType.PermissionRequest,\n blockchainData: {\n ...input.blockchainData,\n appMetadata: await this.getOwnAppMetadata()\n }\n }\n\n logger.log('REQUESTION PERMIMISSION V3', 'xxx', request)\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n const logId = `makeRequestV3 ${Date.now()}`\n logger.time(true, logId)\n\n const { message: response, connectionInfo } = await this.requireResponse(\n this.makeRequestV3<\n PermissionRequestV3,\n BeaconMessageWrapper<PermissionResponseV3>\n >(request),\n request as any,\n logId\n )\n logger.time(false, logId)\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n logger.log('RESPONSE V3', response, connectionInfo)\n\n // The version stamp lives on the wrapper envelope, not the inner payload;\n // reading response.message.version would always miss and collapse to '0',\n // misrouting v4 responses when no peer is persisted yet.\n const walletPeerV3 = await this.getPeer()\n const walletPeerVersionV3: string = effectivePeerVersion(walletPeerV3) ?? response.version\n const partialAccountInfos = await blockchain.getAccountInfosFromPermissionResponse(\n response.message,\n walletPeerVersionV3\n )\n\n const blockchainDataScopes = (\n response.message.blockchainData as { scopes?: PermissionScope[] }\n ).scopes\n const accountInfos: AccountInfo[] = partialAccountInfos.map(\n (p) =>\n ({\n accountIdentifier: p.accountId,\n senderId: response.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n address: p.address,\n publicKey: p.publicKey,\n network: p.network,\n scopes: blockchainDataScopes ?? p.scopes,\n connectedAt: new Date().getTime(),\n chainData: response.message.blockchainData\n } as unknown as AccountInfo)\n )\n\n await this.accountManager.addAccounts(accountInfos)\n const accountInfo: AccountInfo | undefined = accountInfos[0]\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n await this.setActiveAccount(accountInfo)\n\n await blockchain.handleResponse({\n request,\n account: accountInfo,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n await this.notifySuccess(request as any, {\n account: accountInfo,\n output: {\n address: accountInfo.address,\n network: { type: 'substrate' },\n scopes: []\n } as any,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n // return output\n return response.message\n }\n\n public async request(input: BlockchainRequestV3): Promise<BlockchainResponseV3> {\n logger.log('request', input)\n const blockchain = this.blockchains.get(input.blockchainIdentifier)\n if (!blockchain) {\n throw new Error(`Blockchain \"${blockchain}\" not supported by dAppClient`)\n }\n\n await blockchain.validateRequest(input)\n\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const request: BlockchainRequestV3 = {\n ...input,\n type: BeaconMessageType.BlockchainRequest,\n accountId: activeAccount.accountIdentifier\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n\n const logId = `makeRequestV3 ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequestV3<\n BlockchainRequestV3,\n BeaconMessageWrapper<BlockchainResponseV3>\n >(request)\n : this.makeRequestBC<any, any>(request)\n\n const { message: response, connectionInfo } = await this.requireResponse(\n res,\n request as any,\n logId\n )\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await blockchain.handleResponse({\n request,\n account: activeAccount,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n await this.notifySuccess(\n request as any,\n {\n walletInfo: await this.getWalletInfo()\n } as any\n )\n\n return response.message\n }\n\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n public async requestPermissions(\n input?: RequestPermissionInput\n ): Promise<PermissionResponseOutput> {\n if ((input as any)?.network) {\n throw new Error(\n '[BEACON] the \"network\" property is no longer accepted in input. Please provide it when instantiating DAppClient.'\n )\n }\n\n const request: PermissionRequestInput = {\n appMetadata: await this.getOwnAppMetadata(),\n type: BeaconMessageType.PermissionRequest,\n network: this.network,\n scopes:\n input && input.scopes\n ? input.scopes\n : [PermissionScope.OPERATION_REQUEST, PermissionScope.SIGN]\n }\n\n // Dedupe by the normalized CAIP-2 chainId so equivalent input entries\n // ('NetX…' and 'tezos:NetX…') collapse to one canonical wire entry.\n if (input?.networks && input.networks.length > 0) {\n const dedupedNetworks = Array.from(\n new Map(\n input.networks.map((n: RequestPermissionNetwork) => {\n const chainId = normalizeTezosCaip2(n.chainId)\n\n return [chainId, { ...n, chainId }]\n })\n ).values()\n )\n request.networks = dedupedNetworks\n\n // Multi-network over WalletConnect travels via the session proposal,\n // not the wire payload (WC peers have no beacon version handshake).\n // Map each requested chain id to its named network for the proposal;\n // ids without a static genesis mapping are skipped here (the\n // NetworksUnsupportedBeaconError guard above reports them when the\n // dApp opted into requiredMinimumVersion '4').\n const proposalNetworkTypes: NetworkType[] = []\n for (const { chainId } of dedupedNetworks) {\n const networkType = networkTypeFromTezosCaip2(chainId)\n if (networkType === undefined) {\n logger.debug(\n 'requestPermissions',\n `No static network mapping for \"${chainId}\"; excluded from the WalletConnect proposal`\n )\n continue\n }\n proposalNetworkTypes.push(networkType)\n }\n\n if (this.walletConnectTransport) {\n this.walletConnectTransport.setProposalNetworks(proposalNetworkTypes)\n } else {\n // The WalletConnect transport is created lazily inside init() (run\n // by makeRequest below, before the pairing proposal is built); stash\n // the networks and apply them right after creation.\n this.pendingWcProposalNetworks = proposalNetworkTypes\n }\n }\n\n this.analytics.track('event', 'DAppClient', 'Permission requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'start'))\n\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res =\n (await this.checkMakeRequest()) || !(await this.getActiveAccount())\n ? this.makeRequest<PermissionRequest, PermissionResponse>(request, undefined, undefined)\n : this.makeRequestBC<PermissionRequest, PermissionResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('connect', 'success'))\n\n logger.log('requestPermissions', '######## MESSAGE #######')\n logger.log('requestPermissions', message)\n\n // Capability-aware peer version (legacy wallets echo the dApp's version\n // at pairing — see effectivePeerVersion); fall back to the response\n // envelope version when no peer is persisted yet.\n const walletPeer = await this.getPeer()\n const walletPeerVersion = effectivePeerVersion(walletPeer) ?? message.version\n\n // Gate the freshly-paired wallet against the dApp's required minimum (a\n // no-op under the default, permissive minimum). Throws\n // VersionUnsupportedBeaconError when the wallet is too old.\n this.assertWalletVersionMeetsMinimum(walletPeerVersion)\n\n const isV4Session = isMultiNetworkVersion(walletPeerVersion)\n\n const messageAccounts = (message as { accounts?: PermissionResponseAccounts }).accounts\n const multiNetworkAccounts: PermissionResponseAccounts | null =\n isV4Session &&\n messageAccounts &&\n typeof messageAccounts === 'object' &&\n !Array.isArray(messageAccounts)\n ? messageAccounts\n : null\n let accountInfo: AccountInfo | undefined\n\n if (isV4Session) {\n const requestedNetworks: string[] = (request.networks ?? []).map((n) =>\n normalizeTezosCaip2(n.chainId)\n )\n const servedChainIds: string[] = multiNetworkAccounts\n ? Object.keys(multiNetworkAccounts).map(normalizeTezosCaip2)\n : []\n\n const isMinimumVersionV4OrHigher = isMultiNetworkVersion(this.requiredMinimumVersion)\n // Reject silently-degraded responses: a v4 session with >=2 networks\n // requested but no accounts fanout returned.\n if (requestedNetworks.length >= 2 && isMinimumVersionV4OrHigher) {\n const missing = requestedNetworks.filter((c) => !servedChainIds.includes(c))\n if (missing.length > 0) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks,\n unsupportedNetworks: missing\n })\n }\n }\n }\n\n if (isV4Session && multiNetworkAccounts) {\n const builtAccounts = await this.buildAccountInfosFromV4Fanout(\n message,\n multiNetworkAccounts,\n walletPeerVersion ?? '0',\n connectionInfo\n )\n await this.accountManager.addAccounts(builtAccounts)\n accountInfo = builtAccounts[0]\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n await this.setActiveAccount(accountInfo)\n logger.log('requestPermissions', '######## MULTI-NETWORK ACCOUNTS #######', builtAccounts.length)\n } else {\n accountInfo = await this.onNewAccount(message, connectionInfo)\n logger.log('requestPermissions', '######## ACCOUNT INFO #######')\n logger.log('requestPermissions', JSON.stringify(accountInfo))\n await this.accountManager.addAccount(accountInfo)\n }\n if (!accountInfo) {\n throw new Error(\n EMPTY_PERMISSION_ACCOUNTS_MESSAGE\n )\n }\n\n const output: PermissionResponseOutput = {\n ...message,\n walletKey: accountInfo.walletKey,\n address: accountInfo.address,\n accountInfo\n }\n\n await this.notifySuccess(request, {\n account: accountInfo,\n output,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Permission received', {\n address: accountInfo.address\n })\n\n return output\n }\n\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n public async requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput) {\n const activeAccount = await this.getActiveAccount()\n\n if (!activeAccount)\n {throw new Error('Please request permissions before doing a proof of event challenge')}\n if (\n activeAccount.walletType !== 'abstracted_account' &&\n activeAccount.verificationType !== 'proof_of_event'\n )\n {throw new Error(\n 'This wallet is not an abstracted account and thus cannot perform proof of event'\n )}\n\n const request: ProofOfEventChallengeRequestInput = {\n type: BeaconMessageType.ProofOfEventChallengeRequest,\n contractAddress: activeAccount.address,\n payload: input.payload\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<ProofOfEventChallengeRequest, ProofOfEventChallengeResponse>(request)\n : this.makeRequestBC<ProofOfEventChallengeRequest, ProofOfEventChallengeResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n this.analytics.track(\n 'event',\n 'DAppClient',\n `Proof of event challenge ${message.isAccepted ? 'accepted' : 'refused'}`,\n { address: activeAccount.address }\n )\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n return message\n }\n\n /**\n * Send a simulated proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * It's the same than `requestProofOfEventChallenge` but rather than executing operations on the blockchain to prove the identity,\n * The wallet will return a list of operations that you'll be able to run on your side to verify the identity of the abstracted account\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the SimulatedProofOfEventChallenge message.\n */\n public async requestSimulatedProofOfEventChallenge(\n input: RequestSimulatedProofOfEventChallengeInput\n ) {\n const activeAccount = await this.getActiveAccount()\n\n if (!activeAccount)\n {throw new Error('Please request permissions before doing a proof of event challenge')}\n if (\n activeAccount.walletType !== 'abstracted_account' &&\n activeAccount.verificationType !== 'proof_of_event'\n ) {\n throw new Error(\n 'This wallet is not an abstracted account and thus cannot perform a simulated proof of event'\n )\n }\n\n const request: SimulatedProofOfEventChallengeRequestInput = {\n type: BeaconMessageType.SimulatedProofOfEventChallengeRequest,\n contractAddress: activeAccount.address,\n ...input\n }\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse\n >(request)\n : this.makeRequestBC<\n SimulatedProofOfEventChallengeRequest,\n SimulatedProofOfEventChallengeResponse\n >(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n\n this.analytics.track(\n 'event',\n 'DAppClient',\n `Simulated proof of event challenge ${!message.errorMessage ? 'accepted' : 'refused'}`,\n { address: activeAccount.address }\n )\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n return message\n }\n\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n public async requestSignPayload(\n input: RequestSignPayloadInput\n ): Promise<SignPayloadResponseOutput> {\n if (!input.payload) {\n throw await this.sendInternalError('Payload must be provided')\n }\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const payload = input.payload\n\n if (typeof payload !== 'string') {\n throw new Error('Payload must be a string')\n }\n\n const signingType = ((): SigningType => {\n switch (input.signingType) {\n case SigningType.OPERATION:\n if (!payload.startsWith('03')) {\n throw new Error(\n 'When using signing type \"OPERATION\", the payload must start with prefix \"03\"'\n )\n }\n\n return SigningType.OPERATION\n\n case SigningType.MICHELINE:\n if (!payload.startsWith('05')) {\n throw new Error(\n 'When using signing type \"MICHELINE\", the payload must start with prefix \"05\"'\n )\n }\n\n return SigningType.MICHELINE\n\n case SigningType.RAW:\n default:\n return SigningType.RAW\n }\n })()\n\n this.analytics.track('event', 'DAppClient', 'Signature requested')\n\n const request: SignPayloadRequestInput = {\n type: BeaconMessageType.SignPayloadRequest,\n signingType,\n payload,\n sourceAddress: input.sourceAddress || activeAccount.address\n }\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<SignPayloadRequest, SignPayloadResponse>(request)\n : this.makeRequestBC<SignPayloadRequest, SignPayloadResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Signature response')\n\n return message\n }\n\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n // TODO: ENCRYPTION\n // public async requestEncryptPayload(\n // input: RequestEncryptPayloadInput\n // ): Promise<EncryptPayloadResponseOutput> {\n // if (!input.payload) {\n // throw await this.sendInternalError('Payload must be provided')\n // }\n // const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n // if (!activeAccount) {\n // throw await this.sendInternalError('No active account!')\n // }\n\n // const payload = input.payload\n\n // if (typeof payload !== 'string') {\n // throw new Error('Payload must be a string')\n // }\n\n // if (typeof input.encryptionCryptoOperation === 'undefined') {\n // throw new Error('encryptionCryptoOperation must be defined')\n // }\n\n // if (typeof input.encryptionType === 'undefined') {\n // throw new Error('encryptionType must be defined')\n // }\n\n // const request: EncryptPayloadRequestInput = {\n // type: BeaconMessageType.EncryptPayloadRequest,\n // cryptoOperation: input.encryptionCryptoOperation,\n // encryptionType: input.encryptionType,\n // payload,\n // sourceAddress: input.sourceAddress || activeAccount.address\n // }\n\n // const { message, connectionInfo } = await this.makeRequest<\n // EncryptPayloadRequest,\n // EncryptPayloadResponse\n // >(request).catch(async (requestError: ErrorResponse) => {\n // throw await this.handleRequestError(request, requestError)\n // })\n\n // await this.notifySuccess(request, {\n // account: activeAccount,\n // output: message,\n // connectionContext: connectionInfo,\n // walletInfo: await this.getWalletInfo()\n // })\n\n // return message\n // }\n\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n public async requestOperation(input: RequestOperationInput): Promise<OperationResponseOutput> {\n if (!input.operationDetails) {\n throw await this.sendInternalError('Operation details must be provided')\n }\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (!activeAccount) {\n throw await this.sendInternalError('No active account!')\n }\n\n const resolvedNetwork: Network | string = await this.resolveOperationNetwork(\n input.network,\n activeAccount\n )\n\n const request: OperationRequestInput = {\n type: BeaconMessageType.OperationRequest,\n network: resolvedNetwork,\n operationDetails: input.operationDetails,\n sourceAddress: activeAccount.address || ''\n }\n\n this.analytics.track('event', 'DAppClient', 'Operation requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<OperationRequest, OperationResponse>(request)\n : this.makeRequestBC<OperationRequest, OperationResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Operation response')\n\n return message\n }\n\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n public async requestBroadcast(input: RequestBroadcastInput): Promise<BroadcastResponseOutput> {\n if (!input.signedTransaction) {\n throw await this.sendInternalError('Signed transaction must be provided')\n }\n\n // Add error message for deprecation of network\n // TODO: Remove when we remove deprecated preferredNetwork\n if (input.network !== undefined && this.network.type !== input.network?.type) {\n console.error(\n '[BEACON] The network specified in the DAppClient constructor does not match the network set in the broadcast request. Please set the network in the constructor. Setting it during the Broadcast Request is deprecated.'\n )\n }\n\n const request: BroadcastRequestInput = {\n type: BeaconMessageType.BroadcastRequest,\n network: this.network,\n signedTransaction: input.signedTransaction\n }\n\n this.analytics.track('event', 'DAppClient', 'Broadcast requested')\n\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'start'))\n const logId = `makeRequest ${Date.now()}`\n logger.time(true, logId)\n const res = (await this.checkMakeRequest())\n ? this.makeRequest<BroadcastRequest, BroadcastResponse>(request)\n : this.makeRequestBC<BroadcastRequest, BroadcastResponse>(request)\n\n const { message, connectionInfo } = await this.requireResponse(res, request, logId)\n logger.time(false, logId)\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'success'))\n\n await this.notifySuccess(request, {\n network: this.network,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: await this.getWalletInfo()\n })\n\n this.analytics.track('event', 'DAppClient', 'Broadcast response')\n\n return message\n }\n\n protected async setActivePeer(peer?: PeerInfoType): Promise<void> {\n if (this._activePeer.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activePeer = ExposedPromise.resolve(peer)\n } else {\n this._activePeer.resolve(peer)\n }\n\n if (!peer) {\n return\n }\n\n await this.initInternalTransports()\n\n if (peer.type === 'postmessage-pairing-response') {\n await this.setTransport(this.postMessageTransport)\n } else if (peer.type === 'p2p-pairing-response') {\n await this.setTransport(this.p2pTransport)\n }\n }\n\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected async setTransport(transport?: Transport<any>): Promise<void> {\n if (!transport) {\n this._initPromise = undefined\n }\n\n const result = super.setTransport(transport)\n\n const event = transport ? { ...(transport as any) } : undefined\n\n // remove keyPair, to prevent dApps from accidentaly leaking the privateKey\n if (event) {\n event.client = {\n ...event.client,\n keyPair: undefined\n }\n }\n\n await this.events.emit(BeaconEvent.ACTIVE_TRANSPORT_SET, event)\n\n return result\n }\n\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private async sendInternalError(errorMessage: string): Promise<void> {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: errorMessage,\n errorContext\n })\n )\n throw new Error(errorMessage)\n }\n\n private async emitEventWithErrorContext<T extends BeaconEvent>(\n event: T,\n error: BeaconError | Error,\n buildPayload: (errorContext: ErrorContext) => Promise<BeaconEventType[T]> | BeaconEventType[T],\n ...additionalArgs: any[]\n ): Promise<void> {\n const transport = this._transport.isResolved() ? await this.transport : undefined\n const errorContext = await buildErrorContext(error, this.storage, transport?.type)\n const payload = await buildPayload(errorContext)\n await this.events.emit(event, payload, ...additionalArgs)\n }\n\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private async removeAccountsForPeers(peersToRemove: ExtendedPeerInfo[]): Promise<void> {\n const peerIdsToRemove = peersToRemove.map((peer) => peer.senderId)\n\n return this.removeAccountsForPeerIds(peerIdsToRemove)\n }\n\n private async removeAccountsForPeerIds(peerIds: string[]): Promise<void> {\n const accounts = await this.accountManager.getAccounts()\n\n // Remove all accounts with origin of the specified peer\n const accountsToRemove = accounts.filter((account) => peerIds.includes(account.senderId))\n const accountIdentifiersToRemove = accountsToRemove.map(\n (accountInfo) => accountInfo.accountIdentifier\n )\n await this.accountManager.removeAccounts(accountIdentifiersToRemove)\n\n // Check if one of the accounts that was removed was the active account and if yes, set it to undefined\n const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n\n if (activeAccount) {\n if (accountIdentifiersToRemove.includes(activeAccount.accountIdentifier)) {\n await this.setActiveAccount(undefined)\n }\n }\n }\n\n private async requireResponse<T>(\n responsePromise: Promise<T | undefined>,\n request: BeaconRequestInputMessage,\n logId: string\n ): Promise<T> {\n try {\n return (await responsePromise)!\n } catch (requestError) {\n const error = requestError as ErrorResponse | AbortedBeaconError\n if (error instanceof AbortedBeaconError) {\n this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort'))\n logger.time(false, logId)\n throw error\n }\n const errorResponse = error\n errorResponse.errorType === BeaconErrorType.ABORTED_ERROR\n ? this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'abort'))\n : this.sendMetrics('performance-metrics/save', await this.buildPayload('message', 'error'))\n logger.time(false, logId)\n throw await this.handleRequestError(request, errorResponse)\n }\n }\n\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private async handleRequestError(\n request: BeaconRequestInputMessage,\n beaconError: ErrorResponse\n ): Promise<void> {\n logger.error('handleRequestError', 'error response', beaconError)\n if (beaconError.errorType) {\n const buttons: AlertButton[] = []\n if (beaconError.errorType === BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR) {\n const actionCallback = async (): Promise<void> => {\n const operationRequest: OperationRequestInput = request as OperationRequestInput\n // if the account we requested is not available, we remove it locally\n let accountInfo: AccountInfo | undefined\n if (operationRequest.sourceAddress && operationRequest.network) {\n const networkForId: Network =\n typeof operationRequest.network === 'string'\n ? networkFromTezosCaip2(normalizeTezosCaip2(operationRequest.network))\n : operationRequest.network\n const accountIdentifier = await getAccountIdentifier(\n operationRequest.sourceAddress,\n networkForId\n )\n accountInfo = await this.getAccount(accountIdentifier)\n\n if (accountInfo) {\n await this.removeAccount(accountInfo.accountIdentifier)\n }\n }\n }\n\n buttons.push({ text: 'Remove account', actionCallback })\n }\n\n const peer = await this.getPeer()\n const activeAccount = await this.getActiveAccount()\n\n // If we sent a permission request, received an error and there is no active account, we need to reset the DAppClient.\n // This most likely means that the user rejected the first permission request after pairing a wallet, so we \"forget\" the paired wallet to allow the user to pair again.\n if (\n request.type === BeaconMessageType.PermissionRequest &&\n (await this.getActiveAccount()) === undefined\n ) {\n this._initPromise = undefined\n await this.dropTransports()\n await this.setTransport()\n await this.setActivePeer()\n }\n\n const error = getError(beaconError.errorType, beaconError.errorData)\n await this.emitEventWithErrorContext(\n messageEvents[request.type].error,\n error,\n async (errorContext) => ({\n errorResponse: beaconError,\n walletInfo: await this.getWalletInfo(peer, activeAccount),\n errorMessages: this.errorMessages,\n errorContext\n }),\n buttons\n ).catch((emitError) => logger.error('handleRequestError', emitError))\n\n throw getError(beaconError.errorType, beaconError.errorData)\n }\n\n throw beaconError\n }\n\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private async notifySuccess(\n request: BeaconRequestInputMessage,\n response:\n | {\n account: AccountInfo\n output: PermissionResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: ProofOfEventChallengeResponse\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: SimulatedProofOfEventChallengeResponse\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n account: AccountInfo\n output: OperationResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n | {\n output: SignPayloadResponseOutput\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n // | {\n // output: EncryptPayloadResponseOutput\n // connectionContext: ConnectionContext\n // walletInfo: WalletInfo\n // }\n | {\n network: Network\n output: BroadcastResponseOutput\n blockExplorer: BlockExplorer\n connectionContext: ConnectionContext\n walletInfo: WalletInfo\n }\n ): Promise<void> {\n this.events\n .emit(messageEvents[request.type].success, response)\n .catch((emitError) => console.warn(emitError))\n }\n\n private async getWalletInfoFromStorage() {\n return await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n }\n\n private async updateStorageWallet(walletInfo: WalletInfo) {\n const wallet = await this.storage.get(StorageKey.LAST_SELECTED_WALLET)\n\n if (!wallet) {\n return\n }\n\n wallet.name = walletInfo.name\n wallet.icon = walletInfo.icon ?? wallet.icon\n this.storage.set(StorageKey.LAST_SELECTED_WALLET, wallet)\n }\n\n private async getWalletInfo(\n peer?: PeerInfo,\n account?: AccountInfo,\n readFromStorage: boolean = true\n ): Promise<WalletInfo> {\n const selectedAccount = account ? account : await this.getActiveAccount()\n\n const selectedPeer = peer ? peer : await this.getPeer(selectedAccount)\n\n let walletInfo: WalletInfo | undefined\n if (selectedAccount) {\n walletInfo = await this.appMetadataManager.getAppMetadata(selectedAccount.senderId)\n }\n\n let storageWallet\n\n if (readFromStorage) {\n storageWallet = await this.getWalletInfoFromStorage()\n }\n\n if (!walletInfo) {\n walletInfo = {\n name: selectedPeer?.name ?? storageWallet?.key ?? '',\n icon: selectedPeer?.icon ?? storageWallet?.icon,\n type: storageWallet?.type\n }\n\n this.updateStorageWallet(walletInfo)\n }\n\n const lowerCaseCompare = (str1?: string, str2?: string): boolean => {\n if (str1 && str2) {\n return str1.toLowerCase() === str2.toLowerCase()\n }\n\n return false\n }\n\n const getOrgName = (name: string) => name.split(/[_\\s]+/)[0]\n\n const apps: AppBase[] = [\n ...getiOSList(),\n ...getWebList(),\n ...getDesktopList(),\n ...getExtensionList()\n ].filter((app: AppBase) =>\n lowerCaseCompare(getOrgName(app.key), getOrgName(walletInfo?.name ?? 'wallet'))\n )\n\n // TODO: Remove once all wallets send the icon?\n const mobile = (apps as App[]).find(\n (app) => app.universalLink || app.key.includes('ios') || app.key.includes('mobile')\n )\n const browser = (apps as WebApp[]).find((app) => app.links)\n const desktop = (apps as DesktopApp[]).find((app) => app.downloadLink)\n const extension = (apps as ExtensionApp[]).find((app) => app.id)\n\n const appTypeMap = {\n extension: { app: extension, type: 'extension' },\n desktop: { app: desktop, type: 'desktop' },\n mobile: { app: mobile, type: 'mobile' },\n web: { app: browser, type: 'web' }\n }\n\n const defaultType = (): {\n app: AppBase | undefined\n type: 'extension' | 'mobile' | 'web' | 'desktop' | undefined\n } => {\n if (isBrowser(window) && browser) {return { app: browser, type: 'web' }}\n if (isDesktop(window) && desktop) {return { app: desktop, type: 'desktop' }}\n if (isBrowser(window) && extension) {return { app: extension, type: 'extension' }}\n if (mobile) {return { app: mobile, type: 'mobile' }}\n\n return { app: undefined, type: undefined }\n }\n\n const { app, type } = storageWallet ? appTypeMap[storageWallet.type] : defaultType()\n\n if (app) {\n let deeplink: string | undefined\n if (app.hasOwnProperty('links')) {\n deeplink = (app as WebApp).links[selectedAccount?.network.type ?? this.network.type]\n } else if (app.hasOwnProperty('deepLink')) {\n deeplink = (app as App).deepLink\n }\n\n return {\n name: app?.name ?? walletInfo.name,\n icon: app?.logo ?? walletInfo.icon,\n deeplink,\n type: type as any\n }\n }\n\n return walletInfo\n }\n\n // Throws VersionUnsupportedBeaconError when a wallet that reported a version\n // is below requiredMinimumVersion (or reports a malformed one). Callers pass\n // the EFFECTIVE version (see effectivePeerVersion): a declared version is\n // only trusted alongside the v5 `protocolVersion` pairing marker; a\n // marker-less wallet that declared one counts as '2' (legacy wallets echo\n // the dApp's version, so the raw peer.version may read deceptively high).\n // A peer that never reported a version (WalletConnect pairings, legacy\n // pairings predating versioning) is treated as unknown and allowed through,\n // so raising the minimum never retroactively breaks an already-paired\n // session on a pure read.\n private assertWalletVersionMeetsMinimum(walletVersion: string | undefined): void {\n if (walletVersion === undefined) {\n return\n }\n\n const min = this.requiredMinimumVersion\n\n let cmp: number\n try {\n cmp = compareBeaconVersion(walletVersion, min)\n } catch {\n // A present-but-malformed version cannot be shown to meet the minimum.\n throw new VersionUnsupportedBeaconError(min, walletVersion)\n }\n\n if (cmp < 0) {\n throw new VersionUnsupportedBeaconError(min, walletVersion)\n }\n }\n\n // Distinct CAIP-2 chain ids across all session accounts. Reads the account\n // store, so callers should avoid it on paths that can decide without it.\n private async getSessionChainIds(): Promise<string[]> {\n const allAccounts = await this.accountManager.getAccounts()\n\n return Array.from(\n new Set(\n allAccounts\n .map((a) => a.network?.chainId)\n .filter((c): c is string => typeof c === 'string' && c.length > 0)\n )\n )\n }\n\n // Resolves the network for an outgoing operation. Returns the supplied\n // CAIP-2 string (validated and confirmed in-session), or the active\n // account's Network when there is no ambiguity. Throws on a multi-network\n // session when no network is supplied.\n private async resolveOperationNetwork(\n inputNetwork: string | undefined,\n activeAccount: AccountInfo\n ): Promise<Network | string> {\n if (inputNetwork) {\n if (!isValidTezosCaip2(inputNetwork)) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [inputNetwork],\n unsupportedNetworks: [inputNetwork],\n customMessage: `Malformed CAIP-2 string: \"${inputNetwork}\". Expected format: tezos:<NetID>.`\n })\n }\n // Fast path: the active account is already on the requested network, so\n // it is trivially in-session — skip the account-store read.\n if (inputNetwork === activeAccount.network?.chainId) {\n return inputNetwork\n }\n const knownChainIds = await this.getSessionChainIds()\n // Tolerate pre-multi-network sessions with no recorded chain ids: such a\n // wallet (v2/v3) expects a Network object, not a bare CAIP-2 string it\n // cannot interpret, so return the active account's Network rather than the\n // string. (There is exactly one network in a session with no chain ids.)\n if (knownChainIds.length === 0) {\n return activeAccount.network || this.network\n }\n if (!knownChainIds.includes(inputNetwork)) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [inputNetwork],\n unsupportedNetworks: [inputNetwork]\n })\n }\n\n return inputNetwork\n }\n\n // No explicit network: a session spanning more than one chain is ambiguous.\n const sessionChainIds = await this.getSessionChainIds()\n if (sessionChainIds.length > 1) {\n throw new NetworksUnsupportedBeaconError({\n requestedNetworks: [],\n unsupportedNetworks: []\n })\n }\n\n return activeAccount.network || this.network\n }\n\n private async getPeer(account?: AccountInfo): Promise<PeerInfo | undefined> {\n let peer: PeerInfo | undefined\n\n if (account) {\n logger.log('getPeer', 'We have an account', account)\n const postMessagePeers: ExtendedPostMessagePairingResponse[] =\n (await this.postMessageTransport?.getPeers()) ?? []\n const p2pPeers: ExtendedP2PPairingResponse[] = (await this.p2pTransport?.getPeers()) ?? []\n const walletConnectPeers: ExtendedWalletConnectPairingResponse[] =\n (await this.walletConnectTransport?.getPeers()) ?? []\n const peers = [...postMessagePeers, ...p2pPeers, ...walletConnectPeers]\n\n logger.log('getPeer', 'Found peers', peers, account)\n\n peer = peers.find((peerEl) => peerEl.senderId === account.senderId)\n if (!peer) {\n // We could not find an exact match for a sender, so we most likely received it over a relay\n peer = peers.find((peerEl) => (peerEl as any).id === account.origin.id)\n }\n } else {\n peer = await this._activePeer.promise\n logger.log('getPeer', 'Active peer', peer)\n }\n\n // NB: getPeer() is a pure read used during session resumption, error\n // handling and wallet-info lookups, so it must not throw on an\n // under-minimum peer (that would wipe a resumed session or mask the real\n // wallet error). The version gate is enforced at the pairing response and\n // at request-send time instead — see assertWalletVersionMeetsMinimum.\n return peer\n }\n\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n\n // Maps each flat Tezos request type to its wrapped blockchainData\n // discriminator + scope (the pre-fork flat wire strings, kept verbatim;\n // mirrored by the wallet-side flat-output normalization).\n private static readonly FLAT_REQUEST_PAYLOAD_TYPES: Partial<\n Record<BeaconMessageType, { type: string; scope: string }>\n > = {\n [BeaconMessageType.OperationRequest]: { type: 'operation_request', scope: 'operation_request' },\n [BeaconMessageType.SignPayloadRequest]: { type: 'sign_payload_request', scope: 'sign' },\n [BeaconMessageType.BroadcastRequest]: { type: 'broadcast_request', scope: 'broadcast' },\n [BeaconMessageType.ProofOfEventChallengeRequest]: {\n type: 'proof_of_event_challenge_request',\n scope: 'proof_of_event'\n },\n [BeaconMessageType.SimulatedProofOfEventChallengeRequest]: {\n type: 'simulated_proof_of_event_challenge_request',\n scope: 'proof_of_event'\n }\n }\n\n // Wrapped Tezos response blockchainData discriminators → the flat\n // BeaconMessageType the request* methods (and integrators) consume.\n private static readonly TEZOS_PAYLOAD_TO_FLAT_TYPE: Record<string, BeaconMessageType> = {\n operation_response: BeaconMessageType.OperationResponse,\n sign_payload_response: BeaconMessageType.SignPayloadResponse,\n broadcast_response: BeaconMessageType.BroadcastResponse,\n proof_of_event_challenge_response: BeaconMessageType.ProofOfEventChallengeResponse,\n simulated_proof_of_event_challenge_response:\n BeaconMessageType.SimulatedProofOfEventChallengeResponse\n }\n\n private static readonly TEZOS_IDENTIFIERS: readonly string[] = ['tezos', 'xtz']\n\n // Build the wrapped Tezos wire message for a flat request input. The v4\n // multi-network `networks` field is stripped for peers negotiated below\n // v4 — a v3 peer must never see v4 payload fields.\n private wrapTezosRequest(\n flat: { type: BeaconMessageType } & Record<string, unknown>,\n envelope: { id: string; version: string; senderId: string },\n account?: AccountInfo\n ): BeaconMessageWrapper<BlockchainMessage> {\n if (flat.type === BeaconMessageType.PermissionRequest) {\n const blockchainData = { ...flat } as Record<string, unknown>\n delete blockchainData.type\n if (!isMultiNetworkVersion(envelope.version)) {\n delete blockchainData.networks\n }\n\n return wrapBeaconMessage(envelope, {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.PermissionRequest,\n blockchainData\n })\n }\n\n const payloadMeta = DAppClient.FLAT_REQUEST_PAYLOAD_TYPES[flat.type]\n if (!payloadMeta) {\n throw new Error(`Cannot send a \"${flat.type}\" message: not a Tezos request type`)\n }\n\n const payload = { ...flat } as Record<string, unknown>\n delete payload.type\n\n return wrapBeaconMessage(envelope, {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.BlockchainRequest,\n accountId: account?.accountIdentifier ?? '',\n blockchainData: {\n type: payloadMeta.type,\n scope: payloadMeta.scope,\n ...payload\n }\n })\n }\n\n // Normalize a wrapped Tezos wire message back to the flat shape the\n // pre-fork pipeline (request* methods, onNewAccount, integrator events)\n // consumes. Returns undefined for non-Tezos payloads, which keep the\n // wrapped pass-through of the generic permissionRequest/request API.\n private normalizeWrappedTezosMessage(\n wrapper: BeaconMessageWrapper<BeaconBaseMessage>\n ): BeaconMessage | undefined {\n const inner = wrapper.message as unknown as {\n type: BeaconMessageType\n blockchainIdentifier?: string\n blockchainData?: Record<string, unknown>\n error?: { type?: unknown; data?: unknown }\n description?: string\n }\n const envelope = { id: wrapper.id, version: wrapper.version, senderId: wrapper.senderId }\n\n // Chain-agnostic control messages.\n if (inner.type === BeaconMessageType.Acknowledge || inner.type === BeaconMessageType.Disconnect) {\n return { ...envelope, type: inner.type }\n }\n if (inner.type === BeaconMessageType.Error) {\n return {\n ...envelope,\n type: BeaconMessageType.Error,\n errorType: (inner.error?.type as BeaconErrorType) ?? BeaconErrorType.UNKNOWN_ERROR,\n errorData: inner.error?.data,\n description: inner.description\n }\n }\n\n if (\n inner.blockchainIdentifier === undefined ||\n !DAppClient.TEZOS_IDENTIFIERS.includes(inner.blockchainIdentifier)\n ) {\n return undefined\n }\n\n if (\n inner.type === BeaconMessageType.PermissionResponse ||\n inner.type === BeaconMessageType.ChangeAccountRequest\n ) {\n return { ...envelope, type: inner.type, ...(inner.blockchainData ?? {}) } as BeaconMessage\n }\n\n if (inner.type === BeaconMessageType.BlockchainResponse) {\n const payloadType = inner.blockchainData?.type\n const flatType =\n typeof payloadType === 'string'\n ? DAppClient.TEZOS_PAYLOAD_TO_FLAT_TYPE[payloadType]\n : undefined\n if (!flatType) {\n return undefined\n }\n const payload = { ...(inner.blockchainData ?? {}) }\n delete payload.type\n\n return { ...envelope, type: flatType, ...payload } as BeaconMessage\n }\n\n return undefined\n }\n\n private makeRequest<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse?: undefined | false,\n otherTabMessageId?: string\n ): Promise<{\n message: U\n connectionInfo: ConnectionContext\n }>\n private makeRequest<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse: true,\n otherTabMessageId?: string\n ): Promise<undefined>\n private async makeRequest<T extends BeaconRequestInputMessage>(\n requestInput: Optional<T, IgnoredRequestInputProperties>,\n skipResponse?: boolean,\n otherTabMessageId?: string\n ) {\n const messageId = otherTabMessageId ?? (await generateGUID())\n\n if (this._initPromise && this.isInitPending) {\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n this._initPromiseReject = undefined\n }\n await Promise.all([\n this.postMessageTransport?.disconnect(),\n this.walletConnectTransport?.disconnect()\n ])\n this._initPromise = undefined\n this.hideUI(['toast'])\n }\n\n logger.log('makeRequest', 'starting')\n this.isInitPending = true\n await this.init()\n this.isInitPending = false\n logger.log('makeRequest', 'after init')\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n if (!(await this.checkPermissions(requestInput.type))) {\n this.events.emit(BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError))\n\n throw new Error('No permissions to send this request to wallet!')\n }\n\n if (!this.beaconId) {\n throw await this.sendInternalError('octez.connect ID not defined')\n }\n\n const account = await this.getActiveAccount()\n\n const peer = await this.getPeer(account)\n\n // Enforce the dApp's required minimum before a request leaves the SDK.\n // No-op under the default (permissive) minimum; otherwise rejects an\n // under-minimum wallet with VersionUnsupportedBeaconError.\n this.assertWalletVersionMeetsMinimum(effectivePeerVersion(peer))\n\n // The wire dialect is negotiated per peer — min(effective peer version,\n // BEACON_VERSION), floor '2'. The effective version is capability-aware:\n // legacy wallets ECHO the dApp's version in their pairing response, so\n // peer.version alone would misread a 4.8.x wallet as v4; only peers that\n // sent the v5 `protocolVersion` marker are trusted. A wrapped-capable\n // peer receives the flat requestInput (the unchanged public shape)\n // mapped onto the wrapped Tezos payload; a legacy peer receives the flat\n // v2 message it has always spoken. Integrators never see either dialect.\n const negotiatedVersion = negotiateEnvelopeVersion(effectivePeerVersion(peer))\n const requestSenderId = await getSenderId(await this.beaconId)\n\n let request: BeaconMessageWrapper<BlockchainMessage> | BeaconMessage\n if (usesWrappedMessages(negotiatedVersion)) {\n const wrapped = this.wrapTezosRequest(\n requestInput,\n { id: messageId, version: negotiatedVersion, senderId: requestSenderId },\n account\n )\n await this.blockchains.get('tezos')?.validateRequest(wrapped.message)\n request = wrapped\n } else {\n request = {\n id: messageId,\n version: negotiatedVersion,\n senderId: requestSenderId,\n ...requestInput\n } as unknown as BeaconMessage\n }\n\n let exposed\n\n if (!skipResponse) {\n exposed = new ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(request.id, exposed)\n }\n\n const payload = await new Serializer(this.getPeerProtocolVersion(peer)).serialize(request)\n\n const walletInfo = await this.getWalletInfo(peer, account)\n\n logger.log('makeRequest', 'sending message', request)\n try {\n // Hook for performance measurement\n if ((window as any).__beaconPerf?.onBeforeSend) {\n (window as any).__beaconPerf.onBeforeSend()\n }\n ;(await this.transport).send(payload, peer)\n if (\n requestInput.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n } catch (sendError) {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n errorContext,\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: async () => {\n closeToast()\n this.disconnect()\n }\n }\n ]\n })\n )\n throw sendError\n }\n\n if (!otherTabMessageId) {\n this.events\n .emit(messageEvents[requestInput.type].sent, {\n walletInfo: {\n ...walletInfo,\n name: walletInfo.name ?? 'Wallet'\n },\n extraInfo: {\n resetCallback: async () => {\n this.disconnect()\n }\n }\n })\n .catch((emitError) => console.warn(emitError))\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed?.promise as any // TODO: fix type\n }\n\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private async makeRequestV3<\n T extends BlockchainMessage,\n U extends BeaconMessageWrapper<BlockchainMessage>\n >(\n requestInput: T,\n otherTabMessageId?: string\n ): Promise<{\n message: U\n connectionInfo: ConnectionContext\n }> {\n if (this._initPromise && this.isInitPending) {\n if (this._initPromiseReject) {\n this._initPromiseReject(new AbortedBeaconError())\n this._initPromiseReject = undefined\n }\n await Promise.all([\n this.postMessageTransport?.disconnect(),\n this.walletConnectTransport?.disconnect()\n ])\n this._initPromise = undefined\n this.hideUI(['toast'])\n }\n\n const messageId = otherTabMessageId ?? (await generateGUID())\n logger.log('makeRequest', 'starting')\n this.isInitPending = true\n await this.init(undefined, true)\n this.isInitPending = false\n logger.log('makeRequest', 'after init')\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n if (!this.beaconId) {\n throw await this.sendInternalError('octez.connect ID not defined')\n }\n\n const account = await this.getActiveAccount()\n\n const peer = await this.getPeer(account)\n\n // Enforce the dApp's required minimum before a request leaves the SDK.\n this.assertWalletVersionMeetsMinimum(effectivePeerVersion(peer))\n\n // The envelope carries the version negotiated against the effective\n // (capability-aware) peer version — see effectivePeerVersion: legacy\n // wallets echo the dApp's version, so only peers that sent the v5\n // `protocolVersion` marker are trusted with the v4 dialect. Unlike\n // makeRequest, this path is wrapper-only (the v3 blockchainData shape\n // has no flat equivalent), so it floors at '3' instead of '2': a legacy\n // wallet routes a version-'3' wrapper through its v3 branch, whereas a\n // '2'-stamped wrapper would be misrouted as flat and silently dropped.\n const negotiatedVersion = negotiateEnvelopeVersion(effectivePeerVersion(peer))\n const request: BeaconMessageWrapper<BlockchainMessage> = {\n id: messageId,\n version: usesWrappedMessages(negotiatedVersion)\n ? negotiatedVersion\n : String(MESSAGE_WRAPPED_FROM_VERSION),\n senderId: await getSenderId(await this.beaconId),\n message: requestInput\n }\n\n const exposed = new ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(request.id, exposed)\n\n const payload = await new Serializer(this.getPeerProtocolVersion(peer)).serialize(request)\n\n const walletInfo = await this.getWalletInfo(peer, account)\n\n logger.log('makeRequest', 'sending message', request)\n try {\n // Hook for performance measurement\n if ((window as any).__beaconPerf?.onBeforeSend) {\n (window as any).__beaconPerf.onBeforeSend()\n }\n ;(await this.transport).send(payload, peer)\n if (\n request.message.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n } catch (sendError) {\n const error = new UnknownBeaconError()\n await this.emitEventWithErrorContext(\n BeaconEvent.INTERNAL_ERROR,\n error,\n async (errorContext) => ({\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n errorContext,\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: async () => {\n closeToast()\n this.disconnect()\n }\n }\n ]\n })\n )\n throw sendError\n }\n\n const index = requestInput.type as any as BeaconMessageType\n\n this.events\n .emit(messageEvents[index].sent, {\n walletInfo: {\n ...walletInfo,\n name: walletInfo.name ?? 'Wallet'\n },\n extraInfo: {\n resetCallback: async () => {\n this.disconnect()\n }\n }\n })\n .catch((emitError) => console.warn(emitError))\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed.promise as any // TODO: fix type\n }\n\n private async makeRequestBC<T extends BeaconRequestInputMessage, U extends BeaconMessage>(\n request: Optional<T, IgnoredRequestInputProperties>\n ): Promise<\n | {\n message: U\n connectionInfo: ConnectionContext\n }\n | undefined\n > {\n if (!this._transport.isResolved()) {\n return\n }\n\n const transport = await this.transport\n\n if (transport.type !== TransportType.WALLETCONNECT) {\n return\n }\n\n if (await this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError))\n\n throw new Error('rate limit reached')\n }\n\n const id = await generateGUID()\n\n this.multiTabChannel.postMessage({\n type: request.type,\n data: request,\n id\n })\n\n if (\n request.type !== BeaconMessageType.PermissionRequest ||\n (this._activeAccount.isResolved() && (await this._activeAccount.promise))\n ) {\n this.tryToAppSwitch()\n }\n\n this.events\n .emit(messageEvents[BeaconMessageType.PermissionRequest].sent, {\n walletInfo: await this.getWalletInfo(),\n extraInfo: {\n resetCallback: () => this.disconnect()\n }\n })\n .catch((emitError) => console.warn(emitError))\n\n const exposed = new ExposedPromise<\n {\n message: U\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >()\n\n this.addOpenRequest(id, exposed as any)\n\n return exposed.promise\n }\n\n public async disconnect() {\n if (!this._transport.isResolved()) {\n throw new Error('No transport available.')\n }\n\n const transport = await this.transport\n\n if (transport.connectionStatus === TransportStatus.NOT_CONNECTED) {\n throw new Error('Not connected.')\n }\n\n await this.createStateSnapshot()\n this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'start'))\n\n const peers = await transport.getPeers()\n if (peers.length > 0) {\n const shouldNotifyPeers = !(transport instanceof WalletConnectTransport)\n await this.removeAllPeers(shouldNotifyPeers)\n }\n\n await this.clearActiveAccount()\n if (!(transport instanceof WalletConnectTransport)) {\n await transport.disconnect()\n }\n // The active transport is already disconnected above; this stops the\n // other one (a second disconnect is a no-op) and drops the instances.\n await this.dropTransports()\n\n await this.setTransport()\n this._initPromise = undefined\n this._initPromiseReject = undefined\n this.isInitPending = false\n this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'success'))\n }\n\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest(\n id: string,\n promise: ExposedPromise<\n {\n message: BeaconMessage | BeaconMessageWrapper<BeaconBaseMessage>\n connectionInfo: ConnectionContext\n },\n ErrorResponse\n >\n ): void {\n logger.log('addOpenRequest', this.name, `adding request ${id} and waiting for answer`)\n this.openRequests.set(id, promise)\n }\n\n private async sendNotificationWithAccessToken(notification: {\n url: string\n recipient: string\n title: string\n body: string\n payload: string\n protocolIdentifier: string\n accessToken: string\n }): Promise<string> {\n const { url, recipient, title, body, payload, protocolIdentifier, accessToken } = notification\n const timestamp = new Date().toISOString()\n\n const keypair = await this.keyPair\n\n const rawPublicKey = keypair.publicKey\n\n const prefix = Buffer.from(new Uint8Array([13, 15, 37, 217]))\n\n const publicKey = bs58check.encode(Buffer.concat([prefix, Buffer.from(rawPublicKey)]))\n\n const constructedString = [\n 'Tezos Signed Message: ',\n recipient,\n title,\n body,\n timestamp,\n payload\n ].join(' ')\n\n const bytes = toHex(constructedString)\n const payloadBytes = `05` + `01${ bytes.length.toString(16).padStart(8, '0') }${bytes}`\n\n const signature = await signMessage(payloadBytes, {\n secretKey: Buffer.from(keypair.secretKey)\n })\n\n const notificationResponse = await fetch(`${url}/send`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n recipient,\n title,\n body,\n timestamp,\n payload,\n accessToken,\n protocolIdentifier,\n sender: {\n name: this.name,\n publicKey,\n signature\n }\n })\n })\n\n if (!notificationResponse.ok) {\n throw new Error(\n `sendNotification failed: ${notificationResponse.status} ${notificationResponse.statusText}`\n )\n }\n\n return notificationResponse.json()\n }\n\n // Delegate the per-network unpacking to the Tezos blockchain plug-in (the\n // single owner of the v4 fanout shape) and enrich each returned record with\n // the envelope-level AccountInfo metadata that the parser doesn't see.\n private async buildAccountInfosFromV4Fanout(\n message: PermissionResponse,\n fanout: PermissionResponseAccounts,\n peerVersion: string,\n connectionInfo: ConnectionContext\n ): Promise<AccountInfo[]> {\n // Keyed by the CAIP-2 namespace `'tezos'`, which is also the wire-format\n // `blockchainIdentifier` carried by PermissionRequestV3/Response. The\n // dApp must have registered `new TezosBlockchain()` via `addBlockchain`\n // before requesting permissions on the v4 path.\n const tezosBlockchain = this.blockchains.get('tezos')\n if (!tezosBlockchain) {\n throw new Error('Tezos blockchain handler is required to parse v4 permission responses')\n }\n\n // Normalize the legacy `pubkey`/`pubKey` aliases and prefix any raw key\n // before handing the fanout to the parser. The parser keeps publicKey\n // strings verbatim, so prefixing here keeps stored records canonical.\n const envelopePublicKey =\n message.publicKey ?? (message as { pubkey?: string }).pubkey\n const prefixedEnvelopePk = envelopePublicKey ? prefixPublicKey(envelopePublicKey) : undefined\n const prefixedFanout = Object.fromEntries(\n Object.entries(fanout).map(([cid, raw]) => [\n cid,\n { ...raw, publicKey: raw?.publicKey ? prefixPublicKey(raw.publicKey) : undefined }\n ])\n )\n const synthesizedResponse = {\n blockchainIdentifier: 'tezos',\n type: BeaconMessageType.PermissionResponse,\n blockchainData: {\n ...message,\n publicKey: prefixedEnvelopePk,\n accounts: prefixedFanout\n }\n } as unknown as PermissionResponseV3<'tezos'>\n\n const partials = await tezosBlockchain.getAccountInfosFromPermissionResponse(\n synthesizedResponse,\n peerVersion\n )\n\n const walletKey = (await this.storage.get(StorageKey.LAST_SELECTED_WALLET))?.key\n\n return Promise.all(\n partials.map(async (p) => {\n if (!p.publicKey && !p.address) {\n throw new Error('PublicKey or Address must be defined for multi-network account')\n }\n const address: string = p.address || (await getAddressFromPublicKey(p.publicKey))\n // The parser keys by the address it saw; re-derive accountId if we\n // synthesized the address from a publicKey above.\n const accountIdentifier =\n p.address || !p.network ? p.accountId : await getAccountIdentifier(address, p.network)\n\n return {\n accountIdentifier,\n senderId: message.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n walletKey,\n address,\n publicKey: p.publicKey || undefined,\n // The v4 fanout parser always sets a Network (networkFromTezosCaip2);\n // the `?? this.network` fallback keeps the type `Network` (required by\n // AccountInfo) without an `as AccountInfo` assertion.\n network: p.network ?? this.network,\n scopes: message.scopes,\n threshold: message.threshold,\n notification: message.notification,\n connectedAt: new Date().getTime(),\n walletType: message.walletType ?? 'implicit',\n verificationType: message.verificationType,\n ...(message.verificationType === 'proof_of_event'\n ? { hasVerifiedChallenge: false }\n : {})\n }\n })\n )\n }\n\n /**\n * Is this message from the wallet behind the active account? Over P2P the\n * senderId is already bound to the decrypting key (see handleResponse).\n */\n private async isActiveWallet(\n senderId: string,\n connectionInfo: ConnectionContext\n ): Promise<boolean> {\n if (connectionInfo.origin === Origin.WALLETCONNECT) {\n return true\n }\n await this.activeAccountLoaded\n const active = await this.getActiveAccount()\n\n return Boolean(\n active &&\n active.senderId === senderId &&\n active.origin.type === connectionInfo.origin &&\n active.origin.id === connectionInfo.id\n )\n }\n\n /** Is this message from a wallet we are paired with on this connection? */\n private async isPairedWallet(\n senderId: string,\n connectionInfo: ConnectionContext\n ): Promise<boolean> {\n if (connectionInfo.origin === Origin.P2P) {\n const peers = (await this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP)) ?? []\n\n return peers.some((peer) => peer.publicKey === connectionInfo.id)\n }\n if (connectionInfo.origin === Origin.EXTENSION) {\n const peers = (await this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP)) ?? []\n for (const peer of peers) {\n if (\n (peer as ExtendedPostMessagePairingResponse).extensionId === connectionInfo.id &&\n (await getSenderId(peer.publicKey)) === senderId\n ) {\n return true\n }\n }\n\n return false\n }\n\n return true // WalletConnect: unchanged, see isActiveWallet\n }\n\n /**\n * A wallet-initiated disconnect. Strangers are ignored; a saved but inactive\n * wallet only removes its own records; only the active wallet (or any paired\n * wallet when no account is active) ends the session.\n */\n private async onUnsolicitedDisconnect(\n senderId: string,\n connectionInfo: ConnectionContext,\n handleDisconnect: (end?: boolean) => Promise<void>\n ): Promise<void> {\n if (!(await this.isPairedWallet(senderId, connectionInfo))) {\n logger.warn('handleResponse', 'ignoring disconnect from an unknown wallet')\n\n return\n }\n await this.activeAccountLoaded\n const active = await this.getActiveAccount()\n const endSession = !active || (await this.isActiveWallet(senderId, connectionInfo))\n await handleDisconnect(endSession)\n }\n\n private async onNewAccount(\n message: PermissionResponse | ChangeAccountRequest,\n connectionInfo: ConnectionContext\n ): Promise<AccountInfo> {\n // TODO: Migration code. Remove sometime after 1.0.0 release.\n const tempPK: string | undefined =\n message.publicKey || (message as any).pubkey || (message as any).pubKey\n\n const publicKey = tempPK ? prefixPublicKey(tempPK) : undefined\n\n if (!publicKey && !message.address) {\n throw new Error('PublicKey or Address must be defined')\n }\n\n const address = message.address ?? (await getAddressFromPublicKey(publicKey!))\n\n if (\n connectionInfo.origin !== Origin.WALLETCONNECT &&\n publicKey &&\n message.address &&\n message.walletType !== 'abstracted_account'\n ) {\n const derived = await getAddressFromPublicKey(publicKey).catch(() => undefined)\n if (derived && derived !== message.address) {\n throw new Error(`Address \"${message.address}\" does not match its public key`)\n }\n }\n\n if (!isValidAddress(address)) {\n throw new Error(`Invalid address: \"${address}\"`)\n }\n\n if (\n message.walletType === 'abstracted_account' &&\n address.substring(0, 3) !== CONTRACT_PREFIX\n ) {\n throw new Error(\n `Invalid abstracted account address \"${address}\", it should be a ${CONTRACT_PREFIX} address`\n )\n }\n\n logger.log('######## MESSAGE #######')\n logger.log('onNewAccount', message)\n\n const walletKey = (await this.storage.get(StorageKey.LAST_SELECTED_WALLET))?.key\n\n const accountInfo: AccountInfo = {\n accountIdentifier: await getAccountIdentifier(address, message.network),\n senderId: message.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n walletKey,\n address,\n publicKey,\n network: message.network,\n scopes: message.scopes,\n threshold: message.threshold,\n notification: message.notification,\n connectedAt: new Date().getTime(),\n walletType: message.walletType ?? 'implicit',\n verificationType: message.verificationType,\n ...(message.verificationType === 'proof_of_event' ? { hasVerifiedChallenge: false } : {})\n }\n\n logger.log('accountInfo', '######## ACCOUNT INFO #######')\n\n logger.log('accountInfo', accountInfo)\n\n await this.accountManager.addAccount(accountInfo)\n await this.setActiveAccount(accountInfo)\n\n return accountInfo\n }\n}\n"]}