@dynamic-labs-sdk/evm 1.31.1 → 1.31.2

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 (77) hide show
  1. package/dist/{addWaasEvmExtension-CyXCTxGv.esm.js → addWaasEvmExtension-BMR_gR6B.esm.js} +10 -6
  2. package/dist/addWaasEvmExtension-BMR_gR6B.esm.js.map +1 -0
  3. package/dist/{addWaasEvmExtension-CP2ibnvq.cjs → addWaasEvmExtension-BjoGfmQX.cjs} +9 -5
  4. package/dist/addWaasEvmExtension-BjoGfmQX.cjs.map +1 -0
  5. package/dist/{addWaasEvmExtension-DYKWl5DG.native.esm.js → addWaasEvmExtension-KdZlXrUW.native.esm.js} +10 -6
  6. package/dist/addWaasEvmExtension-KdZlXrUW.native.esm.js.map +1 -0
  7. package/dist/baseAccount.cjs +1 -1
  8. package/dist/baseAccount.esm.js +1 -1
  9. package/dist/baseAccount.native.esm.js +1 -1
  10. package/dist/core.cjs +1 -1
  11. package/dist/core.esm.js +1 -1
  12. package/dist/core.native.esm.js +1 -1
  13. package/dist/eip6963.cjs +1 -1
  14. package/dist/eip6963.esm.js +1 -1
  15. package/dist/eip6963.native.esm.js +1 -1
  16. package/dist/exports/metamask.d.ts +1 -0
  17. package/dist/exports/metamask.d.ts.map +1 -1
  18. package/dist/index.cjs +2 -2
  19. package/dist/index.esm.js +2 -2
  20. package/dist/index.native.esm.js +2 -2
  21. package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/index.d.ts +2 -0
  22. package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/index.d.ts.map +1 -0
  23. package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.d.ts +22 -0
  24. package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.d.ts.map +1 -0
  25. package/dist/metamask.cjs +32 -1
  26. package/dist/metamask.cjs.map +1 -1
  27. package/dist/metamask.esm.js +33 -3
  28. package/dist/metamask.esm.js.map +1 -1
  29. package/dist/metamask.native.esm.js +33 -3
  30. package/dist/metamask.native.esm.js.map +1 -1
  31. package/dist/{package-BnSw-03C.native.esm.js → package-DHXe8K1l.native.esm.js} +2 -2
  32. package/dist/package-DHXe8K1l.native.esm.js.map +1 -0
  33. package/dist/{package-Dk-SYXOE.cjs → package-cXTEEW7P.cjs} +2 -2
  34. package/dist/package-cXTEEW7P.cjs.map +1 -0
  35. package/dist/{package-DrSY9NJE.esm.js → package-wISL2vMS.esm.js} +2 -2
  36. package/dist/package-wISL2vMS.esm.js.map +1 -0
  37. package/dist/tempo.cjs +1 -1
  38. package/dist/tempo.esm.js +1 -1
  39. package/dist/tempo.native.esm.js +1 -1
  40. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  41. package/dist/viem.cjs +1 -1
  42. package/dist/viem.esm.js +1 -1
  43. package/dist/viem.native.esm.js +1 -1
  44. package/dist/waas/utils/createWalletProviderForWaasEvm/signAuthorization/signAuthorization.d.ts.map +1 -1
  45. package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts.map +1 -1
  46. package/dist/waas.cjs +2 -2
  47. package/dist/waas.esm.js +2 -2
  48. package/dist/waas.native.esm.js +2 -2
  49. package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
  50. package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/index.d.ts +2 -0
  51. package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/index.d.ts.map +1 -0
  52. package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/registerWalletConnectEvmUriConnectionStarter.d.ts +19 -0
  53. package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/registerWalletConnectEvmUriConnectionStarter.d.ts.map +1 -0
  54. package/dist/walletConnect.cjs +85 -58
  55. package/dist/walletConnect.cjs.map +1 -1
  56. package/dist/walletConnect.esm.js +86 -59
  57. package/dist/walletConnect.esm.js.map +1 -1
  58. package/dist/walletConnect.native.esm.js +86 -59
  59. package/dist/walletConnect.native.esm.js.map +1 -1
  60. package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts.map +1 -1
  61. package/dist/windowInjected/utils/isProviderSelectionRouter/index.d.ts +2 -0
  62. package/dist/windowInjected/utils/isProviderSelectionRouter/index.d.ts.map +1 -0
  63. package/dist/windowInjected/utils/isProviderSelectionRouter/isProviderSelectionRouter.d.ts +30 -0
  64. package/dist/windowInjected/utils/isProviderSelectionRouter/isProviderSelectionRouter.d.ts.map +1 -0
  65. package/dist/windowInjected.cjs +34 -1
  66. package/dist/windowInjected.cjs.map +1 -1
  67. package/dist/windowInjected.esm.js +34 -1
  68. package/dist/windowInjected.esm.js.map +1 -1
  69. package/dist/windowInjected.native.esm.js +34 -1
  70. package/dist/windowInjected.native.esm.js.map +1 -1
  71. package/package.json +5 -5
  72. package/dist/addWaasEvmExtension-CP2ibnvq.cjs.map +0 -1
  73. package/dist/addWaasEvmExtension-CyXCTxGv.esm.js.map +0 -1
  74. package/dist/addWaasEvmExtension-DYKWl5DG.native.esm.js.map +0 -1
  75. package/dist/package-BnSw-03C.native.esm.js.map +0 -1
  76. package/dist/package-Dk-SYXOE.cjs.map +0 -1
  77. package/dist/package-DrSY9NJE.esm.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { a as evmConfirmTransaction, n as evmExecuteYieldTransaction, r as evmExecuteSwapTransaction, s as registerEvmNetworkProviderBuilder, t as evmTransferAmount } from "./evmTransferAmount-BQy79Fgj.esm.js";
2
2
  import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-Dr5Vws1-.esm.js";
3
3
  import { MFAAction, getActiveNetworkData } from "@dynamic-labs-sdk/client";
4
- import { WalletProviderPriority, assertDefined, consumeMfaTokenIfRequiredForAction, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient as getDefaultClient$1, getElevatedAccessToken, getSignedSessionId, getWalletProviderRegistry, hasExtension as hasExtension$1, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
4
+ import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getActionAuthorizationTokens, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient as getDefaultClient$1, getSignedSessionId, getWalletProviderRegistry, hasExtension as hasExtension$1, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
5
5
  import { createWalletClient, http, parseSignature, serializeTransaction, stringify } from "viem";
6
6
  import { toAccount } from "viem/accounts";
7
7
  import { MFAAction as MFAAction$1, TokenScope, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
@@ -14,8 +14,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
14
14
  const { address: contractAddress, chainId, nonce } = parameters;
15
15
  assertDefined(contractAddress, "Contract address not found");
16
16
  const { signature: signedSessionId } = await getSignedSessionId(dynamicClient);
17
- const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasSign }, dynamicClient);
18
- const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, dynamicClient);
17
+ const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens({
18
+ mfaAction: MFAAction.WalletWaasSign,
19
+ scope: TokenScope.Walletsign
20
+ }, dynamicClient);
19
21
  const waasClient = await waasProvider.getWaasClient();
20
22
  const authorization = {
21
23
  address: contractAddress,
@@ -48,8 +50,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
48
50
  /** @notInstrumented */
49
51
  const signTypedData = async ({ typedData, walletAccount, waasProvider }, dynamicClient) => {
50
52
  const { signature: signedSessionId } = await getSignedSessionId(dynamicClient);
51
- const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction$1.WalletWaasSign }, dynamicClient);
52
- const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, dynamicClient);
53
+ const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens({
54
+ mfaAction: MFAAction$1.WalletWaasSign,
55
+ scope: TokenScope.Walletsign
56
+ }, dynamicClient);
53
57
  const waasClient = await waasProvider.getWaasClient();
54
58
  const stringifiedTypedData = stringify(typedData);
55
59
  const serializableTypedData = JSON.parse(stringifiedTypedData);
