@wagmi/core 0.4.0-test.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/chains/dist/wagmi-core-chains.cjs.d.ts +1 -11
  2. package/chains/dist/wagmi-core-chains.cjs.dev.js +23 -0
  3. package/chains/dist/wagmi-core-chains.cjs.js +6 -15
  4. package/chains/dist/wagmi-core-chains.cjs.prod.js +23 -0
  5. package/chains/dist/wagmi-core-chains.esm.js +2 -0
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -11
  7. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +263 -0
  8. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +6 -15
  9. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +263 -0
  10. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +241 -0
  11. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -11
  12. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +80 -0
  13. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +6 -15
  14. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +80 -0
  15. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +76 -0
  16. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -11
  17. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +264 -0
  18. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +6 -15
  19. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +264 -0
  20. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +255 -0
  21. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -11
  22. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +227 -0
  23. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +6 -15
  24. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +227 -0
  25. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +205 -0
  26. package/dist/base-33eceda3.esm.js +302 -0
  27. package/dist/base-457b5f55.cjs.prod.js +328 -0
  28. package/dist/base-6f16410c.cjs.dev.js +328 -0
  29. package/dist/chains-1390c48d.cjs.prod.js +416 -0
  30. package/dist/chains-2ca34f98.cjs.dev.js +416 -0
  31. package/dist/chains-e98fda1e.esm.js +395 -0
  32. package/dist/client-71653c40.esm.js +641 -0
  33. package/dist/client-7864fb0c.cjs.prod.js +652 -0
  34. package/dist/client-b3902dbf.cjs.dev.js +652 -0
  35. package/dist/declarations/src/actions/accounts/connect.d.ts +18 -0
  36. package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
  37. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +20 -0
  38. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
  39. package/dist/declarations/src/actions/accounts/getAccount.d.ts +36 -0
  40. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +8 -0
  41. package/dist/declarations/src/actions/accounts/index.d.ts +12 -0
  42. package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
  43. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +20 -0
  44. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
  45. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +12 -0
  46. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +10 -0
  47. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
  48. package/dist/declarations/src/actions/contracts/getContract.d.ts +10 -0
  49. package/dist/declarations/src/actions/contracts/index.d.ts +7 -0
  50. package/dist/declarations/src/actions/contracts/multicall.d.ts +21 -0
  51. package/dist/declarations/src/actions/contracts/readContract.d.ts +17 -0
  52. package/dist/declarations/src/actions/contracts/readContracts.d.ts +19 -0
  53. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +14 -0
  54. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +6 -0
  55. package/dist/declarations/src/actions/contracts/watchReadContracts.d.ts +6 -0
  56. package/dist/declarations/src/actions/contracts/writeContract.d.ts +16 -0
  57. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +8 -0
  58. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +8 -0
  59. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +8 -0
  60. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +9 -0
  61. package/dist/declarations/src/actions/ens/index.d.ts +4 -0
  62. package/dist/declarations/src/actions/index.d.ts +7 -0
  63. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +5 -0
  64. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +16 -0
  65. package/dist/declarations/src/actions/network-status/index.d.ts +3 -0
  66. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
  67. package/dist/declarations/src/actions/providers/getProvider.d.ts +7 -0
  68. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +7 -0
  69. package/dist/declarations/src/actions/providers/index.d.ts +4 -0
  70. package/dist/declarations/src/actions/providers/watchProvider.d.ts +4 -0
  71. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +4 -0
  72. package/dist/declarations/src/actions/tokens/fetchToken.d.ts +20 -0
  73. package/dist/declarations/src/actions/tokens/index.d.ts +1 -0
  74. package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
  75. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +12 -0
  76. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +17 -0
  77. package/dist/declarations/src/chains.d.ts +1 -0
  78. package/dist/declarations/src/client.d.ts +77 -0
  79. package/dist/declarations/src/connectors/base.d.ts +61 -0
  80. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +54 -0
  81. package/dist/declarations/src/connectors/index.d.ts +2 -0
  82. package/dist/declarations/src/connectors/injected.d.ts +56 -0
  83. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  84. package/dist/declarations/src/connectors/mock/connector.d.ts +34 -0
  85. package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
  86. package/dist/declarations/src/connectors/mock/provider.d.ts +40 -0
  87. package/dist/declarations/src/connectors/walletConnect.d.ts +39 -0
  88. package/dist/declarations/src/constants/abis.d.ts +2 -0
  89. package/dist/declarations/src/constants/blockExplorers.d.ts +9 -0
  90. package/dist/declarations/src/constants/chains.d.ts +55 -0
  91. package/dist/declarations/src/constants/index.d.ts +8 -0
  92. package/dist/declarations/src/constants/multicall.d.ts +25 -0
  93. package/dist/declarations/src/constants/rpcs.d.ts +9 -0
  94. package/dist/declarations/src/constants/units.d.ts +1 -0
  95. package/dist/declarations/src/errors.d.ts +94 -0
  96. package/dist/declarations/src/index.d.ts +13 -0
  97. package/dist/declarations/src/providers/alchemy.d.ts +7 -0
  98. package/dist/declarations/src/providers/infura.d.ts +7 -0
  99. package/dist/declarations/src/providers/jsonRpc.d.ts +11 -0
  100. package/dist/declarations/src/providers/public.d.ts +6 -0
  101. package/dist/declarations/src/storage.d.ts +12 -0
  102. package/dist/declarations/src/types/index.d.ts +163 -0
  103. package/dist/declarations/src/utils/configureChains.d.ts +26 -0
  104. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
  105. package/dist/declarations/src/utils/index.d.ts +5 -0
  106. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
  107. package/dist/declarations/src/utils/warn.d.ts +1 -0
  108. package/dist/rpcs-7cfbd91c.esm.js +30 -0
  109. package/dist/rpcs-9c4eb960.cjs.dev.js +35 -0
  110. package/dist/rpcs-b3c52116.cjs.prod.js +35 -0
  111. package/dist/wagmi-core.cjs.d.ts +1 -11
  112. package/dist/wagmi-core.cjs.dev.js +1110 -0
  113. package/dist/wagmi-core.cjs.js +6 -15
  114. package/dist/wagmi-core.cjs.prod.js +1110 -0
  115. package/dist/wagmi-core.esm.js +1040 -0
  116. package/package.json +15 -3
  117. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.d.ts +1 -11
  118. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +38 -0
  119. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.js +6 -15
  120. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +38 -0
  121. package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +34 -0
  122. package/providers/infura/dist/wagmi-core-providers-infura.cjs.d.ts +1 -11
  123. package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +38 -0
  124. package/providers/infura/dist/wagmi-core-providers-infura.cjs.js +6 -15
  125. package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +38 -0
  126. package/providers/infura/dist/wagmi-core-providers-infura.esm.js +34 -0
  127. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.d.ts +1 -11
  128. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +48 -0
  129. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.js +6 -15
  130. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +48 -0
  131. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +44 -0
  132. package/providers/public/dist/wagmi-core-providers-public.cjs.d.ts +1 -11
  133. package/providers/public/dist/wagmi-core-providers-public.cjs.dev.js +34 -0
  134. package/providers/public/dist/wagmi-core-providers-public.cjs.js +6 -15
  135. package/providers/public/dist/wagmi-core-providers-public.cjs.prod.js +34 -0
  136. package/providers/public/dist/wagmi-core-providers-public.esm.js +30 -0
  137. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.d.ts +0 -1
  138. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.dev.js +0 -200
  139. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.js +0 -7
  140. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.prod.js +0 -200
  141. package/connectors/injected/dist/wagmi-core-connectors-injected.esm.js +0 -196
  142. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.d.ts +0 -11
  143. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.js +0 -16
