@dynamic-labs/ethereum 0.19.0-alpha.2 → 0.19.0-alpha.21

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 (118) hide show
  1. package/CHANGELOG.md +293 -0
  2. package/package.json +13 -10
  3. package/src/EthWalletConnector.cjs +189 -193
  4. package/src/EthWalletConnector.d.ts +298 -41
  5. package/src/EthWalletConnector.js +190 -194
  6. package/src/coinbase/client/client.cjs +76 -0
  7. package/src/coinbase/client/client.d.ts +6 -0
  8. package/src/coinbase/client/client.js +69 -0
  9. package/src/coinbase/client/index.d.ts +2 -0
  10. package/src/coinbase/client/types.d.ts +14 -0
  11. package/src/coinbase/coinbase.cjs +71 -0
  12. package/src/coinbase/coinbase.d.ts +535 -0
  13. package/src/coinbase/coinbase.js +67 -0
  14. package/src/coinbase/index.d.ts +3 -0
  15. package/src/constants.d.ts +1 -1
  16. package/src/ethProviderHelper.cjs +132 -209
  17. package/src/ethProviderHelper.d.ts +28 -36
  18. package/src/ethProviderHelper.js +133 -210
  19. package/src/index.cjs +30 -26
  20. package/src/index.d.ts +9 -8
  21. package/src/index.js +25 -20
  22. package/src/injected/BloctoInjected.cjs +6 -6
  23. package/src/injected/BloctoInjected.d.ts +4 -4
  24. package/src/injected/BloctoInjected.js +6 -6
  25. package/src/injected/BraveEvm.cjs +6 -6
  26. package/src/injected/BraveEvm.d.ts +4 -4
  27. package/src/injected/BraveEvm.js +6 -6
  28. package/src/injected/Dawn.cjs +6 -6
  29. package/src/injected/Dawn.d.ts +4 -4
  30. package/src/injected/Dawn.js +6 -6
  31. package/src/injected/ExodusEvm.cjs +8 -8
  32. package/src/injected/ExodusEvm.d.ts +5 -5
  33. package/src/injected/ExodusEvm.js +7 -7
  34. package/src/injected/Frame.cjs +6 -6
  35. package/src/injected/Frame.d.ts +4 -4
  36. package/src/injected/Frame.js +6 -6
  37. package/src/injected/GameStop.cjs +6 -6
  38. package/src/injected/GameStop.d.ts +4 -4
  39. package/src/injected/GameStop.js +6 -6
  40. package/src/injected/InjectedWalletBase.cjs +86 -65
  41. package/src/injected/InjectedWalletBase.d.ts +29 -24
  42. package/src/injected/InjectedWalletBase.js +86 -65
  43. package/src/injected/LegacyInjectedWalletBase.cjs +83 -0
  44. package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
  45. package/src/injected/LegacyInjectedWalletBase.js +81 -0
  46. package/src/injected/Opera.cjs +6 -6
  47. package/src/injected/Opera.d.ts +4 -4
  48. package/src/injected/Opera.js +6 -6
  49. package/src/injected/PhantomEvm.cjs +28 -28
  50. package/src/injected/PhantomEvm.d.ts +5 -5
  51. package/src/injected/PhantomEvm.js +28 -28
  52. package/src/injected/Rabby.cjs +8 -8
  53. package/src/injected/Rabby.d.ts +5 -5
  54. package/src/injected/Rabby.js +7 -7
  55. package/src/injected/Superb.cjs +6 -6
  56. package/src/injected/Superb.d.ts +4 -4
  57. package/src/injected/Superb.js +6 -6
  58. package/src/injected/Trust.cjs +8 -8
  59. package/src/injected/Trust.d.ts +5 -5
  60. package/src/injected/Trust.js +7 -7
  61. package/src/injected/Zerion.cjs +8 -8
  62. package/src/injected/Zerion.d.ts +5 -5
  63. package/src/injected/Zerion.js +7 -7
  64. package/src/injected/fetchInjectedWalletConnectors.cjs +33 -0
  65. package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
  66. package/src/injected/fetchInjectedWalletConnectors.js +29 -0
  67. package/src/injected/index.d.ts +13 -16
  68. package/src/injected/legacyInjectedWallets.cjs +48 -0
  69. package/src/injected/legacyInjectedWallets.d.ts +3 -0
  70. package/src/injected/legacyInjectedWallets.js +43 -0
  71. package/src/legacyEthProviderHelper.cjs +187 -0
  72. package/src/legacyEthProviderHelper.d.ts +34 -0
  73. package/src/legacyEthProviderHelper.js +183 -0
  74. package/src/polyfills.cjs +11 -11
  75. package/src/polyfills.d.ts +1 -1
  76. package/src/polyfills.js +11 -11
  77. package/src/types.d.ts +37 -24
  78. package/src/utils/eventListenerHandlers.cjs +34 -0
  79. package/src/utils/eventListenerHandlers.d.ts +8 -0
  80. package/src/utils/eventListenerHandlers.js +30 -0
  81. package/src/utils/findEvmNetwork.cjs +13 -13
  82. package/src/utils/findEvmNetwork.d.ts +6 -6
  83. package/src/utils/findEvmNetwork.js +13 -13
  84. package/src/utils/isString.d.ts +1 -1
  85. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
  86. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
  87. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
  88. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
  89. package/src/utils/last.d.ts +1 -1
  90. package/src/utils/parseIntSafe.cjs +13 -13
  91. package/src/utils/parseIntSafe.d.ts +1 -1
  92. package/src/utils/parseIntSafe.js +13 -13
  93. package/src/walletConnect/client/client.cjs +179 -176
  94. package/src/walletConnect/client/client.d.ts +17 -17
  95. package/src/walletConnect/client/client.js +179 -176
  96. package/src/walletConnect/client/index.d.ts +1 -1
  97. package/src/walletConnect/client/types.d.ts +4 -4
  98. package/src/walletConnect/fetchWalletConnectWallets.cjs +37 -52
  99. package/src/walletConnect/fetchWalletConnectWallets.d.ts +9 -10
  100. package/src/walletConnect/fetchWalletConnectWallets.js +38 -52
  101. package/src/walletConnect/index.d.ts +3 -3
  102. package/src/walletConnect/walletConnect.cjs +131 -130
  103. package/src/walletConnect/walletConnect.d.ts +52 -50
  104. package/src/walletConnect/walletConnect.js +131 -130
  105. package/src/walletConnect/walletConnectV2.cjs +419 -374
  106. package/src/walletConnect/walletConnectV2.d.ts +326 -61
  107. package/src/walletConnect/walletConnectV2.js +420 -375
  108. package/src/injected/MetaMask.cjs +0 -15
  109. package/src/injected/MetaMask.d.ts +0 -5
  110. package/src/injected/MetaMask.js +0 -11
  111. package/src/injected/OKX.cjs +0 -15
  112. package/src/injected/OKX.d.ts +0 -5
  113. package/src/injected/OKX.js +0 -11
  114. package/src/injected/UnknownInjectedWallet.cjs +0 -14
  115. package/src/injected/UnknownInjectedWallet.d.ts +0 -4
  116. package/src/injected/UnknownInjectedWallet.js +0 -10
  117. package/src/injected/index.cjs +0 -53
  118. package/src/injected/index.js +0 -49