@@ -199,4 +203,4 @@ const addWaasEvmExtension = (client = getDefaultClient$1()) => {
199
203
 
200
204
  //#endregion
201
205
  export { addWaasEvmExtension as t };
202
- //# sourceMappingURL=addWaasEvmExtension-CyXCTxGv.esm.js.map
206
+ //# sourceMappingURL=addWaasEvmExtension-BMR_gR6B.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addWaasEvmExtension-BMR_gR6B.esm.js","names":["MFAAction","chain: Chain","createViemWalletClient: WaasEvmWalletProvider['createViemWalletClient']","getActiveNetworkId: WaasEvmWalletProvider['getActiveNetworkId']","getConnectedAddresses: WaasEvmWalletProvider['getConnectedAddresses']","signMessage: WaasEvmWalletProvider['signMessage']","switchActiveNetwork: WaasEvmWalletProvider['switchActiveNetwork']","destroy: WaasEvmWalletProvider['destroy']","getDefaultClient","hasExtension"],"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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { TokenScope } from '@dynamic-labs/sdk-api-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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\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 elevatedAccessToken,\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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, TokenScope } from '@dynamic-labs/sdk-api-core';\nimport type { TypedData } from 'viem';\nimport { stringify } from 'viem';\n\ntype SignTypedDataParams = {\n typedData: TypedData | { [key: string]: unknown };\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const signTypedData = async (\n { typedData, walletAccount, waasProvider }: SignTypedDataParams,\n dynamicClient: DynamicClient\n): Promise<string> => {\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\n dynamicClient\n );\n\n const waasClient = await waasProvider.getWaasClient();\n\n // serialize bigint values\n const stringifiedTypedData = stringify(typedData);\n const serializableTypedData = JSON.parse(stringifiedTypedData) as string;\n\n return waasClient.signTypedData({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n elevatedAccessToken,\n mfaToken,\n signedSessionId,\n typedData: serializableTypedData,\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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 { evmConfirmTransaction } from '../../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../../utils/evmExecuteSwapTransaction';\nimport { evmExecuteYieldTransaction } from '../../../utils/evmExecuteYieldTransaction';\nimport { evmTransferAmount } from '../../../utils/evmTransferAmount';\nimport type { WaasEvmWalletProvider } from '../../WaasEvmWalletProvider.types';\nimport { createViemWalletClientForWaas } from './createViemWalletClientForWaas';\n\ntype CreateWalletProviderForWaasEvmParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\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 destroy: WaasEvmWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain,\n confirmTransaction: (args) => evmConfirmTransaction(args, dynamicClient),\n createViemWalletClient,\n destroy,\n executeSwapTransaction: (args) =>\n evmExecuteSwapTransaction(args, dynamicClient),\n executeYieldTransaction: (args) =>\n evmExecuteYieldTransaction(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 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 * @notInstrumented\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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"}
@@ -14,8 +14,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
14
14
  const { address: contractAddress, chainId, nonce } = parameters;
15
15
  (0, _dynamic_labs_sdk_client_core.assertDefined)(contractAddress, "Contract address not found");
16
16
  const { signature: signedSessionId } = await (0, _dynamic_labs_sdk_client_core.getSignedSessionId)(dynamicClient);
17
- const mfaToken = await (0, _dynamic_labs_sdk_client_core.consumeMfaTokenIfRequiredForAction)({ mfaAction: _dynamic_labs_sdk_client.MFAAction.WalletWaasSign }, dynamicClient);
18
- const elevatedAccessToken = (0, _dynamic_labs_sdk_client_core.getElevatedAccessToken)({ scope: _dynamic_labs_sdk_api_core.TokenScope.Walletsign }, dynamicClient);
17
+ const { elevatedAccessToken, mfaToken } = await (0, _dynamic_labs_sdk_client_core.getActionAuthorizationTokens)({
18
+ mfaAction: _dynamic_labs_sdk_client.MFAAction.WalletWaasSign,
19
+ scope: _dynamic_labs_sdk_api_core.TokenScope.Walletsign
20
+ }, dynamicClient);
19
21
  const waasClient = await waasProvider.getWaasClient();
20
22
  const authorization = {
21
23
  address: contractAddress,
@@ -48,8 +50,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
48
50
  /** @notInstrumented */
49
51
  const signTypedData = async ({ typedData, walletAccount, waasProvider }, dynamicClient) => {
50
52
  const { signature: signedSessionId } = await (0, _dynamic_labs_sdk_client_core.getSignedSessionId)(dynamicClient);
51
- const mfaToken = await (0, _dynamic_labs_sdk_client_core.consumeMfaTokenIfRequiredForAction)({ mfaAction: _dynamic_labs_sdk_api_core.MFAAction.WalletWaasSign }, dynamicClient);
52
- const elevatedAccessToken = (0, _dynamic_labs_sdk_client_core.getElevatedAccessToken)({ scope: _dynamic_labs_sdk_api_core.TokenScope.Walletsign }, dynamicClient);
53
+ const { elevatedAccessToken, mfaToken } = await (0, _dynamic_labs_sdk_client_core.getActionAuthorizationTokens)({
54
+ mfaAction: _dynamic_labs_sdk_api_core.MFAAction.WalletWaasSign,
55
+ scope: _dynamic_labs_sdk_api_core.TokenScope.Walletsign
56
+ }, dynamicClient);
53
57
  const waasClient = await waasProvider.getWaasClient();
54
58
  const stringifiedTypedData = (0, viem.stringify)(typedData);
55
59
  const serializableTypedData = JSON.parse(stringifiedTypedData);
@@ -204,4 +208,4 @@ Object.defineProperty(exports, 'addWaasEvmExtension', {
204
208
  return addWaasEvmExtension;
205
209
  }
206
210
  });
207
- //# sourceMappingURL=addWaasEvmExtension-CP2ibnvq.cjs.map
211
+ //# sourceMappingURL=addWaasEvmExtension-BjoGfmQX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addWaasEvmExtension-BjoGfmQX.cjs","names":["MFAAction","TokenScope","MFAAction","TokenScope","mapNetworkDataToViemChain","chain: Chain","WalletProviderEnum","DYNAMIC_WAAS_METADATA","createViemWalletClient: WaasEvmWalletProvider['createViemWalletClient']","getActiveNetworkId: WaasEvmWalletProvider['getActiveNetworkId']","getConnectedAddresses: WaasEvmWalletProvider['getConnectedAddresses']","signMessage: WaasEvmWalletProvider['signMessage']","switchActiveNetwork: WaasEvmWalletProvider['switchActiveNetwork']","destroy: WaasEvmWalletProvider['destroy']","evmConfirmTransaction","evmExecuteSwapTransaction","evmExecuteYieldTransaction","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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { TokenScope } from '@dynamic-labs/sdk-api-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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\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 elevatedAccessToken,\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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, TokenScope } from '@dynamic-labs/sdk-api-core';\nimport type { TypedData } from 'viem';\nimport { stringify } from 'viem';\n\ntype SignTypedDataParams = {\n typedData: TypedData | { [key: string]: unknown };\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const signTypedData = async (\n { typedData, walletAccount, waasProvider }: SignTypedDataParams,\n dynamicClient: DynamicClient\n): Promise<string> => {\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\n dynamicClient\n );\n\n const waasClient = await waasProvider.getWaasClient();\n\n // serialize bigint values\n const stringifiedTypedData = stringify(typedData);\n const serializableTypedData = JSON.parse(stringifiedTypedData) as string;\n\n return waasClient.signTypedData({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n elevatedAccessToken,\n mfaToken,\n signedSessionId,\n typedData: serializableTypedData,\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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 { evmConfirmTransaction } from '../../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../../utils/evmExecuteSwapTransaction';\nimport { evmExecuteYieldTransaction } from '../../../utils/evmExecuteYieldTransaction';\nimport { evmTransferAmount } from '../../../utils/evmTransferAmount';\nimport type { WaasEvmWalletProvider } from '../../WaasEvmWalletProvider.types';\nimport { createViemWalletClientForWaas } from './createViemWalletClientForWaas';\n\ntype CreateWalletProviderForWaasEvmParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\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 destroy: WaasEvmWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain,\n confirmTransaction: (args) => evmConfirmTransaction(args, dynamicClient),\n createViemWalletClient,\n destroy,\n executeSwapTransaction: (args) =>\n evmExecuteSwapTransaction(args, dynamicClient),\n executeYieldTransaction: (args) =>\n evmExecuteYieldTransaction(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 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 * @notInstrumented\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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"}
@@ -1,7 +1,7 @@
1
1
  import { a as evmConfirmTransaction, n as evmExecuteYieldTransaction, r as evmExecuteSwapTransaction, s as registerEvmNetworkProviderBuilder, t as evmTransferAmount } from "./evmTransferAmount-BftkuI-H.native.esm.js";
2
2
  import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-BOVFIupF.native.esm.js";
3
3
  import { MFAAction, getActiveNetworkData } from "@dynamic-labs-sdk/client";
4
- import { WalletProviderPriority, assertDefined, consumeMfaTokenIfRequiredForAction, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient as getDefaultClient$1, getElevatedAccessToken, getSignedSessionId, getWalletProviderRegistry, hasExtension as hasExtension$1, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
4
+ import { WalletProviderPriority, assertDefined, formatWalletProviderGroupKey, formatWalletProviderKey, getActionAuthorizationTokens, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient as getDefaultClient$1, getSignedSessionId, getWalletProviderRegistry, hasExtension as hasExtension$1, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
5
5
  import { createWalletClient, http, parseSignature, serializeTransaction, stringify } from "viem";
6
6
  import { toAccount } from "viem/accounts";
7
7
  import { DYNAMIC_WAAS_METADATA, createWaasProvider, getAllUserWaasAddressesForChain } from "@dynamic-labs-sdk/client/waas/core";
@@ -14,8 +14,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
14
14
  const { address: contractAddress, chainId, nonce } = parameters;
15
15
  assertDefined(contractAddress, "Contract address not found");
16
16
  const { signature: signedSessionId } = await getSignedSessionId(dynamicClient);
17
- const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction.WalletWaasSign }, dynamicClient);
18
- const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, dynamicClient);
17
+ const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens({
18
+ mfaAction: MFAAction.WalletWaasSign,
19
+ scope: TokenScope.Walletsign
20
+ }, dynamicClient);
19
21
  const waasClient = await waasProvider.getWaasClient();
20
22
  const authorization = {
21
23
  address: contractAddress,
@@ -48,8 +50,10 @@ const signAuthorization = async ({ parameters, walletAccount, waasProvider, pass
48
50
  /** @notInstrumented */
49
51
  const signTypedData = async ({ typedData, walletAccount, waasProvider }, dynamicClient) => {
50
52
  const { signature: signedSessionId } = await getSignedSessionId(dynamicClient);
51
- const mfaToken = await consumeMfaTokenIfRequiredForAction({ mfaAction: MFAAction$1.WalletWaasSign }, dynamicClient);
52
- const elevatedAccessToken = getElevatedAccessToken({ scope: TokenScope.Walletsign }, dynamicClient);
53
+ const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens({
54
+ mfaAction: MFAAction$1.WalletWaasSign,
55
+ scope: TokenScope.Walletsign
56
+ }, dynamicClient);
53
57
  const waasClient = await waasProvider.getWaasClient();
54
58
  const stringifiedTypedData = stringify(typedData);
55
59
  const serializableTypedData = JSON.parse(stringifiedTypedData);
@@ -199,4 +203,4 @@ const addWaasEvmExtension = (client = getDefaultClient$1()) => {
199
203
 
200
204
  //#endregion
201
205
  export { addWaasEvmExtension as t };
202
- //# sourceMappingURL=addWaasEvmExtension-DYKWl5DG.native.esm.js.map
206
+ //# sourceMappingURL=addWaasEvmExtension-KdZlXrUW.native.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addWaasEvmExtension-KdZlXrUW.native.esm.js","names":["MFAAction","chain: Chain","createViemWalletClient: WaasEvmWalletProvider['createViemWalletClient']","getActiveNetworkId: WaasEvmWalletProvider['getActiveNetworkId']","getConnectedAddresses: WaasEvmWalletProvider['getConnectedAddresses']","signMessage: WaasEvmWalletProvider['signMessage']","switchActiveNetwork: WaasEvmWalletProvider['switchActiveNetwork']","destroy: WaasEvmWalletProvider['destroy']","getDefaultClient","hasExtension"],"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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { TokenScope } from '@dynamic-labs/sdk-api-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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\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 elevatedAccessToken,\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 getActionAuthorizationTokens,\n getSignedSessionId,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WaasProvider } from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, TokenScope } from '@dynamic-labs/sdk-api-core';\nimport type { TypedData } from 'viem';\nimport { stringify } from 'viem';\n\ntype SignTypedDataParams = {\n typedData: TypedData | { [key: string]: unknown };\n waasProvider: WaasProvider;\n walletAccount: WalletAccount;\n};\n\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\nexport const signTypedData = async (\n { typedData, walletAccount, waasProvider }: SignTypedDataParams,\n dynamicClient: DynamicClient\n): Promise<string> => {\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\n dynamicClient\n );\n\n const waasClient = await waasProvider.getWaasClient();\n\n // serialize bigint values\n const stringifiedTypedData = stringify(typedData);\n const serializableTypedData = JSON.parse(stringifiedTypedData) as string;\n\n return waasClient.signTypedData({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n elevatedAccessToken,\n mfaToken,\n signedSessionId,\n typedData: serializableTypedData,\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\n/** @notInstrumented */\n// eslint-disable-next-line custom-rules/require-single-object-param\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 // eslint-disable-next-line custom-rules/require-single-object-param\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 { evmConfirmTransaction } from '../../../utils/evmConfirmTransaction';\nimport { evmExecuteSwapTransaction } from '../../../utils/evmExecuteSwapTransaction';\nimport { evmExecuteYieldTransaction } from '../../../utils/evmExecuteYieldTransaction';\nimport { evmTransferAmount } from '../../../utils/evmTransferAmount';\nimport type { WaasEvmWalletProvider } from '../../WaasEvmWalletProvider.types';\nimport { createViemWalletClientForWaas } from './createViemWalletClientForWaas';\n\ntype CreateWalletProviderForWaasEvmParams = {\n dynamicClient: DynamicClient;\n};\n\n/** @notInstrumented */\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 destroy: WaasEvmWalletProvider['destroy'] = async (args) =>\n waasProvider.destroy(args);\n\n return {\n ...waasProvider,\n chain,\n confirmTransaction: (args) => evmConfirmTransaction(args, dynamicClient),\n createViemWalletClient,\n destroy,\n executeSwapTransaction: (args) =>\n evmExecuteSwapTransaction(args, dynamicClient),\n executeYieldTransaction: (args) =>\n evmExecuteYieldTransaction(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 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 * @notInstrumented\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":";;;;;;;;;;;;AA4BA,MAAa,oBAAoB,OAC/B,EACE,YACA,eACA,cACA,YAEF,kBACyC;CACzC,MAAM,EAAE,SAAS,iBAAiB,SAAS,UAAU;AAErD,eAAc,iBAAiB,6BAA6B;CAE5D,MAAM,EAAE,WAAW,oBAAoB,MAAM,mBAC3C,cACD;CAED,MAAM,EAAE,qBAAqB,aAAa,MAAM,6BAC9C;EACE,WAAW,UAAU;EACrB,OAAO,WAAW;EACnB,EACD,cACD;CAED,MAAM,aAAa,MAAM,aAAa,eAAe;CAErD,MAAM,gBAAgB;EACpB,SAAS;EACT;EACA;EACD;CAaD,MAAM,kBAAkB,eAXN,MAAM,WAAW,eAAe;EAChD,gBAAgB,cAAc;EAC9B,WAAW,cAAc,SAAS;EAClC,SAAS,EAAE,aAAa,eAAe;EACvC;EACA,SAAS,kBAAkB,cAAc,CAAC,MAAM,EAAE;EAClD;EACA;EACA;EACD,CAAC,CAEsD;AAExD,QAAO;EACL,SAAS;EACT;EACA;EACA,GAAG,gBAAgB;EACnB,GAAG,gBAAgB;EACnB,GAAG,gBAAgB;EACnB,SAAS,gBAAgB;EAC1B;;;;;;AC7DH,MAAa,gBAAgB,OAC3B,EAAE,WAAW,eAAe,gBAC5B,kBACoB;CACpB,MAAM,EAAE,WAAW,oBAAoB,MAAM,mBAC3C,cACD;CAED,MAAM,EAAE,qBAAqB,aAAa,MAAM,6BAC9C;EACE,WAAWA,YAAU;EACrB,OAAO,WAAW;EACnB,EACD,cACD;CAED,MAAM,aAAa,MAAM,aAAa,eAAe;CAGrD,MAAM,uBAAuB,UAAU,UAAU;CACjD,MAAM,wBAAwB,KAAK,MAAM,qBAAqB;AAE9D,QAAO,WAAW,cAAc;EAC9B,gBAAgB,cAAc;EAC9B,WAAW,cAAc,SAAS;EAClC;EACA;EACA;EACA,WAAW;EACZ,CAAC;;;;;;ACXJ,MAAa,gCAAgC,OAC3C,EACE,cACA,eACA,qBACA,0BAEF,kBACqD;CACrD,MAAM,EAAE,aAAa,sBAAsB,MAAM,qBAC/C,EAAE,eAAe,EACjB,cACD;AAED,eACE,mBACA,4CAA4C,cAAc,UAC3D;AAED,QAAO,mBAAmB;EACxB,SAAS,UAAU;GACjB,SAAS,cAAc;GACvB,MAAM,kBACJ,YACsC;AAUtC,WATkB,MAAM,kBACtB;KACE;KACA;KACA;KACD,EACD,cACD;;GAIH,aAAa,OAAO,EAAE,cAAc;IAClC,MAAM,EAAE,cAAc,MAAM,aAAa,YAAY;KAC1C;KACT;KACD,CAAC;AAEF,WAAO;;GAET,iBAAiB,OACf,gBACiB;IACjB,MAAM,EAAE,cAAc,MAAM,aAAa,0BAA0B;KACjE,uBAAuB,qBAAqB,YAAY;KACxD;KACD,CAAC;AAEF,WAAO;;GAGT,eAAe,OACb,cACiB;AAUjB,WATkB,MAAM,cACtB;KACE;KACA;KACA;KACD,EACD,cACD;;GAIJ,CAAC;EACF,OAAO,0BAA0B,kBAAkB;EACnD,WAAW,KAAK,kBAAkB,QAAQ,KAAK,IAAI,oBAAoB;EACvE,GAAG;EACJ,CAAC;;;;;;ACrFJ,MAAa,kCAAkC,EAC7C,oBACiE;CACjE,MAAMC,QAAe;CAErB,MAAM,qBAAqB,mBAAmB;CAE9C,MAAM,MAAM,wBAAwB;EAClC;EACA,aAAa,sBAAsB;EACnC;EACD,CAAC;CAEF,MAAM,eAAe,mBAAmB;EACtC;EACA,WAAW;EACZ,CAAC;CAEF,MAAMC,yBACJ,OAAO,EAAE,eAAe,qBAAqB,6BAA6B;AACxE,SAAO,8BACL;GACE;GACA;GACA;GACA;GACD,EACD,cACD;;CAGL,MAAMC,qBACJ,YACE,wCAAwC;EACtC,QAAQ;EACR,mBAAmB;EACpB,CAAC;CAEN,MAAMC,wBACJ,YAAY;AAMV,SAAO,EACL,WANuB,gCACvB,EAAE,OAAO,EACT,cACD,EAIA;;CAGL,MAAMC,cAAoD,OAAO,EAC/D,SACA,oBACI;AACJ,gBAAc,eAAe,6BAA6B;AAE1D,SAAO,aAAa,YAAY;GAC9B;GACA;GACD,CAAC;;CAGJ,MAAMC,sBACJ,OAAO,EAAE,gBACP,uCAAuC;EACrC,QAAQ;EACR;EACA,mBAAmB;EACpB,CAAC;CAEN,MAAMC,UAA4C,OAAO,SACvD,aAAa,QAAQ,KAAK;AAE5B,QAAO;EACL,GAAG;EACH;EACA,qBAAqB,SAAS,sBAAsB,MAAM,cAAc;EACxE;EACA;EACA,yBAAyB,SACvB,0BAA0B,MAAM,cAAc;EAChD,0BAA0B,SACxB,2BAA2B,MAAM,cAAc;EACjD;EACA;EACA,UAAU,6BAA6B,sBAAsB,YAAY;EACzE;EACA,UAAU;GACR,aAAa,sBAAsB;GACnC,MAAM,sBAAsB;GAC7B;EACD;EACA;EACA,iBAAiB,SAAS,kBAAkB,MAAM,cAAc;EAChE;EACD;;;;;AC/GH,MAAa,yBAAyB;;;;;;;;;;AAWtC,MAAa,uBAAuB,SAASC,oBAAkB,KAAW;AACxE,KAAIC,eAAa,EAAE,cAAc,wBAAwB,EAAE,OAAO,CAChE;AAGF,mBAAkB,EAAE,cAAc,wBAAwB,EAAE,OAAO;AACnE,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;CAEhE,MAAM,iBAAiB,+BAA+B,EACpD,eAAe,QAChB,CAAC;AAEF,wBAAuB,SAAS;EAC9B,UAAU,uBAAuB;EACjC;EACD,CAAC"}
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-Dk-SYXOE.cjs');
1
+ const require_package = require('./package-cXTEEW7P.cjs');
2
2
  const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
3
3
  require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
4
4
  const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-DrSY9NJE.esm.js";
1
+ import { n as version, t as name } from "./package-wISL2vMS.esm.js";
2
2
  import { s as registerEvmNetworkProviderBuilder } from "./evmTransferAmount-BQy79Fgj.esm.js";
3
3
  import "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
4
4
  import { t as createWalletProviderFromEIP1193Provider } from "./createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js";
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BnSw-03C.native.esm.js";
1
+ import { n as version, t as name } from "./package-DHXe8K1l.native.esm.js";
2
2
  import { s as registerEvmNetworkProviderBuilder } from "./evmTransferAmount-BftkuI-H.native.esm.js";
3
3
  import "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
4
4
  import { t as createWalletProviderFromEIP1193Provider } from "./createWalletProviderFromEIP1193Provider-CDRA4dpW.native.esm.js";
package/dist/core.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-Dk-SYXOE.cjs');
1
+ const require_package = require('./package-cXTEEW7P.cjs');
2
2
  const require_isEvmWalletProvider = require('./isEvmWalletProvider-pIGuzazF.cjs');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
 
package/dist/core.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-DrSY9NJE.esm.js";
1
+ import { n as version, t as name } from "./package-wISL2vMS.esm.js";
2
2
  import { t as isEvmWalletProvider } from "./isEvmWalletProvider-BbWMsj-k.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
 
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BnSw-03C.native.esm.js";
1
+ import { n as version, t as name } from "./package-DHXe8K1l.native.esm.js";
2
2
  import { t as isEvmWalletProvider } from "./isEvmWalletProvider-CPLo4h33.native.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
 
package/dist/eip6963.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-Dk-SYXOE.cjs');
1
+ const require_package = require('./package-cXTEEW7P.cjs');
2
2
  require('./evmTransferAmount-Ddvx91b0.cjs');
3
3
  require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
4
4
  require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-DrSY9NJE.esm.js";
1
+ import { n as version, t as name } from "./package-wISL2vMS.esm.js";
2
2
  import "./evmTransferAmount-BQy79Fgj.esm.js";
3
3
  import "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
4
4
  import "./createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js";
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BnSw-03C.native.esm.js";
1
+ import { n as version, t as name } from "./package-DHXe8K1l.native.esm.js";
2
2
  import { t as addEIP6963Extension } from "./addEIP6963Extension-ZpGdqv-5.native.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
 
@@ -4,5 +4,6 @@ export { connectWithMetaMaskUriEvm } from '../metamask/connectWithMetaMaskUriEvm
4
4
  export type { ConnectWithMetaMaskUriEvmParams } from '../metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm';
5
5
  export { MetaMaskDirectConnectNotSupportedError } from '../errors/MetaMaskDirectConnectNotSupportedError';
6
6
  export { getMetaMaskEvmExtensionWalletProviderKey } from '../metamask/getMetaMaskEvmExtensionWalletProviderKey';
7
+ export { registerMetaMaskEvmUriConnectionStarter } from '../metamask/registerMetaMaskEvmUriConnectionStarter';
7
8
  export { MetaMaskDisplayUriMissingError } from '@dynamic-labs-sdk/metamask';
8
9
  //# sourceMappingURL=metamask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metamask.d.ts","sourceRoot":"","sources":["../../src/exports/metamask.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,YAAY,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AACvH,OAAO,EAAE,sCAAsC,EAAE,MAAM,kDAAkD,CAAC;AAC1G,OAAO,EAAE,wCAAwC,EAAE,MAAM,sDAAsD,CAAC;AAChH,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"metamask.d.ts","sourceRoot":"","sources":["../../src/exports/metamask.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,YAAY,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AACvH,OAAO,EAAE,sCAAsC,EAAE,MAAM,kDAAkD,CAAC;AAC1G,OAAO,EAAE,wCAAwC,EAAE,MAAM,sDAAsD,CAAC;AAChH,OAAO,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAC9G,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
- const require_package = require('./package-Dk-SYXOE.cjs');
1
+ const require_package = require('./package-cXTEEW7P.cjs');
2
2
  const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
3
3
  const require_createPublicClientFromNetworkData = require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
4
4
  require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
5
5
  const require_addEIP6963Extension = require('./addEIP6963Extension-gjlsf_jt.cjs');
6
- const require_addWaasEvmExtension = require('./addWaasEvmExtension-CP2ibnvq.cjs');
6
+ const require_addWaasEvmExtension = require('./addWaasEvmExtension-BjoGfmQX.cjs');
7
7
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
8
8
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
9
9
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
package/dist/index.esm.js CHANGED
@@ -1,9 +1,9 @@
1
- import { n as version, t as name } from "./package-DrSY9NJE.esm.js";
1
+ import { n as version, t as name } from "./package-wISL2vMS.esm.js";
2
2
  import { _ as SponsorTransactionError, c as RpcError, d as getEVMSponsoredTransactionStatus, f as relaySponsoredTransaction, g as generateSponsoredTransactionNonce, h as is7702DelegationActive, i as isEvmGasSponsorshipEnabled, l as sendSponsoredTransaction, m as sign7702Authorization, o as isEvmWalletAccount, p as signSponsoredTransaction, u as waitForSponsoredTransaction } from "./evmTransferAmount-BQy79Fgj.esm.js";
3
3
  import { t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-CKikh3WW.esm.js";
4
4
  import "./createWalletProviderFromEIP1193Provider-HOkyZ1dS.esm.js";
5
5
  import { t as addEIP6963Extension } from "./addEIP6963Extension-g4FOMl7A.esm.js";
6
- import { t as addWaasEvmExtension } from "./addWaasEvmExtension-CyXCTxGv.esm.js";
6
+ import { t as addWaasEvmExtension } from "./addWaasEvmExtension-BMR_gR6B.esm.js";
7
7
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
8
8
  import { BaseError, FeeEstimationFailedError, InvalidParamError, ScreeningNotRequiredError, SimulationFailedError, getDefaultClient, getNetworksData, screenTransaction } from "@dynamic-labs-sdk/client";
9
9
  import { createApiClient, getCore, getDefaultClient as getDefaultClient$1, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
@@ -1,8 +1,8 @@
1
- import { n as version, t as name } from "./package-BnSw-03C.native.esm.js";
1
+ import { n as version, t as name } from "./package-DHXe8K1l.native.esm.js";
2
2
  import { _ as SponsorTransactionError, c as RpcError, d as getEVMSponsoredTransactionStatus, f as relaySponsoredTransaction, g as generateSponsoredTransactionNonce, h as is7702DelegationActive, i as isEvmGasSponsorshipEnabled, l as sendSponsoredTransaction, m as sign7702Authorization, o as isEvmWalletAccount, p as signSponsoredTransaction, u as waitForSponsoredTransaction } from "./evmTransferAmount-BftkuI-H.native.esm.js";
3
3
  import { t as createPublicClientFromNetworkData } from "./createPublicClientFromNetworkData-9g8Hsu4A.native.esm.js";
4
4
  import { t as addEIP6963Extension } from "./addEIP6963Extension-ZpGdqv-5.native.esm.js";
5
- import { t as addWaasEvmExtension } from "./addWaasEvmExtension-DYKWl5DG.native.esm.js";
5
+ import { t as addWaasEvmExtension } from "./addWaasEvmExtension-KdZlXrUW.native.esm.js";
6
6
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
7
7
  import { BaseError, FeeEstimationFailedError, InvalidParamError, ScreeningNotRequiredError, SimulationFailedError, getDefaultClient, getNetworksData, screenTransaction } from "@dynamic-labs-sdk/client";
8
8
  import { createApiClient, getCore, getDefaultClient as getDefaultClient$1, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
@@ -0,0 +1,2 @@
1
+ export { registerMetaMaskEvmUriConnectionStarter } from './registerMetaMaskEvmUriConnectionStarter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metamask/registerMetaMaskEvmUriConnectionStarter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Registers the MetaMask SDK URI pairing for EVM with the client, so higher
3
+ * level connection APIs can mint a MetaMask URI for EVM without depending on
4
+ * this package.
5
+ *
6
+ * Call it during app setup to opt into the MetaMask URI path — it is kept out
7
+ * of the EVM extension so apps that never pair with MetaMask over a URI don't
8
+ * bundle the MetaMask SDK.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * registerMetaMaskEvmUriConnectionStarter();
13
+ * ```
14
+ *
15
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
16
+ * @returns Nothing.
17
+ * @see connectWithMetaMaskUriEvm
18
+ * @see getUriConnectionStarterRegistry
19
+ * @notInstrumented
20
+ */
21
+ export declare const registerMetaMaskEvmUriConnectionStarter: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
22
+ //# sourceMappingURL=registerMetaMaskEvmUriConnectionStarter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerMetaMaskEvmUriConnectionStarter.d.ts","sourceRoot":"","sources":["../../../src/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uCAAuC,GAClD,yDAA2B,KAC1B,IAOF,CAAC"}
package/dist/metamask.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-Dk-SYXOE.cjs');
1
+ const require_package = require('./package-cXTEEW7P.cjs');
2
2
  const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
3
3
  require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
4
4
  const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
@@ -303,6 +303,36 @@ const connectWithMetaMaskUriEvm = ({ addToDynamicWalletAccounts = true } = {}, c
303
303
  */
304
304
  const getMetaMaskEvmExtensionWalletProviderKey = (client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => (0, _dynamic_labs_sdk_metamask.getMetaMaskExtensionWalletProviderKey)({ chain: "EVM" }, client);
305
305
 
306
+ //#endregion
307
+ //#region src/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.ts
308
+ /**
309
+ * Registers the MetaMask SDK URI pairing for EVM with the client, so higher
310
+ * level connection APIs can mint a MetaMask URI for EVM without depending on
311
+ * this package.
312
+ *
313
+ * Call it during app setup to opt into the MetaMask URI path — it is kept out
314
+ * of the EVM extension so apps that never pair with MetaMask over a URI don't
315
+ * bundle the MetaMask SDK.
316
+ *
317
+ * @example
318
+ * ```ts
319
+ * registerMetaMaskEvmUriConnectionStarter();
320
+ * ```
321
+ *
322
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
323
+ * @returns Nothing.
324
+ * @see connectWithMetaMaskUriEvm
325
+ * @see getUriConnectionStarterRegistry
326
+ * @notInstrumented
327
+ */
328
+ const registerMetaMaskEvmUriConnectionStarter = (client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
329
+ (0, _dynamic_labs_sdk_client_core.getUriConnectionStarterRegistry)(client).register({
330
+ chain: "EVM",
331
+ start: ({ addToDynamicWalletAccounts }) => connectWithMetaMaskUriEvm({ addToDynamicWalletAccounts }, client),
332
+ type: "metamaskSdkUri"
333
+ });
334
+ };
335
+
306
336
  //#endregion
307
337
  //#region src/exports/metamask.ts
308
338
  (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_package.name, require_package.version);
@@ -319,4 +349,5 @@ exports.addMetaMaskEvmExtension = addMetaMaskEvmExtension;
319
349
  exports.connectAndVerifyWithMetaMaskUriEvm = connectAndVerifyWithMetaMaskUriEvm;
320
350
  exports.connectWithMetaMaskUriEvm = connectWithMetaMaskUriEvm;
321
351
  exports.getMetaMaskEvmExtensionWalletProviderKey = getMetaMaskEvmExtensionWalletProviderKey;
352
+ exports.registerMetaMaskEvmUriConnectionStarter = registerMetaMaskEvmUriConnectionStarter;
322
353
  //# sourceMappingURL=metamask.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"metamask.cjs","names":["BaseError","WalletProviderEnum","DYNAMIC_ICONIC_SPRITE_URL","createWalletProviderFromEIP1193Provider","WalletProviderEnum","disconnectWalletAccount: EvmWalletProvider['disconnectWalletAccount']","destroy: EvmWalletProvider['destroy']","packageName","packageVersion"],"sources":["../src/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.ts","../src/metamask/getMetaMaskEvmSdkWalletProviderKey/getMetaMaskEvmSdkWalletProviderKey.ts","../src/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.ts","../src/metamask/addMetaMaskEvmExtension/addMetaMaskEvmExtension.ts","../src/metamask/connectAndVerifyWithMetaMaskUriEvm/connectAndVerifyWithMetaMaskUriEvm.ts","../src/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.ts","../src/metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm.ts","../src/metamask/getMetaMaskEvmExtensionWalletProviderKey/getMetaMaskEvmExtensionWalletProviderKey.ts","../src/exports/metamask.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\n/**\n * Thrown when `connect()` is called directly on the MetaMask SDK placeholder\n * wallet provider (the entry `addMetaMaskEvmExtension` registers so MetaMask\n * still shows up in the wallet picker when no browser extension is\n * installed). That placeholder has no generic connect flow of its own --\n * connecting requires the QR / deeplink pairing flow, so callers must drive\n * `connectWithMetaMaskUriEvm` (or `connectAndVerifyWithMetaMaskUriEvm`)\n * instead of the picker's default connect.\n */\nexport class MetaMaskDirectConnectNotSupportedError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'metamask_direct_connect_not_supported',\n docsUrl: null,\n name: 'MetaMaskDirectConnectNotSupportedError',\n shortMessage:\n 'MetaMask cannot be connected directly; call connectWithMetaMaskUriEvm (or connectAndVerifyWithMetaMaskUriEvm) to get a QR/URI pairing flow instead',\n });\n }\n}\n","import { formatWalletProviderKey } from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\n// Kept in sync with `createMetaMaskEvmWalletProvider`'s own copy of this\n// display name -- both derive the same deterministic key, and duplicating\n// the string here is simpler than threading a shared constant through an\n// aggregating export.\nconst METAMASK_EVM_SDK_DISPLAY_NAME = 'MetaMask';\n\n/**\n * Deterministic wallet provider key for the MetaMask SDK's connect-less EVM\n * placeholder. Computed without building the wallet provider itself, so\n * `addMetaMaskEvmExtension` can check for a matching wallet account before\n * paying the cost of `createMetaMaskEvmWalletProvider`.\n *\n * @example\n * ```ts\n * const key = getMetaMaskEvmSdkWalletProviderKey();\n * ```\n * @returns The deterministic wallet provider key.\n * @see createMetaMaskEvmWalletProvider\n * @see reconcileMetaMaskWalletProvider\n * @notInstrumented\n */\nexport const getMetaMaskEvmSdkWalletProviderKey = (): string =>\n formatWalletProviderKey({\n chain: 'EVM',\n displayName: METAMASK_EVM_SDK_DISPLAY_NAME,\n walletProviderType: WalletProviderEnum.QrCode,\n });\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n DYNAMIC_ICONIC_SPRITE_URL,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n assertMetaMaskNetworkIsGranted,\n createMetaMaskWalletProviderEventEmitter,\n disconnectMetaMaskWalletProvider,\n getOrCreateMetaMaskClientInstanceManager,\n resolveActiveMetaMaskScope,\n} from '@dynamic-labs-sdk/metamask/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { MetaMaskDirectConnectNotSupportedError } from '../../errors/MetaMaskDirectConnectNotSupportedError';\nimport type {\n EIP1193Provider,\n EIP1193ProviderRequest,\n EvmWalletProvider,\n} from '../../EvmWalletProvider.types';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { getMetaMaskEvmSdkWalletProviderKey } from '../getMetaMaskEvmSdkWalletProviderKey';\n\nconst METAMASK_DISPLAY_NAME = 'MetaMask';\nconst METAMASK_ICON = `${DYNAMIC_ICONIC_SPRITE_URL}#metamask`;\n\n/**\n * Builds the `EvmWalletProvider` registered AFTER a successful MetaMask\n * SDK URI pairing. Wraps the SDK's EIP-1193 provider behind the Dynamic\n * facade and drops `connect` so the provider is filtered out of the\n * wallet picker by `getAvailableWalletProvidersData` — mirroring how\n * WalletConnect URI sessions register a signing-only provider. The facade's\n * `request` also traces dispatch/resolution at debug level, since a signing\n * request that never gets a deep-link back to the wallet otherwise leaves\n * no signal on the Dynamic side.\n *\n * `on` is a no-op: the facade doesn't yet bridge MetaMask's own\n * `accountsChanged`/`chainChanged`/`disconnected` events through to the\n * EIP-1193 listener contract.\n *\n * `switchActiveNetwork` routes through `assertMetaMaskNetworkIsGranted`\n * before persisting -- see its inline comment for why (every configured\n * network is an *optional* MetaMask scope, so signing/sending calls on an\n * ungranted one would otherwise fail). The facade's `request` similarly\n * routes its active-network lookup through `resolveActiveMetaMaskScope`\n * rather than reading the registry directly, so a default network MetaMask\n * never granted self-heals before it reaches a real signing/sending call.\n *\n * `switchActiveNetwork`/`disconnectWalletAccount` are local, Dynamic-side\n * actions with no live wallet event to bridge, so they emit `networkChanged`/\n * `disconnected` themselves via `metaMaskEvents` -- otherwise `events` would\n * never fire for MetaMask at all (unlike every other EVM wallet provider,\n * whose events come from bridging the wallet's own EIP-1193 events).\n *\n * @notInstrumented\n */\nexport const createMetaMaskEvmWalletProvider = (\n client: DynamicClient\n): EvmWalletProvider => {\n const metaMaskClientInstanceManager =\n getOrCreateMetaMaskClientInstanceManager(client);\n\n const walletProviderKey = getMetaMaskEvmSdkWalletProviderKey();\n\n // MetaMask's multichain session never fires a live wallet event we could\n // bridge for `switchActiveNetwork`/`disconnectWalletAccount` below (both are\n // local, Dynamic-side actions -- see their own comments), so this emitter is\n // the only way `onWalletProviderEvent` consumers ever hear about them.\n const metaMaskEvents = createMetaMaskWalletProviderEventEmitter();\n\n const eip1193Provider: EIP1193Provider = {\n on: () => {\n // No-op: see the `on` note in this function's JSDoc.\n },\n removeAllListeners: () => {\n // No-op: nothing is ever subscribed by `on` above.\n },\n request: async <T = unknown>(\n request: EIP1193ProviderRequest\n ): Promise<T> => {\n const { logger } = getCore(client);\n const metaMaskClient =\n await metaMaskClientInstanceManager.getMetaMaskClient();\n\n try {\n // Self-heals the active network the same way SOL does: if the\n // registry's default network (the first configured one for this\n // chain -- see `resolveActiveMetaMaskScope`) has no granted\n // account, this falls back to one that does. Without this,\n // `eth_accounts` would still report a connected address (it's an\n // unscoped EIP-1193 passthrough MetaMask never CAIP-checks -- see\n // its own JSDoc), silently masking that every *scope-checked*\n // signing/sending call below would fail against the ungranted\n // default network.\n const { networkId } = await resolveActiveMetaMaskScope(\n { chain: 'EVM', metaMaskClient, walletProviderKey },\n client\n );\n\n logger.debug('[MetaMask:Provider] eip1193 request dispatched', {\n method: request.method,\n networkId,\n status: metaMaskClient.status,\n });\n\n if (request.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as T;\n }\n\n const result = (await metaMaskClient.invokeMethod({\n request,\n scope: `eip155:${networkId}`,\n })) as T;\n\n logger.debug('[MetaMask:Provider] eip1193 request resolved', {\n method: request.method,\n });\n\n return result;\n } catch (error) {\n logger.warn('[MetaMask:Provider] eip1193 request rejected', {\n error,\n method: request.method,\n });\n throw error;\n }\n },\n };\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: METAMASK_DISPLAY_NAME,\n eip1193: eip1193Provider,\n icon: METAMASK_ICON,\n walletProviderType: WalletProviderEnum.QrCode,\n },\n client\n );\n\n // The generic switchActiveNetwork (wired by createWalletProviderFromEIP1193Provider)\n // asks the wallet live via `eth_chainId`/`wallet_switchEthereumChain`, which doesn't\n // apply here: the MetaMask multichain session already grants every configured chain\n // as its own scope up front, so \"switching\" is just updating which scope `request`\n // targets next, tracked in Dynamic's own last-known-network registry. Guarded against\n // ever pointing that registry at a network MetaMask didn't actually grant an account\n // for -- unlike `eth_accounts` (a raw EIP-1193 passthrough MetaMask doesn't scope-check),\n // every other method here (`personal_sign`, `eth_sendTransaction`, etc.) IS scope-checked,\n // so switching to an ungranted network would silently break every subsequent request on\n // it -- see `assertMetaMaskNetworkIsGranted`.\n const switchActiveNetwork = async ({\n networkId,\n }: {\n networkId: string;\n }): Promise<void> => {\n const metaMaskClient =\n await metaMaskClientInstanceManager.getMetaMaskClient();\n\n await assertMetaMaskNetworkIsGranted(\n { chain: 'EVM', metaMaskClient, networkId },\n client\n );\n\n // Read the previous value before writing, so networkChanged only fires\n // on an actual change -- switching to the network that's already active\n // is a no-op as far as any `onWalletProviderEvent` subscriber is concerned.\n const { networkId: previousNetworkId } =\n await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey,\n });\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey,\n });\n\n if (networkId !== previousNetworkId) {\n metaMaskEvents.emitNetworkChanged({ networkId });\n }\n };\n\n // Overrides the generic EIP-1193 `destroy` (which merely revokes wallet\n // permissions): a MetaMask multichain session is scope-based rather than\n // per-provider, so ending it properly means dropping this chain's scopes\n // and cleaning up the persisted session -- see `disconnectMetaMaskWalletProvider`.\n const disconnectWalletAccount: EvmWalletProvider['disconnectWalletAccount'] =\n async () => {\n await disconnectMetaMaskWalletProvider(\n { chain: 'EVM', walletProviderKey },\n client\n );\n metaMaskEvents.emitDisconnected();\n };\n\n // Overrides the generic EIP-1193 `destroy` -- it only cleans up its own\n // internal event emitter, so `metaMaskEvents` (the emitter behind `events`\n // above) would otherwise never get cleaned up.\n const destroy: EvmWalletProvider['destroy'] = async (args) => {\n await walletProvider.destroy?.(args);\n metaMaskEvents.cleanupEventEmitter();\n };\n\n return {\n ...walletProvider,\n connect: async () => {\n throw new MetaMaskDirectConnectNotSupportedError();\n },\n destroy,\n disconnectWalletAccount,\n get events() {\n return metaMaskEvents.getEventEmitter();\n },\n switchActiveNetwork,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n getDefaultClient,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { reconcileMetaMaskWalletProvider } from '@dynamic-labs-sdk/metamask/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\nimport { getMetaMaskEvmSdkWalletProviderKey } from '../getMetaMaskEvmSdkWalletProviderKey';\n\nexport const METAMASK_EVM_EXTENSION_KEY = 'metaMaskEvm';\n\n/**\n * Integrates MetaMask Connect (MetaMask's multichain SDK) with the Dynamic\n * client for EVM, letting users connect MetaMask on platforms where the\n * browser extension isn't available — e.g. scanning a QR code, or opening\n * the MetaMask mobile app from a website or React Native app. Call this\n * once during setup.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: '...' });\n *\n * addMetaMaskEvmExtension(client);\n * ```\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see connectWithMetaMaskUriEvm\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const addMetaMaskEvmExtension = (\n client: DynamicClient = getDefaultClient()\n): void => {\n if (hasExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerEvmNetworkProviderBuilder(client);\n registerExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client);\n\n reconcileMetaMaskWalletProvider(\n {\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n walletProviderKey: getMetaMaskEvmSdkWalletProviderKey(),\n },\n client\n );\n};\n","import {\n type WalletAccount,\n type WalletProviderUriConnectionResult,\n getDefaultClient,\n verifyWalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport { connectWithMetaMaskUri } from '@dynamic-labs-sdk/metamask';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\n\n/**\n * Drives a MetaMask SDK URI pairing for EVM and verifies ownership of the\n * paired wallet account through message signing, returning `{ approval, uri }`\n * so consumers can render the QR / hand the URI to a deeplink.\n *\n * Unlike `connectAndVerifyWithWalletConnectEvm`, the MetaMask SDK does not\n * expose a single-round-trip authenticate primitive, so this drives two\n * sequential interactions on the wallet side: the user first approves the\n * pairing, then approves a sign-in message. The wallet account is added to\n * the Dynamic client as a verified credential (not as an unverified\n * account).\n *\n * @notInstrumented\n */\nexport const connectAndVerifyWithMetaMaskUriEvm = async (\n client = getDefaultClient()\n): Promise<WalletProviderUriConnectionResult> => {\n registerEvmNetworkProviderBuilder(client);\n\n const { approval, uri } = await connectWithMetaMaskUri(\n {\n addToDynamicWalletAccounts: false,\n chain: 'EVM',\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n },\n client\n );\n\n const verifiedApproval = async (): Promise<{\n walletAccounts: WalletAccount[];\n }> => {\n const { walletAccounts } = await approval();\n\n // MetaMask SDK exposes a single active address per pairing (same\n // model as EIP-1193 `eth_accounts`), mirroring how the underlying\n // `connectWithMetaMaskUri` materializes a single account from\n // `addresses[0]`. Verify it directly.\n const [walletAccount] = walletAccounts;\n\n if (walletAccount) {\n await verifyWalletAccount({ walletAccount }, client);\n }\n\n return { walletAccounts };\n };\n\n return { approval: verifiedApproval, uri };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getCore, hasExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { METAMASK_EVM_EXTENSION_KEY } from '../addMetaMaskEvmExtension/addMetaMaskEvmExtension';\n\n/**\n * Warns when `addMetaMaskEvmExtension()` hasn't been added, since a wallet\n * connected via `connectWithMetaMaskUriEvm` without it won't be restored\n * after a page reload.\n *\n * @example\n * ```ts\n * warnMetaMaskEvmIntegrationIncomplete(client);\n * ```\n * @param client - The Dynamic client instance.\n * @returns void\n * @see connectWithMetaMaskUriEvm\n * @see addMetaMaskEvmExtension\n * @notInstrumented\n */\nexport const warnMetaMaskEvmIntegrationIncomplete = (\n client: DynamicClient\n): void => {\n if (hasExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) {\n return;\n }\n\n getCore(client).logger.warn(\n `MetaMask integration is incomplete: addMetaMaskEvmExtension() is missing. Add it during setup:\n\nimport { addMetaMaskEvmExtension } from '@dynamic-labs-sdk/evm/metamask';\nimport { createDynamicClient } from '@dynamic-labs-sdk/client';\n\nconst client = createDynamicClient({ environmentId: '...' });\n\naddMetaMaskEvmExtension(client);`\n );\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { WalletProviderUriConnectionResult } from '@dynamic-labs-sdk/client';\nimport { connectWithMetaMaskUri } from '@dynamic-labs-sdk/metamask';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\nimport { warnMetaMaskEvmIntegrationIncomplete } from '../warnMetaMaskEvmIntegrationIncomplete';\n\nexport type ConnectWithMetaMaskUriEvmParams = {\n /** Whether to add the connected wallet account to the Dynamic client. Defaults to `true`. */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/**\n * Drives a MetaMask SDK URI pairing for EVM and returns `{ approval, uri }` so\n * consumers can render the QR / hand the URI to a deeplink. Logs an advisory\n * warning when the MetaMask extension is announced via EIP-6963; pairing still\n * proceeds, but the consumer is told which announced provider key to route\n * through for the best UX. The resulting wallet provider registers for signing\n * only and is never surfaced in the wallet picker.\n *\n * @notInstrumented\n */\nexport const connectWithMetaMaskUriEvm = (\n { addToDynamicWalletAccounts = true }: ConnectWithMetaMaskUriEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletProviderUriConnectionResult> => {\n warnMetaMaskEvmIntegrationIncomplete(client);\n\n registerEvmNetworkProviderBuilder(client);\n\n return connectWithMetaMaskUri(\n {\n addToDynamicWalletAccounts,\n chain: 'EVM',\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n },\n client\n );\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getMetaMaskExtensionWalletProviderKey } from '@dynamic-labs-sdk/metamask';\n\n/**\n * Returns the wallet provider key of the MetaMask browser extension announced\n * for EVM, or `undefined` when none is announced. Pass the returned key to\n * `connectWithWalletProvider` to route through the announced provider; fall\n * back to `connectWithMetaMaskUriEvm` when `undefined`.\n *\n * @notInstrumented\n */\nexport const getMetaMaskEvmExtensionWalletProviderKey = (\n client = getDefaultClient()\n): string | undefined =>\n getMetaMaskExtensionWalletProviderKey({ chain: 'EVM' }, client);\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 { addMetaMaskEvmExtension } from '../metamask/addMetaMaskEvmExtension';\nexport { connectAndVerifyWithMetaMaskUriEvm } from '../metamask/connectAndVerifyWithMetaMaskUriEvm';\nexport { connectWithMetaMaskUriEvm } from '../metamask/connectWithMetaMaskUriEvm';\nexport type { ConnectWithMetaMaskUriEvmParams } from '../metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm';\nexport { MetaMaskDirectConnectNotSupportedError } from '../errors/MetaMaskDirectConnectNotSupportedError';\nexport { getMetaMaskEvmExtensionWalletProviderKey } from '../metamask/getMetaMaskEvmExtensionWalletProviderKey';\nexport { MetaMaskDisplayUriMissingError } from '@dynamic-labs-sdk/metamask';\n"],"mappings":"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"}
1
+ {"version":3,"file":"metamask.cjs","names":["BaseError","WalletProviderEnum","DYNAMIC_ICONIC_SPRITE_URL","createWalletProviderFromEIP1193Provider","WalletProviderEnum","disconnectWalletAccount: EvmWalletProvider['disconnectWalletAccount']","destroy: EvmWalletProvider['destroy']","packageName","packageVersion"],"sources":["../src/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.ts","../src/metamask/getMetaMaskEvmSdkWalletProviderKey/getMetaMaskEvmSdkWalletProviderKey.ts","../src/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.ts","../src/metamask/addMetaMaskEvmExtension/addMetaMaskEvmExtension.ts","../src/metamask/connectAndVerifyWithMetaMaskUriEvm/connectAndVerifyWithMetaMaskUriEvm.ts","../src/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.ts","../src/metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm.ts","../src/metamask/getMetaMaskEvmExtensionWalletProviderKey/getMetaMaskEvmExtensionWalletProviderKey.ts","../src/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.ts","../src/exports/metamask.ts"],"sourcesContent":["import { BaseError } from '@dynamic-labs-sdk/client';\n\n/**\n * Thrown when `connect()` is called directly on the MetaMask SDK placeholder\n * wallet provider (the entry `addMetaMaskEvmExtension` registers so MetaMask\n * still shows up in the wallet picker when no browser extension is\n * installed). That placeholder has no generic connect flow of its own --\n * connecting requires the QR / deeplink pairing flow, so callers must drive\n * `connectWithMetaMaskUriEvm` (or `connectAndVerifyWithMetaMaskUriEvm`)\n * instead of the picker's default connect.\n */\nexport class MetaMaskDirectConnectNotSupportedError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'metamask_direct_connect_not_supported',\n docsUrl: null,\n name: 'MetaMaskDirectConnectNotSupportedError',\n shortMessage:\n 'MetaMask cannot be connected directly; call connectWithMetaMaskUriEvm (or connectAndVerifyWithMetaMaskUriEvm) to get a QR/URI pairing flow instead',\n });\n }\n}\n","import { formatWalletProviderKey } from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\n// Kept in sync with `createMetaMaskEvmWalletProvider`'s own copy of this\n// display name -- both derive the same deterministic key, and duplicating\n// the string here is simpler than threading a shared constant through an\n// aggregating export.\nconst METAMASK_EVM_SDK_DISPLAY_NAME = 'MetaMask';\n\n/**\n * Deterministic wallet provider key for the MetaMask SDK's connect-less EVM\n * placeholder. Computed without building the wallet provider itself, so\n * `addMetaMaskEvmExtension` can check for a matching wallet account before\n * paying the cost of `createMetaMaskEvmWalletProvider`.\n *\n * @example\n * ```ts\n * const key = getMetaMaskEvmSdkWalletProviderKey();\n * ```\n * @returns The deterministic wallet provider key.\n * @see createMetaMaskEvmWalletProvider\n * @see reconcileMetaMaskWalletProvider\n * @notInstrumented\n */\nexport const getMetaMaskEvmSdkWalletProviderKey = (): string =>\n formatWalletProviderKey({\n chain: 'EVM',\n displayName: METAMASK_EVM_SDK_DISPLAY_NAME,\n walletProviderType: WalletProviderEnum.QrCode,\n });\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n DYNAMIC_ICONIC_SPRITE_URL,\n getActiveNetworkIdFromLastKnownRegistry,\n getCore,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n assertMetaMaskNetworkIsGranted,\n createMetaMaskWalletProviderEventEmitter,\n disconnectMetaMaskWalletProvider,\n getOrCreateMetaMaskClientInstanceManager,\n resolveActiveMetaMaskScope,\n} from '@dynamic-labs-sdk/metamask/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { MetaMaskDirectConnectNotSupportedError } from '../../errors/MetaMaskDirectConnectNotSupportedError';\nimport type {\n EIP1193Provider,\n EIP1193ProviderRequest,\n EvmWalletProvider,\n} from '../../EvmWalletProvider.types';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { getMetaMaskEvmSdkWalletProviderKey } from '../getMetaMaskEvmSdkWalletProviderKey';\n\nconst METAMASK_DISPLAY_NAME = 'MetaMask';\nconst METAMASK_ICON = `${DYNAMIC_ICONIC_SPRITE_URL}#metamask`;\n\n/**\n * Builds the `EvmWalletProvider` registered AFTER a successful MetaMask\n * SDK URI pairing. Wraps the SDK's EIP-1193 provider behind the Dynamic\n * facade and drops `connect` so the provider is filtered out of the\n * wallet picker by `getAvailableWalletProvidersData` — mirroring how\n * WalletConnect URI sessions register a signing-only provider. The facade's\n * `request` also traces dispatch/resolution at debug level, since a signing\n * request that never gets a deep-link back to the wallet otherwise leaves\n * no signal on the Dynamic side.\n *\n * `on` is a no-op: the facade doesn't yet bridge MetaMask's own\n * `accountsChanged`/`chainChanged`/`disconnected` events through to the\n * EIP-1193 listener contract.\n *\n * `switchActiveNetwork` routes through `assertMetaMaskNetworkIsGranted`\n * before persisting -- see its inline comment for why (every configured\n * network is an *optional* MetaMask scope, so signing/sending calls on an\n * ungranted one would otherwise fail). The facade's `request` similarly\n * routes its active-network lookup through `resolveActiveMetaMaskScope`\n * rather than reading the registry directly, so a default network MetaMask\n * never granted self-heals before it reaches a real signing/sending call.\n *\n * `switchActiveNetwork`/`disconnectWalletAccount` are local, Dynamic-side\n * actions with no live wallet event to bridge, so they emit `networkChanged`/\n * `disconnected` themselves via `metaMaskEvents` -- otherwise `events` would\n * never fire for MetaMask at all (unlike every other EVM wallet provider,\n * whose events come from bridging the wallet's own EIP-1193 events).\n *\n * @notInstrumented\n */\nexport const createMetaMaskEvmWalletProvider = (\n client: DynamicClient\n): EvmWalletProvider => {\n const metaMaskClientInstanceManager =\n getOrCreateMetaMaskClientInstanceManager(client);\n\n const walletProviderKey = getMetaMaskEvmSdkWalletProviderKey();\n\n // MetaMask's multichain session never fires a live wallet event we could\n // bridge for `switchActiveNetwork`/`disconnectWalletAccount` below (both are\n // local, Dynamic-side actions -- see their own comments), so this emitter is\n // the only way `onWalletProviderEvent` consumers ever hear about them.\n const metaMaskEvents = createMetaMaskWalletProviderEventEmitter();\n\n const eip1193Provider: EIP1193Provider = {\n on: () => {\n // No-op: see the `on` note in this function's JSDoc.\n },\n removeAllListeners: () => {\n // No-op: nothing is ever subscribed by `on` above.\n },\n request: async <T = unknown>(\n request: EIP1193ProviderRequest\n ): Promise<T> => {\n const { logger } = getCore(client);\n const metaMaskClient =\n await metaMaskClientInstanceManager.getMetaMaskClient();\n\n try {\n // Self-heals the active network the same way SOL does: if the\n // registry's default network (the first configured one for this\n // chain -- see `resolveActiveMetaMaskScope`) has no granted\n // account, this falls back to one that does. Without this,\n // `eth_accounts` would still report a connected address (it's an\n // unscoped EIP-1193 passthrough MetaMask never CAIP-checks -- see\n // its own JSDoc), silently masking that every *scope-checked*\n // signing/sending call below would fail against the ungranted\n // default network.\n const { networkId } = await resolveActiveMetaMaskScope(\n { chain: 'EVM', metaMaskClient, walletProviderKey },\n client\n );\n\n logger.debug('[MetaMask:Provider] eip1193 request dispatched', {\n method: request.method,\n networkId,\n status: metaMaskClient.status,\n });\n\n if (request.method === 'eth_chainId') {\n return `0x${Number(networkId).toString(16)}` as T;\n }\n\n const result = (await metaMaskClient.invokeMethod({\n request,\n scope: `eip155:${networkId}`,\n })) as T;\n\n logger.debug('[MetaMask:Provider] eip1193 request resolved', {\n method: request.method,\n });\n\n return result;\n } catch (error) {\n logger.warn('[MetaMask:Provider] eip1193 request rejected', {\n error,\n method: request.method,\n });\n throw error;\n }\n },\n };\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: METAMASK_DISPLAY_NAME,\n eip1193: eip1193Provider,\n icon: METAMASK_ICON,\n walletProviderType: WalletProviderEnum.QrCode,\n },\n client\n );\n\n // The generic switchActiveNetwork (wired by createWalletProviderFromEIP1193Provider)\n // asks the wallet live via `eth_chainId`/`wallet_switchEthereumChain`, which doesn't\n // apply here: the MetaMask multichain session already grants every configured chain\n // as its own scope up front, so \"switching\" is just updating which scope `request`\n // targets next, tracked in Dynamic's own last-known-network registry. Guarded against\n // ever pointing that registry at a network MetaMask didn't actually grant an account\n // for -- unlike `eth_accounts` (a raw EIP-1193 passthrough MetaMask doesn't scope-check),\n // every other method here (`personal_sign`, `eth_sendTransaction`, etc.) IS scope-checked,\n // so switching to an ungranted network would silently break every subsequent request on\n // it -- see `assertMetaMaskNetworkIsGranted`.\n const switchActiveNetwork = async ({\n networkId,\n }: {\n networkId: string;\n }): Promise<void> => {\n const metaMaskClient =\n await metaMaskClientInstanceManager.getMetaMaskClient();\n\n await assertMetaMaskNetworkIsGranted(\n { chain: 'EVM', metaMaskClient, networkId },\n client\n );\n\n // Read the previous value before writing, so networkChanged only fires\n // on an actual change -- switching to the network that's already active\n // is a no-op as far as any `onWalletProviderEvent` subscriber is concerned.\n const { networkId: previousNetworkId } =\n await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey,\n });\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey,\n });\n\n if (networkId !== previousNetworkId) {\n metaMaskEvents.emitNetworkChanged({ networkId });\n }\n };\n\n // Overrides the generic EIP-1193 `destroy` (which merely revokes wallet\n // permissions): a MetaMask multichain session is scope-based rather than\n // per-provider, so ending it properly means dropping this chain's scopes\n // and cleaning up the persisted session -- see `disconnectMetaMaskWalletProvider`.\n const disconnectWalletAccount: EvmWalletProvider['disconnectWalletAccount'] =\n async () => {\n await disconnectMetaMaskWalletProvider(\n { chain: 'EVM', walletProviderKey },\n client\n );\n metaMaskEvents.emitDisconnected();\n };\n\n // Overrides the generic EIP-1193 `destroy` -- it only cleans up its own\n // internal event emitter, so `metaMaskEvents` (the emitter behind `events`\n // above) would otherwise never get cleaned up.\n const destroy: EvmWalletProvider['destroy'] = async (args) => {\n await walletProvider.destroy?.(args);\n metaMaskEvents.cleanupEventEmitter();\n };\n\n return {\n ...walletProvider,\n connect: async () => {\n throw new MetaMaskDirectConnectNotSupportedError();\n },\n destroy,\n disconnectWalletAccount,\n get events() {\n return metaMaskEvents.getEventEmitter();\n },\n switchActiveNetwork,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n getDefaultClient,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\nimport { reconcileMetaMaskWalletProvider } from '@dynamic-labs-sdk/metamask/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\nimport { getMetaMaskEvmSdkWalletProviderKey } from '../getMetaMaskEvmSdkWalletProviderKey';\n\nexport const METAMASK_EVM_EXTENSION_KEY = 'metaMaskEvm';\n\n/**\n * Integrates MetaMask Connect (MetaMask's multichain SDK) with the Dynamic\n * client for EVM, letting users connect MetaMask on platforms where the\n * browser extension isn't available — e.g. scanning a QR code, or opening\n * the MetaMask mobile app from a website or React Native app. Call this\n * once during setup.\n *\n * @example\n * ```ts\n * const client = createDynamicClient({ environmentId: '...' });\n *\n * addMetaMaskEvmExtension(client);\n * ```\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns void\n * @see connectWithMetaMaskUriEvm\n * @see addEvmExtension\n * @notInstrumented\n */\nexport const addMetaMaskEvmExtension = (\n client: DynamicClient = getDefaultClient()\n): void => {\n if (hasExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerEvmNetworkProviderBuilder(client);\n registerExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client);\n\n reconcileMetaMaskWalletProvider(\n {\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n walletProviderKey: getMetaMaskEvmSdkWalletProviderKey(),\n },\n client\n );\n};\n","import {\n type WalletAccount,\n type WalletProviderUriConnectionResult,\n getDefaultClient,\n verifyWalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport { connectWithMetaMaskUri } from '@dynamic-labs-sdk/metamask';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\n\n/**\n * Drives a MetaMask SDK URI pairing for EVM and verifies ownership of the\n * paired wallet account through message signing, returning `{ approval, uri }`\n * so consumers can render the QR / hand the URI to a deeplink.\n *\n * Unlike `connectAndVerifyWithWalletConnectEvm`, the MetaMask SDK does not\n * expose a single-round-trip authenticate primitive, so this drives two\n * sequential interactions on the wallet side: the user first approves the\n * pairing, then approves a sign-in message. The wallet account is added to\n * the Dynamic client as a verified credential (not as an unverified\n * account).\n *\n * @notInstrumented\n */\nexport const connectAndVerifyWithMetaMaskUriEvm = async (\n client = getDefaultClient()\n): Promise<WalletProviderUriConnectionResult> => {\n registerEvmNetworkProviderBuilder(client);\n\n const { approval, uri } = await connectWithMetaMaskUri(\n {\n addToDynamicWalletAccounts: false,\n chain: 'EVM',\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n },\n client\n );\n\n const verifiedApproval = async (): Promise<{\n walletAccounts: WalletAccount[];\n }> => {\n const { walletAccounts } = await approval();\n\n // MetaMask SDK exposes a single active address per pairing (same\n // model as EIP-1193 `eth_accounts`), mirroring how the underlying\n // `connectWithMetaMaskUri` materializes a single account from\n // `addresses[0]`. Verify it directly.\n const [walletAccount] = walletAccounts;\n\n if (walletAccount) {\n await verifyWalletAccount({ walletAccount }, client);\n }\n\n return { walletAccounts };\n };\n\n return { approval: verifiedApproval, uri };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getCore, hasExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { METAMASK_EVM_EXTENSION_KEY } from '../addMetaMaskEvmExtension/addMetaMaskEvmExtension';\n\n/**\n * Warns when `addMetaMaskEvmExtension()` hasn't been added, since a wallet\n * connected via `connectWithMetaMaskUriEvm` without it won't be restored\n * after a page reload.\n *\n * @example\n * ```ts\n * warnMetaMaskEvmIntegrationIncomplete(client);\n * ```\n * @param client - The Dynamic client instance.\n * @returns void\n * @see connectWithMetaMaskUriEvm\n * @see addMetaMaskEvmExtension\n * @notInstrumented\n */\nexport const warnMetaMaskEvmIntegrationIncomplete = (\n client: DynamicClient\n): void => {\n if (hasExtension({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) {\n return;\n }\n\n getCore(client).logger.warn(\n `MetaMask integration is incomplete: addMetaMaskEvmExtension() is missing. Add it during setup:\n\nimport { addMetaMaskEvmExtension } from '@dynamic-labs-sdk/evm/metamask';\nimport { createDynamicClient } from '@dynamic-labs-sdk/client';\n\nconst client = createDynamicClient({ environmentId: '...' });\n\naddMetaMaskEvmExtension(client);`\n );\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport type { WalletProviderUriConnectionResult } from '@dynamic-labs-sdk/client';\nimport { connectWithMetaMaskUri } from '@dynamic-labs-sdk/metamask';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createMetaMaskEvmWalletProvider } from '../createMetaMaskEvmWalletProvider';\nimport { warnMetaMaskEvmIntegrationIncomplete } from '../warnMetaMaskEvmIntegrationIncomplete';\n\nexport type ConnectWithMetaMaskUriEvmParams = {\n /** Whether to add the connected wallet account to the Dynamic client. Defaults to `true`. */\n addToDynamicWalletAccounts?: boolean;\n};\n\n/**\n * Drives a MetaMask SDK URI pairing for EVM and returns `{ approval, uri }` so\n * consumers can render the QR / hand the URI to a deeplink. Logs an advisory\n * warning when the MetaMask extension is announced via EIP-6963; pairing still\n * proceeds, but the consumer is told which announced provider key to route\n * through for the best UX. The resulting wallet provider registers for signing\n * only and is never surfaced in the wallet picker.\n *\n * @notInstrumented\n */\nexport const connectWithMetaMaskUriEvm = (\n { addToDynamicWalletAccounts = true }: ConnectWithMetaMaskUriEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletProviderUriConnectionResult> => {\n warnMetaMaskEvmIntegrationIncomplete(client);\n\n registerEvmNetworkProviderBuilder(client);\n\n return connectWithMetaMaskUri(\n {\n addToDynamicWalletAccounts,\n chain: 'EVM',\n walletProviderBuilder: createMetaMaskEvmWalletProvider,\n },\n client\n );\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getMetaMaskExtensionWalletProviderKey } from '@dynamic-labs-sdk/metamask';\n\n/**\n * Returns the wallet provider key of the MetaMask browser extension announced\n * for EVM, or `undefined` when none is announced. Pass the returned key to\n * `connectWithWalletProvider` to route through the announced provider; fall\n * back to `connectWithMetaMaskUriEvm` when `undefined`.\n *\n * @notInstrumented\n */\nexport const getMetaMaskEvmExtensionWalletProviderKey = (\n client = getDefaultClient()\n): string | undefined =>\n getMetaMaskExtensionWalletProviderKey({ chain: 'EVM' }, client);\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { getUriConnectionStarterRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { connectWithMetaMaskUriEvm } from '../connectWithMetaMaskUriEvm';\n\n/**\n * Registers the MetaMask SDK URI pairing for EVM with the client, so higher\n * level connection APIs can mint a MetaMask URI for EVM without depending on\n * this package.\n *\n * Call it during app setup to opt into the MetaMask URI path — it is kept out\n * of the EVM extension so apps that never pair with MetaMask over a URI don't\n * bundle the MetaMask SDK.\n *\n * @example\n * ```ts\n * registerMetaMaskEvmUriConnectionStarter();\n * ```\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns Nothing.\n * @see connectWithMetaMaskUriEvm\n * @see getUriConnectionStarterRegistry\n * @notInstrumented\n */\nexport const registerMetaMaskEvmUriConnectionStarter = (\n client = getDefaultClient()\n): void => {\n getUriConnectionStarterRegistry(client).register({\n chain: 'EVM',\n start: ({ addToDynamicWalletAccounts }) =>\n connectWithMetaMaskUriEvm({ addToDynamicWalletAccounts }, client),\n type: 'metamaskSdkUri',\n });\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 { addMetaMaskEvmExtension } from '../metamask/addMetaMaskEvmExtension';\nexport { connectAndVerifyWithMetaMaskUriEvm } from '../metamask/connectAndVerifyWithMetaMaskUriEvm';\nexport { connectWithMetaMaskUriEvm } from '../metamask/connectWithMetaMaskUriEvm';\nexport type { ConnectWithMetaMaskUriEvmParams } from '../metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm';\nexport { MetaMaskDirectConnectNotSupportedError } from '../errors/MetaMaskDirectConnectNotSupportedError';\nexport { getMetaMaskEvmExtensionWalletProviderKey } from '../metamask/getMetaMaskEvmExtensionWalletProviderKey';\nexport { registerMetaMaskEvmUriConnectionStarter } from '../metamask/registerMetaMaskEvmUriConnectionStarter';\nexport { MetaMaskDisplayUriMissingError } from '@dynamic-labs-sdk/metamask';\n"],"mappings":"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"}