@dynamic-labs-sdk/evm 0.3.0 → 0.5.0

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 (38) hide show
  1. package/dist/{addEIP6963Extension-CoWl2l6Z.esm.js → addEIP6963Extension-C9obd5mt.esm.js} +7 -5
  2. package/dist/addEIP6963Extension-C9obd5mt.esm.js.map +1 -0
  3. package/dist/{addEIP6963Extension-p7q1kdoR.cjs.js → addEIP6963Extension-CgvtCBas.cjs.js} +6 -4
  4. package/dist/addEIP6963Extension-CgvtCBas.cjs.js.map +1 -0
  5. package/dist/eip6963.cjs.js +2 -2
  6. package/dist/eip6963.esm.js +2 -2
  7. package/dist/index.cjs.js +2 -2
  8. package/dist/index.esm.js +2 -2
  9. package/dist/{package-BAS7rt6q.esm.js → package-BSFIt1-g.esm.js} +2 -2
  10. package/dist/package-BSFIt1-g.esm.js.map +1 -0
  11. package/dist/{package-BIOtbQlm.cjs.js → package-DXe9DIvt.cjs.js} +2 -2
  12. package/dist/package-DXe9DIvt.cjs.js.map +1 -0
  13. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  14. package/dist/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.d.ts.map +1 -1
  15. package/dist/viem.cjs.js +1 -1
  16. package/dist/viem.esm.js +1 -1
  17. package/dist/waas.cjs.js +1 -1
  18. package/dist/waas.esm.js +1 -1
  19. package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
  20. package/dist/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.d.ts.map +1 -1
  21. package/dist/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.d.ts.map +1 -1
  22. package/dist/walletConnect/consts.d.ts +1 -1
  23. package/dist/walletConnect/consts.d.ts.map +1 -1
  24. package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts +2 -3
  25. package/dist/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.d.ts.map +1 -1
  26. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/index.d.ts +2 -0
  27. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/index.d.ts.map +1 -0
  28. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts +3 -0
  29. package/dist/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.d.ts.map +1 -0
  30. package/dist/walletConnect.cjs.js +74 -61
  31. package/dist/walletConnect.cjs.js.map +1 -1
  32. package/dist/walletConnect.esm.js +76 -63
  33. package/dist/walletConnect.esm.js.map +1 -1
  34. package/package.json +6 -5
  35. package/dist/addEIP6963Extension-CoWl2l6Z.esm.js.map +0 -1
  36. package/dist/addEIP6963Extension-p7q1kdoR.cjs.js.map +0 -1
  37. package/dist/package-BAS7rt6q.esm.js.map +0 -1
  38. package/dist/package-BIOtbQlm.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"switchActiveNetwork.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAI1C,KAAK,mBAAmB,GAAG,gBAAgB,CACzC,iBAAiB,CAAC,qBAAqB,CAAC,EACxC;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CACF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAoEjC,CAAC"}