@@ -0,0 +1,652 @@
1
+ 'use strict';
2
+
3
+ var base = require('./base-457b5f55.cjs.prod.js');
4
+ var create = require('zustand/vanilla');
5
+ var middleware = require('zustand/middleware');
6
+ var ethers = require('ethers');
7
+ var utils = require('ethers/lib/utils');
8
+
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
10
+
11
+ var create__default = /*#__PURE__*/_interopDefault(create);
12
+
13
+ function getInjectedName(ethereum) {
14
+ var _ethereum$providers, _getName;
15
+
16
+ if (!ethereum) return 'Injected';
17
+
18
+ const getName = provider => {
19
+ if (provider.isBraveWallet) return 'Brave Wallet';
20
+ if (provider.isCoinbaseWallet) return 'Coinbase Wallet';
21
+ if (provider.isExodus) return 'Exodus';
22
+ if (provider.isFrame) return 'Frame';
23
+ if (provider.isOpera) return 'Opera';
24
+ if (provider.isTally) return 'Tally';
25
+ if (provider.isTokenPocket) return 'TokenPocket';
26
+ if (provider.isTokenary) return 'Tokenary';
27
+ if (provider.isTrust) return 'Trust Wallet';
28
+ if (provider.isMetaMask) return 'MetaMask';
29
+ }; // Some injected providers detect multiple other providers and create a list at `ethers.providers`
30
+
31
+
32
+ if ((_ethereum$providers = ethereum.providers) !== null && _ethereum$providers !== void 0 && _ethereum$providers.length) {
33
+ var _names$;
34
+
35
+ // Deduplicate names using Set
36
+ // Coinbase Wallet puts multiple providers in `ethereum.providers`
37
+ const nameSet = new Set();
38
+ let unknownCount = 1;
39
+
40
+ for (const provider of ethereum.providers) {
41
+ let name = getName(provider);
42
+
43
+ if (!name) {
44
+ name = "Unknown Wallet #".concat(unknownCount);
45
+ unknownCount += 1;
46
+ }
47
+
48
+ nameSet.add(name);
49
+ }
50
+
51
+ const names = [...nameSet];
52
+ if (names.length) return names;
53
+ return (_names$ = names[0]) !== null && _names$ !== void 0 ? _names$ : 'Injected';
54
+ }
55
+
56
+ return (_getName = getName(ethereum)) !== null && _getName !== void 0 ? _getName : 'Injected';
57
+ }
58
+
59
+ const shimKey = 'injected.shimDisconnect';
60
+
61
+ var _provider = /*#__PURE__*/new WeakMap();
62
+
63
+ var _switchingChains = /*#__PURE__*/new WeakMap();
64
+
65
+ var _isUserRejectedRequestError = /*#__PURE__*/new WeakSet();
66
+
67
+ class InjectedConnector extends base.Connector {
68
+ constructor() {
69
+ let {
70
+ chains,
71
+ options = {
72
+ shimDisconnect: true
73
+ }
74
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
+ super({
76
+ chains,
77
+ options
78
+ });
79
+
80
+ base._classPrivateMethodInitSpec(this, _isUserRejectedRequestError);
81
+
82
+ base._defineProperty(this, "id", void 0);
83
+
84
+ base._defineProperty(this, "name", void 0);
85
+
86
+ base._defineProperty(this, "ready", typeof window != 'undefined' && !!window.ethereum);
87
+
88
+ base._classPrivateFieldInitSpec(this, _provider, {
89
+ writable: true,
90
+ value: void 0
91
+ });
92
+
93
+ base._classPrivateFieldInitSpec(this, _switchingChains, {
94
+ writable: true,
95
+ value: void 0
96
+ });
97
+
98
+ base._defineProperty(this, "onAccountsChanged", accounts => {
99
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
100
+ account: utils.getAddress(accounts[0])
101
+ });
102
+ });
103
+
104
+ base._defineProperty(this, "onChainChanged", chainId => {
105
+ const id = base.normalizeChainId(chainId);
106
+ const unsupported = this.isChainUnsupported(id);
107
+ this.emit('change', {
108
+ chain: {
109
+ id,
110
+ unsupported
111
+ }
112
+ });
113
+ });
114
+
115
+ base._defineProperty(this, "onDisconnect", () => {
116
+ var _this$options, _this$options2, _getClient$storage;
117
+
118
+ // We need this as MetaMask can emit the "disconnect" event
119
+ // upon switching chains. This workaround ensures that the
120
+ // user currently isn't in the process of switching chains.
121
+ if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.shimChainChangedDisconnect && base._classPrivateFieldGet(this, _switchingChains)) {
122
+ base._classPrivateFieldSet(this, _switchingChains, false);
123
+
124
+ return;
125
+ }
126
+
127
+ this.emit('disconnect');
128
+ if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.shimDisconnect) (_getClient$storage = getClient().storage) === null || _getClient$storage === void 0 ? void 0 : _getClient$storage.removeItem(shimKey);
129
+ });
130
+
131
+ let name = 'Injected';
132
+
133
+ if (typeof window !== 'undefined') {
134
+ const overrideName = options.name;
135
+ const detectedName = getInjectedName(window.ethereum);
136
+ if (overrideName) name = typeof overrideName === 'function' ? overrideName(detectedName) : overrideName;else name = typeof detectedName === 'string' ? detectedName : detectedName[0];
137
+ }
138
+
139
+ this.id = 'injected';
140
+ this.name = name;
141
+ }
142
+
143
+ async connect() {
144
+ let {
145
+ chainId
146
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
147
+
148
+ try {
149
+ var _this$options3, _getClient$storage2;
150
+
151
+ const provider = await this.getProvider();
152
+ if (!provider) throw new base.ConnectorNotFoundError();
153
+
154
+ if (provider.on) {
155
+ provider.on('accountsChanged', this.onAccountsChanged);
156
+ provider.on('chainChanged', this.onChainChanged);
157
+ provider.on('disconnect', this.onDisconnect);
158
+ }
159
+
160
+ this.emit('message', {
161
+ type: 'connecting'
162
+ });
163
+ const account = await this.getAccount(); // Switch to chain if provided
164
+
165
+ let id = await this.getChainId();
166
+ let unsupported = this.isChainUnsupported(id);
167
+
168
+ if (chainId && id !== chainId) {
169
+ const chain = await this.switchChain(chainId);
170
+ id = chain.id;
171
+ unsupported = this.isChainUnsupported(id);
172
+ }
173
+
174
+ if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.shimDisconnect) (_getClient$storage2 = getClient().storage) === null || _getClient$storage2 === void 0 ? void 0 : _getClient$storage2.setItem(shimKey, true);
175
+ return {
176
+ account,
177
+ chain: {
178
+ id,
179
+ unsupported
180
+ },
181
+ provider
182
+ };
183
+ } catch (error) {
184
+ if (base._classPrivateMethodGet(this, _isUserRejectedRequestError, _isUserRejectedRequestError2).call(this, error)) throw new base.UserRejectedRequestError(error);
185
+ if (error.code === -32002) throw new base.ResourceUnavailableError(error);
186
+ throw error;
187
+ }
188
+ }
189
+
190
+ async disconnect() {
191
+ var _this$options4, _getClient$storage3;
192
+
193
+ const provider = await this.getProvider();
194
+ if (!(provider !== null && provider !== void 0 && provider.removeListener)) return;
195
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
196
+ provider.removeListener('chainChanged', this.onChainChanged);
197
+ provider.removeListener('disconnect', this.onDisconnect);
198
+ if ((_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.shimDisconnect) (_getClient$storage3 = getClient().storage) === null || _getClient$storage3 === void 0 ? void 0 : _getClient$storage3.removeItem(shimKey);
199
+ }
200
+
201
+ async getAccount() {
202
+ const provider = await this.getProvider();
203
+ if (!provider) throw new base.ConnectorNotFoundError();
204
+ const accounts = await provider.request({
205
+ method: 'eth_requestAccounts'
206
+ }); // return checksum address
207
+
208
+ return utils.getAddress(accounts[0]);
209
+ }
210
+
211
+ async getChainId() {
212
+ const provider = await this.getProvider();
213
+ if (!provider) throw new base.ConnectorNotFoundError();
214
+ return await provider.request({
215
+ method: 'eth_chainId'
216
+ }).then(base.normalizeChainId);
217
+ }
218
+
219
+ async getProvider() {
220
+ if (typeof window !== 'undefined' && !!window.ethereum) base._classPrivateFieldSet(this, _provider, window.ethereum);
221
+ return base._classPrivateFieldGet(this, _provider);
222
+ }
223
+
224
+ async getSigner() {
225
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
226
+ return new ethers.providers.Web3Provider(provider).getSigner(account);
227
+ }
228
+
229
+ async isAuthorized() {
230
+ try {
231
+ var _this$options5, _getClient$storage4;
232
+
233
+ if ((_this$options5 = this.options) !== null && _this$options5 !== void 0 && _this$options5.shimDisconnect && !((_getClient$storage4 = getClient().storage) !== null && _getClient$storage4 !== void 0 && _getClient$storage4.getItem(shimKey))) return false;
234
+ const provider = await this.getProvider();
235
+ if (!provider) throw new base.ConnectorNotFoundError();
236
+ const accounts = await provider.request({
237
+ method: 'eth_accounts'
238
+ });
239
+ const account = accounts[0];
240
+ return !!account;
241
+ } catch {
242
+ return false;
243
+ }
244
+ }
245
+
246
+ async switchChain(chainId) {
247
+ var _this$options6;
248
+
249
+ if ((_this$options6 = this.options) !== null && _this$options6 !== void 0 && _this$options6.shimChainChangedDisconnect) base._classPrivateFieldSet(this, _switchingChains, true);
250
+ const provider = await this.getProvider();
251
+ if (!provider) throw new base.ConnectorNotFoundError();
252
+ const id = utils.hexValue(chainId);
253
+
254
+ try {
255
+ var _this$chains$find;
256
+
257
+ await provider.request({
258
+ method: 'wallet_switchEthereumChain',
259
+ params: [{
260
+ chainId: id
261
+ }]
262
+ });
263
+ return (_this$chains$find = this.chains.find(x => x.id === chainId)) !== null && _this$chains$find !== void 0 ? _this$chains$find : {
264
+ id: chainId,
265
+ name: "Chain ".concat(id),
266
+ network: "".concat(id),
267
+ rpcUrls: {
268
+ default: ''
269
+ }
270
+ };
271
+ } catch (error) {
272
+ const chain = this.chains.find(x => x.id === chainId);
273
+ if (!chain) throw new base.ChainNotConfiguredError(); // Indicates chain is not added to provider
274
+
275
+ if (error.code === 4902) {
276
+ try {
277
+ await provider.request({
278
+ method: 'wallet_addEthereumChain',
279
+ params: [{
280
+ chainId: id,
281
+ chainName: chain.name,
282
+ nativeCurrency: chain.nativeCurrency,
283
+ rpcUrls: [chain.rpcUrls.default],
284
+ blockExplorerUrls: this.getBlockExplorerUrls(chain)
285
+ }]
286
+ });
287
+ return chain;
288
+ } catch (addError) {
289
+ if (base._classPrivateMethodGet(this, _isUserRejectedRequestError, _isUserRejectedRequestError2).call(this, addError)) throw new base.UserRejectedRequestError(error);
290
+ throw new base.AddChainError();
291
+ }
292
+ }
293
+
294
+ if (base._classPrivateMethodGet(this, _isUserRejectedRequestError, _isUserRejectedRequestError2).call(this, error)) throw new base.UserRejectedRequestError(error);
295
+ throw new base.SwitchChainError(error);
296
+ }
297
+ }
298
+
299
+ async watchAsset(_ref) {
300
+ let {
301
+ address,
302
+ decimals = 18,
303
+ image,
304
+ symbol
305
+ } = _ref;
306
+ const provider = await this.getProvider();
307
+ if (!provider) throw new base.ConnectorNotFoundError();
308
+ return await provider.request({
309
+ method: 'wallet_watchAsset',
310
+ params: {
311
+ type: 'ERC20',
312
+ options: {
313
+ address,
314
+ decimals,
315
+ image,
316
+ symbol
317
+ }
318
+ }
319
+ });
320
+ }
321
+
322
+ }
323
+
324
+ function _isUserRejectedRequestError2(error) {
325
+ return error.code === 4001;
326
+ }
327
+
328
+ const noopStorage = {
329
+ getItem: _key => '',
330
+ setItem: (_key, _value) => null,
331
+ removeItem: _key => null
332
+ };
333
+ function createStorage(_ref) {
334
+ let {
335
+ storage,
336
+ key: prefix = 'wagmi'
337
+ } = _ref;
338
+ return { ...storage,
339
+ getItem: function (key) {
340
+ let defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
341
+ const value = storage.getItem("".concat(prefix, ".").concat(key));
342
+
343
+ try {
344
+ return value ? JSON.parse(value) : defaultState;
345
+ } catch (error) {
346
+ console.warn(error);
347
+ return defaultState;
348
+ }
349
+ },
350
+ setItem: (key, value) => {
351
+ if (value === null) {
352
+ storage.removeItem("".concat(prefix, ".").concat(key));
353
+ } else {
354
+ try {
355
+ storage.setItem("".concat(prefix, ".").concat(key), JSON.stringify(value));
356
+ } catch (err) {
357
+ console.error(err);
358
+ }
359
+ }
360
+ },
361
+ removeItem: key => storage.removeItem("".concat(prefix, ".").concat(key))
362
+ };
363
+ }
364
+
365
+ const storeKey = 'store';
366
+
367
+ var _isAutoConnecting = /*#__PURE__*/new WeakMap();
368
+
369
+ var _lastUsedConnector = /*#__PURE__*/new WeakMap();
370
+
371
+ var _addEffects = /*#__PURE__*/new WeakSet();
372
+
373
+ class Client {
374
+ constructor(_ref) {
375
+ let {
376
+ autoConnect = false,
377
+ connectors = [new InjectedConnector()],
378
+ provider: _provider,
379
+ storage = createStorage({
380
+ storage: typeof window !== 'undefined' ? window.localStorage : noopStorage
381
+ }),
382
+ webSocketProvider: _webSocketProvider
383
+ } = _ref;
384
+
385
+ base._classPrivateMethodInitSpec(this, _addEffects);
386
+
387
+ base._defineProperty(this, "config", void 0);
388
+
389
+ base._defineProperty(this, "storage", void 0);
390
+
391
+ base._defineProperty(this, "store", void 0);
392
+
393
+ base._classPrivateFieldInitSpec(this, _isAutoConnecting, {
394
+ writable: true,
395
+ value: void 0
396
+ });
397
+
398
+ base._classPrivateFieldInitSpec(this, _lastUsedConnector, {
399
+ writable: true,
400
+ value: void 0
401
+ });
402
+
403
+ // Check status for autoConnect flag
404
+ let status = 'disconnected';
405
+
406
+ let _chainId;
407
+
408
+ if (autoConnect) {
409
+ try {
410
+ var _JSON$parse, _JSON$parse$state, _data$chain;
411
+
412
+ const rawState = storage.getItem(storeKey, '');
413
+ 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
414
+
415
+ status = data !== null && data !== void 0 && data.account ? 'reconnecting' : 'connecting';
416
+ _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
417
+ } catch (_error) {}
418
+ } // Create store
419
+
420
+
421
+ this.store = create__default["default"](middleware.subscribeWithSelector(middleware.persist(() => ({
422
+ connectors: typeof connectors === 'function' ? connectors() : connectors,
423
+ provider: typeof _provider === 'function' ? _provider({
424
+ chainId: _chainId
425
+ }) : _provider,
426
+ status,
427
+ webSocketProvider: typeof _webSocketProvider === 'function' ? _webSocketProvider({
428
+ chainId: _chainId
429
+ }) : _webSocketProvider
430
+ }), {
431
+ name: storeKey,
432
+ getStorage: () => storage,
433
+ partialize: state => {
434
+ var _state$data, _state$data2;
435
+
436
+ return { ...(autoConnect && {
437
+ data: {
438
+ account: state === null || state === void 0 ? void 0 : (_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.account,
439
+ chain: state === null || state === void 0 ? void 0 : (_state$data2 = state.data) === null || _state$data2 === void 0 ? void 0 : _state$data2.chain
440
+ }
441
+ }),
442
+ chains: state === null || state === void 0 ? void 0 : state.chains
443
+ };
444
+ },
445
+ version: 1
446
+ })));
447
+ this.config = {
448
+ autoConnect,
449
+ connectors,
450
+ provider: _provider,
451
+ storage,
452
+ webSocketProvider: _webSocketProvider
453
+ };
454
+ this.storage = storage;
455
+
456
+ base._classPrivateFieldSet(this, _lastUsedConnector, storage === null || storage === void 0 ? void 0 : storage.getItem('wallet'));
457
+
458
+ base._classPrivateMethodGet(this, _addEffects, _addEffects2).call(this);
459
+ }
460
+
461
+ get chains() {
462
+ return this.store.getState().chains;
463
+ }
464
+
465
+ get connectors() {
466
+ return this.store.getState().connectors;
467
+ }
468
+
469
+ get connector() {
470
+ return this.store.getState().connector;
471
+ }
472
+
473
+ get data() {
474
+ return this.store.getState().data;
475
+ }
476
+
477
+ get error() {
478
+ return this.store.getState().error;
479
+ }
480
+
481
+ get lastUsedChainId() {
482
+ var _this$data, _this$data$chain;
483
+
484
+ return (_this$data = this.data) === null || _this$data === void 0 ? void 0 : (_this$data$chain = _this$data.chain) === null || _this$data$chain === void 0 ? void 0 : _this$data$chain.id;
485
+ }
486
+
487
+ get provider() {
488
+ return this.store.getState().provider;
489
+ }
490
+
491
+ get status() {
492
+ return this.store.getState().status;
493
+ }
494
+
495
+ get subscribe() {
496
+ return this.store.subscribe;
497
+ }
498
+
499
+ get webSocketProvider() {
500
+ return this.store.getState().webSocketProvider;
501
+ }
502
+
503
+ setState(updater) {
504
+ const newState = typeof updater === 'function' ? updater(this.store.getState()) : updater;
505
+ this.store.setState(newState, true);
506
+ }
507
+
508
+ clearState() {
509
+ this.setState(x => ({ ...x,
510
+ connector: undefined,
511
+ data: undefined,
512
+ error: undefined,
513
+ status: 'disconnected'
514
+ }));
515
+ }
516
+
517
+ async destroy() {
518
+ var _this$connector$disco, _this$connector;
519
+
520
+ 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));
521
+
522
+ base._classPrivateFieldSet(this, _isAutoConnecting, false);
523
+
524
+ this.clearState();
525
+ this.store.destroy();
526
+ }
527
+
528
+ async autoConnect() {
529
+ if (base._classPrivateFieldGet(this, _isAutoConnecting)) return;
530
+
531
+ base._classPrivateFieldSet(this, _isAutoConnecting, true);
532
+
533
+ if (!this.connectors.length) return; // Try last used connector first
534
+
535
+ const sorted = base._classPrivateFieldGet(this, _lastUsedConnector) ? [...this.connectors].sort(x => x.id === base._classPrivateFieldGet(this, _lastUsedConnector) ? -1 : 1) : this.connectors;
536
+ let connected = false;
537
+
538
+ for (const connector of sorted) {
539
+ if (!connector.ready || !connector.isAuthorized) continue;
540
+ const isAuthorized = await connector.isAuthorized();
541
+ if (!isAuthorized) continue;
542
+ const data = await connector.connect();
543
+ this.setState(x => ({ ...x,
544
+ connector,
545
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
546
+ data,
547
+ status: 'connected'
548
+ }));
549
+ connected = true;
550
+ break;
551
+ } // If connecting didn't succeed, set to disconnected
552
+
553
+
554
+ if (!connected) this.setState(x => ({ ...x,
555
+ data: undefined,
556
+ status: 'disconnected'
557
+ }));
558
+
559
+ base._classPrivateFieldSet(this, _isAutoConnecting, false);
560
+
561
+ return this.data;
562
+ }
563
+
564
+ setLastUsedConnector() {
565
+ var _this$storage;
566
+
567
+ let lastUsedConnector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
568
+ (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.setItem('wallet', lastUsedConnector);
569
+ }
570
+
571
+ }
572
+
573
+ function _addEffects2() {
574
+ const onChange = data => {
575
+ this.setState(x => ({ ...x,
576
+ data: { ...x.data,
577
+ ...data
578
+ }
579
+ }));
580
+ };
581
+
582
+ const onDisconnect = () => {
583
+ this.clearState();
584
+ };
585
+
586
+ const onError = error => {
587
+ this.setState(x => ({ ...x,
588
+ error
589
+ }));
590
+ };
591
+
592
+ this.store.subscribe(_ref2 => {
593
+ let {
594
+ connector
595
+ } = _ref2;
596
+ return connector;
597
+ }, (connector, prevConnector) => {
598
+ var _prevConnector$off, _prevConnector$off2, _prevConnector$off3, _connector$on, _connector$on2, _connector$on3;
599
+
600
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off = prevConnector.off) === null || _prevConnector$off === void 0 ? void 0 : _prevConnector$off.call(prevConnector, 'change', onChange);
601
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off2 = prevConnector.off) === null || _prevConnector$off2 === void 0 ? void 0 : _prevConnector$off2.call(prevConnector, 'disconnect', onDisconnect);
602
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off3 = prevConnector.off) === null || _prevConnector$off3 === void 0 ? void 0 : _prevConnector$off3.call(prevConnector, 'error', onError);
603
+ if (!connector) return;
604
+ (_connector$on = connector.on) === null || _connector$on === void 0 ? void 0 : _connector$on.call(connector, 'change', onChange);
605
+ (_connector$on2 = connector.on) === null || _connector$on2 === void 0 ? void 0 : _connector$on2.call(connector, 'disconnect', onDisconnect);
606
+ (_connector$on3 = connector.on) === null || _connector$on3 === void 0 ? void 0 : _connector$on3.call(connector, 'error', onError);
607
+ });
608
+ const {
609
+ provider,
610
+ webSocketProvider
611
+ } = this.config;
612
+ const subscribeProvider = typeof provider === 'function';
613
+ const subscribeWebSocketProvider = typeof webSocketProvider === 'function';
614
+ if (subscribeProvider || subscribeWebSocketProvider) this.store.subscribe(_ref3 => {
615
+ var _data$chain2;
616
+
617
+ let {
618
+ data
619
+ } = _ref3;
620
+ return data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.id;
621
+ }, chainId => {
622
+ this.setState(x => ({ ...x,
623
+ provider: subscribeProvider ? provider({
624
+ chainId
625
+ }) : x.provider,
626
+ webSocketProvider: subscribeWebSocketProvider ? webSocketProvider({
627
+ chainId
628
+ }) : x.webSocketProvider
629
+ }));
630
+ });
631
+ }
632
+
633
+ exports.client = void 0;
634
+ function createClient(config) {
635
+ const client_ = new Client(config);
636
+ exports.client = client_;
637
+ return client_;
638
+ }
639
+ function getClient() {
640
+ if (!exports.client) {
641
+ throw new Error('No wagmi client found. Ensure you have set up a client: https://wagmi.sh/docs/client');
642
+ }
643
+
644
+ return exports.client;
645
+ }
646
+
647
+ exports.Client = Client;
648
+ exports.InjectedConnector = InjectedConnector;
649
+ exports.createClient = createClient;
650
+ exports.createStorage = createStorage;
651
+ exports.getClient = getClient;
652
+ exports.noopStorage = noopStorage;