@wagmi/core 0.2.1 → 0.2.4

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 (47) hide show
  1. package/README.md +2 -2
  2. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +2 -4
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +2 -4
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +3 -5
  5. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
  6. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +63 -0
  7. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +63 -0
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +59 -0
  10. package/connectors/metaMask/package.json +4 -0
  11. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +2 -2
  12. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +1 -1
  13. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +1 -1
  14. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +3 -3
  15. package/dist/{base-d5bbf720.esm.js → base-159de546.esm.js} +1 -1
  16. package/dist/{classPrivateMethodGet-93a70bfd.esm.js → classPrivateMethodGet-55c9909f.esm.js} +1 -1
  17. package/dist/client-65157905.cjs.dev.js +607 -0
  18. package/dist/client-7fcff803.esm.js +596 -0
  19. package/dist/client-a06853e2.cjs.prod.js +607 -0
  20. package/dist/declarations/src/actions/accounts/connect.d.ts +4 -4
  21. package/dist/declarations/src/actions/accounts/getAccount.d.ts +3 -3
  22. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +3 -3
  23. package/dist/declarations/src/actions/contracts/getContract.d.ts +2 -3
  24. package/dist/declarations/src/actions/contracts/readContract.d.ts +1 -1
  25. package/dist/declarations/src/actions/contracts/writeContract.d.ts +2 -3
  26. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +2 -2
  27. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +2 -2
  28. package/dist/declarations/src/actions/providers/getProvider.d.ts +3 -3
  29. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +3 -3
  30. package/dist/declarations/src/actions/providers/watchProvider.d.ts +3 -3
  31. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +3 -3
  32. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +3 -3
  33. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +3 -3
  34. package/dist/declarations/src/client.d.ts +8 -8
  35. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +1 -1
  36. package/dist/declarations/src/connectors/injected.d.ts +4 -3
  37. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  38. package/dist/declarations/src/connectors/mock/provider.d.ts +5 -7
  39. package/dist/declarations/src/connectors/walletConnect.d.ts +4 -3
  40. package/dist/declarations/src/types/index.d.ts +18 -1
  41. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -1
  42. package/dist/declarations/src/utils/index.d.ts +1 -0
  43. package/dist/declarations/src/utils/warn.d.ts +1 -0
  44. package/dist/wagmi-core.cjs.dev.js +63 -612
  45. package/dist/wagmi-core.cjs.prod.js +63 -612
  46. package/dist/wagmi-core.esm.js +12 -556
  47. package/package.json +11 -8
