@dynamic-labs/ethereum 0.17.18 → 0.17.100-viem.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +4 -5
  2. package/package.json +10 -8
  3. package/src/EthWalletConnector.cjs +185 -193
  4. package/src/EthWalletConnector.d.ts +272 -39
  5. package/src/EthWalletConnector.js +186 -194
  6. package/src/constants.d.ts +1 -1
  7. package/src/ethProviderHelper.cjs +202 -193
  8. package/src/ethProviderHelper.d.ts +33 -34
  9. package/src/ethProviderHelper.js +202 -193
  10. package/src/index.cjs +5 -5
  11. package/src/index.d.ts +7 -7
  12. package/src/index.js +5 -5
  13. package/src/injected/BloctoInjected.cjs +5 -5
  14. package/src/injected/BloctoInjected.d.ts +4 -4
  15. package/src/injected/BloctoInjected.js +5 -5
  16. package/src/injected/BraveEvm.cjs +5 -5
  17. package/src/injected/BraveEvm.d.ts +4 -4
  18. package/src/injected/BraveEvm.js +5 -5
  19. package/src/injected/Dawn.cjs +5 -5
  20. package/src/injected/Dawn.d.ts +4 -4
  21. package/src/injected/Dawn.js +5 -5
  22. package/src/injected/ExodusEvm.cjs +5 -5
  23. package/src/injected/ExodusEvm.d.ts +4 -4
  24. package/src/injected/ExodusEvm.js +5 -5
  25. package/src/injected/Frame.cjs +5 -5
  26. package/src/injected/Frame.d.ts +4 -4
  27. package/src/injected/Frame.js +5 -5
  28. package/src/injected/GameStop.cjs +5 -5
  29. package/src/injected/GameStop.d.ts +4 -4
  30. package/src/injected/GameStop.js +5 -5
  31. package/src/injected/InjectedWalletBase.cjs +70 -65
  32. package/src/injected/InjectedWalletBase.d.ts +24 -24
  33. package/src/injected/InjectedWalletBase.js +70 -65
  34. package/src/injected/MetaMask.cjs +6 -6
  35. package/src/injected/MetaMask.d.ts +5 -5
  36. package/src/injected/MetaMask.js +6 -6
  37. package/src/injected/Opera.cjs +5 -5
  38. package/src/injected/Opera.d.ts +4 -4
  39. package/src/injected/Opera.js +5 -5
  40. package/src/injected/PhantomEvm.cjs +27 -27
  41. package/src/injected/PhantomEvm.d.ts +5 -5
  42. package/src/injected/PhantomEvm.js +27 -27
  43. package/src/injected/Superb.cjs +5 -5
  44. package/src/injected/Superb.d.ts +4 -4
  45. package/src/injected/Superb.js +5 -5
  46. package/src/injected/Trust.cjs +6 -6
  47. package/src/injected/Trust.d.ts +5 -5
  48. package/src/injected/Trust.js +6 -6
  49. package/src/injected/UnknownInjectedWallet.cjs +5 -5
  50. package/src/injected/UnknownInjectedWallet.d.ts +4 -4
  51. package/src/injected/UnknownInjectedWallet.js +5 -5
  52. package/src/injected/Zerion.cjs +6 -6
  53. package/src/injected/Zerion.d.ts +5 -5
  54. package/src/injected/Zerion.js +6 -6
  55. package/src/injected/index.cjs +14 -14
  56. package/src/injected/index.d.ts +14 -14
  57. package/src/injected/index.js +14 -14
  58. package/src/polyfills.cjs +11 -11
  59. package/src/polyfills.d.ts +1 -1
  60. package/src/polyfills.js +11 -11
  61. package/src/types.d.ts +24 -22
  62. package/src/utils/findEvmNetwork.cjs +13 -13
  63. package/src/utils/findEvmNetwork.d.ts +6 -6
  64. package/src/utils/findEvmNetwork.js +13 -13
  65. package/src/utils/isString.d.ts +1 -1
  66. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
  67. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
  68. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
  69. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
  70. package/src/utils/last.d.ts +1 -1
  71. package/src/utils/parseIntSafe.cjs +13 -13
  72. package/src/utils/parseIntSafe.d.ts +1 -1
  73. package/src/utils/parseIntSafe.js +13 -13
  74. package/src/walletConnect/client/client.cjs +181 -177
  75. package/src/walletConnect/client/client.d.ts +17 -17
  76. package/src/walletConnect/client/client.js +181 -177
  77. package/src/walletConnect/client/index.d.ts +1 -1
  78. package/src/walletConnect/client/types.d.ts +4 -4
  79. package/src/walletConnect/fetchWalletConnectWallets.cjs +45 -45
  80. package/src/walletConnect/fetchWalletConnectWallets.d.ts +8 -8
  81. package/src/walletConnect/fetchWalletConnectWallets.js +45 -45
  82. package/src/walletConnect/index.d.ts +3 -3
  83. package/src/walletConnect/walletConnect.cjs +128 -126
  84. package/src/walletConnect/walletConnect.d.ts +35 -35
  85. package/src/walletConnect/walletConnect.js +128 -126
  86. package/src/walletConnect/walletConnectV2.cjs +370 -371
  87. package/src/walletConnect/walletConnectV2.d.ts +50 -50
  88. package/src/walletConnect/walletConnectV2.js +371 -372
