@dynamic-labs-sdk/evm 0.17.4 → 0.18.1

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.
Files changed (130) hide show
  1. package/dist/{addEIP6963Extension-CD8PB9vi.esm.js → addEIP6963Extension-Br6ZiSEI.esm.js} +6 -3
  2. package/dist/addEIP6963Extension-Br6ZiSEI.esm.js.map +1 -0
  3. package/dist/{addEIP6963Extension-yuzVkmVM.cjs.js → addEIP6963Extension-DzcY7ejH.cjs.js} +6 -3
  4. package/dist/addEIP6963Extension-DzcY7ejH.cjs.js.map +1 -0
  5. package/dist/addEvmExtension/addEvmExtension.d.ts +1 -0
  6. package/dist/addEvmExtension/addEvmExtension.d.ts.map +1 -1
  7. package/dist/{addWaasEvmExtension-C1cEqv6_.cjs.js → addWaasEvmExtension-CL2ywGX8.cjs.js} +8 -3
  8. package/dist/addWaasEvmExtension-CL2ywGX8.cjs.js.map +1 -0
  9. package/dist/{addWaasEvmExtension-COCMEAU3.esm.js → addWaasEvmExtension-D6qMFAo8.esm.js} +8 -3
  10. package/dist/addWaasEvmExtension-D6qMFAo8.esm.js.map +1 -0
  11. package/dist/{createPublicClientFromNetworkData-NULUxvL0.esm.js → createPublicClientFromNetworkData-CGVIi2Nq.esm.js} +8 -2
  12. package/dist/createPublicClientFromNetworkData-CGVIi2Nq.esm.js.map +1 -0
  13. package/dist/{createPublicClientFromNetworkData-DKVUN8kD.cjs.js → createPublicClientFromNetworkData-cp_7RRJx.cjs.js} +8 -2
  14. package/dist/createPublicClientFromNetworkData-cp_7RRJx.cjs.js.map +1 -0
  15. package/dist/{createWalletProviderFromEIP1193Provider-DpcfeFE8.esm.js → createWalletProviderFromEIP1193Provider-BgcGrxk7.esm.js} +7 -2
  16. package/dist/createWalletProviderFromEIP1193Provider-BgcGrxk7.esm.js.map +1 -0
  17. package/dist/{createWalletProviderFromEIP1193Provider-Bg0SqdhL.cjs.js → createWalletProviderFromEIP1193Provider-CJIcb5NA.cjs.js} +7 -2
  18. package/dist/createWalletProviderFromEIP1193Provider-CJIcb5NA.cjs.js.map +1 -0
  19. package/dist/eip6963/addEIP6963Extension/addEIP6963Extension.d.ts +1 -0
  20. package/dist/eip6963/addEIP6963Extension/addEIP6963Extension.d.ts.map +1 -1
  21. package/dist/eip6963/utils/isEip6963Event/isEip6963Event.d.ts +1 -0
  22. package/dist/eip6963/utils/isEip6963Event/isEip6963Event.d.ts.map +1 -1
  23. package/dist/eip6963/utils/listenForEIP6963ProviderAnnouncement/listenForEIP6963ProviderAnnouncement.d.ts +1 -0
  24. package/dist/eip6963/utils/listenForEIP6963ProviderAnnouncement/listenForEIP6963ProviderAnnouncement.d.ts.map +1 -1
  25. package/dist/eip6963.cjs.js +4 -4
  26. package/dist/eip6963.esm.js +4 -4
  27. package/dist/{evmTransferAmount-DyQj-Gwj.cjs.js → evmTransferAmount-4ZqkuDtv.cjs.js} +11 -2
  28. package/dist/evmTransferAmount-4ZqkuDtv.cjs.js.map +1 -0
  29. package/dist/{evmTransferAmount-CcIvZpBS.esm.js → evmTransferAmount-sxW-dlbH.esm.js} +11 -2
  30. package/dist/evmTransferAmount-sxW-dlbH.esm.js.map +1 -0
  31. package/dist/index.cjs.js +9 -5
  32. package/dist/index.cjs.js.map +1 -1
  33. package/dist/index.esm.js +9 -5
  34. package/dist/index.esm.js.map +1 -1
  35. package/dist/isEvmNetworkProvider/isEvmNetworkProvider.d.ts +1 -0
  36. package/dist/isEvmNetworkProvider/isEvmNetworkProvider.d.ts.map +1 -1
  37. package/dist/isEvmWalletProvider/isEvmWalletProvider.d.ts +1 -0
  38. package/dist/isEvmWalletProvider/isEvmWalletProvider.d.ts.map +1 -1
  39. package/dist/registerEvmNetworkProviderBuilder/registerEvmNetworkProviderBuilder.d.ts +1 -0
  40. package/dist/registerEvmNetworkProviderBuilder/registerEvmNetworkProviderBuilder.d.ts.map +1 -1
  41. package/dist/simulateEvmTransaction/simulateEvmTransaction.d.ts +1 -0
  42. package/dist/simulateEvmTransaction/simulateEvmTransaction.d.ts.map +1 -1
  43. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  44. package/dist/utils/approveErc20/approveErc20.d.ts +1 -0
  45. package/dist/utils/approveErc20/approveErc20.d.ts.map +1 -1
  46. package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts +1 -0
  47. package/dist/utils/approveErc20IfRequiredAndWaitReceipt/approveErc20IfRequiredAndWaitReceipt.d.ts.map +1 -1
  48. package/dist/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.d.ts +1 -0
  49. package/dist/utils/calculateEvmTransactionFee/calculateEvmTransactionFee.d.ts.map +1 -1
  50. package/dist/utils/createEvmNetworkProvider/createEvmNetworkProvider.d.ts +1 -0
  51. package/dist/utils/createEvmNetworkProvider/createEvmNetworkProvider.d.ts.map +1 -1
  52. package/dist/utils/createWalletProviderFromEIP1193Provider/addNetwork/addNetwork.d.ts +1 -0
  53. package/dist/utils/createWalletProviderFromEIP1193Provider/addNetwork/addNetwork.d.ts.map +1 -1
  54. package/dist/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.d.ts +1 -0
  55. package/dist/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.d.ts.map +1 -1
  56. package/dist/utils/createWalletProviderFromEIP1193Provider/getActiveNetworkId/getActiveNetworkId.d.ts +1 -0
  57. package/dist/utils/createWalletProviderFromEIP1193Provider/getActiveNetworkId/getActiveNetworkId.d.ts.map +1 -1
  58. package/dist/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.d.ts +1 -0
  59. package/dist/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.d.ts.map +1 -1
  60. package/dist/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.d.ts +1 -0
  61. package/dist/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.d.ts.map +1 -1
  62. package/dist/utils/evmExecuteCheckoutTransaction/evmExecuteCheckoutTransaction.d.ts +1 -0
  63. package/dist/utils/evmExecuteCheckoutTransaction/evmExecuteCheckoutTransaction.d.ts.map +1 -1
  64. package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts +1 -0
  65. package/dist/utils/evmTransferAmount/evmTransferAmount.d.ts.map +1 -1
  66. package/dist/utils/fetchEvmBalance/fetchEvmBalance.d.ts +1 -0
  67. package/dist/utils/fetchEvmBalance/fetchEvmBalance.d.ts.map +1 -1
  68. package/dist/utils/getErc20Allowance/getErc20Allowance.d.ts +1 -0
  69. package/dist/utils/getErc20Allowance/getErc20Allowance.d.ts.map +1 -1
  70. package/dist/utils/isEIP1193Provider/isEIP1193Provider.d.ts +1 -0
  71. package/dist/utils/isEIP1193Provider/isEIP1193Provider.d.ts.map +1 -1
  72. package/dist/utils/isEvmWalletAccount/isEvmWalletAccount.d.ts +1 -0
  73. package/dist/utils/isEvmWalletAccount/isEvmWalletAccount.d.ts.map +1 -1
  74. package/dist/viem/createPublicClientFromNetworkData/createPublicClientFromNetworkData.d.ts +1 -0
  75. package/dist/viem/createPublicClientFromNetworkData/createPublicClientFromNetworkData.d.ts.map +1 -1
  76. package/dist/viem/createWalletClientForWalletAccount/createWalletClientForWalletAccount.d.ts +1 -0
  77. package/dist/viem/createWalletClientForWalletAccount/createWalletClientForWalletAccount.d.ts.map +1 -1
  78. package/dist/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.d.ts +1 -0
  79. package/dist/viem/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.d.ts.map +1 -1
  80. package/dist/viem/utils/walletProviderHasCustomWalletClient/isEvmWalletProviderWithCustomViemClient.d.ts +1 -0
  81. package/dist/viem/utils/walletProviderHasCustomWalletClient/isEvmWalletProviderWithCustomViemClient.d.ts.map +1 -1
  82. package/dist/viem.cjs.js +1 -1
  83. package/dist/viem.esm.js +1 -1
  84. package/dist/waas/addWaasEvmExtension/addWaasEvmExtension.d.ts +1 -0
  85. package/dist/waas/addWaasEvmExtension/addWaasEvmExtension.d.ts.map +1 -1
  86. package/dist/waas/utils/createWalletProviderForWaasEvm/createViemWalletClientForWaas/createViemWalletClientForWaas.d.ts +1 -0
  87. package/dist/waas/utils/createWalletProviderForWaasEvm/createViemWalletClientForWaas/createViemWalletClientForWaas.d.ts.map +1 -1
  88. package/dist/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.d.ts +1 -0
  89. package/dist/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.d.ts.map +1 -1
  90. package/dist/waas/utils/createWalletProviderForWaasEvm/signAuthorization/signAuthorization.d.ts +1 -0
  91. package/dist/waas/utils/createWalletProviderForWaasEvm/signAuthorization/signAuthorization.d.ts.map +1 -1
  92. package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts +1 -0
  93. package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts.map +1 -1
  94. package/dist/waas.cjs.js +3 -3
  95. package/dist/waas.esm.js +3 -3
  96. package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts +1 -0
  97. package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
  98. package/dist/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.d.ts +1 -0
  99. package/dist/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.d.ts.map +1 -1
  100. package/dist/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.d.ts +1 -0
  101. package/dist/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.d.ts.map +1 -1
  102. package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts +1 -0
  103. package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts.map +1 -1
  104. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts +1 -0
  105. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts.map +1 -1
  106. package/dist/walletConnect.cjs.js +7 -2
  107. package/dist/walletConnect.cjs.js.map +1 -1
  108. package/dist/walletConnect.esm.js +7 -2
  109. package/dist/walletConnect.esm.js.map +1 -1
  110. package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts +1 -0
  111. package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts.map +1 -1
  112. package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts +1 -0
  113. package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts.map +1 -1
  114. package/dist/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.d.ts +1 -0
  115. package/dist/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.d.ts.map +1 -1
  116. package/dist/windowInjected.cjs.js +6 -3
  117. package/dist/windowInjected.cjs.js.map +1 -1
  118. package/dist/windowInjected.esm.js +6 -3
  119. package/dist/windowInjected.esm.js.map +1 -1
  120. package/package.json +7 -7
  121. package/dist/addEIP6963Extension-CD8PB9vi.esm.js.map +0 -1
  122. package/dist/addEIP6963Extension-yuzVkmVM.cjs.js.map +0 -1
  123. package/dist/addWaasEvmExtension-C1cEqv6_.cjs.js.map +0 -1
  124. package/dist/addWaasEvmExtension-COCMEAU3.esm.js.map +0 -1
  125. package/dist/createPublicClientFromNetworkData-DKVUN8kD.cjs.js.map +0 -1
  126. package/dist/createPublicClientFromNetworkData-NULUxvL0.esm.js.map +0 -1
  127. package/dist/createWalletProviderFromEIP1193Provider-Bg0SqdhL.cjs.js.map +0 -1
  128. package/dist/createWalletProviderFromEIP1193Provider-DpcfeFE8.esm.js.map +0 -1
  129. package/dist/evmTransferAmount-CcIvZpBS.esm.js.map +0 -1
  130. package/dist/evmTransferAmount-DyQj-Gwj.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnect.cjs.js","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","terminate: WalletConnectEvmWalletProvider['terminate']","evmExecuteCheckoutTransaction","evmTransferAmount","WalletProviderPriority","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport { evmExecuteCheckoutTransaction } from '../../utils/evmExecuteCheckoutTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n evmExecuteCheckoutTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"walletConnect.cjs.js","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","terminate: WalletConnectEvmWalletProvider['terminate']","evmExecuteCheckoutTransaction","evmTransferAmount","WalletProviderPriority","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport { evmExecuteCheckoutTransaction } from '../../utils/evmExecuteCheckoutTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @not-instrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n evmExecuteCheckoutTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @not-instrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @not-instrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @not-instrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @not-instrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { a as version, i as name } from "./createPublicClientFromNetworkData-NULUxvL0.esm.js";