@@ -0,0 +1,607 @@
1
+ 'use strict';
2
+
3
+ var classPrivateMethodGet = require('./classPrivateMethodGet-d7330ed7.cjs.prod.js');
4
+ var base = require('./base-59f3457e.cjs.prod.js');
5
+ var ethers = require('ethers');
6
+ var create = require('zustand/vanilla');
7
+ var middleware = require('zustand/middleware');
8
+ var utils = require('ethers/lib/utils');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
11
+
12
+ var create__default = /*#__PURE__*/_interopDefault(create);
13
+
14
+ function getInjectedName(ethereum) {
15
+ var _ethereum$providers, _getName;
16
+
17
+ if (!ethereum) return 'Injected';
18
+
19
+ const getName = provider => {
20
+ if (provider.isBraveWallet) return 'Brave Wallet';
21
+ if (provider.isCoinbaseWallet) return 'Coinbase Wallet';
22
+ if (provider.isFrame) return 'Frame';
23
+ if (provider.isTally) return 'Tally';
24
+ if (provider.isTokenary) return 'Tokenary';
25
+ if (provider.isTrust) return 'Trust Wallet';
26
+ if (provider.isMetaMask) return 'MetaMask';
27
+ };
28
+
29
+ if ((_ethereum$providers = ethereum.providers) !== null && _ethereum$providers !== void 0 && _ethereum$providers.length) {
30
+ // Deduplicate names using Set
31
+ // Coinbase Wallet puts multiple providers in `ethereum.providers`
32
+ const nameSet = new Set();
33
+ let unknownCount = 1;
34
+
35
+ for (const provider of ethereum.providers) {
36
+ let name = getName(provider);
37
+
38
+ if (!name) {
39
+ name = "Unknown Wallet #".concat(unknownCount);
40
+ unknownCount += 1;
41
+ }
42
+
43
+ nameSet.add(name);
44
+ }
45
+
46
+ const names = [...nameSet];
47
+ return names.length ? names : names[0];
48
+ }
49
+
50
+ return (_getName = getName(ethereum)) !== null && _getName !== void 0 ? _getName : 'Injected';
51
+ }
52
+
53
+ const cache = new Set();
54
+ function warn(message, id) {
55
+ if (!cache.has(id !== null && id !== void 0 ? id : message)) {
56
+ console.warn(message);
57
+ cache.add(message);
58
+ }
59
+ }
60
+
61
+ const shimKey = 'injected.shimDisconnect';
62
+
63
+ var _provider = /*#__PURE__*/new WeakMap();
64
+
65
+ class InjectedConnector extends base.Connector {
66
+ constructor(config) {
67
+ super({ ...config,
68
+ options: {
69
+ shimDisconnect: true,
70
+ ...(config === null || config === void 0 ? void 0 : config.options)
71
+ }
72
+ });
73
+
74
+ base._defineProperty(this, "id", void 0);
75
+
76
+ base._defineProperty(this, "name", void 0);
77
+
78
+ base._defineProperty(this, "ready", typeof window != 'undefined' && !!window.ethereum);
79
+
80
+ base._classPrivateFieldInitSpec(this, _provider, {
81
+ writable: true,
82
+ value: void 0
83
+ });
84
+
85
+ base._defineProperty(this, "onAccountsChanged", accounts => {
86
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
87
+ account: utils.getAddress(accounts[0])
88
+ });
89
+ });
90
+
91
+ base._defineProperty(this, "onChainChanged", chainId => {
92
+ const id = base.normalizeChainId(chainId);
93
+ const unsupported = this.isChainUnsupported(id);
94
+ this.emit('change', {
95
+ chain: {
96
+ id,
97
+ unsupported
98
+ }
99
+ });
100
+ });
101
+
102
+ base._defineProperty(this, "onDisconnect", () => {
103
+ var _this$options, _getClient$storage;
104
+
105
+ this.emit('disconnect');
106
+ if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.shimDisconnect) (_getClient$storage = getClient().storage) === null || _getClient$storage === void 0 ? void 0 : _getClient$storage.removeItem(shimKey);
107
+ });
108
+
109
+ let name = 'Injected';
110
+
111
+ if (typeof window !== 'undefined') {
112
+ var _config$options;
113
+
114
+ const overrideName = config === null || config === void 0 ? void 0 : (_config$options = config.options) === null || _config$options === void 0 ? void 0 : _config$options.name;
115
+ const detectedName = getInjectedName(window.ethereum);
116
+ if (overrideName) name = typeof overrideName === 'function' ? overrideName(detectedName) : overrideName;else name = typeof detectedName === 'string' ? detectedName : detectedName[0];
117
+ }
118
+
119
+ this.id = 'injected';
120
+ this.name = name;
121
+ }
122
+
123
+ async connect() {
124
+ try {
125
+ var _this$options2, _getClient$storage2;
126
+
127
+ const provider = await this.getProvider();
128
+ if (!provider) throw new base.ConnectorNotFoundError();
129
+
130
+ if (provider.on) {
131
+ provider.on('accountsChanged', this.onAccountsChanged);
132
+ provider.on('chainChanged', this.onChainChanged);
133
+ provider.on('disconnect', this.onDisconnect);
134
+ }
135
+
136
+ this.emit('message', {
137
+ type: 'connecting'
138
+ });
139
+ const account = await this.getAccount();
140
+ const id = await this.getChainId();
141
+ const unsupported = this.isChainUnsupported(id);
142
+ if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.shimDisconnect) (_getClient$storage2 = getClient().storage) === null || _getClient$storage2 === void 0 ? void 0 : _getClient$storage2.setItem(shimKey, true);
143
+ return {
144
+ account,
145
+ chain: {
146
+ id,
147
+ unsupported
148
+ },
149
+ provider
150
+ };
151
+ } catch (error) {
152
+ if (error.code === 4001) throw new base.UserRejectedRequestError();
153
+ throw error;
154
+ }
155
+ }
156
+
157
+ async disconnect() {
158
+ var _this$options3, _getClient$storage3;
159
+
160
+ const provider = await this.getProvider();
161
+ if (!(provider !== null && provider !== void 0 && provider.removeListener)) return;
162
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
163
+ provider.removeListener('chainChanged', this.onChainChanged);
164
+ provider.removeListener('disconnect', this.onDisconnect);
165
+ if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.shimDisconnect) (_getClient$storage3 = getClient().storage) === null || _getClient$storage3 === void 0 ? void 0 : _getClient$storage3.removeItem(shimKey);
166
+ }
167
+
168
+ async getAccount() {
169
+ const provider = await this.getProvider();
170
+ if (!provider) throw new base.ConnectorNotFoundError();
171
+ const accounts = await provider.request({
172
+ method: 'eth_requestAccounts'
173
+ }); // return checksum address
174
+
175
+ return utils.getAddress(accounts[0]);
176
+ }
177
+
178
+ async getChainId() {
179
+ const provider = await this.getProvider();
180
+ if (!provider) throw new base.ConnectorNotFoundError();
181
+ return await provider.request({
182
+ method: 'eth_chainId'
183
+ }).then(base.normalizeChainId);
184
+ }
185
+
186
+ async getProvider() {
187
+ if (typeof window !== 'undefined' && !!window.ethereum) base._classPrivateFieldSet(this, _provider, window.ethereum);
188
+ return base._classPrivateFieldGet(this, _provider);
189
+ }
190
+
191
+ async getSigner() {
192
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
193
+ return new ethers.providers.Web3Provider(provider).getSigner(account);
194
+ }
195
+
196
+ async isAuthorized() {
197
+ try {
198
+ var _this$options4, _getClient$storage4;
199
+
200
+ if ((_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.shimDisconnect && !((_getClient$storage4 = getClient().storage) !== null && _getClient$storage4 !== void 0 && _getClient$storage4.getItem(shimKey))) return false;
201
+ const provider = await this.getProvider();
202
+ if (!provider) throw new base.ConnectorNotFoundError();
203
+ const accounts = await provider.request({
204
+ method: 'eth_accounts'
205
+ });
206
+ const account = accounts[0];
207
+ return !!account;
208
+ } catch {
209
+ return false;
210
+ }
211
+ }
212
+
213
+ async switchChain(chainId) {
214
+ const provider = await this.getProvider();
215
+ if (!provider) throw new base.ConnectorNotFoundError();
216
+ const id = utils.hexValue(chainId);
217
+
218
+ try {
219
+ var _chains$find;
220
+
221
+ await provider.request({
222
+ method: 'wallet_switchEthereumChain',
223
+ params: [{
224
+ chainId: id
225
+ }]
226
+ });
227
+ const chains = [...this.chains, ...base.allChains];
228
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
229
+ id: chainId,
230
+ name: "Chain ".concat(id),
231
+ rpcUrls: {
232
+ default: ''
233
+ }
234
+ };
235
+ } catch (error) {
236
+ // Indicates chain is not added to provider
237
+ if (error.code === 4902) {
238
+ try {
239
+ const chain = this.chains.find(x => x.id === chainId);
240
+ if (!chain) throw new base.ChainNotConfiguredError();
241
+ await provider.request({
242
+ method: 'wallet_addEthereumChain',
243
+ params: [{
244
+ chainId: id,
245
+ chainName: chain.name,
246
+ nativeCurrency: chain.nativeCurrency,
247
+ rpcUrls: [chain.rpcUrls.default],
248
+ blockExplorerUrls: this.getBlockExplorerUrls(chain)
249
+ }]
250
+ });
251
+ return chain;
252
+ } catch (addError) {
253
+ throw new base.AddChainError();
254
+ }
255
+ } else if (error.code === 4001) throw new base.UserRejectedRequestError();else throw new base.SwitchChainError();
256
+ }
257
+ }
258
+
259
+ async watchAsset(_ref) {
260
+ let {
261
+ address,
262
+ decimals = 18,
263
+ image,
264
+ symbol
265
+ } = _ref;
266
+ const provider = await this.getProvider();
267
+ if (!provider) throw new base.ConnectorNotFoundError();
268
+ return await provider.request({
269
+ method: 'wallet_watchAsset',
270
+ params: {
271
+ type: 'ERC20',
272
+ options: {
273
+ address,
274
+ decimals,
275
+ image,
276
+ symbol
277
+ }
278
+ }
279
+ });
280
+ }
281
+
282
+ }
283
+
284
+ const noopStorage = {
285
+ getItem: _key => '',
286
+ setItem: (_key, _value) => null,
287
+ removeItem: _key => null
288
+ };
289
+ function createStorage(_ref) {
290
+ let {
291
+ storage,
292
+ key: prefix = 'wagmi'
293
+ } = _ref;
294
+ return { ...storage,
295
+ getItem: function (key) {
296
+ let defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
297
+ const value = storage.getItem("".concat(prefix, ".").concat(key));
298
+
299
+ try {
300
+ return value ? JSON.parse(value) : defaultState;
301
+ } catch (error) {
302
+ console.warn(error);
303
+ return defaultState;
304
+ }
305
+ },
306
+ setItem: (key, value) => {
307
+ if (value === null) {
308
+ storage.removeItem("".concat(prefix, ".").concat(key));
309
+ } else {
310
+ try {
311
+ storage.setItem("".concat(prefix, ".").concat(key), JSON.stringify(value));
312
+ } catch (err) {
313
+ console.error(err);
314
+ }
315
+ }
316
+ },
317
+ removeItem: key => storage.removeItem("".concat(prefix, ".").concat(key))
318
+ };
319
+ }
320
+
321
+ const storeKey = 'store';
322
+
323
+ var _lastUsedConnector = /*#__PURE__*/new WeakMap();
324
+
325
+ var _addEffects = /*#__PURE__*/new WeakSet();
326
+
327
+ class Client {
328
+ constructor() {
329
+ var _config$autoConnect, _config$connectors, _config$provider, _config$storage;
330
+
331
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
332
+
333
+ classPrivateMethodGet._classPrivateMethodInitSpec(this, _addEffects);
334
+
335
+ base._defineProperty(this, "config", void 0);
336
+
337
+ base._defineProperty(this, "storage", void 0);
338
+
339
+ base._defineProperty(this, "store", void 0);
340
+
341
+ base._classPrivateFieldInitSpec(this, _lastUsedConnector, {
342
+ writable: true,
343
+ value: void 0
344
+ });
345
+
346
+ // Set default values for config
347
+ const autoConnect = (_config$autoConnect = config.autoConnect) !== null && _config$autoConnect !== void 0 ? _config$autoConnect : false;
348
+
349
+ const _connectors = (_config$connectors = config.connectors) !== null && _config$connectors !== void 0 ? _config$connectors : [new InjectedConnector()];
350
+
351
+ const _provider = (_config$provider = config.provider) !== null && _config$provider !== void 0 ? _config$provider : config => {
352
+ try {
353
+ return ethers.getDefaultProvider(config.chainId);
354
+ } catch {
355
+ return ethers.getDefaultProvider();
356
+ }
357
+ };
358
+
359
+ const storage = (_config$storage = config.storage) !== null && _config$storage !== void 0 ? _config$storage : createStorage({
360
+ storage: typeof window !== 'undefined' ? window.localStorage : noopStorage
361
+ });
362
+ const _webSocketProvider = config.webSocketProvider; // Check status for autoConnect flag
363
+
364
+ let status = 'disconnected';
365
+
366
+ let _chainId;
367
+
368
+ if (autoConnect) {
369
+ try {
370
+ var _JSON$parse, _JSON$parse$state, _data$chain;
371
+
372
+ const rawState = storage.getItem(storeKey, '');
373
+ const 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
374
+
375
+ status = data !== null && data !== void 0 && data.account ? 'reconnecting' : 'connecting';
376
+ _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
377
+ } catch (_error) {}
378
+ } // Evaluate initial store values
379
+
380
+
381
+ const connectors_ = typeof _connectors === 'function' ? _connectors({
382
+ chainId: _chainId
383
+ }) : _connectors;
384
+ const provider_ = typeof _provider === 'function' ? _provider({
385
+ chainId: _chainId
386
+ }) : _provider;
387
+ const webSocketProvider_ = typeof _webSocketProvider === 'function' ? _webSocketProvider({
388
+ chainId: _chainId
389
+ }) : _webSocketProvider; // Create store
390
+
391
+ this.store = create__default["default"](middleware.subscribeWithSelector(middleware.persist(() => ({
392
+ connectors: connectors_,
393
+ provider: provider_,
394
+ status,
395
+ webSocketProvider: webSocketProvider_
396
+ }), {
397
+ name: storeKey,
398
+ getStorage: () => storage,
399
+ partialize: state => {
400
+ var _state$data, _state$data2;
401
+
402
+ return { ...(autoConnect && {
403
+ data: {
404
+ account: state === null || state === void 0 ? void 0 : (_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.account,
405
+ chain: state === null || state === void 0 ? void 0 : (_state$data2 = state.data) === null || _state$data2 === void 0 ? void 0 : _state$data2.chain
406
+ }
407
+ }),
408
+ chains: state === null || state === void 0 ? void 0 : state.chains
409
+ };
410
+ },
411
+ version: 1
412
+ })));
413
+ this.config = {
414
+ autoConnect,
415
+ connectors: _connectors,
416
+ provider: _provider,
417
+ storage,
418
+ webSocketProvider: _webSocketProvider
419
+ };
420
+ this.storage = storage;
421
+
422
+ base._classPrivateFieldSet(this, _lastUsedConnector, storage === null || storage === void 0 ? void 0 : storage.getItem('wallet'));
423
+
424
+ classPrivateMethodGet._classPrivateMethodGet(this, _addEffects, _addEffects2).call(this);
425
+ }
426
+
427
+ get chains() {
428
+ return this.store.getState().chains;
429
+ }
430
+
431
+ get connectors() {
432
+ return this.store.getState().connectors;
433
+ }
434
+
435
+ get connector() {
436
+ return this.store.getState().connector;
437
+ }
438
+
439
+ get data() {
440
+ return this.store.getState().data;
441
+ }
442
+
443
+ get error() {
444
+ return this.store.getState().error;
445
+ }
446
+
447
+ get provider() {
448
+ return this.store.getState().provider;
449
+ }
450
+
451
+ get status() {
452
+ return this.store.getState().status;
453
+ }
454
+
455
+ get subscribe() {
456
+ return this.store.subscribe;
457
+ }
458
+
459
+ get webSocketProvider() {
460
+ return this.store.getState().webSocketProvider;
461
+ }
462
+
463
+ setState(updater) {
464
+ const newState = typeof updater === 'function' ? updater(this.store.getState()) : updater;
465
+ this.store.setState(newState, true);
466
+ }
467
+
468
+ clearState() {
469
+ this.setState(x => ({ ...x,
470
+ connector: undefined,
471
+ data: undefined,
472
+ error: undefined,
473
+ status: 'disconnected'
474
+ }));
475
+ }
476
+
477
+ async destroy() {
478
+ var _this$connector$disco, _this$connector;
479
+
480
+ if (this.connector) await ((_this$connector$disco = (_this$connector = this.connector).disconnect) === null || _this$connector$disco === void 0 ? void 0 : _this$connector$disco.call(_this$connector));
481
+ this.clearState();
482
+ this.store.destroy();
483
+ }
484
+
485
+ async autoConnect() {
486
+ if (!this.connectors.length) return; // Try last used connector first
487
+
488
+ const sorted = base._classPrivateFieldGet(this, _lastUsedConnector) ? [...this.connectors].sort(x => x.id === base._classPrivateFieldGet(this, _lastUsedConnector) ? -1 : 1) : this.connectors;
489
+ let connected = false;
490
+
491
+ for (const connector of sorted) {
492
+ if (!connector.ready || !connector.isAuthorized) continue;
493
+ const isAuthorized = await connector.isAuthorized();
494
+ if (!isAuthorized) continue;
495
+ const data = await connector.connect();
496
+ this.setState(x => ({ ...x,
497
+ connector,
498
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
499
+ data,
500
+ status: 'connected'
501
+ }));
502
+ connected = true;
503
+ break;
504
+ } // If connecting didn't succeed, set to disconnected
505
+
506
+
507
+ if (!connected) this.setState(x => ({ ...x,
508
+ status: 'disconnected'
509
+ }));
510
+ return this.data;
511
+ }
512
+
513
+ setLastUsedConnector() {
514
+ var _this$storage;
515
+
516
+ let lastUsedConnector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
517
+ (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.setItem('wallet', lastUsedConnector);
518
+ }
519
+
520
+ }
521
+
522
+ function _addEffects2() {
523
+ const onChange = data => {
524
+ this.setState(x => ({ ...x,
525
+ data: { ...x.data,
526
+ ...data
527
+ }
528
+ }));
529
+ };
530
+
531
+ const onDisconnect = () => {
532
+ this.clearState();
533
+ };
534
+
535
+ const onError = error => {
536
+ this.setState(x => ({ ...x,
537
+ error
538
+ }));
539
+ };
540
+
541
+ this.store.subscribe(_ref => {
542
+ let {
543
+ connector
544
+ } = _ref;
545
+ return connector;
546
+ }, (connector, prevConnector) => {
547
+ var _prevConnector$off, _prevConnector$off2, _prevConnector$off3, _connector$on, _connector$on2, _connector$on3;
548
+
549
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off = prevConnector.off) === null || _prevConnector$off === void 0 ? void 0 : _prevConnector$off.call(prevConnector, 'change', onChange);
550
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off2 = prevConnector.off) === null || _prevConnector$off2 === void 0 ? void 0 : _prevConnector$off2.call(prevConnector, 'disconnect', onDisconnect);
551
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off3 = prevConnector.off) === null || _prevConnector$off3 === void 0 ? void 0 : _prevConnector$off3.call(prevConnector, 'error', onError);
552
+ if (!connector) return;
553
+ (_connector$on = connector.on) === null || _connector$on === void 0 ? void 0 : _connector$on.call(connector, 'change', onChange);
554
+ (_connector$on2 = connector.on) === null || _connector$on2 === void 0 ? void 0 : _connector$on2.call(connector, 'disconnect', onDisconnect);
555
+ (_connector$on3 = connector.on) === null || _connector$on3 === void 0 ? void 0 : _connector$on3.call(connector, 'error', onError);
556
+ });
557
+ const {
558
+ connectors,
559
+ provider,
560
+ webSocketProvider
561
+ } = this.config;
562
+ const subscribeConnectors = typeof connectors === 'function';
563
+ const subscribeProvider = typeof provider === 'function';
564
+ const subscribeWebSocketProvider = typeof webSocketProvider === 'function';
565
+ if (subscribeConnectors || subscribeProvider || subscribeWebSocketProvider) this.store.subscribe(_ref2 => {
566
+ var _data$chain2;
567
+
568
+ let {
569
+ data
570
+ } = _ref2;
571
+ return data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.id;
572
+ }, chainId => {
573
+ this.setState(x => ({ ...x,
574
+ connectors: subscribeConnectors ? connectors({
575
+ chainId
576
+ }) : x.connectors,
577
+ provider: subscribeProvider ? provider({
578
+ chainId
579
+ }) : x.provider,
580
+ webSocketProvider: subscribeWebSocketProvider ? webSocketProvider({
581
+ chainId
582
+ }) : x.webSocketProvider
583
+ }));
584
+ });
585
+ }
586
+
587
+ exports.client = void 0;
588
+ function createClient(config) {
589
+ const client_ = new Client(config);
590
+ exports.client = client_;
591
+ return client_;
592
+ }
593
+ function getClient() {
594
+ if (!exports.client) {
595
+ warn('No client defined. Falling back to default client.');
596
+ return new Client();
597
+ }
598
+
599
+ return exports.client;
600
+ }
601
+
602
+ exports.Client = Client;
603
+ exports.InjectedConnector = InjectedConnector;
604
+ exports.createClient = createClient;
605
+ exports.createStorage = createStorage;
606
+ exports.getClient = getClient;
607
+ exports.noopStorage = noopStorage;
@@ -1,16 +1,16 @@
1
- import type { BaseProvider } from '@ethersproject/providers';
1
+ import { providers } from 'ethers';
2
2
  import { Client } from '../../client';
