@wagmi/core 0.4.0-test.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/chains/dist/wagmi-core-chains.cjs.dev.js +1 -1
  2. package/chains/dist/wagmi-core-chains.cjs.prod.js +1 -1
  3. package/chains/dist/wagmi-core-chains.esm.js +1 -1
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +5 -5
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +5 -5
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +5 -5
  7. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +6 -4
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +6 -4
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +6 -4
  10. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +11 -7
  11. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +11 -7
  12. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +6 -6
  13. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +19 -18
  14. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +19 -18
  15. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +19 -18
  16. package/dist/base-33eceda3.esm.js +302 -0
  17. package/dist/base-457b5f55.cjs.prod.js +328 -0
  18. package/dist/base-6f16410c.cjs.dev.js +328 -0
  19. package/dist/{chains-d045862c.cjs.prod.js → chains-1390c48d.cjs.prod.js} +56 -4
  20. package/dist/{chains-7e369752.cjs.dev.js → chains-2ca34f98.cjs.dev.js} +56 -4
  21. package/dist/{chains-fa406563.esm.js → chains-e98fda1e.esm.js} +56 -4
  22. package/dist/{client-60ee0298.esm.js → client-71653c40.esm.js} +21 -44
  23. package/dist/{client-42cf11b7.cjs.dev.js → client-7864fb0c.cjs.prod.js} +21 -44
  24. package/dist/{client-ed3aaa6a.cjs.prod.js → client-b3902dbf.cjs.dev.js} +21 -44
  25. package/dist/declarations/src/actions/accounts/getAccount.d.ts +31 -2
  26. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +1 -2
  27. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +11 -13
  28. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +9 -1
  29. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +8 -1
  30. package/dist/declarations/src/actions/contracts/index.d.ts +5 -3
  31. package/dist/declarations/src/actions/contracts/multicall.d.ts +21 -0
  32. package/dist/declarations/src/actions/contracts/readContract.d.ts +7 -4
  33. package/dist/declarations/src/actions/contracts/readContracts.d.ts +19 -0
  34. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +3 -3
  35. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +2 -3
  36. package/dist/declarations/src/actions/contracts/watchReadContracts.d.ts +6 -0
  37. package/dist/declarations/src/actions/contracts/writeContract.d.ts +10 -4
  38. package/dist/declarations/src/actions/index.d.ts +1 -1
  39. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +6 -1
  40. package/dist/declarations/src/client.d.ts +6 -11
  41. package/dist/declarations/src/connectors/base.d.ts +4 -3
  42. package/dist/declarations/src/connectors/mock/connector.d.ts +2 -9
  43. package/dist/declarations/src/connectors/mock/provider.d.ts +2 -1
  44. package/dist/declarations/src/connectors/walletConnect.d.ts +5 -4
  45. package/dist/declarations/src/constants/index.d.ts +1 -0
  46. package/dist/declarations/src/constants/multicall.d.ts +25 -0
  47. package/dist/declarations/src/errors.d.ts +27 -5
  48. package/dist/declarations/src/index.d.ts +4 -4
  49. package/dist/declarations/src/providers/alchemy.d.ts +2 -2
  50. package/dist/declarations/src/providers/infura.d.ts +2 -2
  51. package/dist/declarations/src/providers/jsonRpc.d.ts +2 -2
  52. package/dist/declarations/src/providers/public.d.ts +2 -2
  53. package/dist/declarations/src/types/index.d.ts +17 -5
  54. package/dist/declarations/src/utils/configureChains.d.ts +10 -4
  55. package/dist/wagmi-core.cjs.dev.js +578 -231
  56. package/dist/wagmi-core.cjs.prod.js +578 -231
  57. package/dist/wagmi-core.esm.js +576 -239
  58. package/package.json +15 -3
  59. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +3 -1
  60. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +3 -1
  61. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +3 -1
  62. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.d.ts +0 -1
  63. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.dev.js +0 -200
  64. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.js +0 -7
  65. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.prod.js +0 -200
  66. package/connectors/injected/dist/wagmi-core-connectors-injected.esm.js +0 -196
  67. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.d.ts +0 -11
  68. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.js +0 -16
  69. package/dist/base-7f682723.cjs.prod.js +0 -623
  70. package/dist/base-ae774f26.cjs.dev.js +0 -623
  71. package/dist/base-c546f171.esm.js +0 -603
  72. package/dist/declarations/src/utils/eventemitter.d.ts +0 -135
@@ -2,23 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var client = require('./client-ed3aaa6a.cjs.prod.js');
6
- var base = require('./base-7f682723.cjs.prod.js');
5
+ var client = require('./client-7864fb0c.cjs.prod.js');
6
+ var base = require('./base-457b5f55.cjs.prod.js');
7
7
  var ethers$1 = require('ethers/lib/ethers');
8
8
  var utils = require('ethers/lib/utils');
9
- var chains = require('./chains-d045862c.cjs.prod.js');
10
9
  var ethers = require('ethers');
10
+ var shallow = require('zustand/shallow');
11
11
  var rpcs = require('./rpcs-b3c52116.cjs.prod.js');
