@wagmi/core 0.2.0-next.9 → 0.2.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 (101) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -0
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -11
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +234 -0
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +6 -15
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +234 -0
  7. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +212 -0
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +62 -0
  10. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
  11. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +62 -0
  12. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +58 -0
  13. package/connectors/metaMask/package.json +4 -0
  14. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -11
  15. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +250 -0
  16. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +6 -15
  17. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +250 -0
  18. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +241 -0
  19. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -11
  20. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +183 -0
  21. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +6 -15
  22. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +183 -0
  23. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +161 -0
  24. package/dist/base-159de546.esm.js +513 -0
  25. package/dist/base-5812b724.cjs.dev.js +540 -0
  26. package/dist/base-59f3457e.cjs.prod.js +540 -0
  27. package/dist/classPrivateMethodGet-55c9909f.esm.js +16 -0
  28. package/dist/classPrivateMethodGet-976c8120.cjs.dev.js +19 -0
  29. package/dist/classPrivateMethodGet-d7330ed7.cjs.prod.js +19 -0
  30. package/dist/client-4d8337e7.cjs.prod.js +606 -0
  31. package/dist/client-5d456446.esm.js +595 -0
  32. package/dist/client-f77a08e4.cjs.dev.js +606 -0
  33. package/dist/declarations/src/actions/accounts/connect.d.ts +16 -0
  34. package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
  35. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +20 -0
  36. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
  37. package/dist/declarations/src/actions/accounts/getAccount.d.ts +7 -0
  38. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +9 -0
  39. package/dist/declarations/src/actions/accounts/index.d.ts +12 -0
  40. package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
  41. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +13 -0
  42. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
  43. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +4 -0
  44. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +3 -0
  45. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
  46. package/dist/declarations/src/actions/contracts/getContract.d.ts +11 -0
  47. package/dist/declarations/src/actions/contracts/index.d.ts +5 -0
  48. package/dist/declarations/src/actions/contracts/readContract.d.ts +14 -0
  49. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +14 -0
  50. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +7 -0
  51. package/dist/declarations/src/actions/contracts/writeContract.d.ts +11 -0
  52. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +8 -0
  53. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +8 -0
  54. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +8 -0
  55. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +9 -0
  56. package/dist/declarations/src/actions/ens/index.d.ts +4 -0
  57. package/dist/declarations/src/actions/index.d.ts +7 -0
  58. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +5 -0
  59. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +16 -0
  60. package/dist/declarations/src/actions/network-status/index.d.ts +3 -0
  61. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
  62. package/dist/declarations/src/actions/providers/getProvider.d.ts +7 -0
  63. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +7 -0
  64. package/dist/declarations/src/actions/providers/index.d.ts +4 -0
  65. package/dist/declarations/src/actions/providers/watchProvider.d.ts +4 -0
  66. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +4 -0
  67. package/dist/declarations/src/actions/tokens/fetchToken.d.ts +20 -0
  68. package/dist/declarations/src/actions/tokens/index.d.ts +1 -0
  69. package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
  70. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +7 -0
  71. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +17 -0
  72. package/dist/declarations/src/client.d.ts +81 -0
  73. package/dist/declarations/src/connectors/base.d.ts +55 -0
  74. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +52 -0
  75. package/dist/declarations/src/connectors/index.d.ts +2 -0
  76. package/dist/declarations/src/connectors/injected.d.ts +48 -0
  77. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  78. package/dist/declarations/src/connectors/mock/connector.d.ts +37 -0
  79. package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
  80. package/dist/declarations/src/connectors/mock/provider.d.ts +42 -0
  81. package/dist/declarations/src/connectors/walletConnect.d.ts +32 -0
  82. package/dist/declarations/src/constants/abis.d.ts +2 -0
  83. package/dist/declarations/src/constants/blockExplorers.d.ts +9 -0
  84. package/dist/declarations/src/constants/chains.d.ts +21 -0
  85. package/dist/declarations/src/constants/index.d.ts +7 -0
  86. package/dist/declarations/src/constants/rpcs.d.ts +9 -0
  87. package/dist/declarations/src/constants/units.d.ts +1 -0
  88. package/dist/declarations/src/errors.d.ts +28 -0
  89. package/dist/declarations/src/index.d.ts +12 -0
  90. package/dist/declarations/src/storage.d.ts +12 -0
  91. package/dist/declarations/src/types/index.d.ts +101 -0
  92. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
  93. package/dist/declarations/src/utils/index.d.ts +3 -0
  94. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
  95. package/dist/declarations/src/utils/warn.d.ts +1 -0
  96. package/dist/wagmi-core.cjs.d.ts +1 -11
  97. package/dist/wagmi-core.cjs.dev.js +653 -0
  98. package/dist/wagmi-core.cjs.js +6 -15
  99. package/dist/wagmi-core.cjs.prod.js +653 -0
  100. package/dist/wagmi-core.esm.js +593 -0
  101. package/package.json +24 -12