package/CHANGELOG.md CHANGED
@@ -1,13 +1,12 @@
1
1
 
2
- ### [0.17.18](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.17...v0.17.18) (2023-06-29)
3
-
4
- ### [0.17.17](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.16...v0.17.17) (2023-06-29)
2
+ ### [0.17.100-viem.2](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.100-viem.1...v0.17.100-viem.2) (2023-06-29)
5
3
 
6
4
 
7
5
  ### Bug Fixes
8
6
 
9
- * walletconnect v2 fixes ([#2529](https://github.com/dynamic-labs/DynamicAuth/issues/2529)) ([6fe03d8](https://github.com/dynamic-labs/DynamicAuth/commit/6fe03d802b0a3b8f7995d3a52ce5183b3b0bfb83)), closes [#2523](https://github.com/dynamic-labs/DynamicAuth/issues/2523) [#2527](https://github.com/dynamic-labs/DynamicAuth/issues/2527)
10
- * **wcv2:** use native or universal link when signing message ([#2502](https://github.com/dynamic-labs/DynamicAuth/issues/2502)) ([#2513](https://github.com/dynamic-labs/DynamicAuth/issues/2513)) ([01f7ca1](https://github.com/dynamic-labs/DynamicAuth/commit/01f7ca109c97d5cb04d6f4b4b574ec99aa8272f1))
7
+ * wcv2 fixes ([#2530](https://github.com/dynamic-labs/DynamicAuth/issues/2530)) ([aafbbdc](https://github.com/dynamic-labs/DynamicAuth/commit/aafbbdcfc61c3cd8aa2be8d710344584116d4d10)), closes [#2523](https://github.com/dynamic-labs/DynamicAuth/issues/2523) [#2527](https://github.com/dynamic-labs/DynamicAuth/issues/2527)
8
+
9
+ ### [0.17.100-viem.1](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.100-viem.0...v0.17.100-viem.1) (2023-06-28)
11
10
 
12
11
  ### [0.17.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.15...v0.17.16) (2023-06-28)
13
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "0.17.18",
3
+ "version": "0.17.100-viem.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -29,14 +29,16 @@
29
29
  "@walletconnect/client": "1.8.0",
30
30
  "@walletconnect/ethereum-provider": "1.8.0",
31
31
  "@walletconnect/universal-provider": "2.8.3",
32
- "ethers": "5.7.2",
33
32
  "eventemitter3": "5.0.1",
34
33
  "buffer": "6.0.3",
35
- "@dynamic-labs/rpc-providers": "0.17.18",
36
- "@dynamic-labs/types": "0.17.18",
37
- "@dynamic-labs/utils": "0.17.18",
38
- "@dynamic-labs/wallet-book": "0.17.18",
39
- "@dynamic-labs/wallet-connector-core": "0.17.18"
34
+ "@dynamic-labs/rpc-providers": "0.17.100-viem.2",
35
+ "@dynamic-labs/types": "0.17.100-viem.2",
36
+ "@dynamic-labs/utils": "0.17.100-viem.2",
37
+ "@dynamic-labs/wallet-book": "0.17.100-viem.2",
38
+ "@dynamic-labs/wallet-connector-core": "0.17.100-viem.2",
39
+ "stream": "0.0.2"
40
40
  },
41
- "peerDependencies": {}
41
+ "peerDependencies": {
42
+ "viem": "^1.1.0"
43
+ }
42
44
  }
@@ -3,204 +3,196 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('../_virtual/_tslib.cjs');
6
- var ethers = require('ethers');
6
+ var viem = require('viem');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
8
  var utils = require('@dynamic-labs/utils');
9
9
  var rpcProviders = require('@dynamic-labs/rpc-providers');
10
10
  var findEvmNetwork = require('./utils/findEvmNetwork.cjs');
11
11
 
12
- class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
13
- getRpcProvider() {
14
- var _a, _b, _c;
15
- return _tslib.__awaiter(this, void 0, void 0, function* () {
16
- const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
17
- if (this.evmNetworks.length === 0) {
18
- return undefined;
19
- }
20
- const configurations = {
21
- cosmos: [],
22
- evm: this.evmNetworks,
23
- solana: [],
24
- starknet: undefined,
25
- };
26
- return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
27
- });
28
- }
29
- constructor(props) {
30
- var _a;
31
- super(props);
32
- this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
33
- var _a;
34
- [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
35
- ? network.privateCustomerRpcUrls
36
- : network.rpcUrls;
37
- return acc;
38
- }, {});
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
- });
57
- }
58
- getNetwork() {
59
- return _tslib.__awaiter(this, void 0, void 0, function* () {
60
- const provider = this.getWeb3Provider();
61
- if (!this.supportsNetworkSwitching ||
62
- !provider ||
63
- !('getNetwork' in provider)) {
64
- return Promise.resolve(undefined);
65
- }
66
- const network = yield provider.getNetwork();
67
- return Promise.resolve(network === null || network === void 0 ? void 0 : network.chainId);
68
- });
69
- }
70
- getNameService() {
71
- return _tslib.__awaiter(this, void 0, void 0, function* () {
72
- const [[address], provider] = yield Promise.all([
73
- this.getConnectedAccounts(),
74
- this.getRpcProvider(),
75
- ]);
76
- if (!address || !provider || !('lookupAddress' in provider)) {
77
- return;
78
- }
79
- const [ensName, ensAvatar] = yield Promise.all([
80
- provider.lookupAddress(address),
81
- provider.getAvatar(address),
82
- ]);
83
- const ensData = {
84
- avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
85
- name: ensName !== null && ensName !== void 0 ? ensName : undefined,
86
- };
87
- return ensData;
88
- });
89
- }
90
- getSigner() {
91
- var _a;
92
- return _tslib.__awaiter(this, void 0, void 0, function* () {
93
- return (_a = this.getWeb3Provider()) === null || _a === void 0 ? void 0 : _a.getSigner();
94
- });
95
- }
96
- getBalance() {
97
- var _a;
98
- return _tslib.__awaiter(this, void 0, void 0, function* () {
99
- // This is equivalent to getSigner().getAddress() but does not crash
100
- // if the signer is not available
101
- const [address] = yield this.getConnectedAccounts();
102
- if (!address)
103
- return;
104
- const result = yield ((_a = this.getWeb3Provider()) === null || _a === void 0 ? void 0 : _a.getBalance(address));
105
- if (!result)
106
- return;
107
- return ethers.ethers.utils.formatEther(result);
108
- });
109
- }
110
- supportsNetworkSwitching() {
111
- return true;
112
- }
113
- switchNetwork({ networkName, networkChainId, }) {
114
- return _tslib.__awaiter(this, void 0, void 0, function* () {
115
- const network = findEvmNetwork.findEvmNetwork({
116
- chainId: networkChainId,
117
- name: networkName,
118
- networks: this.evmNetworks,
119
- });
120
- if (!network) {
121
- throw new utils.DynamicError(`Could not find network mapping for chain ${networkName ? networkName : networkChainId}`);
122
- }
123
- if (!this.supportsNetworkSwitching()) {
124
- throw new utils.DynamicError('Network switching is not supported');
125
- }
126
- const provider = this.getWeb3Provider();
127
- if (!provider) {
128
- throw new utils.DynamicError('Provider not found');
129
- }
130
- return this.providerSwitchNetwork({ network, provider });
131
- });
132
- }
133
- getConnectedAccounts() {
134
- return _tslib.__awaiter(this, void 0, void 0, function* () {
135
- const provider = this.getWeb3Provider();
136
- if (!provider)
137
- return [];
138
- return provider.send('eth_accounts', []);
139
- });
140
- }
141
- providerSwitchNetwork({ network, provider, }) {
142
- var _a, _b, _c;
143
- return _tslib.__awaiter(this, void 0, void 0, function* () {
144
- const { chainId } = network;
145
- const currentNetworkId = yield this.getNetwork();
146
- if (currentNetworkId && currentNetworkId === chainId) {
147
- return;
148
- }
149
- try {
150
- if (!this.supportsNetworkSwitching()) {
151
- throw new utils.DynamicError('Network switching is not supported');
152
- }
153
- return yield provider.send('wallet_switchEthereumChain', [
154
- {
155
- chainId: `0x${chainId.toString(16)}`,
156
- },
157
- ]);
158
- }
159
- catch (error) {
160
- if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
161
- (typeof error === 'string' && error.includes('rejected'))) {
162
- throw new utils.DynamicError("User rejected the wallet's request to switch network");
163
- }
164
- else if (error.code === 4902 ||
165
- error.message.includes('Unrecognized chain') ||
166
- // https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
167
- ((_c = (_b = error === null || error === void 0 ? void 0 : error.data) === null || _b === void 0 ? void 0 : _b.orginalError) === null || _c === void 0 ? void 0 : _c.code) === 4902) {
168
- // error code indicates the chain has not been added yet
169
- // https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
170
- return this.providerAddNetwork({ network, provider });
171
- }
172
- else {
173
- throw error;
174
- }
175
- }
176
- });
177
- }
178
- providerAddNetwork({ network, provider, }) {
179
- var _a;
180
- return _tslib.__awaiter(this, void 0, void 0, function* () {
181
- const { blockExplorerUrls, chainId, nativeCurrency, rpcUrls, name } = network;
182
- try {
183
- return yield provider.send('wallet_addEthereumChain', [
184
- {
185
- blockExplorerUrls,
186
- chainId: `0x${chainId.toString(16)}`,
187
- chainName: name,
188
- nativeCurrency,
189
- rpcUrls,
190
- },
191
- ]);
192
- }
193
- catch (error) {
194
- if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
195
- (typeof error === 'string' && error.includes('rejected'))) {
196
- throw new utils.DynamicError("User rejected the wallet's request to add network");
197
- }
198
- else {
199
- throw error;
200
- }
201
- }
202
- });
203
- }
12
+ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
13
+ getRpcProvider() {
14
+ var _a, _b, _c;
15
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
16
+ const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
17
+ if (this.evmNetworks.length === 0) {
18
+ return undefined;
19
+ }
20
+ const configurations = {
21
+ cosmos: [],
22
+ evm: this.evmNetworks,
23
+ solana: [],
24
+ starknet: undefined,
25
+ };
26
+ return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
27
+ });
28
+ }
29
+ constructor(props) {
30
+ var _a;
31
+ super(props);
32
+ this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
33
+ var _a;
34
+ [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
35
+ ? network.privateCustomerRpcUrls
36
+ : network.rpcUrls;
37
+ return acc;
38
+ }, {});
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 = viem.createPublicClient({
48
+ chain: utils.getOrMapViemChain(network),
49
+ transport: viem.http(rpcUrl),
50
+ });
51
+ return {
52
+ chainId: network.chainId,
53
+ chainName: network.name,
54
+ provider,
55
+ };
56
+ });
57
+ }
58
+ return rpcProviders.evm;
59
+ });
60
+ }
61
+ getNetwork() {
62
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
63
+ const provider = yield this.getWeb3Provider();
64
+ if (!this.supportsNetworkSwitching || !provider) {
65
+ return Promise.resolve(undefined);
66
+ }
67
+ return yield provider.getChainId();
68
+ });
69
+ }
70
+ getNameService() {
71
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
72
+ const [[address], rpcProvider] = yield Promise.all([
73
+ this.getConnectedAccounts(),
74
+ this.getRpcProvider(),
75
+ ]);
76
+ if (!address || !rpcProvider) {
77
+ return;
78
+ }
79
+ const ensName = yield rpcProvider.getEnsName({
80
+ address: address,
81
+ });
82
+ const ensAvatar = ensName
83
+ ? yield rpcProvider.getEnsAvatar({
84
+ name: ensName,
85
+ })
86
+ : undefined;
87
+ const ensData = {
88
+ avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
89
+ name: ensName !== null && ensName !== void 0 ? ensName : undefined,
90
+ };
91
+ return ensData;
92
+ });
93
+ }
94
+ getSigner() {
95
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
96
+ return this.getWeb3Provider();
97
+ });
98
+ }
99
+ getBalance() {
100
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
101
+ // This is equivalent to getSigner().getAddress() but does not crash
102
+ // if the signer is not available
103
+ const [address] = yield this.getConnectedAccounts();
104
+ if (!address)
105
+ return;
106
+ const client = yield this.getRpcProvider();
107
+ const result = yield (client === null || client === void 0 ? void 0 : client.getBalance({
108
+ address: address,
109
+ }));
110
+ if (!result && result !== BigInt(0))
111
+ return;
112
+ return viem.formatEther(result);
113
+ });
114
+ }
115
+ supportsNetworkSwitching() {
116
+ return true;
117
+ }
118
+ switchNetwork({ networkName, networkChainId, }) {
119
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
120
+ const network = findEvmNetwork.findEvmNetwork({
121
+ chainId: networkChainId,
122
+ name: networkName,
123
+ networks: this.evmNetworks,
124
+ });
125
+ if (!network) {
126
+ throw new utils.DynamicError(`Could not find network mapping for chain ${networkName ? networkName : networkChainId}`);
127
+ }
128
+ if (!this.supportsNetworkSwitching()) {
129
+ throw new utils.DynamicError('Network switching is not supported');
130
+ }
131
+ const provider = yield this.getWeb3Provider();
132
+ if (!provider) {
133
+ throw new utils.DynamicError('Provider not found');
134
+ }
135
+ return this.providerSwitchNetwork({ network, provider });
136
+ });
137
+ }
138
+ getConnectedAccounts() {
139
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
140
+ const provider = yield this.getWeb3Provider();
141
+ if (!provider)
142
+ return [];
143
+ return provider.getAddresses();
144
+ });
145
+ }
146
+ providerSwitchNetwork({ network, provider, }) {
147
+ var _a, _b, _c;
148
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
149
+ const { chainId } = network;
150
+ const currentNetworkId = yield this.getNetwork();
151
+ if (currentNetworkId && currentNetworkId === chainId) {
152
+ return;
153
+ }
154
+ try {
155
+ if (!this.supportsNetworkSwitching()) {
156
+ throw new utils.DynamicError('Network switching is not supported');
157
+ }
158
+ return yield provider.switchChain(utils.getOrMapViemChain(network));
159
+ }
160
+ catch (error) {
161
+ if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
162
+ (typeof error === 'string' && error.includes('rejected'))) {
163
+ throw new utils.DynamicError("User rejected the wallet's request to switch network");
164
+ }
165
+ else if (error.code === 4902 ||
166
+ error.message.includes('Unrecognized chain') ||
167
+ // https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
168
+ ((_c = (_b = error === null || error === void 0 ? void 0 : error.data) === null || _b === void 0 ? void 0 : _b.orginalError) === null || _c === void 0 ? void 0 : _c.code) === 4902) {
169
+ // error code indicates the chain has not been added yet
170
+ // https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
171
+ return this.providerAddNetwork({ network, provider });
172
+ }
173
+ else {
174
+ throw error;
175
+ }
176
+ }
177
+ });
178
+ }
179
+ providerAddNetwork({ network, provider, }) {
180
+ var _a;
181
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
182
+ try {
183
+ return yield provider.addChain({ chain: utils.getOrMapViemChain(network) });
184
+ }
185
+ catch (error) {
186
+ if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
187
+ (typeof error === 'string' && error.includes('rejected'))) {
188
+ throw new utils.DynamicError("User rejected the wallet's request to add network");
189
+ }
190
+ else {
191
+ throw error;
192
+ }
193
+ }
194
+ });
195
+ }
204
196
  }
205
197
 
206
198
  exports.EthWalletConnector = EthWalletConnector;