1
+ {"version":3,"file":"switchActiveNetwork.d.ts","sourceRoot":"","sources":["../../../../src/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAG1C,KAAK,mBAAmB,GAAG,gBAAgB,CACzC,iBAAiB,CAAC,qBAAqB,CAAC,EACxC;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CACF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAyEjC,CAAC"}
package/dist/viem.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-BIOtbQlm.cjs.js');
1
+ const require_package = require('./package-DXe9DIvt.cjs.js');
2
2
  const require_mapNetworkDataToViemChain = require('./mapNetworkDataToViemChain-CvTDSkkK.cjs.js');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
package/dist/viem.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BAS7rt6q.esm.js";
1
+ import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
2
2
  import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-B4YB-yZt.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { assertDefined, getDefaultClient, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
package/dist/waas.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-BIOtbQlm.cjs.js');
1
+ const require_package = require('./package-DXe9DIvt.cjs.js');
2
2
  require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
3
3
  const require_addWaasEvmExtension = require('./addWaasEvmExtension-Cbj4c7W8.cjs.js');
4
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
package/dist/waas.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BAS7rt6q.esm.js";
1
+ import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
2
2
  import "./registerEvmNetworkProviderBuilder-CkGuzJNe.esm.js";
3
3
  import { t as addWaasEvmExtension } from "./addWaasEvmExtension-E0T0QK9i.esm.js";
4
4
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
@@ -1 +1 @@
1
- {"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AAEnE,eAAO,MAAM,4BAA4B,8EA2BxC,CAAC"}
1
+ {"version":3,"file":"addWalletConnectEvmExtension.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gCAAgC,qBAAqB,CAAC;AAEnE,eAAO,MAAM,4BAA4B,8EAaxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectAndVerifyWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAQtF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oCAAoC,iEAE9C,OAAO,CAAC,6BAA6B,CA4EvC,CAAC"}
1
+ {"version":3,"file":"connectAndVerifyWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAStF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oCAAoC,iEAE9C,OAAO,CAAC,6BAA6B,CAmFvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAQtF,KAAK,iCAAiC,GAAG;IACvC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,oCACC,iCAAiC,gEAEvE,OAAO,CAAC,6BAA6B,CA0DvC,CAAC"}
1
+ {"version":3,"file":"connectWithWalletConnectEvm.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAStF,KAAK,iCAAiC,GAAG;IACvC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,2BAA2B,oCACC,iCAAiC,gEAEvE,OAAO,CAAC,6BAA6B,CA8DvC,CAAC"}
@@ -4,5 +4,5 @@ export declare const evmApiChainName: string;
4
4
  *
5
5
  * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts
6
6
  */
7
- export declare const evmMethods: string[];
7
+ export declare const evmMethods: readonly ["personal_sign", "eth_sendTransaction", "eth_accounts", "eth_requestAccounts", "eth_call", "eth_getBalance", "eth_sendRawTransaction", "eth_sign", "eth_signTransaction", "eth_signTypedData", "eth_signTypedData_v3", "eth_signTypedData_v4", "wallet_switchEthereumChain", "wallet_addEthereumChain", "wallet_getPermissions", "wallet_requestPermissions", "wallet_registerOnboarding", "wallet_watchAsset", "wallet_scanQRCode", "wallet_sendCalls", "wallet_getCapabilities", "wallet_getCallsStatus", "wallet_showCallsStatus"];
8
8
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/walletConnect/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,UA0BtB,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/walletConnect/consts.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,UAAU,ihBA0Bb,CAAC"}
@@ -1,9 +1,8 @@
1
1
  import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
- import type { SessionTypes } from '@walletconnect/types';
3
2
  import type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';
4
3
  type CreateWalletProviderFromEIP155SessionParams = {
5
- session: SessionTypes.Struct;
4
+ sessionTopic: string;
6
5
  };
7
- export declare const createWalletProviderFromEIP155Session: ({ session }: CreateWalletProviderFromEIP155SessionParams, client: DynamicClient) => Promise<WalletConnectEvmWalletProvider>;
6
+ export declare const createWalletProviderFromEIP155Session: ({ sessionTopic }: CreateWalletProviderFromEIP155SessionParams, client: DynamicClient) => Promise<WalletConnectEvmWalletProvider>;
8
7
  export {};
9
8
  //# sourceMappingURL=createWalletProviderFromEIP155Session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAgB9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAE9F,KAAK,2CAA2C,GAAG;IACjD,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC;CAC9B,CAAC;AAaF,eAAO,MAAM,qCAAqC,gBACnC,2CAA2C,UAChD,aAAa,KACpB,OAAO,CAAC,8BAA8B,CAmNxC,CAAC"}
1
+ {"version":3,"file":"createWalletProviderFromEIP155Session.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAqB9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAE9F,KAAK,2CAA2C,GAAG;IACjD,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAaF,eAAO,MAAM,qCAAqC,qBAC9B,2CAA2C,UACrD,aAAa,KACpB,OAAO,CAAC,8BAA8B,CAyKxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { recoverEvmWalletConnectWalletProviders } from './recoverEvmWalletConnectWalletProviders';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DynamicClient } from '@dynamic-labs-sdk/client';
2
+ export declare const recoverEvmWalletConnectWalletProviders: (client: DynamicClient) => Promise<void>;
3
+ //# sourceMappingURL=recoverEvmWalletConnectWalletProviders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recoverEvmWalletConnectWalletProviders.d.ts","sourceRoot":"","sources":["../../../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAU9D,eAAO,MAAM,sCAAsC,WACzC,aAAa,kBA4BtB,CAAC"}
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-BIOtbQlm.cjs.js');
1
+ const require_package = require('./package-DXe9DIvt.cjs.js');
2
2
  const require_registerEvmNetworkProviderBuilder = require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
@@ -6,6 +6,7 @@ let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
6
6
  let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
7
7
  let viem = require("viem");
8
8
  let _dynamic_labs_sdk_wallet_connect_core = require("@dynamic-labs-sdk/wallet-connect/core");
9
+ let _dynamic_labs_sdk_wallet_connect = require("@dynamic-labs-sdk/wallet-connect");
9
10
  let _walletconnect_utils = require("@walletconnect/utils");
10
11
 
11
12
  //#region src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts
@@ -18,28 +19,46 @@ const methodsThatRequireUserAction = [
18
19
  "eth_sendTransaction",
19
20
  "eth_signTypedData_v4"
20
21
  ];
21
- const createWalletProviderFromEIP155Session = async ({ session }, client) => {
22
- const displayName = session.peer.metadata.name;
22
+ const createWalletProviderFromEIP155Session = async ({ sessionTopic }, client) => {
23
+ const signClient = await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
24
+ const getSession = () => {
25
+ const session = signClient.session.get(sessionTopic);
26
+ if (!session) {
27
+ disconnect();
28
+ throw new _dynamic_labs_sdk_wallet_connect.SessionClosedUnexpectedlyError({
29
+ sessionTopic,
30
+ walletDisplayName: displayName
31
+ });
32
+ }
33
+ return session;
34
+ };
35
+ const displayName = getSession().peer.metadata.name;
23
36
  const namespaceKey = "eip155";
24
37
  const walletProviderType = _dynamic_labs_sdk_api_core.WalletProviderEnum.WalletConnect;
25
38
  const key = (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
26
39
  chain: "EVM",
27
40
  displayName,
28
- suffix: session.topic,
41
+ suffix: sessionTopic,
29
42
  walletProviderType
30
43
  });
31
- const signClient = await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
32
- const getActiveNetworkId = async () => (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
33
- client,
34
- walletProviderKey: key
35
- });
36
- const switchActiveNetwork = async ({ networkId }) => (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
37
- client,
38
- networkId,
39
- walletProviderKey: key
40
- });
44
+ const getActiveNetworkId = async () => {
45
+ getSession();
46
+ return await (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
47
+ client,
48
+ walletProviderKey: key
49
+ });
50
+ };
51
+ const switchActiveNetwork = async ({ networkId }) => {
52
+ getSession();
53
+ await (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
54
+ client,
55
+ networkId,
56
+ walletProviderKey: key
57
+ });
58
+ };
41
59
  const request = async (args) => {
42
60
  const { networkId } = await getActiveNetworkId();
61
+ const session = getSession();
43
62
  if (methodsThatRequireUserAction.includes(args.method)) (0, _dynamic_labs_sdk_client_core.emitEvent)({
44
63
  args: {
45
64
  walletMetadata: session.peer.metadata,
@@ -50,16 +69,19 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
50
69
  return signClient.request({
51
70
  chainId: `${namespaceKey}:${networkId}`,
52
71
  request: args,
53
- topic: session.topic
72
+ topic: sessionTopic
54
73
  });
55
74
  };
56
75
  const disconnect = async () => {
57
76
  await signClient.disconnect({
58
77
  reason: _walletconnect_utils.SDK_ERRORS.USER_DISCONNECTED,
59
- topic: session.topic
78
+ topic: sessionTopic
60
79
  });
61
- await (0, _dynamic_labs_sdk_wallet_connect_core.syncSessionsToWalletProviders)({ allowOverridingWalletProviders: false }, client);
80
+ (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client).unregister(key);
62
81
  };
82
+ /**
83
+ * We actually clear up the entire WC session and its wallet provider
84
+ */
63
85
  const disconnectWalletAccount = async () => disconnect();
64
86
  const signMessage = async ({ message, walletAccount }) => {
65
87
  const params = [message];
@@ -70,37 +92,15 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
70
92
  }) };
71
93
  };