3
3
  import { Connector, ConnectorData } from '../../connectors';
4
4
  export declare type ConnectArgs = {
5
5
  /** Connector to connect */
6
6
  connector: Connector;
7
7
  };
8
- declare type Data<TProvider extends BaseProvider = BaseProvider> = Required<ConnectorData<TProvider>>;
9
- export declare type ConnectResult<TProvider extends BaseProvider = BaseProvider> = {
8
+ declare type Data<TProvider extends providers.BaseProvider = providers.BaseProvider> = Required<ConnectorData<TProvider>>;
9
+ export declare type ConnectResult<TProvider extends providers.BaseProvider = providers.BaseProvider> = {
10
10
  account: Data<TProvider>['account'];
11
11
  chain: Data<TProvider>['chain'];
12
12
  connector: Client<TProvider>['connector'];
13
13
  provider: Data<TProvider>['provider'];
14
14
  };
15
- export declare function connect<TProvider extends BaseProvider>({ connector, }: ConnectArgs): Promise<ConnectResult<TProvider>>;
15
+ export declare function connect<TProvider extends providers.BaseProvider>({ connector, }: ConnectArgs): Promise<ConnectResult<TProvider>>;
16
16
  export {};
@@ -1,7 +1,7 @@
1
- import type { BaseProvider } from '@ethersproject/providers';
1
+ import { providers } from 'ethers';
2
2
  import { Client, Data } from '../../client';
3
- export declare type GetAccountResult<TProvider extends BaseProvider = BaseProvider> = {
3
+ export declare type GetAccountResult<TProvider extends providers.BaseProvider = providers.BaseProvider> = {
4
4
  address?: Data<TProvider>['account'];
5
5
  connector?: Client<TProvider>['connector'];
6
6
  };
7
- export declare function getAccount<TProvider extends BaseProvider>(): GetAccountResult<TProvider>;
7
+ export declare function getAccount<TProvider extends providers.BaseProvider>(): GetAccountResult<TProvider>;
@@ -1,4 +1,4 @@
1
- import type { BaseProvider } from '@ethersproject/providers';
1
+ import { providers } from 'ethers';
2
2
  import { GetAccountResult } from './getAccount';
3
- export declare type WatchAccountCallback<TProvider extends BaseProvider = BaseProvider> = (data: GetAccountResult<TProvider>) => void;
4
- export declare function watchAccount<TProvider extends BaseProvider>(callback: WatchAccountCallback<TProvider>): () => void;
3
+ export declare type WatchAccountCallback<TProvider extends providers.BaseProvider = providers.BaseProvider> = (data: GetAccountResult<TProvider>) => void;
4
+ export declare function watchAccount<TProvider extends providers.BaseProvider>(callback: WatchAccountCallback<TProvider>): () => void;
@@ -1,11 +1,10 @@
1
- import type { Provider } from '@ethersproject/providers';
2
- import { Contract, ContractInterface, Signer } from 'ethers/lib/ethers';
1
+ import { Contract, ContractInterface, Signer, providers } from 'ethers';
3
2
  export declare type GetContractArgs = {
4
3
  /** Contract address or ENS name */
5
4
  addressOrName: string;
6
5
  /** Contract interface or ABI */
7
6
  contractInterface: ContractInterface;
8
7
  /** Signer or provider to attach to contract */
9
- signerOrProvider?: Signer | Provider | null;
8
+ signerOrProvider?: Signer | providers.Provider | null;
10
9
  };
11
10
  export declare function getContract<T = Contract>({ addressOrName, contractInterface, signerOrProvider, }: GetContractArgs): T;
@@ -1,7 +1,7 @@
1
1
  import { CallOverrides, Contract as EthersContract } from 'ethers/lib/ethers';
2
2
  import { Result } from 'ethers/lib/utils';
3
3
  import { GetContractArgs } from './getContract';
4
- export declare type ReadContractArgs = GetContractArgs;
4
+ export declare type ReadContractArgs = Pick<GetContractArgs, 'addressOrName' | 'contractInterface'>;
5
5
  export declare type ReadContractConfig = {
6
6
  /** Arguments to pass contract method */
7
7
  args?: any | any[];
@@ -1,5 +1,4 @@
1
- import type { TransactionResponse } from '@ethersproject/providers';
2
- import { CallOverrides, Contract as EthersContract } from 'ethers/lib/ethers';
1
+ import { CallOverrides, Contract as EthersContract, providers } from 'ethers';
3
2
  import { GetContractArgs } from './getContract';
4
3
  export declare type WriteContractArgs = GetContractArgs;
5
4
  export declare type WriteContractConfig = {
@@ -7,5 +6,5 @@ export declare type WriteContractConfig = {
7
6
  args?: any | any[];
8
7
  overrides?: CallOverrides;
9
8
  };
10
- export declare type WriteContractResult = TransactionResponse;
9
+ export declare type WriteContractResult = providers.TransactionResponse;
11
10
  export declare function writeContract<Contract extends EthersContract = EthersContract>(contractConfig: WriteContractArgs, functionName: string, { args, overrides }?: WriteContractConfig): Promise<WriteContractResult>;