@wagmi/core 0.2.5 → 0.3.2

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 (74) hide show
  1. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +28 -19
  2. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +28 -19
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +28 -19
  4. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +17 -12
  5. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +17 -12
  6. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +11 -6
  7. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +7 -6
  8. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +7 -6
  9. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +5 -4
  10. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +18 -7
  11. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +18 -7
  12. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +16 -5
  13. package/dist/{base-5812b724.cjs.dev.js → base-3a506159.cjs.dev.js} +129 -67
  14. package/dist/{base-159de546.esm.js → base-997b4fec.esm.js} +98 -38
  15. package/dist/{base-59f3457e.cjs.prod.js → base-cb4198f3.cjs.prod.js} +129 -67
  16. package/dist/{client-3a56f061.esm.js → client-1ab99bf8.esm.js} +52 -45
  17. package/dist/{client-72d69b8e.cjs.dev.js → client-db513093.cjs.dev.js} +54 -47
  18. package/dist/{client-1f6fd5b6.cjs.prod.js → client-edc73358.cjs.prod.js} +54 -47
  19. package/dist/declarations/src/actions/accounts/connect.d.ts +4 -4
  20. package/dist/declarations/src/actions/accounts/getAccount.d.ts +3 -3
  21. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +15 -6
  22. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +3 -3
  23. package/dist/declarations/src/actions/providers/getProvider.d.ts +3 -3
  24. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +3 -3
  25. package/dist/declarations/src/actions/providers/watchProvider.d.ts +3 -3
  26. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +3 -3
  27. package/dist/declarations/src/chains/configureChains.d.ts +20 -0
  28. package/dist/declarations/src/chains/index.d.ts +2 -0
  29. package/dist/declarations/src/client.d.ts +12 -12
  30. package/dist/declarations/src/connectors/injected.d.ts +1 -1
  31. package/dist/declarations/src/connectors/metaMask.d.ts +1 -1
  32. package/dist/declarations/src/constants/index.d.ts +1 -1
  33. package/dist/declarations/src/errors.d.ts +48 -4
  34. package/dist/declarations/src/index.d.ts +8 -6
  35. package/dist/declarations/src/providers/alchemy.d.ts +7 -0
  36. package/dist/declarations/src/providers/infura.d.ts +7 -0
  37. package/dist/declarations/src/providers/jsonRpc.d.ts +11 -0
  38. package/dist/declarations/src/providers/public.d.ts +6 -0
  39. package/dist/declarations/src/storage.d.ts +2 -2
  40. package/dist/declarations/src/types/index.d.ts +44 -14
  41. package/dist/rpcs-7cfbd91c.esm.js +30 -0
  42. package/dist/rpcs-9c4eb960.cjs.dev.js +35 -0
  43. package/dist/rpcs-b3c52116.cjs.prod.js +35 -0
  44. package/dist/wagmi-core.cjs.dev.js +124 -25
  45. package/dist/wagmi-core.cjs.prod.js +124 -25
  46. package/dist/wagmi-core.esm.js +122 -24
  47. package/package.json +27 -6
  48. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.d.ts +1 -0
  49. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +38 -0
  50. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.js +7 -0
  51. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +38 -0
  52. package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +34 -0
  53. package/providers/alchemy/package.json +4 -0
  54. package/providers/infura/dist/wagmi-core-providers-infura.cjs.d.ts +1 -0
  55. package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +38 -0
  56. package/providers/infura/dist/wagmi-core-providers-infura.cjs.js +7 -0
  57. package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +38 -0
  58. package/providers/infura/dist/wagmi-core-providers-infura.esm.js +34 -0
  59. package/providers/infura/package.json +4 -0
  60. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.d.ts +1 -0
  61. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +45 -0
  62. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.js +7 -0
  63. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +45 -0
  64. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +41 -0
  65. package/providers/jsonRpc/package.json +4 -0
  66. package/providers/public/dist/wagmi-core-providers-public.cjs.d.ts +1 -0
  67. package/providers/public/dist/wagmi-core-providers-public.cjs.dev.js +34 -0
  68. package/providers/public/dist/wagmi-core-providers-public.cjs.js +7 -0
  69. package/providers/public/dist/wagmi-core-providers-public.cjs.prod.js +34 -0
  70. package/providers/public/dist/wagmi-core-providers-public.esm.js +30 -0
  71. package/providers/public/package.json +4 -0
  72. package/dist/classPrivateMethodGet-55c9909f.esm.js +0 -16
  73. package/dist/classPrivateMethodGet-976c8120.cjs.dev.js +0 -19
  74. package/dist/classPrivateMethodGet-d7330ed7.cjs.prod.js +0 -19
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var client = require('./client-72d69b8e.cjs.dev.js');
6
- var base = require('./base-5812b724.cjs.dev.js');
5
+ var client = require('./client-db513093.cjs.dev.js');
6
+ var base = require('./base-3a506159.cjs.dev.js');
7
7
  var ethers = require('ethers/lib/ethers');
