@wagmi/core 0.2.0-next.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 (101) hide show
  1. package/LICENSE +21 -0
  2. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -0
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +252 -0
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +7 -0
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +252 -0
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +230 -0
  7. package/connectors/coinbaseWallet/package.json +4 -0
  8. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -0
  9. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +304 -0
  10. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +7 -0
  11. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +304 -0
  12. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +295 -0
  13. package/connectors/mock/package.json +4 -0
  14. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -0
  15. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +216 -0
  16. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +7 -0
  17. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +216 -0
  18. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +194 -0
  19. package/connectors/walletConnect/package.json +4 -0
  20. package/dist/base-09a653f3.cjs.dev.js +453 -0
  21. package/dist/base-824c3b6d.esm.js +430 -0
  22. package/dist/base-d8123d5f.cjs.prod.js +453 -0
  23. package/dist/classPrivateMethodGet-0e9a7925.cjs.prod.js +19 -0
  24. package/dist/classPrivateMethodGet-38b54c7a.cjs.dev.js +19 -0
  25. package/dist/classPrivateMethodGet-c9db96d6.esm.js +16 -0
  26. package/dist/declarations/src/actions/accounts/connect.d.ts +7 -0
  27. package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
  28. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +18 -0
  29. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
  30. package/dist/declarations/src/actions/accounts/getAccount.d.ts +6 -0
  31. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +9 -0
  32. package/dist/declarations/src/actions/accounts/index.d.ts +13 -0
  33. package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
  34. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +13 -0
  35. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
  36. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +3 -0
  37. package/dist/declarations/src/actions/accounts/watchBalance.d.ts +3 -0
  38. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +3 -0
  39. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
  40. package/dist/declarations/src/actions/contracts/getContract.d.ts +11 -0
  41. package/dist/declarations/src/actions/contracts/index.d.ts +5 -0
  42. package/dist/declarations/src/actions/contracts/readContract.d.ts +11 -0
  43. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +12 -0
  44. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +7 -0
  45. package/dist/declarations/src/actions/contracts/writeContract.d.ts +11 -0
  46. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +6 -0
  47. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +6 -0
  48. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +6 -0
  49. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +7 -0
  50. package/dist/declarations/src/actions/ens/index.d.ts +8 -0
  51. package/dist/declarations/src/actions/ens/watchEnsAddress.d.ts +3 -0
  52. package/dist/declarations/src/actions/ens/watchEnsAvatar.d.ts +3 -0
  53. package/dist/declarations/src/actions/ens/watchEnsName.d.ts +3 -0
  54. package/dist/declarations/src/actions/ens/watchEnsResolver.d.ts +3 -0
  55. package/dist/declarations/src/actions/index.d.ts +7 -0
  56. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +2 -0
  57. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +14 -0
  58. package/dist/declarations/src/actions/network-status/index.d.ts +4 -0
  59. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
  60. package/dist/declarations/src/actions/network-status/watchFeeData.d.ts +7 -0
  61. package/dist/declarations/src/actions/providers/getProvider.d.ts +3 -0
  62. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +3 -0
  63. package/dist/declarations/src/actions/providers/index.d.ts +4 -0
  64. package/dist/declarations/src/actions/providers/watchProvider.d.ts +3 -0
  65. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +3 -0
  66. package/dist/declarations/src/actions/tokens/fetchToken.d.ts +24 -0
  67. package/dist/declarations/src/actions/tokens/index.d.ts +2 -0
  68. package/dist/declarations/src/actions/tokens/watchToken.d.ts +3 -0
  69. package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
  70. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +7 -0
  71. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +15 -0
  72. package/dist/declarations/src/client.d.ts +78 -0
  73. package/dist/declarations/src/connectors/base.d.ts +50 -0
  74. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +43 -0
  75. package/dist/declarations/src/connectors/index.d.ts +2 -0
  76. package/dist/declarations/src/connectors/injected.d.ts +55 -0
  77. package/dist/declarations/src/connectors/mock/connector.d.ts +37 -0
  78. package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
  79. package/dist/declarations/src/connectors/mock/provider.d.ts +40 -0
  80. package/dist/declarations/src/connectors/walletConnect.d.ts +32 -0
  81. package/dist/declarations/src/constants/abis/erc1155.d.ts +17 -0
  82. package/dist/declarations/src/constants/abis/erc20.d.ts +38 -0
  83. package/dist/declarations/src/constants/abis/erc721.d.ts +15 -0
  84. package/dist/declarations/src/constants/abis/index.d.ts +3 -0
  85. package/dist/declarations/src/constants/chains.d.ts +10 -0
  86. package/dist/declarations/src/constants/index.d.ts +3 -0
  87. package/dist/declarations/src/constants/units.d.ts +1 -0
  88. package/dist/declarations/src/errors.d.ts +28 -0
  89. package/dist/declarations/src/index.d.ts +9 -0
  90. package/dist/declarations/src/storage.d.ts +12 -0
  91. package/dist/declarations/src/types/declarations.d.ts +52 -0
  92. package/dist/declarations/src/types/index.d.ts +14 -0
  93. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
  94. package/dist/declarations/src/utils/index.d.ts +2 -0
  95. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
  96. package/dist/wagmi-core.cjs.d.ts +1 -0
  97. package/dist/wagmi-core.cjs.dev.js +1689 -0
  98. package/dist/wagmi-core.cjs.js +7 -0
  99. package/dist/wagmi-core.cjs.prod.js +1689 -0
  100. package/dist/wagmi-core.esm.js +1623 -0
  101. package/package.json +67 -0