12
+ var chains = require('./chains-1390c48d.cjs.prod.js');
12
13
  require('zustand/vanilla');
13
14
  require('zustand/middleware');
15
+ require('eventemitter3');
14
16
 
15
- // https://ethereum.org/en/developers/docs/standards/tokens/erc-20
16
- const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
17
-
18
- const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)', 'function approve(address _approved, uint256 _tokenId) external payable', 'function balanceOf(address _owner) external view returns (uint256)', 'function getApproved(uint256 _tokenId) external view returns (address)', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool)', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address)', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable', 'function setApprovalForAll(address _operator, bool _approved) external', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable'];
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
19
18
 
20
- // https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
21
- const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
19
+ var shallow__default = /*#__PURE__*/_interopDefault(shallow);
22
20
 
23
21
  function configureChains(defaultChains, providers) {
24
22
  let {
@@ -76,9 +74,13 @@ function configureChains(defaultChains, providers) {
76
74
  const activeChainId = chainId && chains.some(x => x.id === chainId) ? chainId : (_defaultChains$ = defaultChains[0]) === null || _defaultChains$ === void 0 ? void 0 : _defaultChains$.id;
77
75
  const chainProviders = providers_[activeChainId];
78
76
  if (!chainProviders) throw new Error("No providers configured for chain \"".concat(activeChainId, "\""));
79
- if (chainProviders.length === 1) return (_chainProviders$ = chainProviders[0]) === null || _chainProviders$ === void 0 ? void 0 : _chainProviders$.call(chainProviders);
80
- return fallbackProvider(targetQuorum, minQuorum, chainProviders, {
77
+ if (chainProviders.length === 1) return Object.assign(((_chainProviders$ = chainProviders[0]) === null || _chainProviders$ === void 0 ? void 0 : _chainProviders$.call(chainProviders)) || {}, {
78
+ chains
79
+ });
80
+ return Object.assign(fallbackProvider(targetQuorum, minQuorum, chainProviders, {
81
81
  stallTimeout
82
+ }), {
83
+ chains
82
84
  });
83
85
  },
84
86
  webSocketProvider: _ref3 => {
@@ -90,10 +92,14 @@ function configureChains(defaultChains, providers) {
90
92
  const activeChainId = chainId && chains.some(x => x.id === chainId) ? chainId : (_defaultChains$2 = defaultChains[0]) === null || _defaultChains$2 === void 0 ? void 0 : _defaultChains$2.id;
91
93
  const chainWebSocketProviders = webSocketProviders_[activeChainId];
92
94
  if (!chainWebSocketProviders) return undefined;
93
- if (chainWebSocketProviders.length === 1) return (_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders); // WebSockets do not work with `fallbackProvider`
95
+ if (chainWebSocketProviders.length === 1) return Object.assign(((_chainWebSocketProvid = chainWebSocketProviders[0]) === null || _chainWebSocketProvid === void 0 ? void 0 : _chainWebSocketProvid.call(chainWebSocketProviders)) || {}, {
96
+ chains
97
+ }); // WebSockets do not work with `fallbackProvider`
94
98
  // Default to first available
95
99
 
96
- return (_chainWebSocketProvid2 = chainWebSocketProviders[0]) === null || _chainWebSocketProvid2 === void 0 ? void 0 : _chainWebSocketProvid2.call(chainWebSocketProviders);
100
+ return Object.assign(((_chainWebSocketProvid2 = chainWebSocketProviders[0]) === null || _chainWebSocketProvid2 === void 0 ? void 0 : _chainWebSocketProvid2.call(chainWebSocketProviders)) || {}, {
101
+ chains
102
+ });
97
103
  }
98
104
  };
99
105
  }
@@ -129,6 +135,52 @@ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
129
135
  }
130
136
  }
131
137
 
138
+ // https://ethereum.org/en/developers/docs/standards/tokens/erc-20
139
+ const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
140
+
141
+ const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)', 'function approve(address _approved, uint256 _tokenId) external payable', 'function balanceOf(address _owner) external view returns (uint256)', 'function getApproved(uint256 _tokenId) external view returns (address)', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool)', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address)', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable', 'function setApprovalForAll(address _operator, bool _approved) external', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable'];
142
+
143
+ const multicallInterface = [{
144
+ inputs: [{
145
+ components: [{
146
+ internalType: 'address',
147
+ name: 'target',
148
+ type: 'address'
149
+ }, {
150
+ internalType: 'bool',
151
+ name: 'allowFailure',
152
+ type: 'bool'
153
+ }, {
154
+ internalType: 'bytes',
155
+ name: 'callData',
156
+ type: 'bytes'
157
+ }],
158
+ internalType: 'struct Multicall3.Call3[]',
159
+ name: 'calls',
160
+ type: 'tuple[]'
161
+ }],
162
+ name: 'aggregate3',
163
+ outputs: [{
164
+ components: [{
165
+ internalType: 'bool',
166
+ name: 'success',
167
+ type: 'bool'
168
+ }, {
169
+ internalType: 'bytes',
170
+ name: 'returnData',
171
+ type: 'bytes'
172
+ }],
173
+ internalType: 'struct Multicall3.Result[]',
174
+ name: 'returnData',
175
+ type: 'tuple[]'
176
+ }],
177
+ stateMutability: 'view',
178
+ type: 'function'
179
+ }];
180
+
181
+ // https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
182
+ const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
183
+
132
184
  async function connect(_ref) {
133
185
  let {
134
186
  chainId,
@@ -136,19 +188,31 @@ async function connect(_ref) {
136
188
  } = _ref;
137
189
  const activeConnector = client.client.connector;
138
190
  if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new base.ConnectorAlreadyConnectedError();
139
- const data = await connector.connect({
140
- chainId
141
- });
142
- client.client.setLastUsedConnector(connector.id);
143
- client.client.setState(x => ({ ...x,
144
- connector,
145
- chains: connector === null || connector === void 0 ? void 0 : connector.chains,
146
- data
147
- }));
148
- client.client.storage.setItem('connected', true);
149
- return { ...data,
150
- connector
151
- };
191
+
192
+ try {
193
+ client.client.setState(x => ({ ...x,
194
+ status: 'connecting'
195
+ }));
196
+ const data = await connector.connect({
197
+ chainId
198
+ });
199
+ client.client.setLastUsedConnector(connector.id);
200
+ client.client.setState(x => ({ ...x,
201
+ connector,
202
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
203
+ data,
204
+ status: 'connected'
205
+ }));
206
+ client.client.storage.setItem('connected', true);
207
+ return { ...data,
208
+ connector
209
+ };
210
+ } catch (err) {
211
+ client.client.setState(x => ({ ...x,
212
+ status: 'disconnected'
213
+ }));
214
+ throw err;
215
+ }
152
216
  }
153
217
 
154
218
  async function disconnect() {
@@ -158,6 +222,15 @@ async function disconnect() {
158
222
  client$1.storage.removeItem('connected');
159
223
  }
160
224
 
225
+ function getContract(_ref) {
226
+ let {
227
+ addressOrName,
228
+ contractInterface,
229
+ signerOrProvider
230
+ } = _ref;
231
+ return new ethers.Contract(addressOrName, contractInterface, signerOrProvider);
232
+ }
233
+
161
234
  function getProvider() {
162
235
  let {
163
236
  chainId
@@ -208,213 +281,152 @@ function watchWebSocketProvider(args, callback) {
208
281
  return unsubscribe;
209
282
  }
210
283
 
211
- async function fetchBalance(_ref) {
212
- var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
213
-
284
+ async function readContract(_ref) {
214
285
  let {
215
286
  addressOrName,
287
+ args,
216
288
  chainId,
217
- formatUnits: unit = 'ether',
218
- token
289
+ contractInterface,
290
+ functionName,
291
+ overrides
219
292
  } = _ref;
220
- const client$1 = client.getClient();
221
293
  const provider = getProvider({
222
294
  chainId
223
295
  });
224
-
225
- if (token) {
226
- const contract = new ethers$1.Contract(token, erc20ABI, provider);
227
- const [value, decimals, symbol] = await Promise.all([contract.balanceOf(addressOrName), contract.decimals(), contract.symbol()]);
228
- return {
229
- decimals,
230
- formatted: utils.formatUnits(value, unit),
231
- symbol,
232
- unit,
233
- value
234
- };
235
- }
236
-
237
- const chains$1 = [...((_client$connector$cha = (_client$connector = client$1.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...chains.allChains];
238
- const value = await provider.getBalance(addressOrName);
239
- const chain = chains$1.find(x => x.id === provider.network.chainId);
240
- return {
241
- decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
242
- formatted: utils.formatUnits(value, unit),
243
- symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
244
- unit,
245
- value
246
- };
247
- }
248
-
249
- async function fetchSigner() {
250
- var _client$connector, _client$connector$get;
251
-
252
- const client$1 = client.getClient();
253
- const signer = (await ((_client$connector = client$1.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
254
- return signer;
255
- }
256
-
257
- function getAccount() {
258
- const {
259
- data,
260
- connector
261
- } = client.getClient();
262
- return {
263
- address: data === null || data === void 0 ? void 0 : data.account,
264
- connector
265
- };
266
- }
267
-
268
- function getNetwork() {
269
- var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
270
-
271
- const client$1 = client.getClient();
272
- const chainId = (_client$data = client$1.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
273
- const activeChains = (_client$chains = client$1.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
274
- const activeChain = (_find = [...activeChains, ...chains.allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
275
- id: chainId,
276
- name: "Chain ".concat(chainId),
277
- network: "".concat(chainId),
278
- rpcUrls: {
279
- default: ''
280
- }
281
- };
282
- return {
283
- chain: chainId ? { ...activeChain,
284
- ...((_client$data2 = client$1.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
285
- id: chainId
286
- } : undefined,
287
- chains: activeChains
288
- };
289
- }
290
-
291
- async function signMessage(args) {
292
- try {
293
- const signer = await fetchSigner();
294
- if (!signer) throw new base.ConnectorNotFoundError();
295
- return await signer.signMessage(args.message);
296
- } catch (error) {
297
- if (error.code === 4001) throw new base.UserRejectedRequestError(error);
298
- throw error;
299
- }
300
- }
301
-
302
- async function signTypedData(args) {
303
- try {
304
- const signer = await fetchSigner();
305
- if (!signer) throw new base.ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
306
-
307
- return await signer._signTypedData(args.domain, args.types, args.value);
308
- } catch (error) {
309
- if (error.code === 4001) throw new base.UserRejectedRequestError(error);
310
- throw error;
311
- }
296
+ const contract = getContract({
297
+ addressOrName,
298
+ contractInterface,
299
+ signerOrProvider: provider
300
+ });
301
+ const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
302
+ const contractFunction = contract[functionName];
303
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
304
+ const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
305
+ return response;
312
306
  }
313
307
 
314
- async function switchNetwork(_ref) {
315
- var _client$connector;
316
-
308
+ async function multicall(_ref) {
317
309
  let {
318
- chainId
310
+ allowFailure = true,
311
+ chainId,
312
+ contracts,
313
+ overrides
319
314
  } = _ref;
320
- const client$1 = client.getClient();
321
- if (!((_client$connector = client$1.connector) !== null && _client$connector !== void 0 && _client$connector.switchChain)) throw new base.SwitchChainNotSupportedError();
322
- const chain = await client$1.connector.switchChain(chainId);
323
- return chain;
324
- }
325
-
326
- function watchAccount(callback) {
327
- const client$1 = client.getClient();
328
-
329
- const handleChange = () => callback(getAccount());
330
-
331
- const unsubscribe = client$1.subscribe(_ref => {
315
+ const provider = getProvider({
316
+ chainId
317
+ });
318
+ if (!provider.chains) throw new base.ProviderChainsNotFound();
319
+ const chain = provider.chains.find(chain => chain.id === chainId) || provider.chains[0];
320
+ if (!chain) throw new base.ProviderChainsNotFound();
321
+ if (!(chain !== null && chain !== void 0 && chain.multicall)) throw new base.ChainDoesNotSupportMulticallError({
322
+ chain
323
+ });
324
+ if (typeof (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) === 'number' && (overrides === null || overrides === void 0 ? void 0 : overrides.blockTag) < chain.multicall.blockCreated) throw new base.ChainDoesNotSupportMulticallError({
325
+ blockNumber: overrides === null || overrides === void 0 ? void 0 : overrides.blockTag,
326
+ chain
327
+ });
328
+ const multicallContract = getContract({
329
+ addressOrName: chain.multicall.address,
330
+ contractInterface: multicallInterface,
331
+ signerOrProvider: provider
332
+ });
333
+ const calls = contracts.map(_ref2 => {
332
334
  let {
333
- data,
334
- connector
335
- } = _ref;
335
+ addressOrName,
336
+ contractInterface,
337
+ functionName,
338
+ ...config
339
+ } = _ref2;
340
+ const {
341
+ args
342
+ } = config || {};
343
+ const contract = getContract({
344
+ addressOrName,
345
+ contractInterface
346
+ });
347
+ const params = Array.isArray(args) ? args : args ? [args] : [];
348
+ const callData = contract.interface.encodeFunctionData(functionName, params);
349
+ if (!contract[functionName]) console.warn("\"".concat(functionName, "\" is not in the interface for contract \"").concat(addressOrName, "\""));
336
350
  return {
337
- account: data === null || data === void 0 ? void 0 : data.account,
338
- connector
351
+ target: addressOrName,
352
+ allowFailure: allowFailure,
353
+ callData
339
354
  };
340
- }, handleChange, {
341
- equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
342
355
  });
343
- return unsubscribe;
356
+ const params = [...[calls], ...(overrides ? [overrides] : [])];
357
+ const results = await multicallContract.aggregate3(...params);
358
+ return results.map((_ref3, i) => {
359
+ let {
360
+ returnData,
361
+ success
362
+ } = _ref3;
363
+ if (!success) return undefined;
364
+ const {
365
+ addressOrName,
366
+ contractInterface,
367
+ functionName
368
+ } = contracts[i];
369
+ const contract = getContract({
370
+ addressOrName,
371
+ contractInterface
372
+ });
373
+ const result = contract.interface.decodeFunctionResult(functionName, returnData);
374
+ return Array.isArray(result) && result.length === 1 ? result[0] : result;
375
+ });
344
376
  }
345
377
 
346
- function watchNetwork(callback) {
347
- const client$1 = client.getClient();
348
-
349
- const handleChange = () => callback(getNetwork());
378
+ async function readContracts(_ref) {
379
+ let {
380
+ allowFailure = true,
381
+ contracts,
382
+ overrides
383
+ } = _ref;
350
384
 
351
- const unsubscribe = client$1.subscribe(_ref => {
352
- var _data$chain;
385
+ try {
386
+ const provider = getProvider();
387
+ const contractsByChainId = contracts.reduce((contracts, contract) => {
388
+ var _contract$chainId;
353
389
 
354
- let {
355
- data,
356
- chains
357
- } = _ref;
358
- return {
359
- chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
360
- chains
361
- };
362
- }, handleChange, {
363
- equalityFn: (selected, previous) => selected.chainId === previous.chainId && selected.chains === previous.chains
364
- });
365
- return unsubscribe;
366
- }
390
+ const chainId = (_contract$chainId = contract.chainId) !== null && _contract$chainId !== void 0 ? _contract$chainId : provider.network.chainId;
391
+ return { ...contracts,
392
+ [chainId]: [...(contracts[chainId] || []), contract]
393
+ };
394
+ }, {});
395
+ const promises = Object.entries(contractsByChainId).map(_ref2 => {
396
+ let [chainId, contracts] = _ref2;
397
+ return multicall({
398
+ allowFailure,
399
+ chainId: parseInt(chainId),
400
+ contracts,
401
+ overrides
402
+ });
403
+ });
367
404
 
368
- function watchSigner(callback) {
369
- const client$1 = client.getClient();
405
+ if (allowFailure) {
406
+ return (await Promise.allSettled(promises)).map(result => {
407
+ if (result.status === 'fulfilled') return result.value;
370
408
 
371
- const handleChange = async () => callback(await fetchSigner());
409
+ if (result.reason instanceof base.ChainDoesNotSupportMulticallError) {
410
+ console.warn(result.reason.message);
411
+ throw result.reason;
412
+ }
372
413
 
373
- const unsubscribe = client$1.subscribe(_ref => {
374
- var _data$chain;
414
+ return null;
415
+ }).flat();
416
+ }
375
417
 
376
- let {
377
- data,
378
- connector
379
- } = _ref;
380
- return {
381
- account: data === null || data === void 0 ? void 0 : data.account,
382
- chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
383
- connector
384
- };
385
- }, handleChange, {
386
- equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
387
- });
388
- return unsubscribe;
389
- }
418
+ return (await Promise.all(promises)).flat();
419
+ } catch (err) {
420
+ const promises = contracts.map(contract => readContract({ ...contract,
421
+ overrides
422
+ }));
390
423
 
391
- function getContract(_ref) {
392
- let {
393
- addressOrName,
394
- contractInterface,
395
- signerOrProvider
396
- } = _ref;
397
- return new ethers.Contract(addressOrName, contractInterface, signerOrProvider);
398
- }
424
+ if (allowFailure) {
425
+ return (await Promise.allSettled(promises)).map(result => result.status === 'fulfilled' ? result.value : null);
426
+ }
399
427
 
400
- async function readContract(contractConfig, functionName) {
401
- let {
402
- args,
403
- chainId,
404
- overrides
405
- } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
406
- const provider = getProvider({
407
- chainId
408
- });
409
- const contract = getContract({
410
- signerOrProvider: provider,
411
- ...contractConfig
412
- });
413
- const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
414
- const contractFunction = contract[functionName];
415
- if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
416
- const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
417
- return response;
428
+ return Promise.all(promises);
429
+ }
418
430
  }
419
431
 
420
432
  function watchContractEvent(
@@ -458,7 +470,7 @@ eventName, callback) {
458
470
  webSocketProvider
459
471
  };
460
472
  }, watchEvent, {
461
- equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
473
+ equalityFn: shallow__default["default"]
462
474
  });
463
475
  return () => {
464
476
  var _contract2;
@@ -520,7 +532,7 @@ function watchBlockNumber(args, callback) {
520
532
 
521
533
  callback(await fetchBlockNumber());
522
534
  }, {
523
- equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
535
+ equalityFn: shallow__default["default"]
524
536
  });
525
537
  return () => {
526
538
  unsubscribe();
@@ -528,12 +540,30 @@ function watchBlockNumber(args, callback) {
528
540
  };
529
541
  }
530
542
 
531
- function watchReadContract(contractConfig, functionName) {
532
- let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
533
- let callback = arguments.length > 3 ? arguments[3] : undefined;
543
+ function watchReadContract(config, callback) {
544
+ const client$1 = client.getClient();
545
+
546
+ const handleChange = async () => callback(await readContract(config));
547
+
548
+ const unwatch = config.listenToBlock ? watchBlockNumber({
549
+ listen: true
550
+ }, handleChange) : undefined;
551
+ const unsubscribe = client$1.subscribe(_ref => {
552
+ let {
553
+ provider
554
+ } = _ref;
555
+ return provider;
556
+ }, handleChange);
557
+ return () => {
558
+ unsubscribe();
559
+ unwatch === null || unwatch === void 0 ? void 0 : unwatch();
560
+ };
561
+ }
562
+
563
+ function watchReadContracts(config, callback) {
534
564
  const client$1 = client.getClient();
535
565
 
536
- const handleChange = async () => callback(await readContract(contractConfig, functionName, config));
566
+ const handleChange = async () => callback(await readContracts(config));
537
567
 
538
568
  const unwatch = config.listenToBlock ? watchBlockNumber({
539
569
  listen: true
@@ -550,29 +580,315 @@ function watchReadContract(contractConfig, functionName) {
550
580
  };
551
581
  }
552
582
 
553
- async function writeContract(contractConfig, functionName) {
583
+ async function writeContract(_ref) {
554
584
  let {
585
+ addressOrName,
555
586
  args,
556
- overrides
557
- } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
558
- const client$1 = client.getClient();
559
- if (!client$1.connector) throw new base.ConnectorNotFoundError();
587
+ chainId,
588
+ contractInterface,
589
+ functionName,
590
+ overrides,
591
+ signerOrProvider
592
+ } = _ref;
593
+ const {
594
+ connector
595
+ } = client.getClient();
596
+ if (!connector) throw new base.ConnectorNotFoundError();
560
597
  const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
561
598
 
562
599
  try {
563
- const signer = await client$1.connector.getSigner();
564
- const contract = getContract(contractConfig);
600
+ var _chain;
601
+
602
+ let chain;
603
+
604
+ if (chainId) {
605
+ const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
606
+
607
+ if (chainId !== activeChainId) {
608
+ var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
609
+
610
+ if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new base.ChainMismatchError({
611
+ activeChain: (_connector$chains$fin = (_connector$chains$fin2 = connector.chains.find(x => x.id === activeChainId)) === null || _connector$chains$fin2 === void 0 ? void 0 : _connector$chains$fin2.name) !== null && _connector$chains$fin !== void 0 ? _connector$chains$fin : "Chain ".concat(activeChainId),
612
+ targetChain: (_connector$chains$fin3 = (_connector$chains$fin4 = connector.chains.find(x => x.id === chainId)) === null || _connector$chains$fin4 === void 0 ? void 0 : _connector$chains$fin4.name) !== null && _connector$chains$fin3 !== void 0 ? _connector$chains$fin3 : "Chain ".concat(chainId)
613
+ });
614
+ }
615
+ }
616
+
617
+ const signer = await connector.getSigner({
618
+ chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
619
+ });
620
+ const contract = getContract({
621
+ addressOrName,
622
+ contractInterface,
623
+ signerOrProvider
624
+ });
565
625
  const contractWithSigner = contract.connect(signer);
566
626
  const contractFunction = contractWithSigner[functionName];
567
- if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
568
- const response = await contractFunction(...params);
569
- return response;
627
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(addressOrName, "\""));
628
+ return await contractFunction(...params);
570
629
  } catch (error) {
571
630
  if (error.code === 4001) throw new base.UserRejectedRequestError(error);
572
631
  throw error;
573
632
  }
574
633
  }
575
634
 
635
+ async function fetchBalance(_ref) {
636
+ var _client$chains, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
637
+
638
+ let {
639
+ addressOrName,
640
+ chainId,
641
+ formatUnits: unit = 'ether',
642
+ token
643
+ } = _ref;
644
+ const client$1 = client.getClient();
645
+ const provider = getProvider({
646
+ chainId
647
+ });
648
+
649
+ if (token) {
650
+ const erc20Config = {
651
+ addressOrName: token,
652
+ contractInterface: erc20ABI,
653
+ chainId
654
+ }; // Convert ENS name to address if required
655
+
656
+ let resolvedAddress;
657
+ if (utils.isAddress(addressOrName)) resolvedAddress = addressOrName;else {
658
+ const address = await provider.resolveName(addressOrName); // Same error `provider.getBalance` throws for invalid ENS name
659
+
660
+ if (!address) ethers$1.logger.throwError('ENS name not configured', utils.Logger.errors.UNSUPPORTED_OPERATION, {
661
+ operation: "resolveName(".concat(JSON.stringify(addressOrName), ")")
662
+ });
663
+ resolvedAddress = address;
664
+ }
665
+ const [value, decimals, symbol] = await readContracts({
666
+ allowFailure: false,
667
+ contracts: [{ ...erc20Config,
668
+ functionName: 'balanceOf',
669
+ args: resolvedAddress
670
+ }, { ...erc20Config,
671
+ functionName: 'decimals'
672
+ }, { ...erc20Config,
673
+ functionName: 'symbol'
674
+ }]
675
+ });
676
+ return {
677
+ decimals,
678
+ formatted: utils.formatUnits(value !== null && value !== void 0 ? value : '0', unit),
679
+ symbol,
680
+ unit,
681
+ value
682
+ };
683
+ }
684
+
685
+ const chains = [...(client$1.provider.chains || []), ...((_client$chains = client$1.chains) !== null && _client$chains !== void 0 ? _client$chains : [])];
686
+ const value = await provider.getBalance(addressOrName);
687
+ const chain = chains.find(x => x.id === provider.network.chainId);
688
+ return {
689
+ decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
690
+ formatted: utils.formatUnits(value !== null && value !== void 0 ? value : '0', unit),
691
+ symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
692
+ unit,
693
+ value
694
+ };
695
+ }
696
+
697
+ async function fetchSigner() {
698
+ var _client$connector, _client$connector$get;
699
+
700
+ const client$1 = client.getClient();
701
+ const signer = (await ((_client$connector = client$1.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
702
+ return signer;
703
+ }
704
+
705
+ function getAccount() {
706
+ const {
707
+ data,
708
+ connector,
709
+ status
710
+ } = client.getClient();
711
+
712
+ switch (status) {
713
+ case 'connected':
714
+ return {
715
+ address: data === null || data === void 0 ? void 0 : data.account,
716
+ connector: connector,
717
+ isConnected: true,
718
+ isConnecting: false,
719
+ isDisconnected: false,
720
+ isReconnecting: false,
721
+ status
722
+ };
723
+
724
+ case 'reconnecting':
725
+ return {
726
+ address: data === null || data === void 0 ? void 0 : data.account,
727
+ connector,
728
+ isConnected: !!(data !== null && data !== void 0 && data.account),
729
+ isConnecting: false,
730
+ isDisconnected: false,
731
+ isReconnecting: true,
732
+ status
733
+ };
734
+
735
+ case 'connecting':
736
+ return {
737
+ address: undefined,
738
+ connector: undefined,
739
+ isConnected: false,
740
+ isConnecting: true,
741
+ isDisconnected: false,
742
+ isReconnecting: false,
743
+ status
744
+ };
745
+
746
+ case 'disconnected':
747
+ return {
748
+ address: undefined,
749
+ connector: undefined,
750
+ isConnected: false,
751
+ isConnecting: false,
752
+ isDisconnected: true,
753
+ isReconnecting: false,
754
+ status
755
+ };
756
+ }
757
+ }
758
+
759
+ function getNetwork() {
760
+ var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
761
+
762
+ const client$1 = client.getClient();
763
+ const chainId = (_client$data = client$1.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
764
+ const activeChains = (_client$chains = client$1.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
765
+ const activeChain = (_find = [...(client$1.provider.chains || []), ...activeChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
766
+ id: chainId,
767
+ name: "Chain ".concat(chainId),
768
+ network: "".concat(chainId),
769
+ rpcUrls: {
770
+ default: ''
771
+ }
772
+ };
773
+ return {
774
+ chain: chainId ? { ...activeChain,
775
+ ...((_client$data2 = client$1.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
776
+ id: chainId
777
+ } : undefined,
778
+ chains: activeChains
779
+ };
780
+ }
781
+
782
+ async function signMessage(args) {
783
+ try {
784
+ const signer = await fetchSigner();
785
+ if (!signer) throw new base.ConnectorNotFoundError();
786
+ return await signer.signMessage(args.message);
787
+ } catch (error) {
788
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
789
+ throw error;
790
+ }
791
+ }
792
+
793
+ async function signTypedData(args) {
794
+ try {
795
+ const signer = await fetchSigner();
796
+ if (!signer) throw new base.ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
797
+
798
+ return await signer._signTypedData(args.domain, args.types, args.value);
799
+ } catch (error) {
800
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
801
+ throw error;
802
+ }
803
+ }
804
+
805
+ async function switchNetwork(_ref) {
806
+ let {
807
+ chainId
808
+ } = _ref;
809
+ const {
810
+ connector
811
+ } = client.getClient();
812
+ if (!connector) throw new base.ConnectorNotFoundError();
813
+ if (!connector.switchChain) throw new base.SwitchChainNotSupportedError({
814
+ connector
815
+ });
816
+ return await connector.switchChain(chainId);
817
+ }
818
+
819
+ function watchAccount(callback) {
820
+ let {
821
+ selector = x => x
822
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
823
+ const client$1 = client.getClient();
824
+
825
+ const handleChange = () => callback(getAccount());
826
+
827
+ const unsubscribe = client$1.subscribe(_ref => {
828
+ let {
829
+ data,
830
+ connector,
831
+ status
832
+ } = _ref;
833
+ return selector({
834
+ address: data === null || data === void 0 ? void 0 : data.account,
835
+ connector,
836
+ status
837
+ });
838
+ }, handleChange, {
839
+ equalityFn: shallow__default["default"]
840
+ });
841
+ return unsubscribe;
842
+ }
843
+
844
+ function watchNetwork(callback) {
845
+ let {
846
+ selector = x => x
847
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
848
+ const client$1 = client.getClient();
849
+
850
+ const handleChange = () => callback(getNetwork());
851
+
852
+ const unsubscribe = client$1.subscribe(_ref => {
853
+ var _data$chain;
854
+
855
+ let {
856
+ data,
857
+ chains
858
+ } = _ref;
859
+ return selector({
860
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
861
+ chains
862
+ });
863
+ }, handleChange, {
864
+ equalityFn: shallow__default["default"]
865
+ });
866
+ return unsubscribe;
867
+ }
868
+
869
+ function watchSigner(callback) {
870
+ const client$1 = client.getClient();
871
+
872
+ const handleChange = async () => callback(await fetchSigner());
873
+
874
+ const unsubscribe = client$1.subscribe(_ref => {
875
+ var _data$chain;
876
+
877
+ let {
878
+ data,
879
+ connector
880
+ } = _ref;
881
+ return {
882
+ account: data === null || data === void 0 ? void 0 : data.account,
883
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
884
+ connector
885
+ };
886
+ }, handleChange, {
887
+ equalityFn: shallow__default["default"]
888
+ });
889
+ return unsubscribe;
890
+ }
891
+
576
892
  async function fetchEnsAddress(_ref) {
577
893
  let {
578
894
  chainId,
@@ -669,12 +985,38 @@ async function fetchToken(_ref) {
669
985
  return token;
670
986
  }
671
987
 
672
- async function sendTransaction(args) {
988
+ async function sendTransaction(_ref) {
989
+ let {
990
+ chainId,
991
+ request
992
+ } = _ref;
993
+ const {
994
+ connector
995
+ } = client.getClient();
996
+ if (!connector) throw new base.ConnectorNotFoundError();
997
+
673
998
  try {
674
- const signer = await fetchSigner();
675
- if (!signer) throw new base.ConnectorNotFoundError();
676
- const transaction = await signer.sendTransaction(args.request);
677
- return transaction;
999
+ var _chain;
1000
+
1001
+ let chain;
1002
+
1003
+ if (chainId) {
1004
+ const activeChainId = await connector.getChainId(); // Try to switch chain to provided `chainId`
1005
+
1006
+ if (chainId !== activeChainId) {
1007
+ var _connector$chains$fin, _connector$chains$fin2, _connector$chains$fin3, _connector$chains$fin4;
1008
+
1009
+ if (connector.switchChain) chain = await connector.switchChain(chainId);else throw new base.ChainMismatchError({
1010
+ activeChain: (_connector$chains$fin = (_connector$chains$fin2 = connector.chains.find(x => x.id === activeChainId)) === null || _connector$chains$fin2 === void 0 ? void 0 : _connector$chains$fin2.name) !== null && _connector$chains$fin !== void 0 ? _connector$chains$fin : "Chain ".concat(activeChainId),
1011
+ targetChain: (_connector$chains$fin3 = (_connector$chains$fin4 = connector.chains.find(x => x.id === chainId)) === null || _connector$chains$fin4 === void 0 ? void 0 : _connector$chains$fin4.name) !== null && _connector$chains$fin3 !== void 0 ? _connector$chains$fin3 : "Chain ".concat(chainId)
1012
+ });
1013
+ }
1014
+ }
1015
+
1016
+ const signer = await connector.getSigner({
1017
+ chainId: (_chain = chain) === null || _chain === void 0 ? void 0 : _chain.id
1018
+ });
1019
+ return await signer.sendTransaction(request);
678
1020
  } catch (error) {
679
1021
  if (error.code === 4001) throw new base.UserRejectedRequestError(error);
680
1022
  throw error;
@@ -707,10 +1049,13 @@ exports.createClient = client.createClient;
707
1049
  exports.createStorage = client.createStorage;
708
1050
  exports.noopStorage = client.noopStorage;
709
1051
  exports.AddChainError = base.AddChainError;
1052
+ exports.ChainDoesNotSupportMulticallError = base.ChainDoesNotSupportMulticallError;
1053
+ exports.ChainMismatchError = base.ChainMismatchError;
710
1054
  exports.ChainNotConfiguredError = base.ChainNotConfiguredError;
711
1055
  exports.Connector = base.Connector;
712
1056
  exports.ConnectorAlreadyConnectedError = base.ConnectorAlreadyConnectedError;
713
1057
  exports.ConnectorNotFoundError = base.ConnectorNotFoundError;
1058
+ exports.ProviderChainsNotFound = base.ProviderChainsNotFound;
714
1059
  exports.ProviderRpcError = base.ProviderRpcError;
715
1060
  exports.ResourceUnavailableError = base.ResourceUnavailableError;
716
1061
  exports.RpcError = base.RpcError;
@@ -718,14 +1063,14 @@ exports.SwitchChainError = base.SwitchChainError;
718
1063
  exports.SwitchChainNotSupportedError = base.SwitchChainNotSupportedError;
719
1064
  exports.UserRejectedRequestError = base.UserRejectedRequestError;
720
1065
  exports.normalizeChainId = base.normalizeChainId;
1066
+ exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
1067
+ exports.infuraRpcUrls = rpcs.infuraRpcUrls;
721
1068
  exports.allChains = chains.allChains;
722
1069
  exports.chain = chains.chain;
723
1070
  exports.chainId = chains.chainId;
724
1071
  exports.defaultChains = chains.defaultChains;
725
1072
  exports.defaultL2Chains = chains.defaultL2Chains;
726
1073
  exports.etherscanBlockExplorers = chains.etherscanBlockExplorers;
727
- exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
728
- exports.infuraRpcUrls = rpcs.infuraRpcUrls;
729
1074
  exports.configureChains = configureChains;
730
1075
  exports.connect = connect;
731
1076
  exports.disconnect = disconnect;
@@ -746,6 +1091,7 @@ exports.getNetwork = getNetwork;
746
1091
  exports.getProvider = getProvider;
747
1092
  exports.getWebSocketProvider = getWebSocketProvider;
748
1093
  exports.readContract = readContract;
1094
+ exports.readContracts = readContracts;
749
1095
  exports.sendTransaction = sendTransaction;
750
1096
  exports.signMessage = signMessage;
751
1097
  exports.signTypedData = signTypedData;
@@ -758,6 +1104,7 @@ exports.watchContractEvent = watchContractEvent;
758
1104
  exports.watchNetwork = watchNetwork;
759
1105
  exports.watchProvider = watchProvider;
760
1106
  exports.watchReadContract = watchReadContract;
1107
+ exports.watchReadContracts = watchReadContracts;
761
1108
  exports.watchSigner = watchSigner;
762
1109
  exports.watchWebSocketProvider = watchWebSocketProvider;
763
1110
  exports.writeContract = writeContract;