wagmi-extended 1.1.8 → 2.0.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.
- package/README.md +1 -1
- package/dist/fetch-functions/erc20/fetchAllowanceX.d.ts +4 -0
- package/dist/fetch-functions/erc20/fetchBalanceOfX.d.ts +4 -0
- package/dist/fetch-functions/erc20/fetchERC20DataX.d.ts +18 -0
- package/dist/fetch-functions/erc20/fetchNameX.d.ts +4 -0
- package/dist/fetch-functions/erc20/fetchSymbolX.d.ts +4 -0
- package/dist/fetch-functions/erc20/fetchTotalSupplyX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626AssetX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626ConvertToAssetsX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626ConvertToSharesX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626DataX.d.ts +24 -0
- package/dist/fetch-functions/erc4626/fetchERC4626MaxDepositX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626MaxMintX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626MaxRedeemX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626MaxWithdrawX.d.ts +4 -0
- package/dist/fetch-functions/erc4626/fetchERC4626TotalAssetsX.d.ts +4 -0
- package/dist/hooks/{useContractWriteX.d.ts → mutations/useContractWriteX.d.ts} +40 -35
- package/dist/hooks/{useHandleTransactionMutationX.d.ts → mutations/useHandleTransactionMutationX.d.ts} +8 -1
- package/dist/hooks/{useSendTransactionX.d.ts → mutations/useSendTransactionX.d.ts} +14 -13
- package/dist/hooks/queries/useERC20Data.d.ts +22 -0
- package/dist/hooks/queries/useFetchERC4626DataX.d.ts +28 -0
- package/dist/hooks/{useTokenX.d.ts → queries/useTokenX.d.ts} +18 -18
- package/dist/index.cjs.js +349 -114
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +17 -5
- package/dist/index.esm.js +339 -116
- package/dist/index.esm.js.map +1 -1
- package/dist/query-config/index.d.ts +20 -2
- package/dist/utils/ensureClientAndConfig.d.ts +6 -0
- package/package.json +1 -1
- package/src/fetch-functions/erc20/fetchAllowanceX.ts +31 -0
- package/src/fetch-functions/erc20/fetchBalanceOfX.ts +28 -0
- package/src/fetch-functions/erc20/fetchERC20DataX.ts +52 -0
- package/src/fetch-functions/erc20/fetchNameX.ts +26 -0
- package/src/fetch-functions/erc20/fetchSymbolX.ts +26 -0
- package/src/fetch-functions/erc20/fetchTotalSupplyX.ts +26 -0
- package/src/fetch-functions/erc4626/fetchERC4626AssetX.ts +25 -0
- package/src/fetch-functions/erc4626/fetchERC4626ConvertToAssetsX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626ConvertToSharesX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626DataX.ts +60 -0
- package/src/fetch-functions/erc4626/fetchERC4626MaxDepositX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626MaxMintX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626MaxRedeemX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626MaxWithdrawX.ts +27 -0
- package/src/fetch-functions/erc4626/fetchERC4626TotalAssetsX.ts +25 -0
- package/src/fetch-functions/fetchTokenX.ts +16 -30
- package/src/hooks/{useContractWriteX.ts → mutations/useContractWriteX.ts} +32 -12
- package/src/hooks/{useERC20ApproveX.ts → mutations/useERC20ApproveX.ts} +1 -1
- package/src/hooks/{useHandleTransactionMutationX.ts → mutations/useHandleTransactionMutationX.ts} +30 -4
- package/src/hooks/{useSendTransactionX.ts → mutations/useSendTransactionX.ts} +36 -3
- package/src/hooks/queries/useERC20Data.ts +40 -0
- package/src/hooks/{useFetchAssetAllowanceX.ts → queries/useFetchAssetAllowanceX.ts} +6 -4
- package/src/hooks/queries/useFetchERC4626DataX.ts +39 -0
- package/src/hooks/{useTokenX.ts → queries/useTokenX.ts} +1 -1
- package/src/index.ts +17 -5
- package/src/query-config/index.ts +13 -3
- package/src/utils/ensureClientAndConfig.ts +18 -0
- package/dist/fetch-functions/fetchAllowanceX.d.ts +0 -2
- package/src/fetch-functions/fetchAllowanceX.ts +0 -22
- /package/dist/hooks/{useERC20ApproveX.d.ts → mutations/useERC20ApproveX.d.ts} +0 -0
- /package/dist/hooks/{useInvalidateQueries.d.ts → mutations/useInvalidateQueries.d.ts} +0 -0
- /package/dist/hooks/{useFetchAssetAllowanceX.d.ts → queries/useFetchAssetAllowanceX.d.ts} +0 -0
- /package/src/hooks/{useInvalidateQueries.ts → mutations/useInvalidateQueries.ts} +0 -0
package/dist/index.cjs.js
CHANGED
|
@@ -3,11 +3,24 @@
|
|
|
3
3
|
var wagmi = require('wagmi');
|
|
4
4
|
var actions = require('wagmi/actions');
|
|
5
5
|
var react = require('react');
|
|
6
|
-
var viem = require('viem');
|
|
7
6
|
var reactQuery = require('@tanstack/react-query');
|
|
8
|
-
var
|
|
7
|
+
var viem = require('viem');
|
|
9
8
|
var query = require('wagmi/query');
|
|
10
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Hook to invalidate multiple queries in the React Query cache.
|
|
12
|
+
*
|
|
13
|
+
* @returns An object with the invalidateMany function.
|
|
14
|
+
*/
|
|
15
|
+
function useInvalidateQueries() {
|
|
16
|
+
const queryClient = reactQuery.useQueryClient();
|
|
17
|
+
const invalidateMany = async (queries) => {
|
|
18
|
+
const promises = queries.map((queryKey) => queryClient.invalidateQueries({ queryKey }));
|
|
19
|
+
await Promise.all(promises);
|
|
20
|
+
};
|
|
21
|
+
return { invalidateMany };
|
|
22
|
+
}
|
|
23
|
+
|
|
11
24
|
/**
|
|
12
25
|
* Default error mapping that contains a set of error identifiers mapped to user-friendly error messages.
|
|
13
26
|
*/
|
|
@@ -91,20 +104,6 @@ const getParsedErrorX = (error) => {
|
|
|
91
104
|
return message;
|
|
92
105
|
};
|
|
93
106
|
|
|
94
|
-
/**
|
|
95
|
-
* Hook to invalidate multiple queries in the React Query cache.
|
|
96
|
-
*
|
|
97
|
-
* @returns An object with the invalidateMany function.
|
|
98
|
-
*/
|
|
99
|
-
function useInvalidateQueries() {
|
|
100
|
-
const queryClient = reactQuery.useQueryClient();
|
|
101
|
-
const invalidateMany = async (queries) => {
|
|
102
|
-
const promises = queries.map((queryKey) => queryClient.invalidateQueries({ queryKey }));
|
|
103
|
-
await Promise.all(promises);
|
|
104
|
-
};
|
|
105
|
-
return { invalidateMany };
|
|
106
|
-
}
|
|
107
|
-
|
|
108
107
|
/**
|
|
109
108
|
* Custom hook to handle transaction mutations.
|
|
110
109
|
*
|
|
@@ -112,6 +111,7 @@ function useInvalidateQueries() {
|
|
|
112
111
|
*/
|
|
113
112
|
function useHandleTransactionMutationX({ settings, }) {
|
|
114
113
|
const wagmiConfig = wagmi.useConfig();
|
|
114
|
+
const queryClient = reactQuery.useQueryClient();
|
|
115
115
|
const { invalidateMany } = useInvalidateQueries();
|
|
116
116
|
const [isPending, setIsPending] = react.useState(false);
|
|
117
117
|
const [errorMessage, setErrorMessage] = react.useState(undefined);
|
|
@@ -136,10 +136,21 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
136
136
|
throw new Error("Execution reverted.");
|
|
137
137
|
}
|
|
138
138
|
// 3. invalidate queries
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
const { queriesToInvalidate, invalidatePredicate } = settings || {};
|
|
140
|
+
if (invalidatePredicate) {
|
|
141
|
+
// 1) predicate-based
|
|
142
|
+
await queryClient.invalidateQueries({
|
|
143
|
+
predicate: invalidatePredicate,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
if (queriesToInvalidate) {
|
|
147
|
+
// 2) explicit key list
|
|
148
|
+
await invalidateMany(queriesToInvalidate);
|
|
149
|
+
}
|
|
141
150
|
// 4. call onSuccess callback
|
|
142
151
|
(_a = settings === null || settings === void 0 ? void 0 : settings.onSuccess) === null || _a === void 0 ? void 0 : _a.call(settings, txHash);
|
|
152
|
+
if (settings === null || settings === void 0 ? void 0 : settings.onSuccessAsync)
|
|
153
|
+
await settings.onSuccessAsync(txHash);
|
|
143
154
|
if (!(settings === null || settings === void 0 ? void 0 : settings.disableLogging)) {
|
|
144
155
|
// 5. log result
|
|
145
156
|
// eslint-disable-next-line no-console
|
|
@@ -159,11 +170,15 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
159
170
|
setErrorMessage(parsedError);
|
|
160
171
|
// 3. call callback
|
|
161
172
|
(_b = settings === null || settings === void 0 ? void 0 : settings.onError) === null || _b === void 0 ? void 0 : _b.call(settings, error);
|
|
173
|
+
if (settings === null || settings === void 0 ? void 0 : settings.onErrorAsync)
|
|
174
|
+
await settings.onErrorAsync(error);
|
|
162
175
|
}
|
|
163
176
|
finally {
|
|
164
177
|
setIsPending(false);
|
|
165
178
|
// 1. call callback
|
|
166
179
|
(_c = settings === null || settings === void 0 ? void 0 : settings.onSettled) === null || _c === void 0 ? void 0 : _c.call(settings);
|
|
180
|
+
if (settings === null || settings === void 0 ? void 0 : settings.onSettledAsync)
|
|
181
|
+
await settings.onSettledAsync();
|
|
167
182
|
}
|
|
168
183
|
return undefined;
|
|
169
184
|
};
|
|
@@ -235,20 +250,33 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
235
250
|
* }
|
|
236
251
|
*/
|
|
237
252
|
function useContractWriteX(settings) {
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
const
|
|
242
|
-
mutation: {
|
|
243
|
-
onMutate,
|
|
244
|
-
onSettled,
|
|
245
|
-
},
|
|
253
|
+
const publicClient = wagmi.usePublicClient();
|
|
254
|
+
const { isPending, errorMessage, onMutate, onSettled } = useHandleTransactionMutationX({ settings });
|
|
255
|
+
// Underlying Wagmi write hook:
|
|
256
|
+
const wagmiWrite = wagmi.useWriteContract({
|
|
257
|
+
mutation: { onMutate, onSettled },
|
|
246
258
|
});
|
|
259
|
+
async function simulateAsyncAndWriteContract(params) {
|
|
260
|
+
// 0) signal start
|
|
261
|
+
onMutate();
|
|
262
|
+
try {
|
|
263
|
+
// 1) optional dry-run
|
|
264
|
+
const { chain, ...others } = params;
|
|
265
|
+
await (publicClient === null || publicClient === void 0 ? void 0 : publicClient.simulateContract({
|
|
266
|
+
...others,
|
|
267
|
+
...(chain != null ? { chain } : {}),
|
|
268
|
+
}));
|
|
269
|
+
wagmiWrite.writeContract(params);
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
await onSettled(undefined, err, params);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
247
275
|
return {
|
|
248
|
-
...
|
|
276
|
+
...wagmiWrite,
|
|
277
|
+
simulateAsyncAndWriteContract,
|
|
249
278
|
isPending,
|
|
250
279
|
errorMessage,
|
|
251
|
-
writeContractAsync,
|
|
252
280
|
};
|
|
253
281
|
}
|
|
254
282
|
|
|
@@ -299,44 +327,135 @@ function useContractWriteX(settings) {
|
|
|
299
327
|
* }
|
|
300
328
|
*/
|
|
301
329
|
function useSendTransactionX(settings) {
|
|
330
|
+
const publicClient = wagmi.usePublicClient();
|
|
302
331
|
const { isPending, errorMessage, onMutate, onSettled } = useHandleTransactionMutationX({
|
|
303
332
|
settings,
|
|
304
333
|
});
|
|
305
|
-
const {
|
|
334
|
+
const { sendTransaction, ...rest } = wagmi.useSendTransaction({
|
|
306
335
|
mutation: {
|
|
307
336
|
onMutate,
|
|
308
337
|
onSettled,
|
|
309
338
|
},
|
|
310
339
|
});
|
|
340
|
+
/**
|
|
341
|
+
* Wraps sendTransaction with an optional simulation.
|
|
342
|
+
*/
|
|
343
|
+
async function simulateAsyncAndSendTransaction(params, simulationParams) {
|
|
344
|
+
var _a;
|
|
345
|
+
onMutate();
|
|
346
|
+
try {
|
|
347
|
+
if (params.to) {
|
|
348
|
+
//simulate!
|
|
349
|
+
await (publicClient === null || publicClient === void 0 ? void 0 : publicClient.simulateContract({
|
|
350
|
+
address: params.to,
|
|
351
|
+
abi: simulationParams.abi,
|
|
352
|
+
functionName: simulationParams.functionName,
|
|
353
|
+
args: (_a = simulationParams.args) !== null && _a !== void 0 ? _a : [],
|
|
354
|
+
account: params.account,
|
|
355
|
+
...(simulationParams.chain != null
|
|
356
|
+
? { chain: simulationParams.chain }
|
|
357
|
+
: {}),
|
|
358
|
+
}));
|
|
359
|
+
}
|
|
360
|
+
// actual send!
|
|
361
|
+
await sendTransaction(params);
|
|
362
|
+
}
|
|
363
|
+
catch (err) {
|
|
364
|
+
await onSettled(undefined, err, params);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
311
367
|
return {
|
|
312
368
|
...rest,
|
|
313
369
|
isPending,
|
|
314
370
|
errorMessage,
|
|
315
|
-
|
|
371
|
+
simulateAsyncAndSendTransaction,
|
|
316
372
|
};
|
|
317
373
|
}
|
|
318
374
|
|
|
319
375
|
const queryConfig = {
|
|
320
|
-
|
|
321
|
-
staleTime:
|
|
376
|
+
metaDataQuery: {
|
|
377
|
+
staleTime: Number.POSITIVE_INFINITY,
|
|
378
|
+
meta: { category: "metadata" },
|
|
322
379
|
},
|
|
323
|
-
|
|
380
|
+
lowSensitiveQuery: {
|
|
324
381
|
staleTime: 60000,
|
|
382
|
+
meta: { category: "lowSensitive" },
|
|
325
383
|
},
|
|
326
|
-
|
|
384
|
+
semiSensitiveQuery: {
|
|
385
|
+
staleTime: 180000,
|
|
386
|
+
meta: { category: "semiSensitive" },
|
|
387
|
+
}};
|
|
327
388
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
389
|
+
// You can adjust the type for wagmiConfig to match your needs.
|
|
390
|
+
let defaultQueryClient = null;
|
|
391
|
+
let defaultWagmiConfig = null;
|
|
392
|
+
/**
|
|
393
|
+
* Sets the default configuration values.
|
|
394
|
+
*
|
|
395
|
+
* @param queryClient - The default QueryClient instance.
|
|
396
|
+
* @param wagmiConfig - The default Wagmi configuration.
|
|
397
|
+
* @example
|
|
398
|
+
* //In your application initialization (e.g., index.tsx or App.tsx):
|
|
399
|
+
* import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
400
|
+
* import { wagmiConfig } from "/path/to/wagmi-config";
|
|
401
|
+
* import { setDefaults } from "wagmi-extended";
|
|
402
|
+
*
|
|
403
|
+
* const queryClient = new QueryClient();
|
|
404
|
+
*
|
|
405
|
+
* //Set defaults for the extended library functions.
|
|
406
|
+
* setDefaults(queryClient, wagmiConfig);
|
|
407
|
+
*
|
|
408
|
+
* //Now helper functions like fetchTokenX can use these defaults if no explicit parameters are provided.
|
|
409
|
+
*/
|
|
410
|
+
function setDefaults(queryClient, wagmiConfig) {
|
|
411
|
+
defaultQueryClient = queryClient;
|
|
412
|
+
defaultWagmiConfig = wagmiConfig;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Retrieves the currently set default configurations.
|
|
416
|
+
*
|
|
417
|
+
* @throws Will throw an error if defaults are not initialized.
|
|
418
|
+
* @returns An object containing the default queryClient and wagmiConfig.
|
|
419
|
+
*
|
|
420
|
+
* @example
|
|
421
|
+
* // Usage in a helper function:
|
|
422
|
+
* import { getDefaults } from "wagmi-extended";
|
|
423
|
+
*
|
|
424
|
+
* function exampleFunction() {
|
|
425
|
+
* const { queryClient, wagmiConfig } = getDefaults();
|
|
426
|
+
* // Use queryClient and wagmiConfig as needed...
|
|
427
|
+
* }
|
|
428
|
+
*/
|
|
429
|
+
function getDefaults() {
|
|
430
|
+
if (!defaultQueryClient || !defaultWagmiConfig) {
|
|
431
|
+
throw new Error("Default configuration not set. Please call setDefaults() first.");
|
|
337
432
|
}
|
|
433
|
+
return { queryClient: defaultQueryClient, wagmiConfig: defaultWagmiConfig };
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
function ensureClientAndConfig(queryClient, wagmiConfig) {
|
|
437
|
+
if (!queryClient || !wagmiConfig) {
|
|
438
|
+
({ queryClient, wagmiConfig } = getDefaults());
|
|
439
|
+
}
|
|
440
|
+
if (!queryClient || !wagmiConfig) {
|
|
441
|
+
throw new Error("Could not find queryClient or wagmiConfig; pass them in or setDefaults() first");
|
|
442
|
+
}
|
|
443
|
+
return { queryClient, wagmiConfig };
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
async function fetchAllowanceX(asset, spender, user, queryClient, wagmiConfig) {
|
|
447
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
448
|
+
const allowance = await queryClient.fetchQuery({
|
|
449
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
450
|
+
address: asset,
|
|
451
|
+
abi: viem.erc20Abi,
|
|
452
|
+
functionName: "allowance",
|
|
453
|
+
args: [user, spender],
|
|
454
|
+
}),
|
|
455
|
+
...queryConfig.metaDataQuery,
|
|
456
|
+
});
|
|
338
457
|
return allowance;
|
|
339
|
-
}
|
|
458
|
+
}
|
|
340
459
|
|
|
341
460
|
const HookFetchAssetAllowanceQK = (asset, spender, userAddress) => ["HookFetchAllowance", asset, spender, userAddress];
|
|
342
461
|
/**
|
|
@@ -366,12 +485,13 @@ const HookFetchAssetAllowanceQK = (asset, spender, userAddress) => ["HookFetchAl
|
|
|
366
485
|
*/
|
|
367
486
|
const useFetchAssetAllowanceX = ({ asset, spender, }) => {
|
|
368
487
|
const config = wagmi.useConfig();
|
|
488
|
+
const queryClient = reactQuery.useQueryClient();
|
|
369
489
|
const { address: userAddress } = wagmi.useAccount();
|
|
370
490
|
const { data, ...rest } = reactQuery.useQuery({
|
|
371
491
|
queryKey: HookFetchAssetAllowanceQK(asset, spender, userAddress),
|
|
372
|
-
queryFn: () =>
|
|
492
|
+
queryFn: () => fetchAllowanceX(asset, spender, userAddress, queryClient, config),
|
|
373
493
|
enabled: Boolean(asset) && Boolean(spender) && Boolean(userAddress),
|
|
374
|
-
...queryConfig.
|
|
494
|
+
...queryConfig.lowSensitiveQuery,
|
|
375
495
|
});
|
|
376
496
|
return {
|
|
377
497
|
...rest,
|
|
@@ -469,65 +589,13 @@ const useERC20ApproveX = (tokenAddress, spenderAddress, amount, approveMax) => {
|
|
|
469
589
|
};
|
|
470
590
|
};
|
|
471
591
|
|
|
472
|
-
// You can adjust the type for wagmiConfig to match your needs.
|
|
473
|
-
let defaultQueryClient = null;
|
|
474
|
-
let defaultWagmiConfig = null;
|
|
475
|
-
/**
|
|
476
|
-
* Sets the default configuration values.
|
|
477
|
-
*
|
|
478
|
-
* @param queryClient - The default QueryClient instance.
|
|
479
|
-
* @param wagmiConfig - The default Wagmi configuration.
|
|
480
|
-
* @example
|
|
481
|
-
* //In your application initialization (e.g., index.tsx or App.tsx):
|
|
482
|
-
* import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
483
|
-
* import { wagmiConfig } from "/path/to/wagmi-config";
|
|
484
|
-
* import { setDefaults } from "wagmi-extended";
|
|
485
|
-
*
|
|
486
|
-
* const queryClient = new QueryClient();
|
|
487
|
-
*
|
|
488
|
-
* //Set defaults for the extended library functions.
|
|
489
|
-
* setDefaults(queryClient, wagmiConfig);
|
|
490
|
-
*
|
|
491
|
-
* //Now helper functions like fetchTokenX can use these defaults if no explicit parameters are provided.
|
|
492
|
-
*/
|
|
493
|
-
function setDefaults(queryClient, wagmiConfig) {
|
|
494
|
-
defaultQueryClient = queryClient;
|
|
495
|
-
defaultWagmiConfig = wagmiConfig;
|
|
496
|
-
}
|
|
497
|
-
/**
|
|
498
|
-
* Retrieves the currently set default configurations.
|
|
499
|
-
*
|
|
500
|
-
* @throws Will throw an error if defaults are not initialized.
|
|
501
|
-
* @returns An object containing the default queryClient and wagmiConfig.
|
|
502
|
-
*
|
|
503
|
-
* @example
|
|
504
|
-
* // Usage in a helper function:
|
|
505
|
-
* import { getDefaults } from "wagmi-extended";
|
|
506
|
-
*
|
|
507
|
-
* function exampleFunction() {
|
|
508
|
-
* const { queryClient, wagmiConfig } = getDefaults();
|
|
509
|
-
* // Use queryClient and wagmiConfig as needed...
|
|
510
|
-
* }
|
|
511
|
-
*/
|
|
512
|
-
function getDefaults() {
|
|
513
|
-
if (!defaultQueryClient || !defaultWagmiConfig) {
|
|
514
|
-
throw new Error("Default configuration not set. Please call setDefaults() first.");
|
|
515
|
-
}
|
|
516
|
-
return { queryClient: defaultQueryClient, wagmiConfig: defaultWagmiConfig };
|
|
517
|
-
}
|
|
518
|
-
|
|
519
592
|
const EthTokenData = {
|
|
520
593
|
symbol: "ETH",
|
|
521
594
|
decimals: 18,
|
|
522
595
|
name: "Ethereum",
|
|
523
596
|
};
|
|
524
597
|
async function fetchDecimalsX(token, queryClient, wagmiConfig) {
|
|
525
|
-
|
|
526
|
-
({ queryClient, wagmiConfig } = getDefaults());
|
|
527
|
-
}
|
|
528
|
-
if (!queryClient || !wagmiConfig) {
|
|
529
|
-
throw new Error("Could not find queryClient or wagmiConfig, either pass them as arguments or set them using setDefaults()");
|
|
530
|
-
}
|
|
598
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
531
599
|
if (token === viem.zeroAddress)
|
|
532
600
|
return EthTokenData.decimals;
|
|
533
601
|
const decimals = await queryClient.fetchQuery({
|
|
@@ -536,17 +604,12 @@ async function fetchDecimalsX(token, queryClient, wagmiConfig) {
|
|
|
536
604
|
abi: viem.erc20Abi,
|
|
537
605
|
functionName: "decimals",
|
|
538
606
|
}),
|
|
539
|
-
...queryConfig.
|
|
607
|
+
...queryConfig.metaDataQuery,
|
|
540
608
|
});
|
|
541
609
|
return decimals;
|
|
542
610
|
}
|
|
543
611
|
async function fetchSymbolX(token, queryClient, wagmiConfig) {
|
|
544
|
-
|
|
545
|
-
({ queryClient, wagmiConfig } = getDefaults());
|
|
546
|
-
}
|
|
547
|
-
if (!queryClient || !wagmiConfig) {
|
|
548
|
-
throw new Error("Could not find queryClient or wagmiConfig, either pass them as arguments or set them using setDefaults()");
|
|
549
|
-
}
|
|
612
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
550
613
|
if (token === viem.zeroAddress)
|
|
551
614
|
return EthTokenData.symbol;
|
|
552
615
|
const symbol = await queryClient.fetchQuery({
|
|
@@ -555,26 +618,21 @@ async function fetchSymbolX(token, queryClient, wagmiConfig) {
|
|
|
555
618
|
abi: viem.erc20Abi,
|
|
556
619
|
functionName: "symbol",
|
|
557
620
|
}),
|
|
558
|
-
...queryConfig.
|
|
621
|
+
...queryConfig.metaDataQuery,
|
|
559
622
|
});
|
|
560
623
|
return symbol;
|
|
561
624
|
}
|
|
562
625
|
async function fetchNameX(token, queryClient, wagmiConfig) {
|
|
563
626
|
if (token === viem.zeroAddress)
|
|
564
627
|
return EthTokenData.name;
|
|
565
|
-
|
|
566
|
-
({ queryClient, wagmiConfig } = getDefaults());
|
|
567
|
-
}
|
|
568
|
-
if (!queryClient || !wagmiConfig) {
|
|
569
|
-
throw new Error("Could not find queryClient or wagmiConfig, either pass them as arguments or set them using setDefaults()");
|
|
570
|
-
}
|
|
628
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
571
629
|
const name = await queryClient.fetchQuery({
|
|
572
630
|
...query.readContractQueryOptions(wagmiConfig, {
|
|
573
631
|
address: token,
|
|
574
632
|
abi: viem.erc20Abi,
|
|
575
633
|
functionName: "name",
|
|
576
634
|
}),
|
|
577
|
-
...queryConfig.
|
|
635
|
+
...queryConfig.metaDataQuery,
|
|
578
636
|
});
|
|
579
637
|
return name;
|
|
580
638
|
}
|
|
@@ -663,12 +721,188 @@ const useTokenX = (asset) => {
|
|
|
663
721
|
};
|
|
664
722
|
};
|
|
665
723
|
|
|
724
|
+
async function fetchBalanceOfX(asset, user, queryClient, wagmiConfig) {
|
|
725
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
726
|
+
return await queryClient.fetchQuery({
|
|
727
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
728
|
+
address: asset,
|
|
729
|
+
abi: viem.erc20Abi,
|
|
730
|
+
functionName: "balanceOf",
|
|
731
|
+
args: [user],
|
|
732
|
+
}),
|
|
733
|
+
...queryConfig.lowSensitiveQuery,
|
|
734
|
+
});
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
async function fetchTotalSupplyX(asset, queryClient, wagmiConfig) {
|
|
738
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
739
|
+
return await queryClient.fetchQuery({
|
|
740
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
741
|
+
address: asset,
|
|
742
|
+
abi: viem.erc20Abi,
|
|
743
|
+
functionName: "totalSupply",
|
|
744
|
+
}),
|
|
745
|
+
...queryConfig.semiSensitiveQuery,
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* Fetches the full ERC-20 “summary” for a given vault and user context.
|
|
751
|
+
*/
|
|
752
|
+
async function fetchERC20DataX(address, user, spender, queryClient, wagmiConfig) {
|
|
753
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
754
|
+
const [name, symbol, decimals, allowance, balanceOf, asset] = await Promise.all([
|
|
755
|
+
fetchNameX(address, queryClient, wagmiConfig),
|
|
756
|
+
fetchSymbolX(address, queryClient, wagmiConfig),
|
|
757
|
+
fetchDecimalsX(address, queryClient, wagmiConfig),
|
|
758
|
+
spender && user
|
|
759
|
+
? fetchAllowanceX(address, spender, user, queryClient, wagmiConfig)
|
|
760
|
+
: undefined,
|
|
761
|
+
user
|
|
762
|
+
? fetchBalanceOfX(address, user, queryClient, wagmiConfig)
|
|
763
|
+
: undefined,
|
|
764
|
+
fetchTotalSupplyX(address, queryClient, wagmiConfig),
|
|
765
|
+
]);
|
|
766
|
+
return {
|
|
767
|
+
name,
|
|
768
|
+
symbol,
|
|
769
|
+
decimals,
|
|
770
|
+
allowance,
|
|
771
|
+
balanceOf,
|
|
772
|
+
asset,
|
|
773
|
+
address,
|
|
774
|
+
user,
|
|
775
|
+
spender,
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
async function fetchERC4626AssetX(vault, queryClient, wagmiConfig) {
|
|
780
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
781
|
+
return queryClient.fetchQuery({
|
|
782
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
783
|
+
address: vault,
|
|
784
|
+
abi: viem.erc4626Abi,
|
|
785
|
+
functionName: "asset",
|
|
786
|
+
}),
|
|
787
|
+
...queryConfig.metaDataQuery,
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
async function fetchERC4626TotalAssetsX(vault, queryClient, wagmiConfig) {
|
|
792
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
793
|
+
return queryClient.fetchQuery({
|
|
794
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
795
|
+
address: vault,
|
|
796
|
+
abi: viem.erc4626Abi,
|
|
797
|
+
functionName: "totalAssets",
|
|
798
|
+
}),
|
|
799
|
+
...queryConfig.semiSensitiveQuery,
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
async function fetchERC4626MaxDepositX(vault, caller, queryClient, wagmiConfig) {
|
|
804
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
805
|
+
return queryClient.fetchQuery({
|
|
806
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
807
|
+
address: vault,
|
|
808
|
+
abi: viem.erc4626Abi,
|
|
809
|
+
functionName: "maxDeposit",
|
|
810
|
+
args: [caller],
|
|
811
|
+
}),
|
|
812
|
+
...queryConfig.semiSensitiveQuery,
|
|
813
|
+
});
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
async function fetchERC4626MaxMintX(vault, caller, queryClient, wagmiConfig) {
|
|
817
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
818
|
+
return queryClient.fetchQuery({
|
|
819
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
820
|
+
address: vault,
|
|
821
|
+
abi: viem.erc4626Abi,
|
|
822
|
+
functionName: "maxMint",
|
|
823
|
+
args: [caller],
|
|
824
|
+
}),
|
|
825
|
+
...queryConfig.semiSensitiveQuery,
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
async function fetchERC4626MaxRedeemX(vault, owner, queryClient, wagmiConfig) {
|
|
830
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
831
|
+
return queryClient.fetchQuery({
|
|
832
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
833
|
+
address: vault,
|
|
834
|
+
abi: viem.erc4626Abi,
|
|
835
|
+
functionName: "maxRedeem",
|
|
836
|
+
args: [owner],
|
|
837
|
+
}),
|
|
838
|
+
...queryConfig.semiSensitiveQuery,
|
|
839
|
+
});
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
async function fetchERC4626MaxWithdrawX(vault, owner, queryClient, wagmiConfig) {
|
|
843
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
844
|
+
return queryClient.fetchQuery({
|
|
845
|
+
...query.readContractQueryOptions(wagmiConfig, {
|
|
846
|
+
address: vault,
|
|
847
|
+
abi: viem.erc4626Abi,
|
|
848
|
+
functionName: "maxWithdraw",
|
|
849
|
+
args: [owner],
|
|
850
|
+
}),
|
|
851
|
+
...queryConfig.semiSensitiveQuery,
|
|
852
|
+
});
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Fetches the full ERC-4626 “summary” for a given vault and user context.
|
|
857
|
+
*/
|
|
858
|
+
async function fetchERC4626DataX(vault, user, spender, queryClient, wagmiConfig) {
|
|
859
|
+
({ queryClient, wagmiConfig } = ensureClientAndConfig(queryClient, wagmiConfig));
|
|
860
|
+
const [erc20Data, maxDeposit, maxMint, maxRedeem, maxWithdraw] = await Promise.all([
|
|
861
|
+
fetchERC20DataX(vault, user, spender, queryClient, wagmiConfig),
|
|
862
|
+
fetchERC4626AssetX(vault, queryClient, wagmiConfig),
|
|
863
|
+
fetchERC4626TotalAssetsX(vault, queryClient, wagmiConfig),
|
|
864
|
+
user
|
|
865
|
+
? fetchERC4626MaxDepositX(vault, user, queryClient, wagmiConfig)
|
|
866
|
+
: undefined,
|
|
867
|
+
user
|
|
868
|
+
? fetchERC4626MaxMintX(vault, user, queryClient, wagmiConfig)
|
|
869
|
+
: undefined,
|
|
870
|
+
user
|
|
871
|
+
? fetchERC4626MaxRedeemX(vault, user, queryClient, wagmiConfig)
|
|
872
|
+
: undefined,
|
|
873
|
+
user
|
|
874
|
+
? fetchERC4626MaxWithdrawX(vault, user, queryClient, wagmiConfig)
|
|
875
|
+
: undefined,
|
|
876
|
+
]);
|
|
877
|
+
return {
|
|
878
|
+
...erc20Data,
|
|
879
|
+
maxDeposit,
|
|
880
|
+
maxMint,
|
|
881
|
+
maxRedeem,
|
|
882
|
+
maxWithdraw,
|
|
883
|
+
vault,
|
|
884
|
+
owner: user,
|
|
885
|
+
spender,
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
|
|
666
889
|
exports.EthTokenData = EthTokenData;
|
|
667
890
|
exports.HookFetchTokenQK = HookFetchTokenQK;
|
|
891
|
+
exports.fetchAllowanceX = fetchAllowanceX;
|
|
892
|
+
exports.fetchBalanceOfX = fetchBalanceOfX;
|
|
668
893
|
exports.fetchDecimalsX = fetchDecimalsX;
|
|
894
|
+
exports.fetchERC20DataX = fetchERC20DataX;
|
|
895
|
+
exports.fetchERC4626AssetX = fetchERC4626AssetX;
|
|
896
|
+
exports.fetchERC4626DataX = fetchERC4626DataX;
|
|
897
|
+
exports.fetchERC4626MaxDepositX = fetchERC4626MaxDepositX;
|
|
898
|
+
exports.fetchERC4626MaxMintX = fetchERC4626MaxMintX;
|
|
899
|
+
exports.fetchERC4626MaxRedeemX = fetchERC4626MaxRedeemX;
|
|
900
|
+
exports.fetchERC4626MaxWithdrawX = fetchERC4626MaxWithdrawX;
|
|
901
|
+
exports.fetchERC4626TotalAssetsX = fetchERC4626TotalAssetsX;
|
|
669
902
|
exports.fetchNameX = fetchNameX;
|
|
670
903
|
exports.fetchSymbolX = fetchSymbolX;
|
|
671
904
|
exports.fetchTokenX = fetchTokenX;
|
|
905
|
+
exports.fetchTotalSupplyX = fetchTotalSupplyX;
|
|
672
906
|
exports.getDefaults = getDefaults;
|
|
673
907
|
exports.getErrorMapping = getErrorMapping;
|
|
674
908
|
exports.getParsedErrorX = getParsedErrorX;
|
|
@@ -678,6 +912,7 @@ exports.setErrorMapping = setErrorMapping;
|
|
|
678
912
|
exports.useContractWriteX = useContractWriteX;
|
|
679
913
|
exports.useERC20ApproveX = useERC20ApproveX;
|
|
680
914
|
exports.useFetchAssetAllowanceX = useFetchAssetAllowanceX;
|
|
915
|
+
exports.useHandleTransactionMutationX = useHandleTransactionMutationX;
|
|
681
916
|
exports.useSendTransactionX = useSendTransactionX;
|
|
682
917
|
exports.useTokenX = useTokenX;
|
|
683
918
|
//# sourceMappingURL=index.cjs.js.map
|