@dynamic-labs/ethereum 0.18.0 → 0.18.100-viem.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +0 -24
  2. package/package.json +10 -9
  3. package/src/EthWalletConnector.cjs +185 -193
  4. package/src/EthWalletConnector.d.ts +293 -39
  5. package/src/EthWalletConnector.js +186 -194
  6. package/src/constants.d.ts +1 -1
  7. package/src/ethProviderHelper.cjs +216 -207
  8. package/src/ethProviderHelper.d.ts +35 -36
  9. package/src/ethProviderHelper.js +216 -207
  10. package/src/index.cjs +5 -5
  11. package/src/index.d.ts +8 -8
  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 +6 -6
  23. package/src/injected/ExodusEvm.d.ts +5 -5
  24. package/src/injected/ExodusEvm.js +6 -6
  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/OKX.cjs +6 -6
  38. package/src/injected/OKX.d.ts +5 -5
  39. package/src/injected/OKX.js +6 -6
  40. package/src/injected/Opera.cjs +5 -5
  41. package/src/injected/Opera.d.ts +4 -4
  42. package/src/injected/Opera.js +5 -5
  43. package/src/injected/PhantomEvm.cjs +27 -27
  44. package/src/injected/PhantomEvm.d.ts +5 -5
  45. package/src/injected/PhantomEvm.js +27 -27
  46. package/src/injected/Rabby.cjs +6 -6
  47. package/src/injected/Rabby.d.ts +5 -5
  48. package/src/injected/Rabby.js +6 -6
  49. package/src/injected/Superb.cjs +5 -5
  50. package/src/injected/Superb.d.ts +4 -4
  51. package/src/injected/Superb.js +5 -5
  52. package/src/injected/Trust.cjs +6 -6
  53. package/src/injected/Trust.d.ts +5 -5
  54. package/src/injected/Trust.js +6 -6
  55. package/src/injected/UnknownInjectedWallet.cjs +5 -5
  56. package/src/injected/UnknownInjectedWallet.d.ts +4 -4
  57. package/src/injected/UnknownInjectedWallet.js +5 -5
  58. package/src/injected/Zerion.cjs +6 -6
  59. package/src/injected/Zerion.d.ts +5 -5
  60. package/src/injected/Zerion.js +6 -6
  61. package/src/injected/index.cjs +16 -16
  62. package/src/injected/index.d.ts +16 -16
  63. package/src/injected/index.js +16 -16
  64. package/src/polyfills.cjs +11 -11
  65. package/src/polyfills.d.ts +1 -1
  66. package/src/polyfills.js +11 -11
  67. package/src/types.d.ts +26 -24
  68. package/src/utils/findEvmNetwork.cjs +13 -13
  69. package/src/utils/findEvmNetwork.d.ts +6 -6
  70. package/src/utils/findEvmNetwork.js +13 -13
  71. package/src/utils/isString.d.ts +1 -1
  72. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
  73. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
  74. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
  75. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
  76. package/src/utils/last.d.ts +1 -1
  77. package/src/utils/parseIntSafe.cjs +13 -13
  78. package/src/utils/parseIntSafe.d.ts +1 -1
  79. package/src/utils/parseIntSafe.js +13 -13
  80. package/src/walletConnect/client/client.cjs +180 -176
  81. package/src/walletConnect/client/client.d.ts +17 -17
  82. package/src/walletConnect/client/client.js +180 -176
  83. package/src/walletConnect/client/index.d.ts +1 -1
  84. package/src/walletConnect/client/types.d.ts +4 -4
  85. package/src/walletConnect/fetchWalletConnectWallets.cjs +51 -51
  86. package/src/walletConnect/fetchWalletConnectWallets.d.ts +10 -10
  87. package/src/walletConnect/fetchWalletConnectWallets.js +51 -51
  88. package/src/walletConnect/index.d.ts +3 -3
  89. package/src/walletConnect/walletConnect.cjs +132 -130
  90. package/src/walletConnect/walletConnect.d.ts +50 -50
  91. package/src/walletConnect/walletConnect.js +132 -130
  92. package/src/walletConnect/walletConnectV2.cjs +371 -374
  93. package/src/walletConnect/walletConnectV2.d.ts +315 -61
  94. package/src/walletConnect/walletConnectV2.js +372 -375
package/CHANGELOG.md CHANGED
@@ -1,28 +1,4 @@
1
1
 