8
8
  var utils = require('ethers/lib/utils');
9
9
  var ethers$1 = require('ethers');
10
- require('./classPrivateMethodGet-976c8120.cjs.dev.js');
10
+ var rpcs = require('./rpcs-9c4eb960.cjs.dev.js');
11
11
  require('zustand/vanilla');
12
12
  require('zustand/middleware');
13
13
  require('eventemitter3');
@@ -162,6 +162,7 @@ function getNetwork() {
162
162
  const activeChain = (_find = [...activeChains, ...base.allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
163
163
  id: chainId,
164
164
  name: "Chain ".concat(chainId),
165
+ network: "".concat(chainId),
165
166
  rpcUrls: {
166
167
  default: ''
167
168
  }
@@ -180,9 +181,8 @@ async function signMessage(args) {
180
181
  const signer = await fetchSigner();
181
182
  if (!signer) throw new base.ConnectorNotFoundError();
182
183
  return await signer.signMessage(args.message);
183
- } catch (error_) {
184
- let error = error_;
185
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
184
+ } catch (error) {
185
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
186
186
  throw error;
187
187
  }
188
188
  }
@@ -193,9 +193,8 @@ async function signTypedData(args) {
193
193
  if (!signer) throw new base.ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
194
194
 
195
195
  return await signer._signTypedData(args.domain, args.types, args.value);
196
- } catch (error_) {
197
- let error = error_;
198
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
196
+ } catch (error) {
197
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
199
198
  throw error;
200
199
  }
201
200
  }
@@ -371,17 +370,17 @@ async function fetchBlockNumber() {
371
370
  function watchBlockNumber(args, callback) {
372
371
  var _client$webSocketProv;
373
372
 
374
- let prevProvider;
373
+ let previousProvider;
375
374
 
376
375
  const createListener = provider => {
377
- if (prevProvider) {
378
- var _prevProvider;
376
+ if (previousProvider) {
377
+ var _previousProvider;
379
378
 
380
- (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
379
+ (_previousProvider = previousProvider) === null || _previousProvider === void 0 ? void 0 : _previousProvider.off('block', callback);
381
380
  }
382
381
 
383
382
  provider.on('block', callback);
384
- prevProvider = provider;
383
+ previousProvider = provider;
385
384
  };
386
385
 
387
386
  const client$1 = client.getClient();
@@ -456,9 +455,8 @@ async function writeContract(contractConfig, functionName) {
456
455
  if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
457
456
  const response = await contractFunction(...params);
458
457
  return response;
459
- } catch (error_) {
460
- let error = error_;
461
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
458
+ } catch (error) {
459
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
462
460
  throw error;
463
461
  }
464
462
  }
@@ -565,9 +563,8 @@ async function sendTransaction(args) {
565
563
  if (!signer) throw new base.ConnectorNotFoundError();
566
564
  const transaction = await signer.sendTransaction(args.request);
567
565
  return transaction;
568
- } catch (error_) {
569
- let error = error_;
570
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
566
+ } catch (error) {
567
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
571
568
  throw error;
572
569
  }
573
570
  }
@@ -592,31 +589,133 @@ async function waitForTransaction(_ref) {
592
589
  return await promise;
593
590
  }
594
591
 
592
+ function configureChains(defaultChains, providers) {
593
+ let {
594
+ minQuorum = 1,
595
+ targetQuorum = 1,
596
+ stallTimeout
597
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
598
+ if (targetQuorum < minQuorum) throw new Error('quorum cannot be lower than minQuorum');
599
+ let chains = [];
600
+ const providers_ = {};
601
+ const webSocketProviders_ = {};
602
+
603
+ for (const chain of defaultChains) {
604
+ let configExists = false;
605
+
606
+ for (const provider of providers) {
607
+ const apiConfig = provider(chain); // If no API configuration was found (ie. no RPC URL) for
608
+ // this provider, then we skip and check the next one.
609
+
610
+ if (!apiConfig) continue;
611
+ configExists = true;
612
+
613
+ if (!chains.some(_ref => {
614
+ let {
615
+ id
616
+ } = _ref;
617
+ return id === chain.id;
618
+ })) {
619
+ chains = [...chains, apiConfig.chain];
620
+ }
621
+
622
+ providers_[chain.id] = [...(providers_[chain.id] || []), apiConfig.provider];
623
+
624
+ if (apiConfig.webSocketProvider) {
625
+ webSocketProviders_[chain.id] = [...(webSocketProviders_[chain.id] || []), apiConfig.webSocketProvider];
626
+ }
627
+ } // If no API configuration was found across the providers
628
+ // then we throw an error to the consumer.
629
+
630
+
631
+ if (!configExists) {
632
+ throw new Error(["Could not find valid provider configuration for chain \"".concat(chain.name, "\".\n"), "You may need to add `jsonRpcProvider` to `configureChains` with the chain's RPC URLs.", 'Read more: https://wagmi.sh/docs/providers/jsonRpc'].join('\n'));
633
+ }
634
+ }
635
+
636
+ return {
637
+ chains,
638
+ provider: _ref2 => {
639
+ let {
640
+ chainId
641
+ } = _ref2;
642
+ const chainProviders = providers_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
643
+ if (chainProviders.length === 1) return chainProviders[0]();
644
+ return fallbackProvider(targetQuorum, minQuorum, chainProviders, {
645
+ stallTimeout
646
+ });
647
+ },
648
+ webSocketProvider: _ref3 => {
649
+ let {
650
+ chainId
651
+ } = _ref3;
652
+ const chainWebSocketProviders = webSocketProviders_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
653
+ if (!chainWebSocketProviders) return undefined;
654
+ if (chainWebSocketProviders.length === 1) return chainWebSocketProviders[0](); // WebSockets do not work with `fallbackProvider`
655
+ // Default to first available
656
+
657
+ return chainWebSocketProviders[0]();
658
+ }
659
+ };
660
+ }
661
+
662
+ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
663
+ let {
664
+ stallTimeout
665
+ } = _ref4;
666
+
667
+ try {
668
+ return new ethers$1.providers.FallbackProvider(providers_.map((chainProvider, index) => {
669
+ var _provider$priority, _provider$stallTimeou;
670
+
671
+ const provider = chainProvider();
672
+ return {
673
+ provider,
674
+ priority: (_provider$priority = provider.priority) !== null && _provider$priority !== void 0 ? _provider$priority : index,
675
+ stallTimeout: (_provider$stallTimeou = provider.stallTimeout) !== null && _provider$stallTimeou !== void 0 ? _provider$stallTimeou : stallTimeout,
676
+ weight: provider.weight
677
+ };
678
+ }), targetQuorum);
679
+ } catch (error) {
680
+ var _error$message;
681
+
682
+ if (error !== null && error !== void 0 && (_error$message = error.message) !== null && _error$message !== void 0 && _error$message.includes('quorum will always fail; larger than total weight')) {
683
+ if (targetQuorum === minQuorum) throw error;
684
+ return fallbackProvider(targetQuorum - 1, minQuorum, providers_, {
685
+ stallTimeout
686
+ });
687
+ }
688
+
689
+ throw error;
690
+ }
691
+ }
692
+
595
693
  exports.Client = client.Client;
596
694
  exports.InjectedConnector = client.InjectedConnector;
597
- exports.WagmiClient = client.Client;
598
695
  exports.createClient = client.createClient;
599
696
  exports.createStorage = client.createStorage;
600
- exports.createWagmiClient = client.createClient;
601
- exports.createWagmiStorage = client.createStorage;
602
697
  exports.noopStorage = client.noopStorage;
603
698
  exports.AddChainError = base.AddChainError;
604
699
  exports.ChainNotConfiguredError = base.ChainNotConfiguredError;
605
700
  exports.Connector = base.Connector;
606
701
  exports.ConnectorAlreadyConnectedError = base.ConnectorAlreadyConnectedError;
607
702
  exports.ConnectorNotFoundError = base.ConnectorNotFoundError;
703
+ exports.ProviderRpcError = base.ProviderRpcError;
704
+ exports.ResourceUnavailableError = base.ResourceUnavailableError;
705
+ exports.RpcError = base.RpcError;
608
706
  exports.SwitchChainError = base.SwitchChainError;
609
707
  exports.SwitchChainNotSupportedError = base.SwitchChainNotSupportedError;
610
708
  exports.UserRejectedRequestError = base.UserRejectedRequestError;
611
- exports.alchemyRpcUrls = base.alchemyRpcUrls;
612
709
  exports.allChains = base.allChains;
613
710
  exports.chain = base.chain;
614
711
  exports.chainId = base.chainId;
615
712
  exports.defaultChains = base.defaultChains;
616
713
  exports.defaultL2Chains = base.defaultL2Chains;
617
714
  exports.etherscanBlockExplorers = base.etherscanBlockExplorers;
618
- exports.infuraRpcUrls = base.infuraRpcUrls;
619
715
  exports.normalizeChainId = base.normalizeChainId;
716
+ exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
717
+ exports.infuraRpcUrls = rpcs.infuraRpcUrls;
718
+ exports.configureChains = configureChains;
620
719
  exports.connect = connect;
621
720
  exports.disconnect = disconnect;
622
721
  exports.erc20ABI = erc20ABI;
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var client = require('./client-1f6fd5b6.cjs.prod.js');
6
- var base = require('./base-59f3457e.cjs.prod.js');
5
+ var client = require('./client-edc73358.cjs.prod.js');
6
+ var base = require('./base-cb4198f3.cjs.prod.js');
7
7
  var ethers = require('ethers/lib/ethers');
8
8
  var utils = require('ethers/lib/utils');
9
9
  var ethers$1 = require('ethers');
10
- require('./classPrivateMethodGet-d7330ed7.cjs.prod.js');
10
+ var rpcs = require('./rpcs-b3c52116.cjs.prod.js');
11
11
  require('zustand/vanilla');
12
12
  require('zustand/middleware');
13
13
  require('eventemitter3');
@@ -162,6 +162,7 @@ function getNetwork() {
162
162
  const activeChain = (_find = [...activeChains, ...base.allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
163
163
  id: chainId,
164
164
  name: "Chain ".concat(chainId),
165
+ network: "".concat(chainId),
165
166
  rpcUrls: {
166
167
  default: ''
167
168
  }
@@ -180,9 +181,8 @@ async function signMessage(args) {
180
181
  const signer = await fetchSigner();
181
182
  if (!signer) throw new base.ConnectorNotFoundError();
182
183
  return await signer.signMessage(args.message);
183
- } catch (error_) {
184
- let error = error_;
185
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
184
+ } catch (error) {
185
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
186
186
  throw error;
187
187
  }
188
188
  }
@@ -193,9 +193,8 @@ async function signTypedData(args) {
193
193
  if (!signer) throw new base.ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
194
194
 
195
195
  return await signer._signTypedData(args.domain, args.types, args.value);
196
- } catch (error_) {
197
- let error = error_;
198
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
196
+ } catch (error) {
197
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
199
198
  throw error;
200
199
  }
201
200
  }
@@ -371,17 +370,17 @@ async function fetchBlockNumber() {
371
370
  function watchBlockNumber(args, callback) {
372
371
  var _client$webSocketProv;
373
372
 
374
- let prevProvider;
373
+ let previousProvider;
375
374
 
376
375
  const createListener = provider => {
377
- if (prevProvider) {
378
- var _prevProvider;
376
+ if (previousProvider) {
377
+ var _previousProvider;
379
378
 
380
- (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
379
+ (_previousProvider = previousProvider) === null || _previousProvider === void 0 ? void 0 : _previousProvider.off('block', callback);
381
380
  }
382
381
 
383
382
  provider.on('block', callback);
384
- prevProvider = provider;
383
+ previousProvider = provider;
385
384
  };
386
385
 
387
386
  const client$1 = client.getClient();
@@ -456,9 +455,8 @@ async function writeContract(contractConfig, functionName) {
456
455
  if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
457
456
  const response = await contractFunction(...params);
458
457
  return response;
459
- } catch (error_) {
460
- let error = error_;
461
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
458
+ } catch (error) {
459
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
462
460
  throw error;
463
461
  }
464
462
  }
@@ -565,9 +563,8 @@ async function sendTransaction(args) {
565
563
  if (!signer) throw new base.ConnectorNotFoundError();
566
564
  const transaction = await signer.sendTransaction(args.request);
567
565
  return transaction;
568
- } catch (error_) {
569
- let error = error_;
570
- if (error_.code === 4001) error = new base.UserRejectedRequestError();
566
+ } catch (error) {
567
+ if (error.code === 4001) throw new base.UserRejectedRequestError(error);
571
568
  throw error;
572
569
  }
573
570
  }
@@ -592,31 +589,133 @@ async function waitForTransaction(_ref) {
592
589
  return await promise;
593
590
  }
594
591
 
592
+ function configureChains(defaultChains, providers) {
593
+ let {
594
+ minQuorum = 1,
595
+ targetQuorum = 1,
596
+ stallTimeout
597
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
598
+ if (targetQuorum < minQuorum) throw new Error('quorum cannot be lower than minQuorum');
599
+ let chains = [];
600
+ const providers_ = {};
601
+ const webSocketProviders_ = {};
602
+
603
+ for (const chain of defaultChains) {
604
+ let configExists = false;
605
+
606
+ for (const provider of providers) {
607
+ const apiConfig = provider(chain); // If no API configuration was found (ie. no RPC URL) for
608
+ // this provider, then we skip and check the next one.
609
+
610
+ if (!apiConfig) continue;
611
+ configExists = true;
612
+
613
+ if (!chains.some(_ref => {
614
+ let {
615
+ id
616
+ } = _ref;
617
+ return id === chain.id;
618
+ })) {
619
+ chains = [...chains, apiConfig.chain];
620
+ }
621
+
622
+ providers_[chain.id] = [...(providers_[chain.id] || []), apiConfig.provider];
623
+
624
+ if (apiConfig.webSocketProvider) {
625
+ webSocketProviders_[chain.id] = [...(webSocketProviders_[chain.id] || []), apiConfig.webSocketProvider];
626
+ }
627
+ } // If no API configuration was found across the providers
628
+ // then we throw an error to the consumer.
629
+
630
+
631
+ if (!configExists) {
632
+ throw new Error(["Could not find valid provider configuration for chain \"".concat(chain.name, "\".\n"), "You may need to add `jsonRpcProvider` to `configureChains` with the chain's RPC URLs.", 'Read more: https://wagmi.sh/docs/providers/jsonRpc'].join('\n'));
633
+ }
634
+ }
635
+
636
+ return {
637
+ chains,
638
+ provider: _ref2 => {
639
+ let {
640
+ chainId
641
+ } = _ref2;
642
+ const chainProviders = providers_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
643
+ if (chainProviders.length === 1) return chainProviders[0]();
644
+ return fallbackProvider(targetQuorum, minQuorum, chainProviders, {
645
+ stallTimeout
646
+ });
647
+ },
648
+ webSocketProvider: _ref3 => {
649
+ let {
650
+ chainId
651
+ } = _ref3;
652
+ const chainWebSocketProviders = webSocketProviders_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
653
+ if (!chainWebSocketProviders) return undefined;
654
+ if (chainWebSocketProviders.length === 1) return chainWebSocketProviders[0](); // WebSockets do not work with `fallbackProvider`
655
+ // Default to first available
656
+
657
+ return chainWebSocketProviders[0]();
658
+ }
659
+ };
660
+ }
661
+
662
+ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
663
+ let {
664
+ stallTimeout
665
+ } = _ref4;
666
+
667
+ try {
668
+ return new ethers$1.providers.FallbackProvider(providers_.map((chainProvider, index) => {
669
+ var _provider$priority, _provider$stallTimeou;
670
+
671
+ const provider = chainProvider();
672
+ return {
673
+ provider,
674
+ priority: (_provider$priority = provider.priority) !== null && _provider$priority !== void 0 ? _provider$priority : index,
675
+ stallTimeout: (_provider$stallTimeou = provider.stallTimeout) !== null && _provider$stallTimeou !== void 0 ? _provider$stallTimeou : stallTimeout,
676
+ weight: provider.weight
677
+ };
678
+ }), targetQuorum);
679
+ } catch (error) {
680
+ var _error$message;
681
+
682
+ if (error !== null && error !== void 0 && (_error$message = error.message) !== null && _error$message !== void 0 && _error$message.includes('quorum will always fail; larger than total weight')) {
683
+ if (targetQuorum === minQuorum) throw error;
684
+ return fallbackProvider(targetQuorum - 1, minQuorum, providers_, {
685
+ stallTimeout
686
+ });
687
+ }
688
+
689
+ throw error;
690
+ }
691
+ }
692
+
595
693
  exports.Client = client.Client;
596
694
  exports.InjectedConnector = client.InjectedConnector;
597
- exports.WagmiClient = client.Client;
598
695
  exports.createClient = client.createClient;
599
696
  exports.createStorage = client.createStorage;
600
- exports.createWagmiClient = client.createClient;
601
- exports.createWagmiStorage = client.createStorage;
602
697
  exports.noopStorage = client.noopStorage;
603
698
  exports.AddChainError = base.AddChainError;
604
699
  exports.ChainNotConfiguredError = base.ChainNotConfiguredError;
605
700
  exports.Connector = base.Connector;
606
701
  exports.ConnectorAlreadyConnectedError = base.ConnectorAlreadyConnectedError;
607
702
  exports.ConnectorNotFoundError = base.ConnectorNotFoundError;
703
+ exports.ProviderRpcError = base.ProviderRpcError;
704
+ exports.ResourceUnavailableError = base.ResourceUnavailableError;
705
+ exports.RpcError = base.RpcError;
608
706
  exports.SwitchChainError = base.SwitchChainError;
609
707
  exports.SwitchChainNotSupportedError = base.SwitchChainNotSupportedError;
610
708
  exports.UserRejectedRequestError = base.UserRejectedRequestError;
611
- exports.alchemyRpcUrls = base.alchemyRpcUrls;
612
709
  exports.allChains = base.allChains;
613
710
  exports.chain = base.chain;
614
711
  exports.chainId = base.chainId;
615
712
  exports.defaultChains = base.defaultChains;
616
713
  exports.defaultL2Chains = base.defaultL2Chains;
617
714
  exports.etherscanBlockExplorers = base.etherscanBlockExplorers;
618
- exports.infuraRpcUrls = base.infuraRpcUrls;
619
715
  exports.normalizeChainId = base.normalizeChainId;
716
+ exports.alchemyRpcUrls = rpcs.alchemyRpcUrls;
717
+ exports.infuraRpcUrls = rpcs.infuraRpcUrls;
718
+ exports.configureChains = configureChains;
620
719
  exports.connect = connect;
621
720
  exports.disconnect = disconnect;
622
721
  exports.erc20ABI = erc20ABI;
@@ -1,11 +1,11 @@
1
- import { c as client, g as getClient } from './client-3a56f061.esm.js';
2
- export { C as Client, I as InjectedConnector, C as WagmiClient, a as createClient, b as createStorage, a as createWagmiClient, b as createWagmiStorage, n as noopStorage } from './client-3a56f061.esm.js';
3
- import { C as ConnectorAlreadyConnectedError, a as allChains, b as ConnectorNotFoundError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-159de546.esm.js';
4
- export { A as AddChainError, k as ChainNotConfiguredError, c as Connector, C as ConnectorAlreadyConnectedError, b as ConnectorNotFoundError, l as SwitchChainError, S as SwitchChainNotSupportedError, U as UserRejectedRequestError, d as alchemyRpcUrls, a as allChains, e as chain, f as chainId, g as defaultChains, h as defaultL2Chains, i as etherscanBlockExplorers, j as infuraRpcUrls, n as normalizeChainId } from './base-159de546.esm.js';
1
+ import { c as client, g as getClient } from './client-1ab99bf8.esm.js';
2
+ export { C as Client, I as InjectedConnector, a as createClient, b as createStorage, n as noopStorage } from './client-1ab99bf8.esm.js';
3
+ import { C as ConnectorAlreadyConnectedError, a as allChains, b as ConnectorNotFoundError, U as UserRejectedRequestError, S as SwitchChainNotSupportedError } from './base-997b4fec.esm.js';
4
+ export { A as AddChainError, i as ChainNotConfiguredError, c as Connector, C as ConnectorAlreadyConnectedError, b as ConnectorNotFoundError, P as ProviderRpcError, R as ResourceUnavailableError, j as RpcError, k as SwitchChainError, S as SwitchChainNotSupportedError, U as UserRejectedRequestError, a as allChains, d as chain, e as chainId, f as defaultChains, g as defaultL2Chains, h as etherscanBlockExplorers, n as normalizeChainId } from './base-997b4fec.esm.js';
5
5
  import { Contract } from 'ethers/lib/ethers';
6
6
  import { formatUnits, getAddress } from 'ethers/lib/utils';
7
- import { Contract as Contract$1 } from 'ethers';
8
- import './classPrivateMethodGet-55c9909f.esm.js';
7
+ import { Contract as Contract$1, providers } from 'ethers';
8
+ export { a as alchemyRpcUrls, i as infuraRpcUrls } from './rpcs-7cfbd91c.esm.js';
9
9
  import 'zustand/vanilla';
10
10
  import 'zustand/middleware';
11
11
  import 'eventemitter3';
@@ -160,6 +160,7 @@ function getNetwork() {
160
160
  const activeChain = (_find = [...activeChains, ...allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
161
161
  id: chainId,
162
162
  name: "Chain ".concat(chainId),
163
+ network: "".concat(chainId),
163
164
  rpcUrls: {
164
165
  default: ''
165
166
  }
@@ -178,9 +179,8 @@ async function signMessage(args) {
178
179
  const signer = await fetchSigner();
179
180
  if (!signer) throw new ConnectorNotFoundError();
180
181
  return await signer.signMessage(args.message);
181
- } catch (error_) {
182
- let error = error_;
183
- if (error_.code === 4001) error = new UserRejectedRequestError();
182
+ } catch (error) {
183
+ if (error.code === 4001) throw new UserRejectedRequestError(error);
184
184
  throw error;
185
185
  }
186
186
  }
@@ -191,9 +191,8 @@ async function signTypedData(args) {
191
191
  if (!signer) throw new ConnectorNotFoundError(); // Method name may be changed in the future, see https://docs.ethers.io/v5/api/signer/#Signer-signTypedData
192
192
 
193
193
  return await signer._signTypedData(args.domain, args.types, args.value);
194
- } catch (error_) {
195
- let error = error_;
196
- if (error_.code === 4001) error = new UserRejectedRequestError();
194
+ } catch (error) {
195
+ if (error.code === 4001) throw new UserRejectedRequestError(error);
197
196
  throw error;
198
197
  }
199
198
  }
@@ -369,17 +368,17 @@ async function fetchBlockNumber() {
369
368
  function watchBlockNumber(args, callback) {
370
369
  var _client$webSocketProv;
371
370
 
372
- let prevProvider;
371
+ let previousProvider;
373
372
 
374
373
  const createListener = provider => {
375
- if (prevProvider) {
376
- var _prevProvider;
374
+ if (previousProvider) {
375
+ var _previousProvider;
377
376
 
378
- (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
377
+ (_previousProvider = previousProvider) === null || _previousProvider === void 0 ? void 0 : _previousProvider.off('block', callback);
379
378
  }
380
379
 
381
380
  provider.on('block', callback);
382
- prevProvider = provider;
381
+ previousProvider = provider;
383
382
  };
384
383
 
385
384
  const client = getClient();
@@ -454,9 +453,8 @@ async function writeContract(contractConfig, functionName) {
454
453
  if (!contractFunction) console.warn("\"".concat(functionName, "\" does not exist in interface for contract \"").concat(contractConfig.addressOrName, "\""));
455
454
  const response = await contractFunction(...params);
456
455
  return response;
457
- } catch (error_) {
458
- let error = error_;
459
- if (error_.code === 4001) error = new UserRejectedRequestError();
456
+ } catch (error) {
457
+ if (error.code === 4001) throw new UserRejectedRequestError(error);
460
458
  throw error;
461
459
  }
462
460
  }
@@ -563,9 +561,8 @@ async function sendTransaction(args) {
563
561
  if (!signer) throw new ConnectorNotFoundError();
564
562
  const transaction = await signer.sendTransaction(args.request);
565
563
  return transaction;
566
- } catch (error_) {
567
- let error = error_;
568
- if (error_.code === 4001) error = new UserRejectedRequestError();
564
+ } catch (error) {
565
+ if (error.code === 4001) throw new UserRejectedRequestError(error);
569
566
  throw error;
570
567
  }
571
568
  }
@@ -590,4 +587,105 @@ async function waitForTransaction(_ref) {
590
587
  return await promise;
591
588
  }
592
589
 
593
- export { connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchSigner, watchWebSocketProvider, writeContract };
590
+ function configureChains(defaultChains, providers) {
591
+ let {
592
+ minQuorum = 1,
593
+ targetQuorum = 1,
594
+ stallTimeout
595
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
596
+ if (targetQuorum < minQuorum) throw new Error('quorum cannot be lower than minQuorum');
597
+ let chains = [];
598
+ const providers_ = {};
599
+ const webSocketProviders_ = {};
600
+
601
+ for (const chain of defaultChains) {
602
+ let configExists = false;
603
+
604
+ for (const provider of providers) {
605
+ const apiConfig = provider(chain); // If no API configuration was found (ie. no RPC URL) for
606
+ // this provider, then we skip and check the next one.
607
+
608
+ if (!apiConfig) continue;
609
+ configExists = true;
610
+
611
+ if (!chains.some(_ref => {
612
+ let {
613
+ id
614
+ } = _ref;
615
+ return id === chain.id;
616
+ })) {
617
+ chains = [...chains, apiConfig.chain];
618
+ }
619
+
620
+ providers_[chain.id] = [...(providers_[chain.id] || []), apiConfig.provider];
621
+
622
+ if (apiConfig.webSocketProvider) {
623
+ webSocketProviders_[chain.id] = [...(webSocketProviders_[chain.id] || []), apiConfig.webSocketProvider];
624
+ }
625
+ } // If no API configuration was found across the providers
626
+ // then we throw an error to the consumer.
627
+
628
+
629
+ if (!configExists) {
630
+ throw new Error(["Could not find valid provider configuration for chain \"".concat(chain.name, "\".\n"), "You may need to add `jsonRpcProvider` to `configureChains` with the chain's RPC URLs.", 'Read more: https://wagmi.sh/docs/providers/jsonRpc'].join('\n'));
631
+ }
632
+ }
633
+
634
+ return {
635
+ chains,
636
+ provider: _ref2 => {
637
+ let {
638
+ chainId
639
+ } = _ref2;
640
+ const chainProviders = providers_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
641
+ if (chainProviders.length === 1) return chainProviders[0]();
642
+ return fallbackProvider(targetQuorum, minQuorum, chainProviders, {
643
+ stallTimeout
644
+ });
645
+ },
646
+ webSocketProvider: _ref3 => {
647
+ let {
648
+ chainId
649
+ } = _ref3;
650
+ const chainWebSocketProviders = webSocketProviders_[chainId && chains.some(x => x.id === chainId) ? chainId : defaultChains[0].id];
651
+ if (!chainWebSocketProviders) return undefined;
652
+ if (chainWebSocketProviders.length === 1) return chainWebSocketProviders[0](); // WebSockets do not work with `fallbackProvider`
653
+ // Default to first available
654
+
655
+ return chainWebSocketProviders[0]();
656
+ }
657
+ };
658
+ }
659
+
660
+ function fallbackProvider(targetQuorum, minQuorum, providers_, _ref4) {
661
+ let {
662
+ stallTimeout
663
+ } = _ref4;
664
+
665
+ try {
666
+ return new providers.FallbackProvider(providers_.map((chainProvider, index) => {
667
+ var _provider$priority, _provider$stallTimeou;
668
+
669
+ const provider = chainProvider();
670
+ return {
671
+ provider,
672
+ priority: (_provider$priority = provider.priority) !== null && _provider$priority !== void 0 ? _provider$priority : index,
673
+ stallTimeout: (_provider$stallTimeou = provider.stallTimeout) !== null && _provider$stallTimeou !== void 0 ? _provider$stallTimeou : stallTimeout,
674
+ weight: provider.weight
675
+ };
676
+ }), targetQuorum);
677
+ } catch (error) {
678
+ var _error$message;
679
+
680
+ if (error !== null && error !== void 0 && (_error$message = error.message) !== null && _error$message !== void 0 && _error$message.includes('quorum will always fail; larger than total weight')) {
681
+ if (targetQuorum === minQuorum) throw error;
682
+ return fallbackProvider(targetQuorum - 1, minQuorum, providers_, {
683
+ stallTimeout
684
+ });
685
+ }
686
+
687
+ throw error;
688
+ }
689
+ }
690
+
691
+ export { configureChains, connect, disconnect, erc20ABI, erc721ABI, fetchBalance, fetchBlockNumber, fetchEnsAddress, fetchEnsAvatar, fetchEnsName, fetchEnsResolver, fetchFeeData, fetchSigner, fetchToken, getAccount, getContract, getNetwork, getProvider, getWebSocketProvider, readContract, sendTransaction, signMessage, signTypedData, switchNetwork, units, waitForTransaction, watchAccount, watchBlockNumber, watchContractEvent, watchNetwork, watchProvider, watchReadContract, watchSigner, watchWebSocketProvider, writeContract };