@@ -0,0 +1,1623 @@
1
+ import { _ as _defineProperty, C as Connector, a as _classPrivateFieldInitSpec, n as normalizeChainId, b as _asyncToGenerator, c as ConnectorNotFoundError, U as UserRejectedRequestError, d as _classPrivateFieldSet, e as _classPrivateFieldGet, f as allChains, g as ChainNotConfiguredError, A as AddChainError, S as SwitchChainError, h as ConnectorAlreadyConnectedError, i as SwitchChainNotSupportedError } from './base-824c3b6d.esm.js';
2
+ export { A as AddChainError, g as ChainNotConfiguredError, C as Connector, h as ConnectorAlreadyConnectedError, c as ConnectorNotFoundError, S as SwitchChainError, i as SwitchChainNotSupportedError, U as UserRejectedRequestError, f as allChains, j as chain, k as defaultChains, n as normalizeChainId } from './base-824c3b6d.esm.js';
3
+ import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from './classPrivateMethodGet-c9db96d6.esm.js';
4
+ import { providers, getDefaultProvider } from 'ethers';
5
+ import create from 'zustand/vanilla';
6
+ import { subscribeWithSelector, persist } from 'zustand/middleware';
7
+ import { getAddress, hexValue, formatUnits } from 'ethers/lib/utils';
8
+ import { Contract } from 'ethers/lib/ethers';
9
+ import 'eventemitter3';
10
+
11
+ function ownKeys(object, enumerableOnly) {
12
+ var keys = Object.keys(object);
13
+
14
+ if (Object.getOwnPropertySymbols) {
15
+ var symbols = Object.getOwnPropertySymbols(object);
16
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
17
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
+ })), keys.push.apply(keys, symbols);
19
+ }
20
+
21
+ return keys;
22
+ }
23
+
24
+ function _objectSpread2(target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = null != arguments[i] ? arguments[i] : {};
27
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
+ _defineProperty(target, key, source[key]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
+ });
32
+ }
33
+
34
+ return target;
35
+ }
36
+
37
+ var erc1155ABI = [{
38
+ constant: true,
39
+ inputs: [{
40
+ internalType: 'address',
41
+ name: '_owner',
42
+ type: 'address'
43
+ }, {
44
+ internalType: 'uint256',
45
+ name: '_id',
46
+ type: 'uint256'
47
+ }],
48
+ name: 'balanceOf',
49
+ outputs: [{
50
+ internalType: 'uint256',
51
+ name: '',
52
+ type: 'uint256'
53
+ }],
54
+ payable: false,
55
+ stateMutability: 'view',
56
+ type: 'function'
57
+ }, {
58
+ constant: true,
59
+ inputs: [{
60
+ internalType: 'uint256',
61
+ name: '_id',
62
+ type: 'uint256'
63
+ }],
64
+ name: 'uri',
65
+ outputs: [{
66
+ internalType: 'string',
67
+ name: '',
68
+ type: 'string'
69
+ }],
70
+ payable: false,
71
+ stateMutability: 'view',
72
+ type: 'function'
73
+ }];
74
+
75
+ var erc20ABI = [{
76
+ constant: true,
77
+ inputs: [],
78
+ name: 'name',
79
+ outputs: [{
80
+ name: '',
81
+ type: 'string'
82
+ }],
83
+ payable: false,
84
+ stateMutability: 'view',
85
+ type: 'function'
86
+ }, {
87
+ constant: false,
88
+ inputs: [{
89
+ name: '_spender',
90
+ type: 'address'
91
+ }, {
92
+ name: '_value',
93
+ type: 'uint256'
94
+ }],
95
+ name: 'approve',
96
+ outputs: [{
97
+ name: '',
98
+ type: 'bool'
99
+ }],
100
+ payable: false,
101
+ stateMutability: 'nonpayable',
102
+ type: 'function'
103
+ }, {
104
+ constant: true,
105
+ inputs: [],
106
+ name: 'totalSupply',
107
+ outputs: [{
108
+ name: '',
109
+ type: 'uint256'
110
+ }],
111
+ payable: false,
112
+ stateMutability: 'view',
113
+ type: 'function'
114
+ }, {
115
+ constant: false,
116
+ inputs: [{
117
+ name: '_from',
118
+ type: 'address'
119
+ }, {
120
+ name: '_to',
121
+ type: 'address'
122
+ }, {
123
+ name: '_value',
124
+ type: 'uint256'
125
+ }],
126
+ name: 'transferFrom',
127
+ outputs: [{
128
+ name: '',
129
+ type: 'bool'
130
+ }],
131
+ payable: false,
132
+ stateMutability: 'nonpayable',
133
+ type: 'function'
134
+ }, {
135
+ constant: true,
136
+ inputs: [],
137
+ name: 'decimals',
138
+ outputs: [{
139
+ name: '',
140
+ type: 'uint8'
141
+ }],
142
+ payable: false,
143
+ stateMutability: 'view',
144
+ type: 'function'
145
+ }, {
146
+ constant: true,
147
+ inputs: [{
148
+ name: '_owner',
149
+ type: 'address'
150
+ }],
151
+ name: 'balanceOf',
152
+ outputs: [{
153
+ name: 'balance',
154
+ type: 'uint256'
155
+ }],
156
+ payable: false,
157
+ stateMutability: 'view',
158
+ type: 'function'
159
+ }, {
160
+ constant: true,
161
+ inputs: [],
162
+ name: 'symbol',
163
+ outputs: [{
164
+ name: '',
165
+ type: 'string'
166
+ }],
167
+ payable: false,
168
+ stateMutability: 'view',
169
+ type: 'function'
170
+ }, {
171
+ constant: false,
172
+ inputs: [{
173
+ name: '_to',
174
+ type: 'address'
175
+ }, {
176
+ name: '_value',
177
+ type: 'uint256'
178
+ }],
179
+ name: 'transfer',
180
+ outputs: [{
181
+ name: '',
182
+ type: 'bool'
183
+ }],
184
+ payable: false,
185
+ stateMutability: 'nonpayable',
186
+ type: 'function'
187
+ }, {
188
+ constant: true,
189
+ inputs: [{
190
+ name: '_owner',
191
+ type: 'address'
192
+ }, {
193
+ name: '_spender',
194
+ type: 'address'
195
+ }],
196
+ name: 'allowance',
197
+ outputs: [{
198
+ name: '',
199
+ type: 'uint256'
200
+ }],
201
+ payable: false,
202
+ stateMutability: 'view',
203
+ type: 'function'
204
+ }, {
205
+ payable: true,
206
+ stateMutability: 'payable',
207
+ type: 'fallback'
208
+ }, {
209
+ anonymous: false,
210
+ inputs: [{
211
+ indexed: true,
212
+ name: 'owner',
213
+ type: 'address'
214
+ }, {
215
+ indexed: true,
216
+ name: 'spender',
217
+ type: 'address'
218
+ }, {
219
+ indexed: false,
220
+ name: 'value',
221
+ type: 'uint256'
222
+ }],
223
+ name: 'Approval',
224
+ type: 'event'
225
+ }, {
226
+ anonymous: false,
227
+ inputs: [{
228
+ indexed: true,
229
+ name: 'from',
230
+ type: 'address'
231
+ }, {
232
+ indexed: true,
233
+ name: 'to',
234
+ type: 'address'
235
+ }, {
236
+ indexed: false,
237
+ name: 'value',
238
+ type: 'uint256'
239
+ }],
240
+ name: 'Transfer',
241
+ type: 'event'
242
+ }];
243
+
244
+ var erc721ABI = [{
245
+ inputs: [{
246
+ internalType: 'uint256',
247
+ name: 'tokenId',
248
+ type: 'uint256'
249
+ }],
250
+ name: 'ownerOf',
251
+ outputs: [{
252
+ internalType: 'address',
253
+ name: '',
254
+ type: 'address'
255
+ }],
256
+ stateMutability: 'view',
257
+ type: 'function'
258
+ }, {
259
+ inputs: [{
260
+ internalType: 'uint256',
261
+ name: 'tokenId',
262
+ type: 'uint256'
263
+ }],
264
+ name: 'tokenURI',
265
+ outputs: [{
266
+ internalType: 'string',
267
+ name: '',
268
+ type: 'string'
269
+ }],
270
+ stateMutability: 'view',
271
+ type: 'function'
272
+ }];
273
+
274
+ // https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
275
+ var units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
276
+
277
+ function getInjectedName(ethereum) {
278
+ if (!ethereum) return 'Injected';
279
+ if (ethereum.isMetaMask) return 'MetaMask';
280
+ if (ethereum.isCoinbaseWallet) return 'Coinbase Wallet';
281
+ if (ethereum.isFrame) return 'Frame';
282
+ if (ethereum.isTally) return 'Tally';
283
+ return 'Injected';
284
+ }
285
+
286
+ var shimKey = 'injected.shimDisconnect';
287
+
288
+ var _provider = /*#__PURE__*/new WeakMap();
289
+
290
+ class InjectedConnector extends Connector {
291
+ constructor(config) {
292
+ super(_objectSpread2(_objectSpread2({}, config), {}, {
293
+ options: _objectSpread2({
294
+ shimDisconnect: true
295
+ }, config === null || config === void 0 ? void 0 : config.options)
296
+ }));
297
+
298
+ _defineProperty(this, "id", 'injected');
299
+
300
+ _defineProperty(this, "name", void 0);
301
+
302
+ _defineProperty(this, "ready", typeof window != 'undefined' && !!window.ethereum);
303
+
304
+ _classPrivateFieldInitSpec(this, _provider, {
305
+ writable: true,
306
+ value: void 0
307
+ });
308
+
309
+ _defineProperty(this, "onAccountsChanged", accounts => {
310
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
311
+ account: getAddress(accounts[0])
312
+ });
313
+ });
314
+
315
+ _defineProperty(this, "onChainChanged", chainId => {
316
+ var id = normalizeChainId(chainId);
317
+ var unsupported = this.isChainUnsupported(id);
318
+ this.emit('change', {
319
+ chain: {
320
+ id,
321
+ unsupported
322
+ }
323
+ });
324
+ });
325
+
326
+ _defineProperty(this, "onDisconnect", () => {
327
+ var _this$options, _client$storage;
328
+
329
+ this.emit('disconnect');
330
+ if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.shimDisconnect) (_client$storage = client.storage) === null || _client$storage === void 0 ? void 0 : _client$storage.removeItem(shimKey);
331
+ });
332
+
333
+ var name = 'Injected';
334
+ if (typeof window !== 'undefined') name = getInjectedName(window.ethereum);
335
+ this.name = name;
336
+ }
337
+
338
+ connect() {
339
+ var _this = this;
340
+
341
+ return _asyncToGenerator(function* () {
342
+ try {
343
+ var _this$options2, _client$storage2;
344
+
345
+ var provider = yield _this.getProvider();
346
+ if (!provider) throw new ConnectorNotFoundError();
347
+
348
+ if (provider.on) {
349
+ provider.on('accountsChanged', _this.onAccountsChanged);
350
+ provider.on('chainChanged', _this.onChainChanged);
351
+ provider.on('disconnect', _this.onDisconnect);
352
+ }
353
+
354
+ var account = yield _this.getAccount();
355
+ var id = yield _this.getChainId();
356
+
357
+ var unsupported = _this.isChainUnsupported(id);
358
+
359
+ if ((_this$options2 = _this.options) !== null && _this$options2 !== void 0 && _this$options2.shimDisconnect) (_client$storage2 = client.storage) === null || _client$storage2 === void 0 ? void 0 : _client$storage2.setItem(shimKey, true);
360
+ return {
361
+ account,
362
+ chain: {
363
+ id,
364
+ unsupported
365
+ },
366
+ provider
367
+ };
368
+ } catch (error) {
369
+ if (error.code === 4001) throw new UserRejectedRequestError();
370
+ throw error;
371
+ }
372
+ })();
373
+ }
374
+
375
+ disconnect() {
376
+ var _this2 = this;
377
+
378
+ return _asyncToGenerator(function* () {
379
+ var _this2$options, _client$storage3;
380
+
381
+ var provider = yield _this2.getProvider();
382
+ if (!(provider !== null && provider !== void 0 && provider.removeListener)) return;
383
+ provider.removeListener('accountsChanged', _this2.onAccountsChanged);
384
+ provider.removeListener('chainChanged', _this2.onChainChanged);
385
+ provider.removeListener('disconnect', _this2.onDisconnect);
386
+ if ((_this2$options = _this2.options) !== null && _this2$options !== void 0 && _this2$options.shimDisconnect) (_client$storage3 = client.storage) === null || _client$storage3 === void 0 ? void 0 : _client$storage3.removeItem(shimKey);
387
+ })();
388
+ }
389
+
390
+ getAccount() {
391
+ var _this3 = this;
392
+
393
+ return _asyncToGenerator(function* () {
394
+ var provider = yield _this3.getProvider();
395
+ if (!provider) throw new ConnectorNotFoundError();
396
+ var accounts = yield provider.request({
397
+ method: 'eth_requestAccounts'
398
+ }); // return checksum address
399
+
400
+ return getAddress(accounts[0]);
401
+ })();
402
+ }
403
+
404
+ getChainId() {
405
+ var _this4 = this;
406
+
407
+ return _asyncToGenerator(function* () {
408
+ var provider = yield _this4.getProvider();
409
+ if (!provider) throw new ConnectorNotFoundError();
410
+ return yield provider.request({
411
+ method: 'eth_chainId'
412
+ }).then(normalizeChainId);
413
+ })();
414
+ }
415
+
416
+ getProvider() {
417
+ var _this5 = this;
418
+
419
+ return _asyncToGenerator(function* () {
420
+ if (typeof window !== 'undefined' && !!window.ethereum) _classPrivateFieldSet(_this5, _provider, window.ethereum);
421
+ return _classPrivateFieldGet(_this5, _provider);
422
+ })();
423
+ }
424
+
425
+ getSigner() {
426
+ var _this6 = this;
427
+
428
+ return _asyncToGenerator(function* () {
429
+ var provider = _this6.getProvider();
430
+
431
+ var account = yield _this6.getAccount();
432
+ return new providers.Web3Provider(provider).getSigner(account);
433
+ })();
434
+ }
435
+
436
+ isAuthorized() {
437
+ var _this7 = this;
438
+
439
+ return _asyncToGenerator(function* () {
440
+ try {
441
+ var _this7$options, _client$storage4;
442
+
443
+ if ((_this7$options = _this7.options) !== null && _this7$options !== void 0 && _this7$options.shimDisconnect && !((_client$storage4 = client.storage) !== null && _client$storage4 !== void 0 && _client$storage4.getItem(shimKey))) return false;
444
+ var provider = yield _this7.getProvider();
445
+ if (!provider) throw new ConnectorNotFoundError();
446
+ var accounts = yield provider.request({
447
+ method: 'eth_accounts'
448
+ });
449
+ var account = accounts[0];
450
+ return !!account;
451
+ } catch (_unused) {
452
+ return false;
453
+ }
454
+ })();
455
+ }
456
+
457
+ switchChain(chainId) {
458
+ var _this8 = this;
459
+
460
+ return _asyncToGenerator(function* () {
461
+ var provider = yield _this8.getProvider();
462
+ if (!provider) throw new ConnectorNotFoundError();
463
+ var id = hexValue(chainId);
464
+
465
+ try {
466
+ var _chains$find;
467
+
468
+ yield provider.request({
469
+ method: 'wallet_switchEthereumChain',
470
+ params: [{
471
+ chainId: id
472
+ }]
473
+ });
474
+ var chains = [..._this8.chains, ...allChains];
475
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
476
+ id: chainId,
477
+ name: "Chain ".concat(id),
478
+ rpcUrls: []
479
+ };
480
+ } catch (error) {
481
+ // Indicates chain is not added to MetaMask
482
+ if (error.code === 4902) {
483
+ try {
484
+ var _chain$blockExplorers;
485
+
486
+ var chain = _this8.chains.find(x => x.id === chainId);
487
+
488
+ if (!chain) throw new ChainNotConfiguredError();
489
+ yield provider.request({
490
+ method: 'wallet_addEthereumChain',
491
+ params: [{
492
+ chainId: id,
493
+ chainName: chain.name,
494
+ nativeCurrency: chain.nativeCurrency,
495
+ rpcUrls: chain.rpcUrls,
496
+ blockExplorerUrls: (_chain$blockExplorers = chain.blockExplorers) === null || _chain$blockExplorers === void 0 ? void 0 : _chain$blockExplorers.map(x => x.url)
497
+ }]
498
+ });
499
+ return chain;
500
+ } catch (addError) {
501
+ throw new AddChainError();
502
+ }
503
+ } else if (error.code === 4001) throw new UserRejectedRequestError();else throw new SwitchChainError();
504
+ }
505
+ })();
506
+ }
507
+
508
+ watchAsset(_ref) {
509
+ var _this9 = this;
510
+
511
+ return _asyncToGenerator(function* () {
512
+ var {
513
+ address,
514
+ decimals = 18,
515
+ image,
516
+ symbol
517
+ } = _ref;
518
+ var provider = yield _this9.getProvider();
519
+ if (!provider) throw new ConnectorNotFoundError();
520
+ return yield provider.request({
521
+ method: 'wallet_watchAsset',
522
+ params: {
523
+ type: 'ERC20',
524
+ options: {
525
+ address,
526
+ decimals,
527
+ image,
528
+ symbol
529
+ }
530
+ }
531
+ });
532
+ })();
533
+ }
534
+
535
+ }
536
+
537
+ var noopStorage = {
538
+ getItem: _key => '',
539
+ setItem: (_key, _value) => null,
540
+ removeItem: _key => null
541
+ };
542
+ function createStorage(_ref) {
543
+ var {
544
+ storage,
545
+ key: prefix = 'wagmi'
546
+ } = _ref;
547
+ return _objectSpread2(_objectSpread2({}, storage), {}, {
548
+ getItem: function getItem(key) {
549
+ var defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
550
+ var value = storage.getItem("".concat(prefix, ".").concat(key));
551
+
552
+ try {
553
+ return value ? JSON.parse(value) : defaultState;
554
+ } catch (error) {
555
+ console.warn(error);
556
+ return defaultState;
557
+ }
558
+ },
559
+ setItem: (key, value) => {
560
+ if (value === null) {
561
+ storage.removeItem("".concat(prefix, ".").concat(key));
562
+ } else {
563
+ try {
564
+ storage.setItem("".concat(prefix, ".").concat(key), JSON.stringify(value));
565
+ } catch (err) {
566
+ console.error(err);
567
+ }
568
+ }
569
+ },
570
+ removeItem: key => storage.removeItem("".concat(prefix, ".").concat(key))
571
+ });
572
+ }
573
+
574
+ var defaultConfig = {
575
+ connectors: [new InjectedConnector()],
576
+ provider: _ref => {
577
+ var {
578
+ chainId
579
+ } = _ref;
580
+
581
+ try {
582
+ return getDefaultProvider(chainId);
583
+ } catch (error) {
584
+ return getDefaultProvider();
585
+ }
586
+ },
587
+ storage: createStorage({
588
+ storage: typeof window !== 'undefined' ? window.localStorage : noopStorage
589
+ })
590
+ };
591
+
592
+ var _lastUsedConnector = /*#__PURE__*/new WeakMap();
593
+
594
+ var _addEffects = /*#__PURE__*/new WeakSet();
595
+
596
+ class Client {
597
+ constructor() {
598
+ var {
599
+ autoConnect,
600
+ connectors: _connectors = defaultConfig.connectors,
601
+ provider: _provider = defaultConfig.provider,
602
+ storage = defaultConfig.storage,
603
+ webSocketProvider: _webSocketProvider
604
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;
605
+
606
+ _classPrivateMethodInitSpec(this, _addEffects);
607
+
608
+ _defineProperty(this, "config", void 0);
609
+
610
+ _defineProperty(this, "storage", void 0);
611
+
612
+ _defineProperty(this, "store", void 0);
613
+
614
+ _classPrivateFieldInitSpec(this, _lastUsedConnector, {
615
+ writable: true,
616
+ value: void 0
617
+ });
618
+
619
+ this.config = {
620
+ autoConnect,
621
+ connectors: _connectors,
622
+ provider: _provider,
623
+ webSocketProvider: _webSocketProvider
624
+ };
625
+ var status = 'disconnected';
626
+
627
+ var _chainId;
628
+
629
+ if (autoConnect) {
630
+ try {
631
+ var _JSON$parse, _JSON$parse$state, _data$chain;
632
+
633
+ var rawState = storage.getItem('state', '');
634
+ var data = (_JSON$parse = JSON.parse(rawState || '{}')) === null || _JSON$parse === void 0 ? void 0 : (_JSON$parse$state = _JSON$parse.state) === null || _JSON$parse$state === void 0 ? void 0 : _JSON$parse$state.data; // If account exists in localStorage, set status to reconnecting
635
+
636
+ status = data !== null && data !== void 0 && data.account ? 'reconnecting' : 'connecting';
637
+ _chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id; // eslint-disable-next-line no-empty
638
+ } catch (_error) {}
639
+ }
640
+
641
+ this.store = create(subscribeWithSelector(persist((_set, _get) => ({
642
+ connectors: typeof _connectors === 'function' ? _connectors({
643
+ chainId: _chainId
644
+ }) : _connectors,
645
+ provider: typeof _provider === 'function' ? _provider({
646
+ chainId: _chainId
647
+ }) : _provider,
648
+ status,
649
+ webSocketProvider: typeof _webSocketProvider === 'function' ? _webSocketProvider({
650
+ chainId: _chainId
651
+ }) : _webSocketProvider
652
+ }), {
653
+ name: 'state',
654
+ getStorage: () => storage,
655
+ partialize: state => {
656
+ var _state$data, _state$data2;
657
+
658
+ return {
659
+ data: {
660
+ account: state === null || state === void 0 ? void 0 : (_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.account,
661
+ chain: state === null || state === void 0 ? void 0 : (_state$data2 = state.data) === null || _state$data2 === void 0 ? void 0 : _state$data2.chain
662
+ }
663
+ };
664
+ }
665
+ })));
666
+ this.storage = storage;
667
+
668
+ _classPrivateFieldSet(this, _lastUsedConnector, storage === null || storage === void 0 ? void 0 : storage.getItem('wallet'));
669
+
670
+ _classPrivateMethodGet(this, _addEffects, _addEffects2).call(this);
671
+ }
672
+
673
+ get connectors() {
674
+ return this.store.getState().connectors;
675
+ }
676
+
677
+ get connector() {
678
+ return this.store.getState().connector;
679
+ }
680
+
681
+ get data() {
682
+ return this.store.getState().data;
683
+ }
684
+
685
+ get error() {
686
+ return this.store.getState().error;
687
+ }
688
+
689
+ get provider() {
690
+ return this.store.getState().provider;
691
+ }
692
+
693
+ get status() {
694
+ return this.store.getState().status;
695
+ }
696
+
697
+ get subscribe() {
698
+ return this.store.subscribe;
699
+ }
700
+
701
+ get webSocketProvider() {
702
+ return this.store.getState().webSocketProvider;
703
+ }
704
+
705
+ setState(updater) {
706
+ var newState = typeof updater === 'function' ? updater(this.store.getState()) : updater;
707
+ this.store.setState(newState, true);
708
+ }
709
+
710
+ clearState() {
711
+ this.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
712
+ connector: undefined,
713
+ data: undefined,
714
+ error: undefined,
715
+ status: 'disconnected'
716
+ }));
717
+ }
718
+
719
+ destroy() {
720
+ var _this = this;
721
+
722
+ return _asyncToGenerator(function* () {
723
+ var _this$connector$disco, _this$connector;
724
+
725
+ if (_this.connector) yield (_this$connector$disco = (_this$connector = _this.connector).disconnect) === null || _this$connector$disco === void 0 ? void 0 : _this$connector$disco.call(_this$connector);
726
+
727
+ _this.clearState();
728
+
729
+ _this.store.destroy();
730
+ })();
731
+ }
732
+
733
+ autoConnect() {
734
+ var _this2 = this;
735
+
736
+ return _asyncToGenerator(function* () {
737
+ if (!_this2.connectors.length) return; // Try last used connector first
738
+
739
+ var sorted = _classPrivateFieldGet(_this2, _lastUsedConnector) ? [..._this2.connectors].sort(x => x.id === _classPrivateFieldGet(_this2, _lastUsedConnector) ? -1 : 1) : _this2.connectors;
740
+ var connected = false;
741
+
742
+ var _loop = function* _loop(connector) {
743
+ if (!connector.ready || !connector.isAuthorized) return "continue";
744
+ var isAuthorized = yield connector.isAuthorized();
745
+ if (!isAuthorized) return "continue";
746
+ var data = yield connector.connect();
747
+
748
+ _this2.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
749
+ connector,
750
+ data,
751
+ status: 'connected'
752
+ }));
753
+
754
+ connected = true;
755
+ return "break";
756
+ };
757
+
758
+ for (var connector of sorted) {
759
+ var _ret = yield* _loop(connector);
760
+
761
+ if (_ret === "continue") continue;
762
+ if (_ret === "break") break;
763
+ } // If connecting didn't succeed, set to disconnected
764
+
765
+
766
+ if (!connected) _this2.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
767
+ status: 'disconnected'
768
+ }));
769
+ return _this2.data;
770
+ })();
771
+ }
772
+
773
+ setLastUsedConnector() {
774
+ var _this$storage;
775
+
776
+ var lastUsedConnector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
777
+ (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.setItem('wallet', lastUsedConnector);
778
+ }
779
+
780
+ }
781
+
782
+ function _addEffects2() {
783
+ var onChange = data => this.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
784
+ data: _objectSpread2(_objectSpread2({}, x.data), data)
785
+ }));
786
+
787
+ var onDisconnect = () => this.clearState();
788
+
789
+ var onError = error => this.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
790
+ error
791
+ }));
792
+
793
+ this.store.subscribe(_ref2 => {
794
+ var {
795
+ connector
796
+ } = _ref2;
797
+ return connector;
798
+ }, (connector, prevConnector) => {
799
+ var _prevConnector$off, _prevConnector$off2, _prevConnector$off3, _connector$on, _connector$on2, _connector$on3;
800
+
801
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off = prevConnector.off) === null || _prevConnector$off === void 0 ? void 0 : _prevConnector$off.call(prevConnector, 'change', onChange);
802
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off2 = prevConnector.off) === null || _prevConnector$off2 === void 0 ? void 0 : _prevConnector$off2.call(prevConnector, 'disconnect', onDisconnect);
803
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off3 = prevConnector.off) === null || _prevConnector$off3 === void 0 ? void 0 : _prevConnector$off3.call(prevConnector, 'error', onError);
804
+ if (!connector) return;
805
+ (_connector$on = connector.on) === null || _connector$on === void 0 ? void 0 : _connector$on.call(connector, 'change', onChange);
806
+ (_connector$on2 = connector.on) === null || _connector$on2 === void 0 ? void 0 : _connector$on2.call(connector, 'disconnect', onDisconnect);
807
+ (_connector$on3 = connector.on) === null || _connector$on3 === void 0 ? void 0 : _connector$on3.call(connector, 'error', onError);
808
+ });
809
+ var {
810
+ connectors,
811
+ provider,
812
+ webSocketProvider
813
+ } = this.config;
814
+ var subscribeConnectors = typeof connectors === 'function';
815
+ var subscribeProvider = typeof provider === 'function';
816
+ var subscribeWebSocketProvider = typeof webSocketProvider === 'function';
817
+ if (subscribeConnectors || subscribeProvider || subscribeWebSocketProvider) this.store.subscribe(_ref3 => {
818
+ var _data$chain2;
819
+
820
+ var {
821
+ data
822
+ } = _ref3;
823
+ return data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.id;
824
+ }, chainId => {
825
+ this.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
826
+ connectors: subscribeConnectors ? connectors({
827
+ chainId
828
+ }) : x.connectors,
829
+ provider: subscribeProvider ? provider({
830
+ chainId
831
+ }) : x.provider,
832
+ webSocketProvider: subscribeWebSocketProvider ? webSocketProvider({
833
+ chainId
834
+ }) : x.webSocketProvider
835
+ }));
836
+ });
837
+ }
838
+
839
+ var client;
840
+ function createClient(config) {
841
+ var client_ = new Client(config);
842
+ client = client_;
843
+ return client_;
844
+ }
845
+
846
+ function connect(_x) {
847
+ return _connect.apply(this, arguments);
848
+ }
849
+
850
+ function _connect() {
851
+ _connect = _asyncToGenerator(function* (connector) {
852
+ var activeConnector = client.connector;
853
+ if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new ConnectorAlreadyConnectedError();
854
+ var data = yield connector.connect();
855
+ client.setLastUsedConnector(connector.id);
856
+ client.setState(x => _objectSpread2(_objectSpread2({}, x), {}, {
857
+ connector,
858
+ data
859
+ }));
860
+ client.storage.setItem('connected', true);
861
+ return {
862
+ data,
863
+ connector
864
+ };
865
+ });
866
+ return _connect.apply(this, arguments);
867
+ }
868
+
869
+ function disconnect() {
870
+ return _disconnect.apply(this, arguments);
871
+ }
872
+
873
+ function _disconnect() {
874
+ _disconnect = _asyncToGenerator(function* () {
875
+ if (client.connector) yield client.connector.disconnect();
876
+ client.storage.removeItem('connected');
877
+ client.clearState();
878
+ });
879
+ return _disconnect.apply(this, arguments);
880
+ }
881
+
882
+ function fetchBalance(_x) {
883
+ return _fetchBalance.apply(this, arguments);
884
+ }
885
+
886
+ function _fetchBalance() {
887
+ _fetchBalance = _asyncToGenerator(function* (_ref) {
888
+ var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
889
+
890
+ var {
891
+ addressOrName,
892
+ formatUnits: unit = 'ether',
893
+ token
894
+ } = _ref;
895
+
896
+ if (token) {
897
+ var contract = new Contract(token, erc20ABI, client.provider);
898
+ var [_value, decimals, symbol] = yield Promise.all([contract.balanceOf(addressOrName), contract.decimals(), contract.symbol()]);
899
+ return {
900
+ decimals,
901
+ formatted: formatUnits(_value, unit),
902
+ symbol,
903
+ unit,
904
+ value: _value
905
+ };
906
+ }
907
+
908
+ var chains = [...((_client$connector$cha = (_client$connector = client.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...allChains];
909
+ var value = yield client.provider.getBalance(addressOrName);
910
+ var chain = chains.find(x => x.id === client.provider.network.chainId);
911
+ return {
912
+ 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,
913
+ formatted: formatUnits(value, unit),
914
+ 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',
915
+ unit,
916
+ value
917
+ };
918
+ });
919
+ return _fetchBalance.apply(this, arguments);
920
+ }
921
+
922
+ function fetchSigner() {
923
+ return _fetchSigner.apply(this, arguments);
924
+ }
925
+
926
+ function _fetchSigner() {
927
+ _fetchSigner = _asyncToGenerator(function* () {
928
+ var _client$connector, _client$connector$get;
929
+
930
+ var signer = yield (_client$connector = client.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);
931
+ return signer;
932
+ });
933
+ return _fetchSigner.apply(this, arguments);
934
+ }
935
+
936
+ function getAccount() {
937
+ var {
938
+ data,
939
+ connector
940
+ } = client;
941
+ return {
942
+ address: data === null || data === void 0 ? void 0 : data.account,
943
+ connector
944
+ };
945
+ }
946
+
947
+ function getNetwork() {
948
+ var _data$chain, _data$chain2, _connector$chains, _find;
949
+
950
+ var {
951
+ connector,
952
+ data
953
+ } = client;
954
+ var chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id;
955
+ var unsupported = data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.unsupported;
956
+ var activeChains = (_connector$chains = connector === null || connector === void 0 ? void 0 : connector.chains) !== null && _connector$chains !== void 0 ? _connector$chains : [];
957
+ var activeChain = (_find = [...activeChains, ...allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
958
+ id: chainId,
959
+ name: "Chain ".concat(chainId),
960
+ rpcUrls: []
961
+ };
962
+ return {
963
+ chain: chainId ? _objectSpread2(_objectSpread2({}, activeChain), {}, {
964
+ id: chainId,
965
+ unsupported
966
+ }) : undefined,
967
+ chains: activeChains
968
+ };
969
+ }
970
+
971
+ function signMessage(_x) {
972
+ return _signMessage.apply(this, arguments);
973
+ }
974
+
975
+ function _signMessage() {
976
+ _signMessage = _asyncToGenerator(function* (args) {
977
+ try {
978
+ var signer = yield fetchSigner();
979
+ if (!signer) throw new ConnectorNotFoundError();
980
+ return yield signer.signMessage(args.message);
981
+ } catch (error_) {
982
+ var error = error_;
983
+ if (error_.code === 4001) error = new UserRejectedRequestError();
984
+ throw error;
985
+ }
986
+ });
987
+ return _signMessage.apply(this, arguments);
988
+ }
989
+
990
+ function signTypedData(_x) {
991
+ return _signTypedData.apply(this, arguments);
992
+ }
993
+
994
+ function _signTypedData() {
995
+ _signTypedData = _asyncToGenerator(function* (args) {
996
+ try {
997
+ var signer = yield fetchSigner();
998
+ if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
999
+
1000
+ return yield signer._signTypedData(args.domain, args.types, args.value);
1001
+ } catch (error_) {
1002
+ var error = error_;
1003
+ if (error_.code === 4001) error = new UserRejectedRequestError();
1004
+ throw error;
1005
+ }
1006
+ });
1007
+ return _signTypedData.apply(this, arguments);
1008
+ }
1009
+
1010
+ function switchNetwork(_x) {
1011
+ return _switchNetwork.apply(this, arguments);
1012
+ }
1013
+
1014
+ function _switchNetwork() {
1015
+ _switchNetwork = _asyncToGenerator(function* (args) {
1016
+ var _client$connector;
1017
+
1018
+ if (!((_client$connector = client.connector) !== null && _client$connector !== void 0 && _client$connector.switchChain)) throw new SwitchChainNotSupportedError();
1019
+ var chain = yield client.connector.switchChain(args.chainId);
1020
+ return chain;
1021
+ });
1022
+ return _switchNetwork.apply(this, arguments);
1023
+ }
1024
+
1025
+ function watchAccount(callback) {
1026
+ var handleChange = () => callback(getAccount());
1027
+
1028
+ var unsubscribe = client.subscribe(_ref => {
1029
+ var {
1030
+ data,
1031
+ connector
1032
+ } = _ref;
1033
+ return {
1034
+ account: data === null || data === void 0 ? void 0 : data.account,
1035
+ connector
1036
+ };
1037
+ }, handleChange, {
1038
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
1039
+ });
1040
+ return unsubscribe;
1041
+ }
1042
+
1043
+ function watchBalance(args, callback) {
1044
+ var handleChange = /*#__PURE__*/function () {
1045
+ var _ref = _asyncToGenerator(function* () {
1046
+ return callback(yield fetchBalance(args));
1047
+ });
1048
+
1049
+ return function handleChange() {
1050
+ return _ref.apply(this, arguments);
1051
+ };
1052
+ }();
1053
+
1054
+ var unsubscribe = client.subscribe(_ref2 => {
1055
+ var _data$chain;
1056
+
1057
+ var {
1058
+ data
1059
+ } = _ref2;
1060
+ return {
1061
+ account: data === null || data === void 0 ? void 0 : data.account,
1062
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id
1063
+ };
1064
+ }, handleChange, {
1065
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId
1066
+ });
1067
+ return unsubscribe;
1068
+ }
1069
+
1070
+ function watchNetwork(callback) {
1071
+ var handleChange = () => callback(getNetwork());
1072
+
1073
+ var unsubscribe = client.subscribe(_ref => {
1074
+ var _data$chain;
1075
+
1076
+ var {
1077
+ data,
1078
+ connector
1079
+ } = _ref;
1080
+ return {
1081
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
1082
+ connector
1083
+ };
1084
+ }, handleChange, {
1085
+ equalityFn: (selected, previous) => selected.chainId === previous.chainId && selected.connector === previous.connector
1086
+ });
1087
+ return unsubscribe;
1088
+ }
1089
+
1090
+ function watchSigner(callback) {
1091
+ var handleChange = /*#__PURE__*/function () {
1092
+ var _ref = _asyncToGenerator(function* () {
1093
+ return callback(yield fetchSigner());
1094
+ });
1095
+
1096
+ return function handleChange() {
1097
+ return _ref.apply(this, arguments);
1098
+ };
1099
+ }();
1100
+
1101
+ var unsubscribe = client.subscribe(_ref2 => {
1102
+ var _data$chain;
1103
+
1104
+ var {
1105
+ data,
1106
+ connector
1107
+ } = _ref2;
1108
+ return {
1109
+ account: data === null || data === void 0 ? void 0 : data.account,
1110
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
1111
+ connector
1112
+ };
1113
+ }, handleChange, {
1114
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
1115
+ });
1116
+ return unsubscribe;
1117
+ }
1118
+
1119
+ function getContract(_ref) {
1120
+ var {
1121
+ addressOrName,
1122
+ contractInterface,
1123
+ signerOrProvider
1124
+ } = _ref;
1125
+ return new Contract(addressOrName, contractInterface, signerOrProvider);
1126
+ }
1127
+
1128
+ function readContract(_x, _x2) {
1129
+ return _readContract.apply(this, arguments);
1130
+ }
1131
+
1132
+ function _readContract() {
1133
+ _readContract = _asyncToGenerator(function* (contractConfig, functionName) {
1134
+ var {
1135
+ args,
1136
+ overrides
1137
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1138
+ var {
1139
+ provider
1140
+ } = client;
1141
+ var contract = getContract(_objectSpread2({
1142
+ signerOrProvider: provider
1143
+ }, contractConfig));
1144
+ var params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
1145
+ var response = yield contract[functionName](...params);
1146
+ return response;
1147
+ });
1148
+ return _readContract.apply(this, arguments);
1149
+ }
1150
+
1151
+ function watchContractEvent(
1152
+ /** Contract configuration */
1153
+ contractArgs,
1154
+ /** Event name to listen to */
1155
+ eventName, callback) {
1156
+ var {
1157
+ once
1158
+ } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
1159
+ var contract;
1160
+
1161
+ var watchEvent = /*#__PURE__*/function () {
1162
+ var _ref = _asyncToGenerator(function* () {
1163
+ if (contract) {
1164
+ var _contract;
1165
+
1166
+ (_contract = contract) === null || _contract === void 0 ? void 0 : _contract.off(eventName, callback);
1167
+ }
1168
+
1169
+ contract = getContract(_objectSpread2({
1170
+ signerOrProvider: client.webSocketProvider || client.provider
1171
+ }, contractArgs));
1172
+ if (once) contract.once(eventName, callback);else contract.on(eventName, callback);
1173
+ });
1174
+
1175
+ return function watchEvent() {
1176
+ return _ref.apply(this, arguments);
1177
+ };
1178
+ }();
1179
+
1180
+ watchEvent();
1181
+ var unsubscribe = client.subscribe(_ref2 => {
1182
+ var {
1183
+ provider,
1184
+ webSocketProvider
1185
+ } = _ref2;
1186
+ return {
1187
+ provider,
1188
+ webSocketProvider
1189
+ };
1190
+ }, watchEvent, {
1191
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
1192
+ });
1193
+ return () => {
1194
+ var _contract2;
1195
+
1196
+ (_contract2 = contract) === null || _contract2 === void 0 ? void 0 : _contract2.off(eventName, callback);
1197
+ unsubscribe();
1198
+ };
1199
+ }
1200
+
1201
+ function fetchBlockNumber() {
1202
+ return _fetchBlockNumber.apply(this, arguments);
1203
+ }
1204
+
1205
+ function _fetchBlockNumber() {
1206
+ _fetchBlockNumber = _asyncToGenerator(function* () {
1207
+ var blockNumber = yield client.provider.getBlockNumber();
1208
+ return blockNumber;
1209
+ });
1210
+ return _fetchBlockNumber.apply(this, arguments);
1211
+ }
1212
+
1213
+ function watchBlockNumber(args, callback) {
1214
+ var prevProvider;
1215
+
1216
+ var createListener = provider => {
1217
+ var listener = blockNumber => {
1218
+ callback(blockNumber);
1219
+ };
1220
+
1221
+ if (prevProvider) {
1222
+ var _prevProvider;
1223
+
1224
+ (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', listener);
1225
+ }
1226
+
1227
+ provider.on('block', listener);
1228
+ prevProvider = provider;
1229
+ };
1230
+
1231
+ var {
1232
+ provider,
1233
+ webSocketProvider
1234
+ } = client;
1235
+ var provider_ = webSocketProvider !== null && webSocketProvider !== void 0 ? webSocketProvider : provider;
1236
+ if (args.listen) createListener(provider_);
1237
+ var unsubscribe = client.subscribe(_ref => {
1238
+ var {
1239
+ provider,
1240
+ webSocketProvider
1241
+ } = _ref;
1242
+ return {
1243
+ provider,
1244
+ webSocketProvider
1245
+ };
1246
+ }, /*#__PURE__*/function () {
1247
+ var _ref3 = _asyncToGenerator(function* (_ref2) {
1248
+ var {
1249
+ provider,
1250
+ webSocketProvider
1251
+ } = _ref2;
1252
+ var provider_ = webSocketProvider !== null && webSocketProvider !== void 0 ? webSocketProvider : provider;
1253
+
1254
+ if (args.listen && provider_) {
1255
+ createListener(provider_);
1256
+ }
1257
+
1258
+ callback(yield fetchBlockNumber());
1259
+ });
1260
+
1261
+ return function (_x) {
1262
+ return _ref3.apply(this, arguments);
1263
+ };
1264
+ }(), {
1265
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
1266
+ });
1267
+ return unsubscribe;
1268
+ }
1269
+
1270
+ function watchReadContract(contractConfig, functionName) {
1271
+ var _config$listenToBlock;
1272
+
1273
+ var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1274
+ var callback = arguments.length > 3 ? arguments[3] : undefined;
1275
+
1276
+ var handleChange = /*#__PURE__*/function () {
1277
+ var _ref = _asyncToGenerator(function* () {
1278
+ return callback(yield readContract(contractConfig, functionName, config));
1279
+ });
1280
+
1281
+ return function handleChange() {
1282
+ return _ref.apply(this, arguments);
1283
+ };
1284
+ }();
1285
+
1286
+ var unwatch = ((_config$listenToBlock = config.listenToBlock) !== null && _config$listenToBlock !== void 0 ? _config$listenToBlock : true) ? watchBlockNumber({
1287
+ listen: true
1288
+ }, handleChange) : undefined;
1289
+ var unsubscribe = client.subscribe(_ref2 => {
1290
+ var {
1291
+ provider
1292
+ } = _ref2;
1293
+ return provider;
1294
+ }, handleChange);
1295
+ return () => {
1296
+ unsubscribe();
1297
+ unwatch === null || unwatch === void 0 ? void 0 : unwatch();
1298
+ };
1299
+ }
1300
+
1301
+ function writeContract(_x, _x2) {
1302
+ return _writeContract.apply(this, arguments);
1303
+ }
1304
+
1305
+ function _writeContract() {
1306
+ _writeContract = _asyncToGenerator(function* (contractConfig, functionName) {
1307
+ var {
1308
+ args,
1309
+ overrides
1310
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1311
+ var {
1312
+ connector
1313
+ } = client;
1314
+ var contract = getContract(contractConfig);
1315
+ if (!connector) throw new ConnectorNotFoundError();
1316
+ var params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
1317
+
1318
+ try {
1319
+ var signer = yield connector.getSigner();
1320
+ var contract_ = contract.connect(signer);
1321
+ var response = yield contract_[functionName](...params);
1322
+ return response;
1323
+ } catch (error_) {
1324
+ var error = error_;
1325
+ if (error_.code === 4001) error = new UserRejectedRequestError();
1326
+ throw error;
1327
+ }
1328
+ });
1329
+ return _writeContract.apply(this, arguments);
1330
+ }
1331
+
1332
+ function fetchEnsAddress(_x) {
1333
+ return _fetchEnsAddress.apply(this, arguments);
1334
+ }
1335
+
1336
+ function _fetchEnsAddress() {
1337
+ _fetchEnsAddress = _asyncToGenerator(function* (_ref) {
1338
+ var {
1339
+ name
1340
+ } = _ref;
1341
+ var address = yield client.provider.resolveName(name);
1342
+
1343
+ try {
1344
+ return address ? getAddress(address) : null;
1345
+ } catch (_error) {
1346
+ return null;
1347
+ }
1348
+ });
1349
+ return _fetchEnsAddress.apply(this, arguments);
1350
+ }
1351
+
1352
+ function fetchEnsAvatar(_x) {
1353
+ return _fetchEnsAvatar.apply(this, arguments);
1354
+ }
1355
+
1356
+ function _fetchEnsAvatar() {
1357
+ _fetchEnsAvatar = _asyncToGenerator(function* (_ref) {
1358
+ var {
1359
+ addressOrName
1360
+ } = _ref;
1361
+ // TODO: Update with more advanced logic
1362
+ // https://github.com/ensdomains/ens-avatar
1363
+ var avatar = yield client.provider.getAvatar(addressOrName);
1364
+ return avatar;
1365
+ });
1366
+ return _fetchEnsAvatar.apply(this, arguments);
1367
+ }
1368
+
1369
+ function fetchEnsName(_x) {
1370
+ return _fetchEnsName.apply(this, arguments);
1371
+ }
1372
+
1373
+ function _fetchEnsName() {
1374
+ _fetchEnsName = _asyncToGenerator(function* (_ref) {
1375
+ var {
1376
+ address
1377
+ } = _ref;
1378
+ var ensName = yield client.provider.lookupAddress(address);
1379
+ return ensName;
1380
+ });
1381
+ return _fetchEnsName.apply(this, arguments);
1382
+ }
1383
+
1384
+ function fetchEnsResolver(_x) {
1385
+ return _fetchEnsResolver.apply(this, arguments);
1386
+ }
1387
+
1388
+ function _fetchEnsResolver() {
1389
+ _fetchEnsResolver = _asyncToGenerator(function* (_ref) {
1390
+ var {
1391
+ name
1392
+ } = _ref;
1393
+ var resolver = yield client.provider.getResolver(name);
1394
+ return resolver;
1395
+ });
1396
+ return _fetchEnsResolver.apply(this, arguments);
1397
+ }
1398
+
1399
+ function watchEnsAddress(args, callback) {
1400
+ var handleChange = /*#__PURE__*/function () {
1401
+ var _ref = _asyncToGenerator(function* () {
1402
+ return callback(yield fetchEnsAddress(args));
1403
+ });
1404
+
1405
+ return function handleChange() {
1406
+ return _ref.apply(this, arguments);
1407
+ };
1408
+ }();
1409
+
1410
+ var unsubscribe = client.subscribe(_ref2 => {
1411
+ var {
1412
+ provider
1413
+ } = _ref2;
1414
+ return provider;
1415
+ }, handleChange);
1416
+ return unsubscribe;
1417
+ }
1418
+
1419
+ function watchEnsAvatar(args, callback) {
1420
+ var handleChange = /*#__PURE__*/function () {
1421
+ var _ref = _asyncToGenerator(function* () {
1422
+ return callback(yield fetchEnsAvatar(args));
1423
+ });
1424
+
1425
+ return function handleChange() {
1426
+ return _ref.apply(this, arguments);
1427
+ };
1428
+ }();
1429
+
1430
+ var unsubscribe = client.subscribe(_ref2 => {
1431
+ var {
1432
+ provider
1433
+ } = _ref2;
1434
+ return provider;
1435
+ }, handleChange);
1436
+ return unsubscribe;
1437
+ }
1438
+
1439
+ function watchEnsName(args, callback) {
1440
+ var handleChange = /*#__PURE__*/function () {
1441
+ var _ref = _asyncToGenerator(function* () {
1442
+ return callback(yield fetchEnsName(args));
1443
+ });
1444
+
1445
+ return function handleChange() {
1446
+ return _ref.apply(this, arguments);
1447
+ };
1448
+ }();
1449
+
1450
+ var unsubscribe = client.subscribe(_ref2 => {
1451
+ var {
1452
+ provider
1453
+ } = _ref2;
1454
+ return provider;
1455
+ }, handleChange);
1456
+ return unsubscribe;
1457
+ }
1458
+
1459
+ function watchEnsResolver(args, callback) {
1460
+ var handleChange = /*#__PURE__*/function () {
1461
+ var _ref = _asyncToGenerator(function* () {
1462
+ return callback(yield fetchEnsResolver(args));
1463
+ });
1464
+
1465
+ return function handleChange() {
1466
+ return _ref.apply(this, arguments);
1467
+ };
1468
+ }();
1469
+
1470
+ var unsubscribe = client.subscribe(_ref2 => {
1471
+ var {
1472
+ provider
1473
+ } = _ref2;
1474
+ return provider;
1475
+ }, handleChange);
1476
+ return unsubscribe;
1477
+ }
1478
+
1479
+ function fetchFeeData() {
1480
+ return _fetchFeeData.apply(this, arguments);
1481
+ }
1482
+
1483
+ function _fetchFeeData() {
1484
+ _fetchFeeData = _asyncToGenerator(function* () {
1485
+ var {
1486
+ formatUnits: units = 'wei'
1487
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1488
+ var feeData = yield client.provider.getFeeData();
1489
+ var formatted = {
1490
+ gasPrice: formatUnits(feeData.gasPrice, units),
1491
+ maxFeePerGas: formatUnits(feeData.maxFeePerGas, units),
1492
+ maxPriorityFeePerGas: formatUnits(feeData.maxPriorityFeePerGas, units)
1493
+ };
1494
+ return _objectSpread2(_objectSpread2({}, feeData), {}, {
1495
+ formatted
1496
+ });
1497
+ });
1498
+ return _fetchFeeData.apply(this, arguments);
1499
+ }
1500
+
1501
+ function watchFeeData(args, callback) {
1502
+ var handleChange = /*#__PURE__*/function () {
1503
+ var _ref = _asyncToGenerator(function* () {
1504
+ return callback(yield fetchFeeData(args));
1505
+ });
1506
+
1507
+ return function handleChange() {
1508
+ return _ref.apply(this, arguments);
1509
+ };
1510
+ }();
1511
+
1512
+ var unwatch = args.listenToBlock ? watchBlockNumber({
1513
+ listen: true
1514
+ }, handleChange) : undefined;
1515
+ var unsubscribe = client.subscribe(_ref2 => {
1516
+ var {
1517
+ provider
1518
+ } = _ref2;
1519
+ return provider;
1520
+ }, handleChange);
1521
+ return () => {
1522
+ unsubscribe();
1523
+ unwatch === null || unwatch === void 0 ? void 0 : unwatch();
1524
+ };
1525
+ }
1526
+
1527
+ function getProvider() {
1528
+ return client.provider;
1529
+ }
1530
+
1531
+ function getWebSocketProvider() {
1532
+ return client.webSocketProvider;
1533
+ }
1534
+
1535
+ function fetchToken(_x) {
1536
+ return _fetchToken.apply(this, arguments);
1537
+ }
1538
+
1539
+ function _fetchToken() {
1540
+ _fetchToken = _asyncToGenerator(function* (_ref) {
1541
+ var {
1542
+ address,
1543
+ formatUnits: units = 'ether'
1544
+ } = _ref;
1545
+ if (!address) throw new Error('address is required');
1546
+ var {
1547
+ provider
1548
+ } = client;
1549
+ var contract = new Contract(address, erc20ABI, provider);
1550
+ var [symbol, decimals, totalSupply] = yield Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
1551
+ var token = {
1552
+ address,
1553
+ decimals,
1554
+ symbol,
1555
+ totalSupply: {
1556
+ formatted: formatUnits(totalSupply, units),
1557
+ value: totalSupply
1558
+ }
1559
+ };
1560
+ return token;
1561
+ });
1562
+ return _fetchToken.apply(this, arguments);
1563
+ }
1564
+
1565
+ function watchToken(args, callback) {
1566
+ var handleChange = /*#__PURE__*/function () {
1567
+ var _ref = _asyncToGenerator(function* () {
1568
+ return callback(yield fetchToken(args));
1569
+ });
1570
+
1571
+ return function handleChange() {
1572
+ return _ref.apply(this, arguments);
1573
+ };
1574
+ }();
1575
+
1576
+ var unsubscribe = client.subscribe(_ref2 => {
1577
+ var {
1578
+ provider
1579
+ } = _ref2;
1580
+ return provider;
1581
+ }, handleChange);
1582
+ return unsubscribe;
1583
+ }
1584
+
1585
+ function sendTransaction(_x) {
1586
+ return _sendTransaction.apply(this, arguments);
1587
+ }
1588
+
1589
+ function _sendTransaction() {
1590
+ _sendTransaction = _asyncToGenerator(function* (args) {
1591
+ try {
1592
+ var signer = yield fetchSigner();
1593
+ if (!signer) throw new ConnectorNotFoundError();
1594
+ var transaction = yield signer.sendTransaction(args.request);
1595
+ return transaction;
1596
+ } catch (error_) {
1597
+ var error = error_;
1598
+ if (error_.code === 4001) error = new UserRejectedRequestError();
1599
+ throw error;
1600
+ }
1601
+ });
1602
+ return _sendTransaction.apply(this, arguments);
1603
+ }
1604
+
1605
+ function waitForTransaction(_x) {
1606
+ return _waitForTransaction.apply(this, arguments);
1607
+ }
1608
+
1609
+ function _waitForTransaction() {
1610
+ _waitForTransaction = _asyncToGenerator(function* (args) {
1611
+ var {
1612
+ provider
1613
+ } = client;
1614
+ var promise; // eslint-disable-next-line testing-library/await-async-utils
1615
+
1616
+ if (args.wait) promise = args.wait(args.confirmations);else if (args.hash) promise = provider.waitForTransaction(args.hash, args.confirmations, args.timeout);else throw new Error('hash or wait is required');
1617
+ var receipt = yield promise;
1618
+ return receipt;
1619
+ });
1620
+ return _waitForTransaction.apply(this, arguments);
1621
+ }
1622
+
1623
+ export { Client, InjectedConnector, Client as WagmiClient, connect, createClient, createStorage, createClient as createWagmiClient, createStorage as createWagmiStorage, disconnect, erc1155ABI, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, noopStorage, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBalance, watchBlockNumber, watchContractEvent, watchEnsAddress, watchEnsAvatar, watchEnsName, watchEnsResolver, watchFeeData, watchNetwork, watchReadContract, watchSigner, watchToken, writeContract };