2
- ## [0.18.0](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-beta.32...v0.18.0) (2023-08-13)
3
-
4
-
5
- ### Features
6
-
7
- * add in OKX wallet integration ([#2871](https://github.com/dynamic-labs/DynamicAuth/issues/2871)) ([#2927](https://github.com/dynamic-labs/DynamicAuth/issues/2927)) ([f6d06bc](https://github.com/dynamic-labs/DynamicAuth/commit/f6d06bc75ee0e53c9d972f5fab1f4de11818bd82))
8
- * update wallet locked view ([#2923](https://github.com/dynamic-labs/DynamicAuth/issues/2923)) ([3cc03ee](https://github.com/dynamic-labs/DynamicAuth/commit/3cc03ee5913434d99386fc89d4d26d5d3fb3ca19))
9
-
10
-
11
- ### Bug Fixes
12
-
13
- * account already exist message not displaying automatically ([#2896](https://github.com/dynamic-labs/DynamicAuth/issues/2896)) ([#2906](https://github.com/dynamic-labs/DynamicAuth/issues/2906)) ([5e7478a](https://github.com/dynamic-labs/DynamicAuth/commit/5e7478acd864451a7cf7e8e62845cca7ef5439c6))
14
- * don't let user update email if it's tied to an embedded wallet ([#2903](https://github.com/dynamic-labs/DynamicAuth/issues/2903)) ([33c52b5](https://github.com/dynamic-labs/DynamicAuth/commit/33c52b50a880a34b4161a700b8b1805c9b01527d)), closes [#2883](https://github.com/dynamic-labs/DynamicAuth/issues/2883)
15
- * **GVTY-195:** issues with mergeUserAccountsView ([#2945](https://github.com/dynamic-labs/DynamicAuth/issues/2945)) ([2c6265e](https://github.com/dynamic-labs/DynamicAuth/commit/2c6265e3e709edb9ff1af6e6c139b85418e46d76))
16
- * **Magic:** improve gas estimate for transactions ([#2947](https://github.com/dynamic-labs/DynamicAuth/issues/2947)) ([ad35a72](https://github.com/dynamic-labs/DynamicAuth/commit/ad35a722df6abd54b98ea491661ff4ec3e602621))
17
- * missing enable isVerificationInProgress ([#2926](https://github.com/dynamic-labs/DynamicAuth/issues/2926)) ([98f54fd](https://github.com/dynamic-labs/DynamicAuth/commit/98f54fd1345713dfaf0ef837502dfaca3709d633))
18
- * **networks:** merge custom network after API networks ([#2949](https://github.com/dynamic-labs/DynamicAuth/issues/2949)) ([ab22303](https://github.com/dynamic-labs/DynamicAuth/commit/ab22303294123c2a914a65f0d2c15481740647bb))
19
- * onBeforeConnectSuccessConfirmation is being called multiple time ([#2965](https://github.com/dynamic-labs/DynamicAuth/issues/2965)) ([a276968](https://github.com/dynamic-labs/DynamicAuth/commit/a2769689bc82350dfb8123e1fe8a4e92a60b262c))
20
- * **QNTM-249:** broken email update when user is authenticated ([#2932](https://github.com/dynamic-labs/DynamicAuth/issues/2932)) ([db33ba1](https://github.com/dynamic-labs/DynamicAuth/commit/db33ba14c317469958ce314a3822b706e20b07d0))
21
- * reformat social sign-in text ([#2956](https://github.com/dynamic-labs/DynamicAuth/issues/2956)) ([#2961](https://github.com/dynamic-labs/DynamicAuth/issues/2961)) ([f8d2222](https://github.com/dynamic-labs/DynamicAuth/commit/f8d2222d102f5335f95ec917cbb63bf9b55eff0b))
22
- * **transaction:** improve gas estimate in transaction confirmation ([#2938](https://github.com/dynamic-labs/DynamicAuth/issues/2938)) ([02d0f46](https://github.com/dynamic-labs/DynamicAuth/commit/02d0f46127e94e83b4decbaaf6a45dbae135c89d))
23
- * useSyncPrimaryWallet overrides views with "wallet-locked-view" ([#2921](https://github.com/dynamic-labs/DynamicAuth/issues/2921)) ([aa8c369](https://github.com/dynamic-labs/DynamicAuth/commit/aa8c369d2a713eb57ecc99b16a6b62d465789370))
24
- * **wallet-list:** update key to distinguish wallet and wallet group ([#2922](https://github.com/dynamic-labs/DynamicAuth/issues/2922)) ([f40c07c](https://github.com/dynamic-labs/DynamicAuth/commit/f40c07c65915775e99a1dbb8d07bb23824a92915)), closes [#2909](https://github.com/dynamic-labs/DynamicAuth/issues/2909)
25
-
26
2
  ## [0.18.0-beta.32](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-beta.31...v0.18.0-beta.32) (2023-08-09)
27
3
 
28
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "0.18.0",
3
+ "version": "0.18.100-viem.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -29,15 +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.18.0",
36
- "@dynamic-labs/types": "0.18.0",
37
- "@dynamic-labs/utils": "0.18.0",
38
- "@dynamic-labs/wallet-book": "0.18.0",
39
- "@dynamic-labs/wallet-connector-core": "0.18.0",
40
- "@ethersproject/providers": "5.7.2"
34
+ "@dynamic-labs/rpc-providers": "0.18.100-viem.1",
35
+ "@dynamic-labs/types": "0.18.100-viem.1",
36
+ "@dynamic-labs/utils": "0.18.100-viem.1",
37
+ "@dynamic-labs/wallet-book": "0.18.100-viem.1",
38
+ "@dynamic-labs/wallet-connector-core": "0.18.100-viem.1",
39
+ "stream": "0.0.2"
41
40
  },
42
- "peerDependencies": {}
41
+ "peerDependencies": {
42
+ "viem": "^1.1.0"
43
+ }
43
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 = 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;