@dynamic-labs/multi-wallet 0.17.0-RC.6 → 0.17.0-RC.8

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 (164) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/package.json +8 -6
  3. package/src/index.cjs +0 -18
  4. package/src/index.d.ts +0 -4
  5. package/src/index.js +1 -4
  6. package/src/multi-wallet.cjs +53 -96
  7. package/src/multi-wallet.js +53 -96
  8. package/src/types.d.ts +9 -47
  9. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +1 -1
  10. package/src/utils/getApiProviders.cjs +15 -0
  11. package/src/utils/getApiProviders.d.ts +10 -0
  12. package/src/utils/getApiProviders.js +11 -0
  13. package/src/utils/message.cjs +2 -2
  14. package/src/utils/message.d.ts +2 -2
  15. package/src/utils/message.js +1 -1
  16. package/src/utils/walletConnect.cjs +11 -8
  17. package/src/utils/walletConnect.d.ts +4 -4
  18. package/src/utils/walletConnect.js +11 -8
  19. package/src/wallets/algorand/MyAlgoWalletConnector.cjs +3 -3
  20. package/src/wallets/algorand/MyAlgoWalletConnector.js +1 -1
  21. package/src/wallets/clients/coinbase/coinbase.cjs +4 -4
  22. package/src/wallets/clients/coinbase/coinbase.js +1 -1
  23. package/src/wallets/clients/coinbase/types.d.ts +2 -2
  24. package/src/wallets/clients/walletConnect/walletConnect.cjs +20 -46
  25. package/src/wallets/clients/walletConnect/walletConnect.d.ts +1 -3
  26. package/src/wallets/clients/walletConnect/walletConnect.js +18 -43
  27. package/src/wallets/cosmos/KeplrWalletConnect.cjs +18 -16
  28. package/src/wallets/cosmos/KeplrWalletConnect.d.ts +7 -6
  29. package/src/wallets/cosmos/KeplrWalletConnect.js +14 -12
  30. package/src/wallets/cosmos/KeplrWalletConnector.cjs +21 -6
  31. package/src/wallets/cosmos/KeplrWalletConnector.d.ts +10 -5
  32. package/src/wallets/cosmos/KeplrWalletConnector.js +21 -6
  33. package/src/wallets/cosmos/wcClient.lib.cjs +100 -0
  34. package/src/wallets/cosmos/wcClient.lib.d.ts +20 -0
  35. package/src/wallets/cosmos/wcClient.lib.js +87 -0
  36. package/src/wallets/ethereum/BloctoEvm.cjs +10 -12
  37. package/src/wallets/ethereum/BloctoEvm.d.ts +2 -7
  38. package/src/wallets/ethereum/BloctoEvm.js +8 -10
  39. package/src/wallets/ethereum/EthWalletConnector.cjs +34 -19
  40. package/src/wallets/ethereum/EthWalletConnector.d.ts +8 -4
  41. package/src/wallets/ethereum/EthWalletConnector.js +28 -13
  42. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.cjs +0 -2
  43. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.js +0 -2
  44. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs +2 -2
  45. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js +1 -1
  46. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +14 -38
  47. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +5 -7
  48. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +14 -38
  49. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs +10 -4
  50. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js +9 -3
  51. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +15 -11
  52. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +9 -8
  53. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +13 -9
  54. package/src/wallets/ethereum/coinbase.cjs +9 -11
  55. package/src/wallets/ethereum/coinbase.d.ts +7 -11
  56. package/src/wallets/ethereum/coinbase.js +10 -12
  57. package/src/wallets/ethereum/ethProviderHelper.cjs +103 -101
  58. package/src/wallets/ethereum/ethProviderHelper.d.ts +24 -31
  59. package/src/wallets/ethereum/ethProviderHelper.js +100 -98
  60. package/src/wallets/ethereum/evm-network.cjs +2 -2
  61. package/src/wallets/ethereum/evm-network.d.ts +1 -17
  62. package/src/wallets/ethereum/evm-network.js +2 -2
  63. package/src/wallets/ethereum/injected/BloctoInjected.cjs +2 -3
  64. package/src/wallets/ethereum/injected/BloctoInjected.d.ts +2 -3
  65. package/src/wallets/ethereum/injected/BloctoInjected.js +2 -3
  66. package/src/wallets/ethereum/injected/BraveEvm.cjs +2 -3
  67. package/src/wallets/ethereum/injected/BraveEvm.d.ts +2 -3
  68. package/src/wallets/ethereum/injected/BraveEvm.js +2 -3
  69. package/src/wallets/ethereum/injected/Dawn.cjs +2 -3
  70. package/src/wallets/ethereum/injected/Dawn.d.ts +2 -3
  71. package/src/wallets/ethereum/injected/Dawn.js +2 -3
  72. package/src/wallets/ethereum/injected/ExodusEvm.cjs +2 -3
  73. package/src/wallets/ethereum/injected/ExodusEvm.d.ts +2 -3
  74. package/src/wallets/ethereum/injected/ExodusEvm.js +2 -3
  75. package/src/wallets/ethereum/injected/Frame.cjs +2 -3
  76. package/src/wallets/ethereum/injected/Frame.d.ts +2 -3
  77. package/src/wallets/ethereum/injected/Frame.js +2 -3
  78. package/src/wallets/ethereum/injected/GameStop.cjs +2 -3
  79. package/src/wallets/ethereum/injected/GameStop.d.ts +2 -3
  80. package/src/wallets/ethereum/injected/GameStop.js +2 -3
  81. package/src/wallets/ethereum/injected/InjectedWalletBase.cjs +74 -0
  82. package/src/wallets/ethereum/{meta-mask.d.ts → injected/InjectedWalletBase.d.ts} +7 -9
  83. package/src/wallets/ethereum/injected/InjectedWalletBase.js +72 -0
  84. package/src/wallets/ethereum/injected/MetaMask.cjs +13 -0
  85. package/src/wallets/ethereum/injected/MetaMask.d.ts +6 -0
  86. package/src/wallets/ethereum/injected/MetaMask.js +11 -0
  87. package/src/wallets/ethereum/injected/Opera.cjs +2 -3
  88. package/src/wallets/ethereum/injected/Opera.d.ts +2 -3
  89. package/src/wallets/ethereum/injected/Opera.js +2 -3
  90. package/src/wallets/ethereum/injected/PhantomEvm.cjs +2 -3
  91. package/src/wallets/ethereum/injected/PhantomEvm.d.ts +2 -3
  92. package/src/wallets/ethereum/injected/PhantomEvm.js +2 -3
  93. package/src/wallets/ethereum/injected/Trust.cjs +3 -3
  94. package/src/wallets/ethereum/injected/Trust.d.ts +3 -3
  95. package/src/wallets/ethereum/injected/Trust.js +3 -3
  96. package/src/wallets/ethereum/injected/UnknownInjectedWallet.cjs +2 -3
  97. package/src/wallets/ethereum/injected/UnknownInjectedWallet.d.ts +2 -3
  98. package/src/wallets/ethereum/injected/UnknownInjectedWallet.js +2 -3
  99. package/src/wallets/ethereum/injected/Zerion.cjs +3 -3
  100. package/src/wallets/ethereum/injected/Zerion.d.ts +3 -3
  101. package/src/wallets/ethereum/injected/Zerion.js +3 -3
  102. package/src/wallets/flow/FlowWalletConnector.cjs +7 -8
  103. package/src/wallets/flow/FlowWalletConnector.js +2 -3
  104. package/src/wallets/getWalletConnectConnector.cjs +7 -10
  105. package/src/wallets/getWalletConnectConnector.d.ts +2 -5
  106. package/src/wallets/getWalletConnectConnector.js +7 -10
  107. package/src/wallets/solana/CoinbaseSolana.cjs +8 -11
  108. package/src/wallets/solana/CoinbaseSolana.d.ts +1 -3
  109. package/src/wallets/solana/CoinbaseSolana.js +8 -11
  110. package/src/wallets/solana/glow.cjs +8 -11
  111. package/src/wallets/solana/glow.d.ts +1 -3
  112. package/src/wallets/solana/glow.js +8 -11
  113. package/src/wallets/solana/injected/BraveSol.cjs +2 -1
  114. package/src/wallets/solana/injected/BraveSol.js +2 -1
  115. package/src/wallets/solana/phantom-ledger.cjs +5 -5
  116. package/src/wallets/solana/phantom-ledger.js +1 -1
  117. package/src/wallets/solana/phantom.cjs +8 -12
  118. package/src/wallets/solana/phantom.d.ts +1 -3
  119. package/src/wallets/solana/phantom.js +8 -12
  120. package/src/wallets/solana/slope.cjs +4 -4
  121. package/src/wallets/solana/slope.js +1 -1
  122. package/src/wallets/solana/solProviderHelper.cjs +47 -48
  123. package/src/wallets/solana/solProviderHelper.d.ts +18 -18
  124. package/src/wallets/solana/solProviderHelper.js +47 -48
  125. package/src/wallets/solana/solWalletConnector.cjs +24 -6
  126. package/src/wallets/solana/solWalletConnector.d.ts +8 -5
  127. package/src/wallets/solana/solWalletConnector.js +23 -5
  128. package/src/wallets/solana/solflare.cjs +6 -7
  129. package/src/wallets/solana/solflare.d.ts +0 -2
  130. package/src/wallets/solana/solflare.js +6 -7
  131. package/src/wallets/starknet/starknetWalletConnector.cjs +5 -6
  132. package/src/wallets/starknet/starknetWalletConnector.js +2 -3
  133. package/src/wallets/walletConnect/index.d.ts +1 -1
  134. package/src/wallets/walletConnect/walletConnect.cjs +8 -7
  135. package/src/wallets/walletConnect/walletConnect.d.ts +7 -7
  136. package/src/wallets/walletConnect/walletConnect.js +6 -5
  137. package/src/wallets/walletConnect/walletConnectV2.cjs +14 -14
  138. package/src/wallets/walletConnect/walletConnectV2.d.ts +7 -7
  139. package/src/wallets/walletConnect/walletConnectV2.js +3 -3
  140. package/src/wallets/walletConnect/zerion.d.ts +2 -4
  141. package/src/errors.cjs +0 -66
  142. package/src/errors.d.ts +0 -34
  143. package/src/errors.js +0 -54
  144. package/src/rpcProviders.cjs +0 -76
  145. package/src/rpcProviders.d.ts +0 -5
  146. package/src/rpcProviders.js +0 -69
  147. package/src/utils/CancellablePromise/CancellablePromise.cjs +0 -33
  148. package/src/utils/CancellablePromise/CancellablePromise.d.ts +0 -9
  149. package/src/utils/CancellablePromise/CancellablePromise.js +0 -29
  150. package/src/utils/CancellablePromise/index.d.ts +0 -1
  151. package/src/utils/logger.cjs +0 -9
  152. package/src/utils/logger.d.ts +0 -2
  153. package/src/utils/logger.js +0 -5
  154. package/src/wallets/cosmos/getKeplrConnector.cjs +0 -18
  155. package/src/wallets/cosmos/getKeplrConnector.d.ts +0 -6
  156. package/src/wallets/cosmos/getKeplrConnector.js +0 -14
  157. package/src/wallets/ethereum/fortmatic.cjs +0 -75
  158. package/src/wallets/ethereum/fortmatic.d.ts +0 -26
  159. package/src/wallets/ethereum/fortmatic.js +0 -69
  160. package/src/wallets/ethereum/meta-mask.cjs +0 -63
  161. package/src/wallets/ethereum/meta-mask.js +0 -61
  162. package/src/wallets/getMobileOrInjectedWallet.cjs +0 -26
  163. package/src/wallets/getMobileOrInjectedWallet.d.ts +0 -8
  164. package/src/wallets/getMobileOrInjectedWallet.js +0 -22