@@ -3,204 +3,200 @@
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
+ getPublicClient() {
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.getWalletClient();
64
+ if (!this.supportsNetworkSwitching || !provider) {
65
+ return Promise.resolve(undefined);
66
+ }
67
+ return utils.retryableFn(provider.getChainId, {
68
+ fallbackValue: utils.FALLBACK_UNDEFINED,
69
+ });
70
+ });
71
+ }
72
+ getNameService() {
73
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
74
+ const [[address], rpcProvider] = yield Promise.all([
75
+ this.getConnectedAccounts(),
76
+ this.getPublicClient(),
77
+ ]);
78
+ if (!address || !rpcProvider) {
79
+ return;
80
+ }
81
+ const ensName = yield rpcProvider.getEnsName({
82
+ address: address,
83
+ });
84
+ const ensAvatar = ensName
85
+ ? yield rpcProvider.getEnsAvatar({
86
+ name: ensName,
87
+ })
88
+ : undefined;
89
+ const ensData = {
90
+ avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
91
+ name: ensName !== null && ensName !== void 0 ? ensName : undefined,
92
+ };
93
+ return ensData;
94
+ });
95
+ }
96
+ getSigner() {
97
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
98
+ return this.getWalletClient();
99
+ });
100
+ }
101
+ getBalance() {
102
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
103
+ // This is equivalent to getSigner().getAddress() but does not crash
104
+ // if the signer is not available
105
+ const [address] = yield this.getConnectedAccounts();
106
+ if (!address)
107
+ return;
108
+ const client = yield this.getPublicClient();
109
+ const result = yield (client === null || client === void 0 ? void 0 : client.getBalance({
110
+ address: address,
111
+ }));
112
+ if (!result && result !== BigInt(0))
113
+ return;
114
+ return viem.formatEther(result);
115
+ });
116
+ }
117
+ supportsNetworkSwitching() {
118
+ return true;
119
+ }
120
+ switchNetwork({ networkName, networkChainId, }) {
121
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
122
+ const network = findEvmNetwork.findEvmNetwork({
123
+ chainId: networkChainId,
124
+ name: networkName,
125
+ networks: this.evmNetworks,
126
+ });
127
+ if (!network) {
128
+ throw new utils.DynamicError(`Could not find network mapping for chain ${networkName ? networkName : networkChainId}`);
129
+ }
130
+ if (!this.supportsNetworkSwitching()) {
131
+ throw new utils.DynamicError('Network switching is not supported');
132
+ }
133
+ const provider = this.getWalletClient();
134
+ if (!provider) {
135
+ throw new utils.DynamicError('Provider not found');
136
+ }
137
+ return this.providerSwitchNetwork({ network, provider });
138
+ });
139
+ }
140
+ getConnectedAccounts() {
141
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
142
+ const provider = this.getWalletClient();
143
+ if (!provider)
144
+ return [];
145
+ return utils.retryableFn(provider.getAddresses, {
146
+ fallbackValue: [],
147
+ });
148
+ });
149
+ }
150
+ providerSwitchNetwork({ network, provider, }) {
151
+ var _a, _b, _c;
152
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
153
+ const { chainId } = network;
154
+ const currentNetworkId = yield this.getNetwork();
155
+ if (currentNetworkId && currentNetworkId === chainId) {
156
+ return;
157
+ }
158
+ try {
159
+ if (!this.supportsNetworkSwitching()) {
160
+ throw new utils.DynamicError('Network switching is not supported');
161
+ }
162
+ return yield provider.switchChain(utils.getOrMapViemChain(network));
163
+ }
164
+ catch (error) {
165
+ if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
166
+ (typeof error === 'string' && error.includes('rejected'))) {
167
+ throw new utils.DynamicError("User rejected the wallet's request to switch network");
168
+ }
169
+ else if (error.code === 4902 ||
170
+ error.message.includes('Unrecognized chain') ||
171
+ // https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
172
+ ((_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) {
173
+ // error code indicates the chain has not been added yet
174
+ // https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
175
+ return this.providerAddNetwork({ network, provider });
176
+ }
177
+ else {
178
+ throw error;
179
+ }
180
+ }
181
+ });
182
+ }
183
+ providerAddNetwork({ network, provider, }) {
184
+ var _a;
185
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
186
+ try {
187
+ return yield provider.addChain({ chain: utils.getOrMapViemChain(network) });
188
+ }
189
+ catch (error) {
190
+ if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
191
+ (typeof error === 'string' && error.includes('rejected'))) {
192
+ throw new utils.DynamicError("User rejected the wallet's request to add network");
193
+ }
194
+ else {
195
+ throw error;
196
+ }
197
+ }
198
+ });
199
+ }
204
200
  }
205
201
 
206
202
  exports.EthWalletConnector = EthWalletConnector;