@@ -0,0 +1,653 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var client = require('./client-4d8337e7.cjs.prod.js');
6
+ var base = require('./base-59f3457e.cjs.prod.js');
7
+ var ethers = require('ethers/lib/ethers');
8
+ var utils = require('ethers/lib/utils');
9
+ require('./classPrivateMethodGet-d7330ed7.cjs.prod.js');
10
+ require('ethers');
11
+ require('zustand/vanilla');
12
+ require('zustand/middleware');
13
+ require('eventemitter3');
14
+
15
+ // https://ethereum.org/en/developers/docs/standards/tokens/erc-20
16
+ const erc20ABI = ['event Approval(address indexed _owner, address indexed _spender, uint256 _value)', 'event Transfer(address indexed _from, address indexed _to, uint256 _value)', 'function allowance(address _owner, address _spender) public view returns (uint256 remaining)', 'function approve(address _spender, uint256 _value) public returns (bool success)', 'function balanceOf(address _owner) public view returns (uint256 balance)', 'function decimals() public view returns (uint8)', 'function name() public view returns (string)', 'function symbol() public view returns (string)', 'function totalSupply() public view returns (uint256)', 'function transfer(address _to, uint256 _value) public returns (bool success)', 'function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)']; // https://ethereum.org/en/developers/docs/standards/tokens/erc-721
17
+
18
+ const erc721ABI = ['event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);', 'event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);', 'event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);', 'function approve(address _approved, uint256 _tokenId) external payable;', 'function balanceOf(address _owner) external view returns (uint256);', 'function getApproved(uint256 _tokenId) external view returns (address);', 'function isApprovedForAll(address _owner, address _operator) external view returns (bool);', 'function name() view returns (string memory)', 'function ownerOf(uint256 _tokenId) external view returns (address);', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;', 'function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;', 'function setApprovalForAll(address _operator, bool _approved) external;', 'function symbol() view returns (string memory)', 'function tokenByIndex(uint256 _index) view returns (uint256)', 'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256 tokenId)', 'function tokenURI(uint256 _tokenId) view returns (string memory)', 'function totalSupply() view returns (uint256)', 'function transferFrom(address _from, address _to, uint256 _tokenId) external payable;'];
19
+
20
+ // https://github.com/ethers-io/ethers.js/blob/master/packages/units/src.ts/index.ts#L10-L18
21
+ const units = ['wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether'];
22
+
23
+ async function connect(_ref) {
24
+ let {
25
+ connector
26
+ } = _ref;
27
+ const activeConnector = client.client.connector;
28
+ if (connector.id === (activeConnector === null || activeConnector === void 0 ? void 0 : activeConnector.id)) throw new base.ConnectorAlreadyConnectedError();
29
+ const data = await connector.connect();
30
+ client.client.setLastUsedConnector(connector.id);
31
+ client.client.setState(x => ({ ...x,
32
+ connector,
33
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
34
+ data
35
+ }));
36
+ client.client.storage.setItem('connected', true);
37
+ return { ...data,
38
+ connector
39
+ };
40
+ }
41
+
42
+ async function disconnect() {
43
+ const client$1 = client.getClient();
44
+ if (client$1.connector) await client$1.connector.disconnect();
45
+ client$1.clearState();
46
+ client$1.storage.removeItem('connected');
47
+ }
48
+
49
+ function getProvider() {
50
+ let {
51
+ chainId
52
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
53
+ const client$1 = client.getClient();
54
+ if (chainId && typeof client$1.config.provider === 'function') return client$1.config.provider({
55
+ chainId
56
+ });
57
+ return client$1.provider;
58
+ }
59
+
60
+ function getWebSocketProvider() {
61
+ let {
62
+ chainId
63
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
64
+ const client$1 = client.getClient();
65
+ if (chainId && typeof client$1.config.webSocketProvider === 'function') return client$1.config.webSocketProvider({
66
+ chainId
67
+ });
68
+ return client$1.webSocketProvider;
69
+ }
70
+
71
+ function watchProvider(args, callback) {
72
+ const client$1 = client.getClient();
73
+
74
+ const handleChange = async () => callback(getProvider(args));
75
+
76
+ const unsubscribe = client$1.subscribe(_ref => {
77
+ let {
78
+ provider
79
+ } = _ref;
80
+ return provider;
81
+ }, handleChange);
82
+ return unsubscribe;
83
+ }
84
+
85
+ function watchWebSocketProvider(args, callback) {
86
+ const client$1 = client.getClient();
87
+
88
+ const handleChange = async () => callback(getWebSocketProvider(args));
89
+
90
+ const unsubscribe = client$1.subscribe(_ref => {
91
+ let {
92
+ webSocketProvider
93
+ } = _ref;
94
+ return webSocketProvider;
95
+ }, handleChange);
96
+ return unsubscribe;
97
+ }
98
+
99
+ async function fetchBalance(_ref) {
100
+ var _client$connector$cha, _client$connector, _chain$nativeCurrency, _chain$nativeCurrency2, _chain$nativeCurrency3, _chain$nativeCurrency4;
101
+
102
+ let {
103
+ addressOrName,
104
+ chainId,
105
+ formatUnits: unit = 'ether',
106
+ token
107
+ } = _ref;
108
+ const client$1 = client.getClient();
109
+ const provider = getProvider({
110
+ chainId
111
+ });
112
+
113
+ if (token) {
114
+ const contract = new ethers.Contract(token, erc20ABI, provider);
115
+ const [value, decimals, symbol] = await Promise.all([contract.balanceOf(addressOrName), contract.decimals(), contract.symbol()]);
116
+ return {
117
+ decimals,
118
+ formatted: utils.formatUnits(value, unit),
119
+ symbol,
120
+ unit,
121
+ value
122
+ };
123
+ }
124
+
125
+ const chains = [...((_client$connector$cha = (_client$connector = client$1.connector) === null || _client$connector === void 0 ? void 0 : _client$connector.chains) !== null && _client$connector$cha !== void 0 ? _client$connector$cha : []), ...base.allChains];
126
+ const value = await provider.getBalance(addressOrName);
127
+ const chain = chains.find(x => x.id === provider.network.chainId);
128
+ return {
129
+ decimals: (_chain$nativeCurrency = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency2 = chain.nativeCurrency) === null || _chain$nativeCurrency2 === void 0 ? void 0 : _chain$nativeCurrency2.decimals) !== null && _chain$nativeCurrency !== void 0 ? _chain$nativeCurrency : 18,
130
+ formatted: utils.formatUnits(value, unit),
131
+ symbol: (_chain$nativeCurrency3 = chain === null || chain === void 0 ? void 0 : (_chain$nativeCurrency4 = chain.nativeCurrency) === null || _chain$nativeCurrency4 === void 0 ? void 0 : _chain$nativeCurrency4.symbol) !== null && _chain$nativeCurrency3 !== void 0 ? _chain$nativeCurrency3 : 'ETH',
132
+ unit,
133
+ value
134
+ };
135
+ }
136
+
137
+ async function fetchSigner() {
138
+ var _client$connector, _client$connector$get;
139
+
140
+ const client$1 = client.getClient();
141
+ const signer = (await ((_client$connector = client$1.connector) === null || _client$connector === void 0 ? void 0 : (_client$connector$get = _client$connector.getSigner) === null || _client$connector$get === void 0 ? void 0 : _client$connector$get.call(_client$connector))) || null;
142
+ return signer;
143
+ }
144
+
145
+ function getAccount() {
146
+ const {
147
+ data,
148
+ connector
149
+ } = client.getClient();
150
+ return {
151
+ address: data === null || data === void 0 ? void 0 : data.account,
152
+ connector
153
+ };
154
+ }
155
+
156
+ function getNetwork() {
157
+ var _client$data, _client$data$chain, _client$chains, _find, _client$data2;
158
+
159
+ const client$1 = client.getClient();
160
+ const chainId = (_client$data = client$1.data) === null || _client$data === void 0 ? void 0 : (_client$data$chain = _client$data.chain) === null || _client$data$chain === void 0 ? void 0 : _client$data$chain.id;
161
+ const activeChains = (_client$chains = client$1.chains) !== null && _client$chains !== void 0 ? _client$chains : [];
162
+ const activeChain = (_find = [...activeChains, ...base.allChains].find(x => x.id === chainId)) !== null && _find !== void 0 ? _find : {
163
+ id: chainId,
164
+ name: "Chain ".concat(chainId),
165
+ rpcUrls: {
166
+ default: ''
167
+ }
168
+ };
169
+ return {
170
+ chain: chainId ? { ...activeChain,
171
+ ...((_client$data2 = client$1.data) === null || _client$data2 === void 0 ? void 0 : _client$data2.chain),
172
+ id: chainId
173
+ } : undefined,
174
+ chains: activeChains
175
+ };
176
+ }
177
+
178
+ async function signMessage(args) {
179
+ try {
180
+ const signer = await fetchSigner();
181
+ if (!signer) throw new base.ConnectorNotFoundError();
182
+ return await signer.signMessage(args.message);
183
+ } catch (error_) {
184
+ let error = error_;
185
+ if (error_.code === 4001) error = new base.UserRejectedRequestError();
186
+ throw error;
187
+ }
188
+ }
189
+
190
+ async function signTypedData(args) {
191
+ try {
192
+ const signer = await fetchSigner();
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
+
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();
199
+ throw error;
200
+ }
201
+ }
202
+
203
+ async function switchNetwork(_ref) {
204
+ var _client$connector;
205
+
206
+ let {
207
+ chainId
208
+ } = _ref;
209
+ const client$1 = client.getClient();
210
+ if (!((_client$connector = client$1.connector) !== null && _client$connector !== void 0 && _client$connector.switchChain)) throw new base.SwitchChainNotSupportedError();
211
+ const chain = await client$1.connector.switchChain(chainId);
212
+ return chain;
213
+ }
214
+
215
+ function watchAccount(callback) {
216
+ const client$1 = client.getClient();
217
+
218
+ const handleChange = () => callback(getAccount());
219
+
220
+ const unsubscribe = client$1.subscribe(_ref => {
221
+ let {
222
+ data,
223
+ connector
224
+ } = _ref;
225
+ return {
226
+ account: data === null || data === void 0 ? void 0 : data.account,
227
+ connector
228
+ };
229
+ }, handleChange, {
230
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.connector === previous.connector
231
+ });
232
+ return unsubscribe;
233
+ }
234
+
235
+ function watchNetwork(callback) {
236
+ const client$1 = client.getClient();
237
+
238
+ const handleChange = () => callback(getNetwork());
239
+
240
+ const unsubscribe = client$1.subscribe(_ref => {
241
+ var _data$chain;
242
+
243
+ let {
244
+ data,
245
+ chains
246
+ } = _ref;
247
+ return {
248
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
249
+ chains
250
+ };
251
+ }, handleChange, {
252
+ equalityFn: (selected, previous) => selected.chainId === previous.chainId && selected.chains === previous.chains
253
+ });
254
+ return unsubscribe;
255
+ }
256
+
257
+ function watchSigner(callback) {
258
+ const client$1 = client.getClient();
259
+
260
+ const handleChange = async () => callback(await fetchSigner());
261
+
262
+ const unsubscribe = client$1.subscribe(_ref => {
263
+ var _data$chain;
264
+
265
+ let {
266
+ data,
267
+ connector
268
+ } = _ref;
269
+ return {
270
+ account: data === null || data === void 0 ? void 0 : data.account,
271
+ chainId: data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id,
272
+ connector
273
+ };
274
+ }, handleChange, {
275
+ equalityFn: (selected, previous) => selected.account === previous.account && selected.chainId === previous.chainId && selected.connector === previous.connector
276
+ });
277
+ return unsubscribe;
278
+ }
279
+
280
+ function getContract(_ref) {
281
+ let {
282
+ addressOrName,
283
+ contractInterface,
284
+ signerOrProvider
285
+ } = _ref;
286
+ return new ethers.Contract(addressOrName, contractInterface, signerOrProvider);
287
+ }
288
+
289
+ async function readContract(contractConfig, functionName) {
290
+ let {
291
+ args,
292
+ chainId,
293
+ overrides
294
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
295
+ const provider = getProvider({
296
+ chainId
297
+ });
298
+ const contract = getContract({
299
+ signerOrProvider: provider,
300
+ ...contractConfig
301
+ });
302
+ const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
303
+ const contractFunction = contract[functionName];
304
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
305
+ const response = await (contractFunction === null || contractFunction === void 0 ? void 0 : contractFunction(...params));
306
+ return response;
307
+ }
308
+
309
+ function watchContractEvent(
310
+ /** Contract configuration */
311
+ contractArgs,
312
+ /** Event name to listen to */
313
+ eventName, callback) {
314
+ let {
315
+ chainId,
316
+ once
317
+ } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
318
+ let contract;
319
+
320
+ const watchEvent = async () => {
321
+ if (contract) {
322
+ var _contract;
323
+
324
+ (_contract = contract) === null || _contract === void 0 ? void 0 : _contract.off(eventName, callback);
325
+ }
326
+
327
+ contract = getContract({
328
+ signerOrProvider: getWebSocketProvider({
329
+ chainId
330
+ }) || getProvider({
331
+ chainId
332
+ }),
333
+ ...contractArgs
334
+ });
335
+ if (once) contract.once(eventName, callback);else contract.on(eventName, callback);
336
+ };
337
+
338
+ watchEvent();
339
+ const client$1 = client.getClient();
340
+ const unsubscribe = client$1.subscribe(_ref => {
341
+ let {
342
+ provider,
343
+ webSocketProvider
344
+ } = _ref;
345
+ return {
346
+ provider,
347
+ webSocketProvider
348
+ };
349
+ }, watchEvent, {
350
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
351
+ });
352
+ return () => {
353
+ var _contract2;
354
+
355
+ (_contract2 = contract) === null || _contract2 === void 0 ? void 0 : _contract2.off(eventName, callback);
356
+ unsubscribe();
357
+ };
358
+ }
359
+
360
+ async function fetchBlockNumber() {
361
+ let {
362
+ chainId
363
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
364
+ const provider = getProvider({
365
+ chainId
366
+ });
367
+ const blockNumber = await provider.getBlockNumber();
368
+ return blockNumber;
369
+ }
370
+
371
+ function watchBlockNumber(args, callback) {
372
+ var _client$webSocketProv;
373
+
374
+ let prevProvider;
375
+
376
+ const createListener = provider => {
377
+ if (prevProvider) {
378
+ var _prevProvider;
379
+
380
+ (_prevProvider = prevProvider) === null || _prevProvider === void 0 ? void 0 : _prevProvider.off('block', callback);
381
+ }
382
+
383
+ provider.on('block', callback);
384
+ prevProvider = provider;
385
+ };
386
+
387
+ const client$1 = client.getClient();
388
+ const provider_ = (_client$webSocketProv = client$1.webSocketProvider) !== null && _client$webSocketProv !== void 0 ? _client$webSocketProv : client$1.provider;
389
+ if (args.listen) createListener(provider_);
390
+ const unsubscribe = client$1.subscribe(_ref => {
391
+ let {
392
+ provider,
393
+ webSocketProvider
394
+ } = _ref;
395
+ return {
396
+ provider,
397
+ webSocketProvider
398
+ };
399
+ }, async _ref2 => {
400
+ let {
401
+ provider,
402
+ webSocketProvider
403
+ } = _ref2;
404
+ const provider_ = webSocketProvider !== null && webSocketProvider !== void 0 ? webSocketProvider : provider;
405
+
406
+ if (args.listen && provider_) {
407
+ createListener(provider_);
408
+ }
409
+
410
+ callback(await fetchBlockNumber());
411
+ }, {
412
+ equalityFn: (selected, previous) => selected.provider === previous.provider && selected.webSocketProvider === previous.webSocketProvider
413
+ });
414
+ return () => {
415
+ unsubscribe();
416
+ provider_ === null || provider_ === void 0 ? void 0 : provider_.off('block', callback);
417
+ };
418
+ }
419
+
420
+ function watchReadContract(contractConfig, functionName) {
421
+ let config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
422
+ let callback = arguments.length > 3 ? arguments[3] : undefined;
423
+ const client$1 = client.getClient();
424
+
425
+ const handleChange = async () => callback(await readContract(contractConfig, functionName, config));
426
+
427
+ const unwatch = config.listenToBlock ? watchBlockNumber({
428
+ listen: true
429
+ }, handleChange) : undefined;
430
+ const unsubscribe = client$1.subscribe(_ref => {
431
+ let {
432
+ provider
433
+ } = _ref;
434
+ return provider;
435
+ }, handleChange);
436
+ return () => {
437
+ unsubscribe();
438
+ unwatch === null || unwatch === void 0 ? void 0 : unwatch();
439
+ };
440
+ }
441
+
442
+ async function writeContract(contractConfig, functionName) {
443
+ let {
444
+ args,
445
+ overrides
446
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
447
+ const client$1 = client.getClient();
448
+ if (!client$1.connector) throw new base.ConnectorNotFoundError();
449
+ const params = [...(Array.isArray(args) ? args : args ? [args] : []), ...(overrides ? [overrides] : [])];
450
+
451
+ try {
452
+ const signer = await client$1.connector.getSigner();
453
+ const contract = getContract(contractConfig);
454
+ const contractWithSigner = contract.connect(signer);
455
+ const contractFunction = contractWithSigner[functionName];
456
+ if (!contractFunction) console.warn("\"".concat(functionName, "\" does not in interface for contract \"").concat(contractConfig.addressOrName, "\""));
457
+ const response = await contractFunction(...params);
458
+ return response;
459
+ } catch (error_) {
460
+ let error = error_;
461
+ if (error_.code === 4001) error = new base.UserRejectedRequestError();
462
+ throw error;
463
+ }
464
+ }
465
+
466
+ async function fetchEnsAddress(_ref) {
467
+ let {
468
+ chainId,
469
+ name
470
+ } = _ref;
471
+ const provider = getProvider({
472
+ chainId
473
+ });
474
+ const address = await provider.resolveName(name);
475
+
476
+ try {
477
+ return address ? utils.getAddress(address) : null;
478
+ } catch (_error) {
479
+ return null;
480
+ }
481
+ }
482
+
483
+ async function fetchEnsAvatar(_ref) {
484
+ let {
485
+ addressOrName,
486
+ chainId
487
+ } = _ref;
488
+ const provider = getProvider({
489
+ chainId
490
+ }); // TODO: Update with more advanced logic
491
+ // https://github.com/ensdomains/ens-avatar
492
+
493
+ const avatar = await provider.getAvatar(addressOrName);
494
+ return avatar;
495
+ }
496
+
497
+ async function fetchEnsName(_ref) {
498
+ let {
499
+ address,
500
+ chainId
501
+ } = _ref;
502
+ const provider = getProvider({
503
+ chainId
504
+ });
505
+ return await provider.lookupAddress(address);
506
+ }
507
+
508
+ async function fetchEnsResolver(_ref) {
509
+ let {
510
+ chainId,
511
+ name
512
+ } = _ref;
513
+ const provider = getProvider({
514
+ chainId
515
+ });
516
+ const resolver = await provider.getResolver(name);
517
+ return resolver;
518
+ }
519
+
520
+ async function fetchFeeData() {
521
+ let {
522
+ chainId,
523
+ formatUnits: units = 'wei'
524
+ } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
525
+ const provider = getProvider({
526
+ chainId
527
+ });
528
+ const feeData = await provider.getFeeData();
529
+ const formatted = {
530
+ gasPrice: utils.formatUnits(feeData.gasPrice, units),
531
+ maxFeePerGas: utils.formatUnits(feeData.maxFeePerGas, units),
532
+ maxPriorityFeePerGas: utils.formatUnits(feeData.maxPriorityFeePerGas, units)
533
+ };
534
+ return { ...feeData,
535
+ formatted
536
+ };
537
+ }
538
+
539
+ async function fetchToken(_ref) {
540
+ let {
541
+ address,
542
+ chainId,
543
+ formatUnits: units = 'ether'
544
+ } = _ref;
545
+ const provider = getProvider({
546
+ chainId
547
+ });
548
+ const contract = new ethers.Contract(address, erc20ABI, provider);
549
+ const [symbol, decimals, totalSupply] = await Promise.all([contract.symbol(), contract.decimals(), contract.totalSupply()]);
550
+ const token = {
551
+ address,
552
+ decimals,
553
+ symbol,
554
+ totalSupply: {
555
+ formatted: utils.formatUnits(totalSupply, units),
556
+ value: totalSupply
557
+ }
558
+ };
559
+ return token;
560
+ }
561
+
562
+ async function sendTransaction(args) {
563
+ try {
564
+ const signer = await fetchSigner();
565
+ if (!signer) throw new base.ConnectorNotFoundError();
566
+ const transaction = await signer.sendTransaction(args.request);
567
+ return transaction;
568
+ } catch (error_) {
569
+ let error = error_;
570
+ if (error_.code === 4001) error = new base.UserRejectedRequestError();
571
+ throw error;
572
+ }
573
+ }
574
+
575
+ async function waitForTransaction(_ref) {
576
+ let {
577
+ chainId,
578
+ confirmations,
579
+ hash,
580
+ timeout,
581
+ wait: wait_
582
+ } = _ref;
583
+ let promise;
584
+
585
+ if (hash) {
586
+ const provider = getProvider({
587
+ chainId
588
+ });
589
+ promise = provider.waitForTransaction(hash, confirmations, timeout);
590
+ } else if (wait_) promise = wait_(confirmations);else throw new Error('hash or wait is required');
591
+
592
+ return await promise;
593
+ }
594
+
595
+ exports.Client = client.Client;
596
+ exports.InjectedConnector = client.InjectedConnector;
597
+ exports.WagmiClient = client.Client;
598
+ exports.createClient = client.createClient;
599
+ exports.createStorage = client.createStorage;
600
+ exports.createWagmiClient = client.createClient;
601
+ exports.createWagmiStorage = client.createStorage;
602
+ exports.noopStorage = client.noopStorage;
603
+ exports.AddChainError = base.AddChainError;
604
+ exports.ChainNotConfiguredError = base.ChainNotConfiguredError;
605
+ exports.Connector = base.Connector;
606
+ exports.ConnectorAlreadyConnectedError = base.ConnectorAlreadyConnectedError;
607
+ exports.ConnectorNotFoundError = base.ConnectorNotFoundError;
608
+ exports.SwitchChainError = base.SwitchChainError;
609
+ exports.SwitchChainNotSupportedError = base.SwitchChainNotSupportedError;
610
+ exports.UserRejectedRequestError = base.UserRejectedRequestError;
611
+ exports.alchemyRpcUrls = base.alchemyRpcUrls;
612
+ exports.allChains = base.allChains;
613
+ exports.chain = base.chain;
614
+ exports.chainId = base.chainId;
615
+ exports.defaultChains = base.defaultChains;
616
+ exports.defaultL2Chains = base.defaultL2Chains;
617
+ exports.etherscanBlockExplorers = base.etherscanBlockExplorers;
618
+ exports.infuraRpcUrls = base.infuraRpcUrls;
619
+ exports.normalizeChainId = base.normalizeChainId;
620
+ exports.connect = connect;
621
+ exports.disconnect = disconnect;
622
+ exports.erc20ABI = erc20ABI;
623
+ exports.erc721ABI = erc721ABI;
624
+ exports.fetchBalance = fetchBalance;
625
+ exports.fetchBlockNumber = fetchBlockNumber;
626
+ exports.fetchEnsAddress = fetchEnsAddress;
627
+ exports.fetchEnsAvatar = fetchEnsAvatar;
628
+ exports.fetchEnsName = fetchEnsName;
629
+ exports.fetchEnsResolver = fetchEnsResolver;
630
+ exports.fetchFeeData = fetchFeeData;
631
+ exports.fetchSigner = fetchSigner;
632
+ exports.fetchToken = fetchToken;
633
+ exports.getAccount = getAccount;
634
+ exports.getContract = getContract;
635
+ exports.getNetwork = getNetwork;
636
+ exports.getProvider = getProvider;
637
+ exports.getWebSocketProvider = getWebSocketProvider;
638
+ exports.readContract = readContract;
639
+ exports.sendTransaction = sendTransaction;
640
+ exports.signMessage = signMessage;
641
+ exports.signTypedData = signTypedData;
642
+ exports.switchNetwork = switchNetwork;
643
+ exports.units = units;
644
+ exports.waitForTransaction = waitForTransaction;
645
+ exports.watchAccount = watchAccount;
646
+ exports.watchBlockNumber = watchBlockNumber;
647
+ exports.watchContractEvent = watchContractEvent;
648
+ exports.watchNetwork = watchNetwork;
649
+ exports.watchProvider = watchProvider;
650
+ exports.watchReadContract = watchReadContract;
651
+ exports.watchSigner = watchSigner;
652
+ exports.watchWebSocketProvider = watchWebSocketProvider;
653
+ exports.writeContract = writeContract;