@@ -1,28 +1,26 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import BloctoSDK from '@blocto/sdk';
3
3
  import { ethers } from 'ethers';
4
- import { logger } from '../../utils/logger.js';
4
+ import { logger } from '@dynamic-labs/wallet-connector-core';
5
5
  import { EthWalletConnector } from './EthWalletConnector.js';
6
- import { EthProviderHelper } from './ethProviderHelper.js';
7
6
 
8
7
  class BloctoEvm extends EthWalletConnector {
9
- constructor({ evmNetworks }) {
8
+ constructor(props) {
10
9
  var _a, _b;
11
- // Taken from : https://docs.blocto.app/blocto-sdk/javascript-sdk/evm-sdk/provider
12
- const BLOCTO_SUPPORTED_CHAIN_IDS = [1, 4, 56, 97, 137, 80001, 43114, 43113];
13
- const bloctoSupportedNetworks = evmNetworks.filter((n) => BLOCTO_SUPPORTED_CHAIN_IDS.includes(n.chainId));
14
- super({ evmNetworks: bloctoSupportedNetworks });
10
+ super(props);
15
11
  this.LOCAL_STORAGE_KEY = 'dynamic_blocto_evm_chain_id';
16
12
  this.name = 'bloctoevm';
17
13
  this.canConnectViaCustodialService = true;
18
14
  this.connectedChain = 'EVM';
19
15
  this.supportedChains = ['EVM', 'ETH'];
20
- this.ethProviderHelper = new EthProviderHelper();
21
16
  this.supportsNetworkSwitching = () => false;
17
+ // Taken from : https://docs.blocto.app/blocto-sdk/javascript-sdk/evm-sdk/provider
18
+ const BLOCTO_SUPPORTED_CHAIN_IDS = [1, 4, 56, 97, 137, 80001, 43114, 43113];
19
+ this.evmNetworks = this.evmNetworks.filter((n) => BLOCTO_SUPPORTED_CHAIN_IDS.includes(n.chainId));
22
20
  this.chainId =
23
21
  Number(localStorage.getItem(this.LOCAL_STORAGE_KEY)) ||
24
- ((_a = bloctoSupportedNetworks.find((n) => n.chainId === 137)) === null || _a === void 0 ? void 0 : _a.chainId) ||
25
- ((_b = bloctoSupportedNetworks[0]) === null || _b === void 0 ? void 0 : _b.chainId);
22
+ ((_a = this.evmNetworks.find((n) => n.chainId === 137)) === null || _a === void 0 ? void 0 : _a.chainId) ||
23
+ ((_b = this.evmNetworks[0]) === null || _b === void 0 ? void 0 : _b.chainId);
26
24
  }
27
25
  getClient() {
28
26
  if (!this.client) {
@@ -5,15 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var ethers = require('ethers');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
- var errors = require('../../errors.cjs');
9
- var rpcProviders = require('../../rpcProviders.cjs');
8
+ var utils = require('@dynamic-labs/utils');
9
+ var rpcProviders = require('@dynamic-labs/rpc-providers');
10
10
  var evmNetwork = require('./evm-network.cjs');
11
11
 
12
12
  class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
13
13
  getRpcProvider() {
14
- var _a, _b;
14
+ var _a, _b, _c;
15
15
  return tslib.__awaiter(this, void 0, void 0, function* () {
16
- const networkId = yield this.getNetwork();
16
+ const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
17
17
  if (this.evmNetworks.length === 0) {
18
18
  return undefined;
19
19
  }
@@ -23,14 +23,12 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
23
23
  solana: [],
24
24
  starknet: undefined,
25
25
  };
26
- if (!networkId) {
27
- return (_a = rpcProviders.getEvmDefaultRpcProvider(configurations)) === null || _a === void 0 ? void 0 : _a.provider;
28
- }
29
- return (_b = rpcProviders.getEvmRpcProviderByChainId(configurations, networkId)) === null || _b === void 0 ? void 0 : _b.provider;
26
+ return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
30
27
  });
31
28
  }
32
- constructor({ evmNetworks }) {
33
- super();
29
+ constructor(props) {
30
+ var _a;
31
+ super(props);
34
32
  this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
35
33
  var _a;
36
34
  [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
@@ -38,7 +36,24 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
38
36
  : network.rpcUrls;
39
37
  return acc;
40
38
  }, {});
41
- this.evmNetworks = evmNetworks;
39
+ this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
40
+ this.chainRpcProviders = props.chainRpcProviders;
41
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviders.ProviderChain.EVM, (config) => {
42
+ const rpcProviders = {};
43
+ if (config === null || config === void 0 ? void 0 : config.evm) {
44
+ rpcProviders.evm = utils.parseEvmNetworks(config.evm).map((network) => {
45
+ var _a;
46
+ const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
47
+ const provider = new ethers.ethers.providers.JsonRpcProvider(rpcUrl, network.chainId);
48
+ return {
49
+ chainId: network.chainId,
50
+ chainName: network.name,
51
+ provider,
52
+ };
53
+ });
54
+ }
55
+ return rpcProviders.evm;
56
+ });
42
57
  }
43
58
  getNetwork() {
44
59
  return tslib.__awaiter(this, void 0, void 0, function* () {
@@ -103,14 +118,14 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
103
118
  networks: this.evmNetworks,
104
119
  });
105
120
  if (!network) {
106
- throw new errors.DynamicError('Could not find network');
121
+ throw new utils.DynamicError('Could not find network');
107
122
  }
108
123
  if (!this.supportsNetworkSwitching()) {
109
- throw new errors.DynamicError('Network switching is not supported');
124
+ throw new utils.DynamicError('Network switching is not supported');
110
125
  }
111
126
  const provider = this.getWeb3Provider();
112
127
  if (!provider) {
113
- throw new errors.DynamicError('Provider not found');
128
+ throw new utils.DynamicError('Provider not found');
114
129
  }
115
130
  return this.providerSwitchNetwork({ network, provider });
116
131
  });
@@ -133,7 +148,7 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
133
148
  }