2
- import { i as registerEvmNetworkProviderBuilder, n as evmExecuteCheckoutTransaction, t as evmTransferAmount } from "./evmTransferAmount-CcIvZpBS.esm.js";
1
+ import { a as version, i as name } from "./createPublicClientFromNetworkData-CGVIi2Nq.esm.js";
2
+ import { i as registerEvmNetworkProviderBuilder, n as evmExecuteCheckoutTransaction, t as evmTransferAmount } from "./evmTransferAmount-sxW-dlbH.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { CHAINS_INFO_MAP, WalletProviderPriority, assertDefined, createSignInMessageStatement, emitEvent, filterDuplicates, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getCore, getDefaultClient, getNonce, getWalletProviderRegistry, registerExtension, switchActiveNetworkInLastKnownRegistry, waitForProjectSettings } from "@dynamic-labs-sdk/client/core";
5
5
  import { getDefaultClient as getDefaultClient$1, hasExtension as hasExtension$1 } from "@dynamic-labs-sdk/client";
@@ -19,6 +19,7 @@ const methodsThatRequireUserAction = [
19
19
  "eth_sendTransaction",
20
20
  "eth_signTypedData_v4"
21
21
  ];
22
+ /** @not-instrumented */
22
23
  const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) => {
23
24
  const signClient = await getSignClient(client);
24
25
  const getSession = () => {
@@ -133,6 +134,7 @@ const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) =
133
134
 
134
135
  //#endregion
135
136
  //#region src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts
137
+ /** @not-instrumented */
136
138
  const recoverEvmWalletConnectWalletProviders = async (client) => {
137
139
  await waitForProjectSettings(client);
138
140
  /**
@@ -154,6 +156,7 @@ const recoverEvmWalletConnectWalletProviders = async (client) => {
154
156
  //#endregion
155
157
  //#region src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts
156
158
  const WALLET_CONNECT_EVM_EXTENSION_KEY = "walletConnectEvm";
159
+ /** @not-instrumented */
157
160
  const addWalletConnectEvmExtension = async (client = getDefaultClient$1()) => {
158
161
  if (hasExtension$1({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)) return;
159
162
  registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);
@@ -210,6 +213,7 @@ const evmMethods = [
210
213
  * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)
211
214
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
212
215
  * @returns A promise that resolves to the connected and verified wallet account.
216
+ * @not-instrumented
213
217
  */
214
218
  const connectAndVerifyWithWalletConnectEvm = async (client = getDefaultClient()) => {
215
219
  const signClient = await getSignClient(client);
@@ -271,6 +275,7 @@ const connectAndVerifyWithWalletConnectEvm = async (client = getDefaultClient())
271
275
 
272
276
  //#endregion
273
277
  //#region src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts
278
+ /** @not-instrumented */
274
279
  const connectWithWalletConnectEvm = async ({ addToDynamicWalletAccounts = true } = {}, client = getDefaultClient$1()) => {
275
280
  const signClient = await getSignClient(client);
276
281
  assertDefined(client.projectSettings, "Project settings unavailable");
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnect.esm.js","names":["methodsThatRequireUserAction: string[]","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","viemGetAddress","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","terminate: WalletConnectEvmWalletProvider['terminate']","getDefaultClient","hasExtension","getDefaultClient","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport { evmExecuteCheckoutTransaction } from '../../utils/evmExecuteCheckoutTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n evmExecuteCheckoutTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"walletConnect.esm.js","names":["methodsThatRequireUserAction: string[]","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","viemGetAddress","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","terminate: WalletConnectEvmWalletProvider['terminate']","getDefaultClient","hasExtension","getDefaultClient","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport { evmExecuteCheckoutTransaction } from '../../utils/evmExecuteCheckoutTransaction';\nimport { evmTransferAmount } from '../../utils/evmTransferAmount';\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\n/** @not-instrumented */\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n executeCheckoutTransaction: (args) =>\n evmExecuteCheckoutTransaction(args, client),\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => evmTransferAmount(args, client),\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/** @not-instrumented */\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n const currentTime = Math.floor(Date.now() / 1000);\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n if (session.expiry <= currentTime) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\n/** @not-instrumented */\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n getNonce,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n * @not-instrumented\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const nonce = await getNonce(client);\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/** @not-instrumented */\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
@@ -16,6 +16,7 @@ export declare const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
16
16
  * providers, so if a wallet supports both, the EIP-6963 version will be used.
17
17
  *
18
18
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
19
+ * @not-instrumented
19
20
  */
20
21
  export declare const addEvmWindowInjectedExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
21
22
  //# sourceMappingURL=addEvmWindowInjectedExtension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addEvmWindowInjectedExtension.d.ts","sourceRoot":"","sources":["../../../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAErE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,6BAA6B,qEAkCzC,CAAC"}
1
+ {"version":3,"file":"addEvmWindowInjectedExtension.d.ts","sourceRoot":"","sources":["../../../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,6BAA6B,qEAkCzC,CAAC"}
@@ -14,6 +14,7 @@ type DetectEvmWalletFromProviderParams = {
14
14
  *
15
15
  * @param params.provider - The EIP-1193 provider to detect
16
16
  * @returns Detection result with displayName and icon, or null if unknown
17
+ * @not-instrumented
17
18
  */
18
19
  export declare const detectEvmWalletFromProvider: ({ provider, }: DetectEvmWalletFromProviderParams) => EvmWalletDetectionResult | null;
19
20
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"detectEvmWalletFromProvider.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAIpC,KAAK,iCAAiC,GAAG;IACvC,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAKF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,kBAErC,iCAAiC,KAAG,wBAAwB,GAAG,IAwEjE,CAAC"}
1
+ {"version":3,"file":"detectEvmWalletFromProvider.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAIpC,KAAK,iCAAiC,GAAG;IACvC,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAKF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,2BAA2B,kBAErC,iCAAiC,KAAG,wBAAwB,GAAG,IAwEjE,CAAC"}
@@ -10,6 +10,7 @@ import type { EIP1193Provider } from '../../../EvmWalletProvider.types';
10
10
  * window.ethereum rather than announcing via EIP-6963.
11
11
  *
12
12
  * @returns Array of all detected EIP-1193 providers
13
+ * @not-instrumented
13
14
  */
14
15
  export declare const getEvmInjectedProviders: () => EIP1193Provider[];
15
16
  //# sourceMappingURL=getEvmInjectedProviders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEvmInjectedProviders.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAKxE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,eAAe,EAOzD,CAAC"}
1
+ {"version":3,"file":"getEvmInjectedProviders.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAKxE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,QAAO,eAAe,EAOzD,CAAC"}
@@ -1,6 +1,6 @@
1
- const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-DKVUN8kD.cjs.js');
2
- const require_evmTransferAmount = require('./evmTransferAmount-DyQj-Gwj.cjs.js');
3
- const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-Bg0SqdhL.cjs.js');
1
+ const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-cp_7RRJx.cjs.js');
2
+ const require_evmTransferAmount = require('./evmTransferAmount-4ZqkuDtv.cjs.js');
3
+ const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-CJIcb5NA.cjs.js');
4
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
5
5
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
6
6
 
@@ -17,6 +17,7 @@ const getSpriteIcon = (name$1) => `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONI
17
17
  *
18
18
  * @param params.provider - The EIP-1193 provider to detect
19
19
  * @returns Detection result with displayName and icon, or null if unknown
20
+ * @not-instrumented
20
21
  */
21
22
  const detectEvmWalletFromProvider = ({ provider }) => {
22
23
  const p = provider;
@@ -73,6 +74,7 @@ const EVM_PROVIDER_LOCATOR = "ethereum";
73
74
  * window.ethereum rather than announcing via EIP-6963.
74
75
  *
75
76
  * @returns Array of all detected EIP-1193 providers
77
+ * @not-instrumented
76
78
  */
77
79
  const getEvmInjectedProviders = () => {
78
80
  return (0, _dynamic_labs_sdk_client_core.getAllProvidersFromWindow)(EVM_PROVIDER_LOCATOR).filter(isEIP1193Provider);
@@ -102,6 +104,7 @@ const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
102
104
  * providers, so if a wallet supports both, the EIP-6963 version will be used.
103
105
  *
104
106
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
107
+ * @not-instrumented
105
108
  */
106
109
  const addEvmWindowInjectedExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
107
110
  if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)) return;
@@ -1 +1 @@
1
- {"version":3,"file":"windowInjected.cjs.js","names":["DYNAMIC_ICONIC_SPRITE_URL","name","createWalletProviderFromEIP1193Provider","WalletProviderPriority","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAGA,wDAA0B,GAAGC;;;;;;;;;;;;;AAclC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;ACjGT,MAAM,uBAAuB;;;;;;;;;;;;;AAc7B,MAAa,gCAAmD;AAM9D,qEAJE,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACvB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;AAoBjD,MAAa,iCAAiC,8DAA2B,KAAK;AAC5E,qDACe,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,sDAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,6DAAkC,OAAO;CAEzC,MAAM,sFAAmD,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiBC,wFACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;mEC1CiBC,gDAAaC,kDAAe"}
1
+ {"version":3,"file":"windowInjected.cjs.js","names":["DYNAMIC_ICONIC_SPRITE_URL","name","createWalletProviderFromEIP1193Provider","WalletProviderPriority","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n * @not-instrumented\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n * @not-instrumented\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAGA,wDAA0B,GAAGC;;;;;;;;;;;;;;AAelC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;AClGT,MAAM,uBAAuB;;;;;;;;;;;;;;AAe7B,MAAa,gCAAmD;AAM9D,qEAJE,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACxB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;;AAqBjD,MAAa,iCAAiC,8DAA2B,KAAK;AAC5E,qDACe,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,sDAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,6DAAkC,OAAO;CAEzC,MAAM,sFAAmD,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiBC,wFACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;mEC3CiBC,gDAAaC,kDAAe"}
@@ -1,6 +1,6 @@
1
- import { a as version, i as name } from "./createPublicClientFromNetworkData-NULUxvL0.esm.js";
2
- import { i as registerEvmNetworkProviderBuilder } from "./evmTransferAmount-CcIvZpBS.esm.js";
3
- import { t as createWalletProviderFromEIP1193Provider } from "./createWalletProviderFromEIP1193Provider-DpcfeFE8.esm.js";
1
+ import { a as version, i as name } from "./createPublicClientFromNetworkData-CGVIi2Nq.esm.js";
2
+ import { i as registerEvmNetworkProviderBuilder } from "./evmTransferAmount-sxW-dlbH.esm.js";
3
+ import { t as createWalletProviderFromEIP1193Provider } from "./createWalletProviderFromEIP1193Provider-BgcGrxk7.esm.js";
4
4
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
5
5
  import { DYNAMIC_ICONIC_SPRITE_URL, WalletProviderPriority, getAllProvidersFromWindow, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension } from "@dynamic-labs-sdk/client/core";
6
6
 
@@ -17,6 +17,7 @@ const getSpriteIcon = (name$1) => `${DYNAMIC_ICONIC_SPRITE_URL}#${name$1}`;
17
17
  *
18
18
  * @param params.provider - The EIP-1193 provider to detect
19
19
  * @returns Detection result with displayName and icon, or null if unknown
20
+ * @not-instrumented
20
21
  */
21
22
  const detectEvmWalletFromProvider = ({ provider }) => {
22
23
  const p = provider;
@@ -73,6 +74,7 @@ const EVM_PROVIDER_LOCATOR = "ethereum";
73
74
  * window.ethereum rather than announcing via EIP-6963.
74
75
  *
75
76
  * @returns Array of all detected EIP-1193 providers
77
+ * @not-instrumented
76
78
  */
77
79
  const getEvmInjectedProviders = () => {
78
80
  return getAllProvidersFromWindow(EVM_PROVIDER_LOCATOR).filter(isEIP1193Provider);
@@ -102,6 +104,7 @@ const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
102
104
  * providers, so if a wallet supports both, the EIP-6963 version will be used.
103
105
  *
104
106
  * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
107
+ * @not-instrumented
105
108
  */
106
109
  const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {
107
110
  if (hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)) return;
@@ -1 +1 @@
1
- {"version":3,"file":"windowInjected.esm.js","names":["name","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAG,0BAA0B,GAAGA;;;;;;;;;;;;;AAclC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;ACjGT,MAAM,uBAAuB;;;;;;;;;;;;;AAc7B,MAAa,gCAAmD;AAM9D,QALkB,0BAChB,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACvB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;AAoBjD,MAAa,iCAAiC,SAAS,kBAAkB,KAAK;AAC5E,KACE,aAAa,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,mBAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiB,wCACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAU,uBAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;AC1CJ,qBAAqBC,MAAaC,QAAe"}
1
+ {"version":3,"file":"windowInjected.esm.js","names":["name","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n * @not-instrumented\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n * @not-instrumented\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @not-instrumented\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAG,0BAA0B,GAAGA;;;;;;;;;;;;;;AAelC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;AClGT,MAAM,uBAAuB;;;;;;;;;;;;;;AAe7B,MAAa,gCAAmD;AAM9D,QALkB,0BAChB,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACxB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;;AAqBjD,MAAa,iCAAiC,SAAS,kBAAkB,KAAK;AAC5E,KACE,aAAa,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,mBAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiB,wCACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAU,uBAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;AC3CJ,qBAAqBC,MAAaC,QAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/evm",
3
- "version": "0.17.4",
3
+ "version": "0.18.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",
@@ -42,18 +42,18 @@
42
42
  }
43
43
  },
44
44
  "dependencies": {
45
- "@dynamic-labs/sdk-api-core": "0.0.909",
45
+ "@dynamic-labs/sdk-api-core": "0.0.914",
46
46
  "@walletconnect/types": "2.21.8",
47
47
  "@walletconnect/utils": "2.21.8",
48
- "@dynamic-labs-sdk/client": "0.17.4",
49
- "@dynamic-labs-sdk/wallet-connect": "0.17.4",
50
- "@dynamic-labs-sdk/assert-package-version": "0.17.4"
48
+ "@dynamic-labs-sdk/assert-package-version": "0.18.1",
49
+ "@dynamic-labs-sdk/client": "0.18.1",
50
+ "@dynamic-labs-sdk/wallet-connect": "0.18.1"
51
51
  },
52
52
  "devDependencies": {
53
+ "@walletconnect/types": "2.21.8",
53
54
  "eventemitter3": "5.0.1",
54
55
  "viem": "^2.28.4",
55
- "vitest": "1.6.1",
56
- "@walletconnect/types": "2.21.8"
56
+ "vitest": "1.6.1"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "viem": "^2.28.4"
@@ -1 +0,0 @@
1
- {"version":3,"file":"addEIP6963Extension-CD8PB9vi.esm.js","names":[],"sources":["../src/eip6963/utils/isEip6963Event/isEip6963Event.ts","../src/eip6963/utils/listenForEIP6963ProviderAnnouncement/listenForEIP6963ProviderAnnouncement.ts","../src/eip6963/addEIP6963Extension/addEIP6963Extension.ts"],"sourcesContent":["import type { Eip6963AnnounceProviderEvent } from '../../eip6963.types';\n\nexport const isEip6963Event = (\n event: unknown\n): event is Eip6963AnnounceProviderEvent =>\n event !== null &&\n event !== undefined &&\n (event as Eip6963AnnounceProviderEvent).type === 'eip6963:announceProvider' &&\n (event as Eip6963AnnounceProviderEvent).detail !== undefined &&\n (event as Eip6963AnnounceProviderEvent).detail !== null;\n","import type { EIP6963ProviderDetail } from '../../eip6963.types';\nimport { isEip6963Event } from '../isEip6963Event';\n\nexport const listenForEIP6963ProviderAnnouncement = (\n onProvider: (providerDetail: EIP6963ProviderDetail) => void,\n /**\n * This feature is only available in the browser\n * so it is fine to use the window directly here.\n *\n * TODO: check with others\n */\n // eslint-disable-next-line no-restricted-globals\n globalWindow = window\n): VoidFunction => {\n const handler = (event: Event) => {\n if (!isEip6963Event(event)) return;\n\n onProvider(event.detail);\n };\n\n globalWindow.addEventListener('eip6963:announceProvider', handler);\n\n globalWindow.dispatchEvent(new Event('eip6963:requestProvider'));\n\n return () => {\n globalWindow.removeEventListener('eip6963:announceProvider', handler);\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { listenForEIP6963ProviderAnnouncement } from './../utils/listenForEIP6963ProviderAnnouncement';\n\nexport const EIP6963_EXTENSION_KEY = 'eip6963';\n\n/**\n * Adds the EIP-6963 extension to the Dynamic client.\n *\n * This extension enables integration with wallets that support EIP-6963,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be used to remove EIP-6963 global event listeners that were added.\n */\nexport const addEIP6963Extension = (client = getDefaultClient()) => {\n if (hasExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client)) {\n return () => {\n // noop\n };\n }\n\n registerExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n return listenForEIP6963ProviderAnnouncement((detail) => {\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: detail.info.name,\n eip1193: detail.provider,\n icon: detail.info.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":";;;;;AAEA,MAAa,kBACX,UAEA,UAAU,QACV,UAAU,UACT,MAAuC,SAAS,8BAChD,MAAuC,WAAW,UAClD,MAAuC,WAAW;;;;ACNrD,MAAa,wCACX,YAQA,eAAe,WACE;CACjB,MAAM,WAAW,UAAiB;AAChC,MAAI,CAAC,eAAe,MAAM,CAAE;AAE5B,aAAW,MAAM,OAAO;;AAG1B,cAAa,iBAAiB,4BAA4B,QAAQ;AAElE,cAAa,cAAc,IAAI,MAAM,0BAA0B,CAAC;AAEhE,cAAa;AACX,eAAa,oBAAoB,4BAA4B,QAAQ;;;;;;ACbzE,MAAa,wBAAwB;;;;;;;;;;AAWrC,MAAa,uBAAuB,SAAS,kBAAkB,KAAK;AAClE,KAAI,aAAa,EAAE,cAAc,uBAAuB,EAAE,OAAO,CAC/D,cAAa;AAKf,mBAAkB,EAAE,cAAc,uBAAuB,EAAE,OAAO;AAClE,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;AAEhE,QAAO,sCAAsC,WAAW;EACtD,MAAM,iBAAiB,wCACrB;GACE,aAAa,OAAO,KAAK;GACzB,SAAS,OAAO;GAChB,MAAM,OAAO,KAAK;GACnB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAU,uBAAuB;GACjC;GACD,CAAC;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addEIP6963Extension-yuzVkmVM.cjs.js","names":["createWalletProviderFromEIP1193Provider","WalletProviderPriority"],"sources":["../src/eip6963/utils/isEip6963Event/isEip6963Event.ts","../src/eip6963/utils/listenForEIP6963ProviderAnnouncement/listenForEIP6963ProviderAnnouncement.ts","../src/eip6963/addEIP6963Extension/addEIP6963Extension.ts"],"sourcesContent":["import type { Eip6963AnnounceProviderEvent } from '../../eip6963.types';\n\nexport const isEip6963Event = (\n event: unknown\n): event is Eip6963AnnounceProviderEvent =>\n event !== null &&\n event !== undefined &&\n (event as Eip6963AnnounceProviderEvent).type === 'eip6963:announceProvider' &&\n (event as Eip6963AnnounceProviderEvent).detail !== undefined &&\n (event as Eip6963AnnounceProviderEvent).detail !== null;\n","import type { EIP6963ProviderDetail } from '../../eip6963.types';\nimport { isEip6963Event } from '../isEip6963Event';\n\nexport const listenForEIP6963ProviderAnnouncement = (\n onProvider: (providerDetail: EIP6963ProviderDetail) => void,\n /**\n * This feature is only available in the browser\n * so it is fine to use the window directly here.\n *\n * TODO: check with others\n */\n // eslint-disable-next-line no-restricted-globals\n globalWindow = window\n): VoidFunction => {\n const handler = (event: Event) => {\n if (!isEip6963Event(event)) return;\n\n onProvider(event.detail);\n };\n\n globalWindow.addEventListener('eip6963:announceProvider', handler);\n\n globalWindow.dispatchEvent(new Event('eip6963:requestProvider'));\n\n return () => {\n globalWindow.removeEventListener('eip6963:announceProvider', handler);\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { listenForEIP6963ProviderAnnouncement } from './../utils/listenForEIP6963ProviderAnnouncement';\n\nexport const EIP6963_EXTENSION_KEY = 'eip6963';\n\n/**\n * Adds the EIP-6963 extension to the Dynamic client.\n *\n * This extension enables integration with wallets that support EIP-6963,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be used to remove EIP-6963 global event listeners that were added.\n */\nexport const addEIP6963Extension = (client = getDefaultClient()) => {\n if (hasExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client)) {\n return () => {\n // noop\n };\n }\n\n registerExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n return listenForEIP6963ProviderAnnouncement((detail) => {\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: detail.info.name,\n eip1193: detail.provider,\n icon: detail.info.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":";;;;;AAEA,MAAa,kBACX,UAEA,UAAU,QACV,UAAU,UACT,MAAuC,SAAS,8BAChD,MAAuC,WAAW,UAClD,MAAuC,WAAW;;;;ACNrD,MAAa,wCACX,YAQA,eAAe,WACE;CACjB,MAAM,WAAW,UAAiB;AAChC,MAAI,CAAC,eAAe,MAAM,CAAE;AAE5B,aAAW,MAAM,OAAO;;AAG1B,cAAa,iBAAiB,4BAA4B,QAAQ;AAElE,cAAa,cAAc,IAAI,MAAM,0BAA0B,CAAC;AAEhE,cAAa;AACX,eAAa,oBAAoB,4BAA4B,QAAQ;;;;;;ACbzE,MAAa,wBAAwB;;;;;;;;;;AAWrC,MAAa,uBAAuB,8DAA2B,KAAK;AAClE,qDAAiB,EAAE,cAAc,uBAAuB,EAAE,OAAO,CAC/D,cAAa;AAKf,sDAAkB,EAAE,cAAc,uBAAuB,EAAE,OAAO;AAClE,6DAAkC,OAAO;CAEzC,MAAM,sFAAmD,OAAO;AAEhE,QAAO,sCAAsC,WAAW;EACtD,MAAM,iBAAiBA,wFACrB;GACE,aAAa,OAAO,KAAK;GACzB,SAAS,OAAO;GAChB,MAAM,OAAO,KAAK;GACnB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;GACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"addWaasEvmExtension-C1cEqv6_.cjs.js","names":["MFAAction","MFAAction","mapNetworkDataToViemChain","chain: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","createViemWalletClient: WaasEvmWalletProvider['createViemWalletClient']","getActiveNetworkId: WaasEvmWalletProvider['getActiveNetworkId']","getConnectedAddresses: WaasEvmWalletProvider['getConnectedAddresses']","signMessage: WaasEvmWalletProvider['signMessage']","switchActiveNetwork: WaasEvmWalletProvider['switchActiveNetwork']","evmExecuteCheckoutTransaction","evmTransferAmount","WalletProviderPriority"],"sources":["../src/waas/utils/createWalletProviderForWaasEvm/signAuthorization/signAuthorization.ts","../src/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.ts","../src/waas/utils/createWalletProviderForWaasEvm/createViemWalletClientForWaas/createViemWalletClientForWaas.ts","../src/waas/utils/createWalletProviderForWaasEvm/createWalletProviderForWaasEvm.ts","../src/waas/addWaasEvmExtension/addWaasEvmExtension.ts"],"sourcesContent":["import {\n type DynamicClient,\n MFAAction,\n type WalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n consumeMfaTokenIfRequiredForAction,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport type { Hex } from 'viem';\nimport { parseSignature } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\nimport { hashAuthorization } from 'viem/utils';\n\nimport type { SignAuthorizationParametersWithoutPrivateKey } from '../../../../viem/viem.types';\n\ntype SignAuthorizationParams = {\n parameters: SignAuthorizationParametersWithoutPrivateKey;\n password?: string;\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\nexport const signAuthorization = async (\n {\n parameters,\n walletAccount,\n waasProvider,\n password,\n }: SignAuthorizationParams,\n dynamicClient: DynamicClient\n): Promise<SignAuthorizationReturnType> => {\n const { address: contractAddress, chainId, nonce } = parameters;\n\n assertDefined(contractAddress, 'Contract address not found');\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const mfaToken = await consumeMfaTokenIfRequiredForAction(\n { mfaAction: MFAAction.WalletWaasSign },\n dynamicClient\n );\n\n const waasClient = await waasProvider.getWaasClient();\n\n const authorization = {\n address: contractAddress,\n chainId,\n nonce,\n };\n\n const signature = await waasClient.signRawMessage({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n context: { eip7702Auth: authorization },\n message: hashAuthorization(authorization).slice(2),\n mfaToken,\n password,\n signedSessionId,\n });\n\n const parsedSignature = parseSignature(signature as Hex);\n\n return {\n address: contractAddress,\n chainId,\n nonce,\n r: parsedSignature.r,\n s: parsedSignature.s,\n v: parsedSignature.v,\n yParity: parsedSignature.yParity,\n };\n};\n","import {\n type DynamicClient,\n type WalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport {\n consumeMfaTokenIfRequiredForAction,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction } from '@dynamic-labs/sdk-api-core';\nimport type { TypedData } from 'viem';\n\ntype SignTypedDataParams = {\n typedData: TypedData | { [key: string]: unknown };\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\nexport const signTypedData = async (\n { typedData, walletAccount, waasProvider }: SignTypedDataParams,\n dynamicClient: DynamicClient\n) => {\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const mfaToken = await consumeMfaTokenIfRequiredForAction(\n { mfaAction: MFAAction.WalletWaasSign },\n dynamicClient\n );\n\n const waasClient = await waasProvider.getWaasClient();\n\n return waasClient.signTypedData({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n mfaToken,\n signedSessionId,\n typedData: typedData as unknown as string,\n });\n};\n","import {\n type DynamicClient,\n type WalletAccount,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport type {\n Account,\n Chain,\n Hex,\n HttpTransportConfig,\n TransactionSerializable,\n Transport,\n TypedData,\n WalletClient,\n WalletClientConfig,\n} from 'viem';\nimport { createWalletClient, http, serializeTransaction } from 'viem';\nimport type { SignAuthorizationReturnType } from 'viem/accounts';\nimport { toAccount } from 'viem/accounts';\n\nimport { mapNetworkDataToViemChain } from '../../../../viem/utils/mapNetworkDataToViemChain';\nimport type { SignAuthorizationParametersWithoutPrivateKey } from '../../../../viem/viem.types';\nimport { signAuthorization } from '../signAuthorization';\nimport { signTypedData } from '../signTypedData';\n\ntype CreateViemWalletClientForWaasParams = {\n httpTransportConfig?: HttpTransportConfig;\n viemWalletClientConfig?: Omit<\n WalletClientConfig,\n 'account' | 'chain' | 'transport'\n >;\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\nexport const createViemWalletClientForWaas = async (\n {\n waasProvider,\n walletAccount,\n httpTransportConfig,\n viemWalletClientConfig,\n }: CreateViemWalletClientForWaasParams,\n dynamicClient: DynamicClient\n): Promise<WalletClient<Transport, Chain, Account>> => {\n const { networkData: activeNetworkData } = await getActiveNetworkData(\n { walletAccount },\n dynamicClient\n );\n\n assertDefined(\n activeNetworkData,\n `No network data found for wallet account ${walletAccount.address}`\n );\n\n return createWalletClient({\n account: toAccount({\n address: walletAccount.address as Hex,\n async signAuthorization(\n parameters: SignAuthorizationParametersWithoutPrivateKey\n ): Promise<SignAuthorizationReturnType> {\n const signature = await signAuthorization(\n {\n parameters,\n waasProvider,\n walletAccount,\n },\n dynamicClient\n );\n\n return signature;\n },\n signMessage: async ({ message }) => {\n const { signature } = await waasProvider.signMessage({\n message: message as string,\n walletAccount,\n });\n\n return signature as Hex;\n },\n signTransaction: async (\n transaction: TransactionSerializable\n ): Promise<Hex> => {\n const { signature } = await waasProvider.signSerializedTransaction({\n serializedTransaction: serializeTransaction(transaction),\n walletAccount,\n });\n\n return signature as Hex;\n },\n signTypedData: async (\n typedData: TypedData | { [key: string]: unknown }\n ): Promise<Hex> => {\n const signature = await signTypedData(\n {\n typedData,\n waasProvider,\n walletAccount,\n },\n dynamicClient\n );\n\n return signature as Hex;\n },\n }),\n chain: mapNetworkDataToViemChain(activeNetworkData),\n transport: http(activeNetworkData.rpcUrls.http[0], httpTransportConfig),\n ...viemWalletClientConfig,\n });\n};\n","import { type Chain, type DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n assertDefined,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { evmExecuteCheckoutTransaction } from '../../../utils/evmExecuteCheckoutTransaction';\nimport { evmTransferAmount } from '../../../utils/evmTransferAmount';\nimport type { WaasEvmWalletProvider } from '../../WaasEvmWalletProvider.types';\nimport { createViemWalletClientForWaas } from './createViemWalletClientForWaas';\n\ntype CreateWalletProviderForWaasEvmParams = {\n dynamicClient: DynamicClient;\n};\n\nexport const createWalletProviderForWaasEvm = ({\n dynamicClient,\n}: CreateWalletProviderForWaasEvmParams): WaasEvmWalletProvider => {\n const chain: Chain = 'EVM';\n\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain,\n sdkClient: dynamicClient,\n });\n\n const createViemWalletClient: WaasEvmWalletProvider['createViemWalletClient'] =\n async ({ walletAccount, httpTransportConfig, viemWalletClientConfig }) => {\n return createViemWalletClientForWaas(\n {\n httpTransportConfig,\n viemWalletClientConfig,\n waasProvider,\n walletAccount,\n },\n dynamicClient\n );\n };\n\n const getActiveNetworkId: WaasEvmWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasEvmAddresses = getAllUserWaasAddressesForChain(\n { chain },\n dynamicClient\n );\n\n return {\n addresses: waasEvmAddresses,\n };\n };\n\n const signMessage: WaasEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n assertDefined(walletAccount, 'Wallet account is required');\n\n return waasProvider.signMessage({\n message,\n walletAccount,\n });\n };\n\n const switchActiveNetwork: WaasEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const terminate = async () => {\n return waasProvider.terminate();\n };\n\n return {\n ...waasProvider,\n chain,\n createViemWalletClient,\n executeCheckoutTransaction: (args) =>\n evmExecuteCheckoutTransaction(args, dynamicClient),\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n signMessage,\n switchActiveNetwork,\n terminate,\n transferAmount: (args) => evmTransferAmount(args, dynamicClient),\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderForWaasEvm } from '../utils/createWalletProviderForWaasEvm';\n\nexport const WAAS_EVM_EXTENSION_KEY = 'waasEvm';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) EVM extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for EVM-compatible blockchains,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addWaasEvmExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_EVM_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasEvm({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n"],"mappings":"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"}