72
94
  const getConnectedAddresses = async () => {
73
- return { addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(session.namespaces[namespaceKey].accounts.map((account) => (0, _dynamic_labs_sdk_wallet_connect_core.splitCaip10Token)(account).address)).map((address) => (0, viem.getAddress)(address)) };
95
+ return { addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(getSession().namespaces[namespaceKey].accounts.map((account) => (0, _dynamic_labs_sdk_wallet_connect_core.splitCaip10Token)(account).address)).map((address) => (0, viem.getAddress)(address)) };
74
96
  };
75
97
  const formatWalletAddress = ({ address }) => (0, viem.getAddress)(address);
76
- const { cleanupEventEmitter, getEventEmitter } = (0, _dynamic_labs_sdk_client_core.createWalletProviderEventEmitter)({
77
- removeEventListeners: ({ setupReturnValue: handleSessionEvent }) => {
78
- signClient.off("session_event", handleSessionEvent);
79
- },
80
- setupEventListeners: ({ handleAccountsChanged, handleDisconnected, handleNetworkChanged }) => {
81
- const handleSessionEvent = ({ params: { event }, topic }) => {
82
- if (topic !== session.topic) return;
83
- if (event.name === "chainChanged") {
84
- const networkParam = event.data;
85
- handleNetworkChanged({ networkId: networkParam.startsWith(`${namespaceKey}:`) ? networkParam.split(":")[1] : networkParam });
86
- return;
87
- }
88
- if (event.name === "accountsChanged") {
89
- const accountsParam = event.data;
90
- handleAccountsChanged({ addresses: (0, _dynamic_labs_sdk_client_core.filterDuplicates)(accountsParam.map((account) => {
91
- if (account.startsWith(`${namespaceKey}:`)) return (0, _dynamic_labs_sdk_wallet_connect_core.splitCaip10Token)(account).address;
92
- return account;
93
- })) });
94
- return;
95
- }
96
- if (event.name === "disconnected") {
97
- handleDisconnected();
98
- return;
99
- }
100
- };
101
- signClient.on("session_event", handleSessionEvent);
102
- return handleSessionEvent;
103
- }
98
+ const { cleanupEventEmitter, getEventEmitter } = (0, _dynamic_labs_sdk_wallet_connect_core.createWalletConnectSessionEventEmitter)({
99
+ formatAddress: viem.getAddress,
100
+ getSession,
101
+ namespaceKey,
102
+ sessionTopic,
103
+ signClient
104
104
  });
105
105
  const terminate = async () => cleanupEventEmitter();
106
106
  return {
@@ -113,23 +113,40 @@ const createWalletProviderFromEIP155Session = async ({ session }, client) => {
113
113
  formatWalletAddress,
114
114
  getActiveNetworkId,
115
115
  getConnectedAddresses,
116
+ getSession,
116
117
  groupKey: (0, _dynamic_labs_sdk_client_core.formatWalletProviderGroupKey)(displayName),
117
118
  key,
118
119
  metadata: {
119
120
  displayName,
120
- icon: session.peer.metadata.icons[0]
121
+ icon: getSession().peer.metadata.icons[0]
121
122
  },
122
123
  namespaceKey,
123
124
  request,
124
- session,
125
125
  signMessage,
126
126
  switchActiveNetwork,
127
127
  terminate,
128
- topic: session.topic,
129
128
  walletProviderType
130
129
  };
131
130
  };
132
131
 
132
+ //#endregion
133
+ //#region src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts
134
+ const recoverEvmWalletConnectWalletProviders = async (client) => {
135
+ await (0, _dynamic_labs_sdk_client_core.waitForProjectSettings)(client);
136
+ /**
137
+ * Recreate the wallet providers for all existing EVM sessions
138
+ */
139
+ const sessions = (await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client)).session.getAll();
140
+ for (const session of sessions) {
141
+ if (!("eip155" in session.namespaces)) continue;
142
+ const walletProvider = await createWalletProviderFromEIP155Session({ sessionTopic: session.topic }, client);
143
+ (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client).register({
144
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WALLET_SDK,
145
+ walletProvider
146
+ });
147
+ }
148
+ };
149
+
133
150
  //#endregion
134
151
  //#region src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts
135
152
  const WALLET_CONNECT_EVM_EXTENSION_KEY = "walletConnectEvm";
@@ -137,13 +154,7 @@ const addWalletConnectEvmExtension = async (client = (0, _dynamic_labs_sdk_clien
137
154
  if ((0, _dynamic_labs_sdk_client.hasExtension)({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)) return;
138
155
  (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);
139
156
  require_registerEvmNetworkProviderBuilder.registerEvmNetworkProviderBuilder(client);
140
- (0, _dynamic_labs_sdk_wallet_connect_core.getNamespaceRegistry)(client).registerNamespace({
141
- createWalletProviderFromSession: createWalletProviderFromEIP155Session,
142
- namespaceKey: "eip155"
143
- });
144
- await (0, _dynamic_labs_sdk_client_core.waitForProjectSettings)(client);
145
- (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
146
- await (0, _dynamic_labs_sdk_wallet_connect_core.initializeWalletConnectExtension)(client);
157
+ await recoverEvmWalletConnectWalletProviders(client);
147
158
  };
148
159
 
149
160
  //#endregion
@@ -200,9 +211,9 @@ const connectAndVerifyWithWalletConnectEvm = async (client = (0, _dynamic_labs_s
200
211
  const signClient = await (0, _dynamic_labs_sdk_wallet_connect_core.getSignClient)(client);
201
212
  const core = (0, _dynamic_labs_sdk_client_core.getCore)(client);
202
213
  const apiClient = (0, _dynamic_labs_sdk_client_core.createApiClient)({}, client);
203
- const appUrl = core.metadata?.url;
204
- (0, _dynamic_labs_sdk_client_core.assertDefined)(appUrl, "App URL is not set");
205
- const url = new URL(appUrl);
214
+ const universalLink = core.metadata?.universalLink;
215
+ (0, _dynamic_labs_sdk_client_core.assertDefined)(universalLink, "Universal link is not set");
216
+ const url = new URL(universalLink);
206
217
  (0, _dynamic_labs_sdk_client_core.assertDefined)(client.projectSettings, "Project settings unavailable");
207
218
  /**
208
219
  * Customer enabled networks, with mainnet first if available.
@@ -247,7 +258,8 @@ const connectAndVerifyWithWalletConnectEvm = async (client = (0, _dynamic_labs_s
247
258
  */
248
259
  const walletAccountsPromise = response().then((authResponse) => (0, _dynamic_labs_sdk_wallet_connect_core.importWalletConnectAuthResponse)({
249
260
  authResponse,
250
- chain: "EVM"
261
+ chain: "EVM",
262
+ walletProviderBuilder: createWalletProviderFromEIP155Session
251
263
  }, client));
252
264
  return {
253
265
  approval: () => walletAccountsPromise,
@@ -290,7 +302,8 @@ const connectWithWalletConnectEvm = async ({ addToDynamicWalletAccounts = true }
290
302
  (0, _dynamic_labs_sdk_client_core.assertDefined)(session.namespaces.eip155, `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(session.namespaces).join(", ")}`);
291
303
  return (0, _dynamic_labs_sdk_wallet_connect_core.importWalletConnectSession)({
292
304
  addToDynamicWalletAccounts,
293
- session
305
+ sessionTopic: session.topic,
306
+ walletProviderBuilder: createWalletProviderFromEIP155Session
294
307
  }, client);
295
308
  });
296
309
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"walletConnect.cjs.js","names":["WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: WalletConnectEvmWalletProvider['disconnect']","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","terminate: WalletConnectEvmWalletProvider['terminate']","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n createWalletProviderEventEmitter,\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n getSignClient,\n splitCaip10Token,\n syncSessionsToWalletProviders,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport type { SessionTypes } from '@walletconnect/types';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n session: SessionTypes.Struct;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n];\n\nexport const createWalletProviderFromEIP155Session = async (\n { session }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const displayName = session.peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: session.topic,\n walletProviderType,\n });\n\n const signClient = await getSignClient(client);\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: session.topic,\n });\n };\n\n const disconnect: WalletConnectEvmWalletProvider['disconnect'] = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: session.topic,\n });\n\n // This will remove all wallet providers for the session we just disconnected from.\n // Including this one!\n await syncSessionsToWalletProviders(\n { allowOverridingWalletProviders: false },\n client\n );\n };\n\n // We actually must clear up the entire WC session and clean up the related wallet providers\n // when a wallet account is removed, otherwise the wallet account would come right back\n // once we call syncSessionsToWalletProviders again.\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n session.namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n type SessionEventPayload = {\n params: {\n event: {\n data: unknown;\n name: string;\n };\n };\n topic: string;\n };\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletProviderEventEmitter<(event: SessionEventPayload) => void>({\n removeEventListeners: ({ setupReturnValue: handleSessionEvent }) => {\n signClient.off('session_event', handleSessionEvent);\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n }) => {\n const handleSessionEvent = ({\n params: { event },\n topic,\n }: SessionEventPayload) => {\n if (topic !== session.topic) {\n return;\n }\n\n if (event.name === 'chainChanged') {\n const networkParam = event.data as string;\n\n // Handle potentially CAIP-2 format\n const networkId = networkParam.startsWith(`${namespaceKey}:`)\n ? networkParam.split(':')[1]\n : networkParam;\n\n handleNetworkChanged({ networkId });\n\n return;\n }\n\n if (event.name === 'accountsChanged') {\n const accountsParam = event.data as string[];\n\n const addresses = filterDuplicates(\n accountsParam.map((account) => {\n // Handle potentially CAIP-10 format\n if (account.startsWith(`${namespaceKey}:`)) {\n return splitCaip10Token(account).address;\n }\n\n return account;\n })\n );\n\n handleAccountsChanged({ addresses });\n\n return;\n }\n\n if (event.name === 'disconnected') {\n handleDisconnected();\n\n return;\n }\n };\n\n signClient.on('session_event', handleSessionEvent);\n\n return handleSessionEvent;\n },\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: session.peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n session,\n signMessage,\n switchActiveNetwork,\n terminate,\n topic: session.topic,\n walletProviderType,\n };\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport {\n registerExtension,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n getNamespaceRegistry,\n getSignClient,\n initializeWalletConnectExtension,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const namespaceRegistry = getNamespaceRegistry(client);\n\n namespaceRegistry.registerNamespace({\n createWalletProviderFromSession: createWalletProviderFromEIP155Session,\n namespaceKey: 'eip155',\n });\n\n await waitForProjectSettings(client);\n\n // Kick off WalletConnect SignClient initialization, but don't wait for it\n void getSignClient(client);\n\n // Kick off WalletConnect extension initialization, after registering the namespace\n // so that we have the namespace key available upon syncSessionsToWalletProviders call\n await initializeWalletConnectExtension(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n];\n","import {\n assertDefined,\n createApiClient,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const appUrl = core.metadata?.url;\n\n assertDefined(appUrl, 'App URL is not set');\n\n const url = new URL(appUrl);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const { nonce } = await apiClient.getNonce({\n environmentId: core.environmentId,\n });\n\n assertDefined(nonce, 'Failed to get nonce');\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods,\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse({ authResponse, chain: 'EVM' }, client)\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods,\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n { addToDynamicWalletAccounts, session },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}
1
+ {"version":3,"file":"walletConnect.cjs.js","names":["methodsThatRequireUserAction: string[]","SessionClosedUnexpectedlyError","WalletProviderEnum","getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId']","switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork']","request: WalletConnectEvmWalletProvider['request']","disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n >","SDK_ERRORS","disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount']","signMessage: WalletConnectEvmWalletProvider['signMessage']","getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses']","formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress']","viemGetAddress","terminate: WalletConnectEvmWalletProvider['terminate']","WalletProviderPriority","CHAINS_INFO_MAP","packageName","packageVersion"],"sources":["../src/walletConnect/createWalletProviderFromEIP155Session/createWalletProviderFromEIP155Session.ts","../src/walletConnect/recoverEvmWalletConnectWalletProviders/recoverEvmWalletConnectWalletProviders.ts","../src/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.ts","../src/walletConnect/consts.ts","../src/walletConnect/connectAndVerifyWithWalletConnectEvm/connectAndVerifyWithWalletConnectEvm.ts","../src/walletConnect/connectWithWalletConnectEvm/connectWithWalletConnectEvm.ts","../src/exports/walletConnect.ts"],"sourcesContent":["import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n emitEvent,\n filterDuplicates,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getWalletProviderRegistry,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport { SessionClosedUnexpectedlyError } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n createWalletConnectSessionEventEmitter,\n getSignClient,\n splitCaip10Token,\n} from '@dynamic-labs-sdk/wallet-connect/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { SDK_ERRORS } from '@walletconnect/utils';\nimport { getAddress as viemGetAddress } from 'viem';\n\nimport type { evmMethods } from '../consts';\nimport type { WalletConnectEvmWalletProvider } from '../walletConnectEvmWalletProvider.types';\n\ntype CreateWalletProviderFromEIP155SessionParams = {\n sessionTopic: string;\n};\n\n/**\n * The list of ethereum request methods that require user action.\n * We will raise a user action requested event for these methods.\n */\nconst methodsThatRequireUserAction: string[] = [\n 'personal_sign',\n 'eth_sendTransaction',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n] satisfies (typeof evmMethods)[number][];\n\nexport const createWalletProviderFromEIP155Session = async (\n { sessionTopic }: CreateWalletProviderFromEIP155SessionParams,\n client: DynamicClient\n): Promise<WalletConnectEvmWalletProvider> => {\n const signClient = await getSignClient(client);\n\n const getSession = () => {\n const session = signClient.session.get(sessionTopic);\n\n if (!session) {\n void disconnect();\n\n throw new SessionClosedUnexpectedlyError({\n sessionTopic,\n walletDisplayName: displayName,\n });\n }\n\n return session;\n };\n\n const displayName = getSession().peer.metadata.name;\n\n const namespaceKey = 'eip155';\n\n const walletProviderType = WalletProviderEnum.WalletConnect;\n\n const key = formatWalletProviderKey({\n chain: 'EVM',\n displayName,\n suffix: sessionTopic,\n walletProviderType,\n });\n\n const getActiveNetworkId: WalletConnectEvmWalletProvider['getActiveNetworkId'] =\n async () => {\n // Assert the session is still valid\n getSession();\n\n return await getActiveNetworkIdFromLastKnownRegistry({\n client,\n walletProviderKey: key,\n });\n };\n\n const switchActiveNetwork: WalletConnectEvmWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) => {\n // Assert the session is still valid\n getSession();\n\n await switchActiveNetworkInLastKnownRegistry({\n client,\n networkId,\n walletProviderKey: key,\n });\n };\n\n const request: WalletConnectEvmWalletProvider['request'] = async (args) => {\n const { networkId } = await getActiveNetworkId();\n\n const session = getSession();\n\n if (methodsThatRequireUserAction.includes(args.method)) {\n emitEvent(\n {\n args: {\n walletMetadata: session.peer.metadata,\n walletProviderKey: key,\n },\n event: 'walletConnectUserActionRequested',\n },\n client\n );\n }\n\n return signClient.request({\n // signClient expects the chainId to be in CAIP-2 format \"eip155:<networkId>\"\n chainId: `${namespaceKey}:${networkId}`,\n request: args,\n topic: sessionTopic,\n });\n };\n\n const disconnect: NonNullable<\n WalletConnectEvmWalletProvider['disconnect']\n > = async () => {\n await signClient.disconnect({\n reason: SDK_ERRORS.USER_DISCONNECTED,\n topic: sessionTopic,\n });\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n walletProviderRegistry.unregister(key);\n };\n\n /**\n * We actually clear up the entire WC session and its wallet provider\n */\n const disconnectWalletAccount: WalletConnectEvmWalletProvider['disconnectWalletAccount'] =\n async () => disconnect();\n\n const signMessage: WalletConnectEvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const requestPromise = request<string>({\n method: 'personal_sign',\n params,\n });\n\n const signature = await requestPromise;\n\n return { signature };\n };\n\n const getConnectedAddresses: WalletConnectEvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = filterDuplicates(\n getSession().namespaces[namespaceKey].accounts.map(\n (account) => splitCaip10Token(account).address\n )\n ).map((address) => viemGetAddress(address));\n\n return { addresses };\n };\n\n const formatWalletAddress: WalletConnectEvmWalletProvider['formatWalletAddress'] =\n ({ address }) => viemGetAddress(address);\n\n const { cleanupEventEmitter, getEventEmitter } =\n createWalletConnectSessionEventEmitter({\n formatAddress: viemGetAddress,\n getSession,\n namespaceKey,\n sessionTopic,\n signClient,\n });\n\n const terminate: WalletConnectEvmWalletProvider['terminate'] = async () =>\n cleanupEventEmitter();\n\n return {\n chain: 'EVM',\n disconnect,\n disconnectWalletAccount,\n get events() {\n return getEventEmitter();\n },\n formatWalletAddress,\n getActiveNetworkId,\n getConnectedAddresses,\n getSession,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: {\n displayName,\n icon: getSession().peer.metadata.icons[0],\n },\n namespaceKey,\n request,\n signMessage,\n switchActiveNetwork,\n terminate,\n walletProviderType,\n };\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n WalletProviderPriority,\n getWalletProviderRegistry,\n waitForProjectSettings,\n} from '@dynamic-labs-sdk/client/core';\nimport { getSignClient } from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\nexport const recoverEvmWalletConnectWalletProviders = async (\n client: DynamicClient\n) => {\n await waitForProjectSettings(client);\n\n const signClient = await getSignClient(client);\n\n /**\n * Recreate the wallet providers for all existing EVM sessions\n */\n const sessions = signClient.session.getAll();\n\n for (const session of sessions) {\n if (!('eip155' in session.namespaces)) {\n continue;\n }\n\n const walletProvider = await createWalletProviderFromEIP155Session(\n {\n sessionTopic: session.topic,\n },\n client\n );\n\n getWalletProviderRegistry(client).register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n }\n};\n","import { getDefaultClient, hasExtension } from '@dynamic-labs-sdk/client';\nimport { registerExtension } from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { recoverEvmWalletConnectWalletProviders } from '../recoverEvmWalletConnectWalletProviders';\n\nexport const WALLET_CONNECT_EVM_EXTENSION_KEY = 'walletConnectEvm';\n\nexport const addWalletConnectEvmExtension = async (\n client = getDefaultClient()\n) => {\n if (\n hasExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: WALLET_CONNECT_EVM_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n await recoverEvmWalletConnectWalletProviders(client);\n};\n","import { CHAINS_INFO_MAP } from '@dynamic-labs-sdk/client/core';\n\nexport const evmApiChainName = CHAINS_INFO_MAP.EVM.apiChainName;\n\n/**\n * List of methods that may be requested from EVM wallet applications.\n *\n * Source: https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/providers/ethereum-provider/src/EthereumProvider.ts\n */\nexport const evmMethods = [\n 'personal_sign',\n 'eth_sendTransaction',\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_call',\n 'eth_getBalance',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v3',\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n 'eth_signTypedData_v4',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n] as const;\n","import {\n assertDefined,\n createApiClient,\n createSignInMessageStatement,\n getCore,\n getDefaultClient,\n} from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectAuthResponse,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\n/**\n * Connects to a WalletConnect EVM wallet and verifies ownership through message signing.\n *\n * This function combines wallet connection and verification in a single step,\n * requiring the user to sign a message to prove wallet ownership before\n * the wallet account is added to their profile.\n *\n * If the wallet app does not support the WalletConnect authenticate method,\n * this prompts for connection and then verification as 2 separate steps.\n *\n * @see WalletConnect's docs on [session authentication](https://docs.reown.com/advanced/api/sign/dapp-usage#session-authenticate-with-recaps)\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A promise that resolves to the connected and verified wallet account.\n */\nexport const connectAndVerifyWithWalletConnectEvm = async (\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n const core = getCore(client);\n const apiClient = createApiClient({}, client);\n\n const universalLink = core.metadata?.universalLink;\n\n assertDefined(universalLink, 'Universal link is not set');\n\n const url = new URL(universalLink);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n /**\n * Customer enabled networks, with mainnet first if available.\n */\n const evmNetworks = client.projectSettings.networks\n ?.find((network) => network.chainName === evmApiChainName)\n ?.networks?.sort((a, b) => {\n if (a.networkId === '1') return -1;\n if (b.networkId === '1') return 1;\n\n return 0;\n });\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const caip2Networks = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * WalletConnect formats its own message for SIWE, so we need to provide the fields.\n * We later reconstruct what that message was so we can verify the signature in backend.\n */\n const { nonce } = await apiClient.getNonce({\n environmentId: core.environmentId,\n });\n\n assertDefined(nonce, 'Failed to get nonce');\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { uri, response } = await signClient.authenticate({\n chainId: evmNetworks[0].networkId,\n chains: caip2Networks,\n domain: url.host,\n iat: new Date().toISOString(),\n methods: evmMethods as unknown as string[],\n nonce,\n requestId: core.environmentId,\n statement: createSignInMessageStatement(client),\n uri: url.toString(),\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = response().then((authResponse) =>\n importWalletConnectAuthResponse(\n {\n authResponse,\n chain: 'EVM',\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n )\n );\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { getDefaultClient } from '@dynamic-labs-sdk/client';\nimport { assertDefined } from '@dynamic-labs-sdk/client/core';\nimport type { WalletConnectConnectionResult } from '@dynamic-labs-sdk/wallet-connect';\nimport {\n getSignClient,\n importWalletConnectSession,\n} from '@dynamic-labs-sdk/wallet-connect/core';\n\nimport { evmApiChainName, evmMethods } from '../consts';\nimport { createWalletProviderFromEIP155Session } from '../createWalletProviderFromEIP155Session';\n\ntype ConnectWithWalletConnectEvmParams = {\n /**\n * Whether this session's wallet accounts should be added to the dynamic's wallet accounts.\n */\n addToDynamicWalletAccounts?: boolean;\n};\n\nexport const connectWithWalletConnectEvm = async (\n { addToDynamicWalletAccounts = true }: ConnectWithWalletConnectEvmParams = {},\n client = getDefaultClient()\n): Promise<WalletConnectConnectionResult> => {\n const signClient = await getSignClient(client);\n\n assertDefined(client.projectSettings, 'Project settings unavailable');\n\n const evmNetworks = client.projectSettings.networks?.find(\n (network) => network.chainName === evmApiChainName\n )?.networks;\n\n assertDefined(evmNetworks, 'EVM networks not found');\n\n const walletConnectChains = evmNetworks.map(\n (network) => `eip155:${network.networkId}`\n );\n\n /**\n * A WalletConnect connection request generates a URI and a promise.\n *\n * The URI must be handed to an external wallet application that will use it\n * to establish a connection via a WalletConnect relay server. Typically, this\n * is done by scanning a QR code or deep linking to the wallet application.\n *\n * The promise will resolve when the connection is established.\n */\n const { approval, uri } = await signClient.connect({\n optionalNamespaces: {\n eip155: {\n chains: walletConnectChains,\n events: ['accountsChanged', 'chainChanged', 'disconnected'],\n methods: evmMethods as unknown as string[],\n },\n },\n });\n\n assertDefined(\n uri,\n 'Failed to establish WalletConnect session: no URI returned'\n );\n\n /**\n * Once the approval promise resolves, the WalletConnect session is established\n * between the wallet application and the dapp (this app).\n */\n const walletAccountsPromise = approval().then(async (session) => {\n assertDefined(\n session.namespaces.eip155,\n `WalletConnect session did not establish an EIP155 connection. Found instead: ${Object.keys(\n session.namespaces\n ).join(', ')}`\n );\n\n return importWalletConnectSession(\n {\n addToDynamicWalletAccounts,\n sessionTopic: session.topic,\n walletProviderBuilder: createWalletProviderFromEIP155Session,\n },\n client\n );\n });\n\n return { approval: () => walletAccountsPromise, uri };\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWalletConnectEvmExtension } from '../walletConnect/addWalletConnectEvmExtension';\nexport { connectAndVerifyWithWalletConnectEvm } from '../walletConnect/connectAndVerifyWithWalletConnectEvm';\nexport { connectWithWalletConnectEvm } from '../walletConnect/connectWithWalletConnectEvm';\nexport type { WalletConnectEvmWalletProvider } from '../walletConnect/walletConnectEvmWalletProvider.types';\n"],"mappings":"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"}