134
149
  try {
135
150
  if (!this.supportsNetworkSwitching()) {
136
- throw new errors.DynamicError('Network switching is not supported');
151
+ throw new utils.DynamicError('Network switching is not supported');
137
152
  }
138
153
  return yield provider.send('wallet_switchEthereumChain', [
139
154
  {
@@ -144,7 +159,7 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
144
159
  catch (error) {
145
160
  if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
146
161
  (typeof error === 'string' && error.includes('rejected'))) {
147
- throw new errors.DynamicError("User rejected the wallet's request to switch network");
162
+ throw new utils.DynamicError("User rejected the wallet's request to switch network");
148
163
  }
149
164
  else if (error.code === 4902 ||
150
165
  error.message.includes('Unrecognized chain') ||
@@ -163,13 +178,13 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
163
178
  providerAddNetwork({ network, provider, }) {
164
179
  var _a;
165
180
  return tslib.__awaiter(this, void 0, void 0, function* () {
166
- const { blockExplorerUrls, chainId, nativeCurrency, rpcUrls, chainName } = network;
181
+ const { blockExplorerUrls, chainId, nativeCurrency, rpcUrls, name } = network;
167
182
  try {
168
183
  return yield provider.send('wallet_addEthereumChain', [
169
184
  {
170
185
  blockExplorerUrls,
171
186
  chainId: `0x${chainId.toString(16)}`,
172
- chainName,
187
+ chainName: name,
173
188
  nativeCurrency,
174
189
  rpcUrls,
175
190
  },
@@ -178,7 +193,7 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
178
193
  catch (error) {
179
194
  if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
180
195
  (typeof error === 'string' && error.includes('rejected'))) {
181
- throw new errors.DynamicError("User rejected the wallet's request to add network");
196
+ throw new utils.DynamicError("User rejected the wallet's request to add network");
182
197
  }
183
198
  else {
184
199
  throw error;
@@ -1,6 +1,7 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { NameServiceData, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
3
- import { EvmNetwork } from './evm-network';
3
+ import { EvmNetwork, GenericNetwork } from '@dynamic-labs/types';
4
+ import { ChainRpcProviders } from '@dynamic-labs/rpc-providers';
4
5
  export type SwitchNetworkOps = {
5
6
  networkChainId?: number;
6
7
  networkName?: string;
@@ -8,13 +9,16 @@ export type SwitchNetworkOps = {
8
9
  type EvmRpcMap = {
9
10
  [chainId: number]: string;
10
11
  };
12
+ export type EthWalletConnectorOpts = {
13
+ chainRpcProviders: typeof ChainRpcProviders;
14
+ evmNetworks: GenericNetwork[];
15
+ isWalletConnectV2Enabled?: boolean;
16
+ };
11
17
  export declare abstract class EthWalletConnector extends WalletConnectorBase {
12
18
  evmNetworks: EvmNetwork[];
13
19
  abstract getWeb3Provider(): ethers.providers.Web3Provider | undefined;
14
20
  getRpcProvider(): Promise<ethers.providers.JsonRpcProvider | undefined>;
15
- constructor({ evmNetworks }: {
16
- evmNetworks: EvmNetwork[];
17
- });
21
+ constructor(props: EthWalletConnectorOpts);
18
22
  getNetwork(): Promise<number | undefined>;
19
23
  getNameService(): Promise<NameServiceData | undefined>;
20
24
  getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
@@ -1,15 +1,15 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { ethers } from 'ethers';
3
3
  import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
4
- import { DynamicError } from '../../errors.js';
5
- import { getEvmDefaultRpcProvider, getEvmRpcProviderByChainId } from '../../rpcProviders.js';
4
+ import { parseEvmNetworks, DynamicError } from '@dynamic-labs/utils';
5
+ import { ProviderChain } from '@dynamic-labs/rpc-providers';
6
6
  import { findEvmNetwork } from './evm-network.js';
7
7
 
8
8
  class EthWalletConnector extends WalletConnectorBase {
9
9
  getRpcProvider() {
10
- var _a, _b;
10
+ var _a, _b, _c;
11
11
  return __awaiter(this, void 0, void 0, function* () {
12
- const networkId = yield this.getNetwork();
12
+ const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
13
13
  if (this.evmNetworks.length === 0) {
14
14
  return undefined;
15
15
  }
@@ -19,14 +19,12 @@ class EthWalletConnector extends WalletConnectorBase {
19
19
  solana: [],
20
20
  starknet: undefined,
21
21
  };
22
- if (!networkId) {
23
- return (_a = getEvmDefaultRpcProvider(configurations)) === null || _a === void 0 ? void 0 : _a.provider;
24
- }
25
- return (_b = getEvmRpcProviderByChainId(configurations, networkId)) === null || _b === void 0 ? void 0 : _b.provider;
22
+ return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
26
23
  });
27
24
  }
28
- constructor({ evmNetworks }) {
29
- super();
25
+ constructor(props) {
26
+ var _a;
27
+ super(props);
30
28
  this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
31
29
  var _a;
32
30
  [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
@@ -34,7 +32,24 @@ class EthWalletConnector extends WalletConnectorBase {
34
32
  : network.rpcUrls;
35
33
  return acc;
36
34
  }, {});
37
- this.evmNetworks = evmNetworks;
35
+ this.evmNetworks = parseEvmNetworks(props.evmNetworks);
36
+ this.chainRpcProviders = props.chainRpcProviders;
37
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.EVM, (config) => {
38
+ const rpcProviders = {};
39
+ if (config === null || config === void 0 ? void 0 : config.evm) {
40
+ rpcProviders.evm = parseEvmNetworks(config.evm).map((network) => {
41
+ var _a;
42
+ const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
43
+ const provider = new ethers.providers.JsonRpcProvider(rpcUrl, network.chainId);
44
+ return {
45
+ chainId: network.chainId,
46
+ chainName: network.name,
47
+ provider,
48
+ };
49
+ });
50
+ }
51
+ return rpcProviders.evm;
52
+ });
38
53
  }
39
54
  getNetwork() {
40
55
  return __awaiter(this, void 0, void 0, function* () {
@@ -159,13 +174,13 @@ class EthWalletConnector extends WalletConnectorBase {
159
174
  providerAddNetwork({ network, provider, }) {
160
175
  var _a;
161
176
  return __awaiter(this, void 0, void 0, function* () {
162
- const { blockExplorerUrls, chainId, nativeCurrency, rpcUrls, chainName } = network;
177
+ const { blockExplorerUrls, chainId, nativeCurrency, rpcUrls, name } = network;
163
178
  try {
164
179
  return yield provider.send('wallet_addEthereumChain', [
165
180
  {
166
181
  blockExplorerUrls,
167
182
  chainId: `0x${chainId.toString(16)}`,
168
- chainName,
183
+ chainName: name,
169
184
  nativeCurrency,
170
185
  rpcUrls,
171
186
  },
@@ -40,7 +40,6 @@ class EmailMagicWalletConnector extends MagicWalletConnector.MagicWalletConnecto
40
40
  (_a = this._currentAuthCancellablePromise) === null || _a === void 0 ? void 0 : _a.cancel();
41
41
  }
42
42
  loginWithMagic() {
43
- var _a;
44
43
  return tslib.__awaiter(this, void 0, void 0, function* () {
45
44
  const client = this._magicClient.getClient();
46
45
  const user = yield this.getUserMetadata();
@@ -53,7 +52,6 @@ class EmailMagicWalletConnector extends MagicWalletConnector.MagicWalletConnecto
53
52
  return;
54
53
  return client.auth.loginWithMagicLink({
55
54
  email,
56
- redirectURI: (_a = this._magicClient.config) === null || _a === void 0 ? void 0 : _a.redirectURI,
57
55
  showUI: false,
58
56
  });
59
57
  });
@@ -36,7 +36,6 @@ class EmailMagicWalletConnector extends MagicWalletConnector {
36
36
  (_a = this._currentAuthCancellablePromise) === null || _a === void 0 ? void 0 : _a.cancel();
37
37
  }
38
38
  loginWithMagic() {
39
- var _a;
40
39
  return __awaiter(this, void 0, void 0, function* () {
41
40
  const client = this._magicClient.getClient();
42
41
  const user = yield this.getUserMetadata();
@@ -49,7 +48,6 @@ class EmailMagicWalletConnector extends MagicWalletConnector {
49
48
  return;
50
49
  return client.auth.loginWithMagicLink({
51
50
  email,
52
- redirectURI: (_a = this._magicClient.config) === null || _a === void 0 ? void 0 : _a.redirectURI,
53
51
  showUI: false,
54
52
  });
55
53
  });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
- var logger = require('../../../../utils/logger.cjs');
6
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
7
7
  var EmailMagicWalletConnector = require('../EmailMagicWalletConnector/EmailMagicWalletConnector.cjs');
8
8
 
9
9
  class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector.EmailMagicWalletConnector {
@@ -48,7 +48,7 @@ class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector.EmailMagicW
48
48
  yield this._handle;
49
49
  }
50
50
  catch (err) {
51
- logger.logger.error(err);
51
+ walletConnectorCore.logger.error(err);
52
52
  }
53
53
  this._handle = client.auth.loginWithEmailOTP({
54
54
  email,
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { logger } from '../../../../utils/logger.js';
2
+ import { logger } from '@dynamic-labs/wallet-connector-core';
3
3
  import { EmailMagicWalletConnector } from '../EmailMagicWalletConnector/EmailMagicWalletConnector.js';
4
4
 
5
5
  class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector {
@@ -3,30 +3,14 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
+ var utils = require('@dynamic-labs/utils');
6
7
 
7
- // these are based off of Magic's EthNetworkName type
8
- const chainNameToChainIdMap = {
9
- arbitrum: 42161,
10
- avalance: 43114,
11
- bsc: 56,
12
- gnosis: 100,
13
- goerli: 5,
14
- mainnet: 1,
15
- optimism: 10,
16
- polygon: 137,
17
- sepolia: 11155111,
18
- };
19
8
  class MagicClientNetworkHandler {
20
- constructor({ createClient, evmNetworks, config, }) {
21
- var _a, _b;
9
+ constructor({ createClient, evmNetworks, defaultChainId, }) {
22
10
  this._clients = {};
23
11
  this.evmNetworks = [];
24
- this._config = config;
25
- this.evmNetworks = evmNetworks;
26
- this._networkId =
27
- typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
28
- ? chainNameToChainIdMap[config.network]
29
- : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
12
+ this.evmNetworks = utils.parseEvmNetworks(evmNetworks);
13
+ this._networkId = defaultChainId !== null && defaultChainId !== void 0 ? defaultChainId : 1;
30
14
  this._createClient = createClient;
31
15
  }
32
16
  setListeners(listeners) {
@@ -46,9 +30,6 @@ class MagicClientNetworkHandler {
46
30
  get networkId() {
47
31
  return this._networkId;
48
32
  }
49
- get config() {
50
- return this._config;
51
- }
52
33
  getClient() {
53
34
  const networkId = this._networkId;
54
35
  const client = this._clients[networkId];
@@ -64,27 +45,22 @@ class MagicClientNetworkHandler {
64
45
  const rpcUrl = this._getRpcUrlByNetworkId(networkId);
65
46
  // Should prioritize custom rpc config form dashboard
66
47
  if (rpcUrl) {
67
- return Object.assign(Object.assign({}, this._config), { network: {
48
+ return {
49
+ network: {
68
50
  chainId: this._getChainIdByNetworkId(networkId),
69
51
  rpcUrl,
70
- } });
71
- }
72
- // Next should return configuration provided through settings
73
- if (this.configNetworkId === networkId) {
74
- return this._config;
52
+ },
53
+ };
75
54
  }
76
55
  if (networkId === 1) {
77
- return Object.assign(Object.assign({}, this._config), { network: 'mainnet' });
56
+ return {
57
+ network: 'mainnet',
58
+ };
78
59
  }
79
60
  if (networkId === 5) {
80
- return Object.assign(Object.assign({}, this._config), { network: 'goerli' });
81
- }
82
- return this._config;
83
- }
84
- get configNetworkId() {
85
- var _a, _b, _c;
86
- if (typeof ((_a = this._config) === null || _a === void 0 ? void 0 : _a.network) !== 'string') {
87
- return (_c = (_b = this._config) === null || _b === void 0 ? void 0 : _b.network) === null || _c === void 0 ? void 0 : _c.chainId;
61
+ return {
62
+ network: 'goerli',
63
+ };
88
64
  }
89
65
  return undefined;
90
66
  }
@@ -1,32 +1,30 @@
1
1
  import { MagicSDKAdditionalConfiguration, MagicSDKExtensionsOption } from 'magic-sdk';
2
2
  import { WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
3
- import { MagicConnectorProps } from '../MagicWalletConnector';
4
- import { EvmNetwork } from '../../evm-network';
3
+ import { EvmNetwork, GenericNetwork } from '@dynamic-labs/types';
5
4
  export type MagicLinkConfig = Pick<MagicSDKAdditionalConfiguration<string, MagicSDKExtensionsOption<string>>, 'network' | 'testMode' | 'locale'> & {
6
5
  redirectURI?: string;
7
6
  };
8
7
  type ConfigForNetwork = MagicSDKAdditionalConfiguration<string, MagicSDKExtensionsOption<string>> | undefined;
9
- export type MagicClientNetworkHandlerProps<TClient> = Pick<MagicConnectorProps, 'config' | 'evmNetworks'> & {
8
+ export type MagicClientNetworkHandlerProps<TClient> = {
10
9
  createClient: (config: ConfigForNetwork) => TClient;
10
+ defaultChainId?: number;
11
+ evmNetworks: GenericNetwork[];
11
12
  };
12
13
  export declare class MagicClientNetworkHandler<TClient = unknown> {
13
14
  protected _clients: {
14
15
  [chainId: number]: TClient;
15
16
  };
16
17
  protected _networkId: number;
17
- protected _config: MagicLinkConfig | undefined;
18
18
  protected _listeners: WalletEventListeners | undefined;
19
19
  evmNetworks: EvmNetwork[];
20
20
  protected _createClient: MagicClientNetworkHandlerProps<TClient>['createClient'];
21
- constructor({ createClient, evmNetworks, config, }: MagicClientNetworkHandlerProps<TClient>);
21
+ constructor({ createClient, evmNetworks, defaultChainId, }: MagicClientNetworkHandlerProps<TClient>);
22
22
  setListeners(listeners: WalletEventListeners | undefined): void;
23
23
  onChainChanged(networkChainId: number): void;
24
24
  selectNetwork(networkChainId: number): Promise<void>;
25
25
  get networkId(): number;
26
- get config(): MagicLinkConfig | undefined;
27
26
  getClient(): TClient;
28
27
  getConfigForNetwork(networkId: number): MagicSDKAdditionalConfiguration<string, MagicSDKExtensionsOption<string>> | undefined;
29
- private get configNetworkId();
30
28
  private _getRpcUrlByNetworkId;
31
29
  private _getChainIdByNetworkId;
32
30
  }
@@ -1,28 +1,12 @@
1
1
  import { __awaiter } from 'tslib';
2
+ import { parseEvmNetworks } from '@dynamic-labs/utils';
2
3
 
3
- // these are based off of Magic's EthNetworkName type
4
- const chainNameToChainIdMap = {
5
- arbitrum: 42161,
6
- avalance: 43114,
7
- bsc: 56,
8
- gnosis: 100,
9
- goerli: 5,
10
- mainnet: 1,
11
- optimism: 10,
12
- polygon: 137,
13
- sepolia: 11155111,
14
- };
15
4
  class MagicClientNetworkHandler {
16
- constructor({ createClient, evmNetworks, config, }) {
17
- var _a, _b;
5
+ constructor({ createClient, evmNetworks, defaultChainId, }) {
18
6
  this._clients = {};
19
7
  this.evmNetworks = [];
20
- this._config = config;
21
- this.evmNetworks = evmNetworks;
22
- this._networkId =
23
- typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
24
- ? chainNameToChainIdMap[config.network]
25
- : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
8
+ this.evmNetworks = parseEvmNetworks(evmNetworks);
9
+ this._networkId = defaultChainId !== null && defaultChainId !== void 0 ? defaultChainId : 1;
26
10
  this._createClient = createClient;
27
11
  }
28
12
  setListeners(listeners) {
@@ -42,9 +26,6 @@ class MagicClientNetworkHandler {
42
26
  get networkId() {
43
27
  return this._networkId;
44
28
  }
45
- get config() {
46
- return this._config;
47
- }
48
29
  getClient() {
49
30
  const networkId = this._networkId;
50
31
  const client = this._clients[networkId];
@@ -60,27 +41,22 @@ class MagicClientNetworkHandler {
60
41
  const rpcUrl = this._getRpcUrlByNetworkId(networkId);
61
42
  // Should prioritize custom rpc config form dashboard
62
43
  if (rpcUrl) {
63
- return Object.assign(Object.assign({}, this._config), { network: {
44
+ return {
45
+ network: {
64
46
  chainId: this._getChainIdByNetworkId(networkId),
65
47
  rpcUrl,
66
- } });
67
- }
68
- // Next should return configuration provided through settings
69
- if (this.configNetworkId === networkId) {
70
- return this._config;
48
+ },
49
+ };
71
50
  }
72
51
  if (networkId === 1) {
73
- return Object.assign(Object.assign({}, this._config), { network: 'mainnet' });
52
+ return {
53
+ network: 'mainnet',
54
+ };
74
55
  }
75
56
  if (networkId === 5) {
76
- return Object.assign(Object.assign({}, this._config), { network: 'goerli' });
77
- }
78
- return this._config;
79
- }
80
- get configNetworkId() {
81
- var _a, _b, _c;
82
- if (typeof ((_a = this._config) === null || _a === void 0 ? void 0 : _a.network) !== 'string') {
83
- return (_c = (_b = this._config) === null || _b === void 0 ? void 0 : _b.network) === null || _c === void 0 ? void 0 : _c.chainId;
57
+ return {
58
+ network: 'goerli',
59
+ };
84
60
  }
85
61
  return undefined;
86
62
  }
@@ -5,17 +5,23 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var oauth = require('@magic-ext/oauth');
7
7
  var magicSdk = require('magic-sdk');
8
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
9
  var MagicWalletConnector = require('../MagicWalletConnector/MagicWalletConnector.cjs');
9
- var logger = require('../../../../utils/logger.cjs');
10
10
  var MagicClientNetworkHandler = require('../MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
11
11
 
12
12
  class MagicSocialWalletConnector extends MagicWalletConnector.MagicWalletConnector {
13
13
  constructor(opts) {
14
+ var _a, _b, _c, _d;
14
15
  super(opts);
15
16
  this.canConnectViaSocial = true;
17
+ const apiKey = (_b = (_a = opts.apiProviders) === null || _a === void 0 ? void 0 : _a.magicLink) === null || _b === void 0 ? void 0 : _b.providerProjectId;
18
+ const defaultChainId = (_d = (_c = opts.apiProviders) === null || _c === void 0 ? void 0 : _c.magicLink) === null || _d === void 0 ? void 0 : _d.defaultChainId;
19
+ if (!apiKey) {
20
+ throw new Error('Missing MagicLink configuration. Add your MagicLink API key to your project configuration via the Dynamic Labs dashboard.');
21
+ }
16
22
  this._magicClient = new MagicClientNetworkHandler.MagicClientNetworkHandler({
17
- config: opts.config,
18
- createClient: (config) => new magicSdk.Magic(opts.apiKey, Object.assign(Object.assign({}, config), { extensions: [new oauth.OAuthExtension()] })),
23
+ createClient: (config) => new magicSdk.Magic(apiKey, Object.assign(Object.assign({}, config), { extensions: [new oauth.OAuthExtension()] })),
24
+ defaultChainId: defaultChainId,
19
25
  evmNetworks: opts.evmNetworks,
20
26
  });
21
27
  }
@@ -45,7 +51,7 @@ class MagicSocialWalletConnector extends MagicWalletConnector.MagicWalletConnect
45
51
  return result.oauth;
46
52
  }
47
53
  catch (e) {
48
- logger.logger.error(e);
54
+ walletConnectorCore.logger.error(e);
49
55
  return undefined;
50
56
  }
51
57
  });
@@ -1,17 +1,23 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { OAuthExtension } from '@magic-ext/oauth';
3
3
  import { Magic } from 'magic-sdk';
4
+ import { logger } from '@dynamic-labs/wallet-connector-core';
4
5
  import { MagicWalletConnector } from '../MagicWalletConnector/MagicWalletConnector.js';
5
- import { logger } from '../../../../utils/logger.js';
6
6
  import { MagicClientNetworkHandler } from '../MagicClientNetworkHandler/MagicClientNetworkHandler.js';
7
7
 
8
8
  class MagicSocialWalletConnector extends MagicWalletConnector {
9
9
  constructor(opts) {
10
+ var _a, _b, _c, _d;
10
11
  super(opts);
11
12
  this.canConnectViaSocial = true;
13
+ const apiKey = (_b = (_a = opts.apiProviders) === null || _a === void 0 ? void 0 : _a.magicLink) === null || _b === void 0 ? void 0 : _b.providerProjectId;
14
+ const defaultChainId = (_d = (_c = opts.apiProviders) === null || _c === void 0 ? void 0 : _c.magicLink) === null || _d === void 0 ? void 0 : _d.defaultChainId;
15
+ if (!apiKey) {
16
+ throw new Error('Missing MagicLink configuration. Add your MagicLink API key to your project configuration via the Dynamic Labs dashboard.');
17
+ }
12
18
  this._magicClient = new MagicClientNetworkHandler({
13
- config: opts.config,
14
- createClient: (config) => new Magic(opts.apiKey, Object.assign(Object.assign({}, config), { extensions: [new OAuthExtension()] })),
19
+ createClient: (config) => new Magic(apiKey, Object.assign(Object.assign({}, config), { extensions: [new OAuthExtension()] })),
20
+ defaultChainId: defaultChainId,
15
21
  evmNetworks: opts.evmNetworks,
16
22
  });
17
23
  }