wagmi-extended 2.1.1 → 2.2.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/dist/fetch-functions/common/fetchDeploymentBlockX.d.ts +54 -0
- package/dist/hooks/queries/useERC20Data.d.ts +1 -0
- package/dist/hooks/queries/useFetchAssetAllowanceX.d.ts +1 -0
- package/dist/hooks/queries/useFetchERC4626DataX.d.ts +1 -0
- package/dist/index.cjs.js +39 -23
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +39 -24
- package/dist/index.esm.js.map +1 -1
- package/dist/query-config/index.d.ts +17 -4
- package/package.json +1 -1
- package/src/fetch-functions/common/fetchDeploymentBlockX.ts +174 -0
- package/src/hooks/queries/useERC20Data.ts +1 -1
- package/src/hooks/queries/useFetchAssetAllowanceX.ts +1 -1
- package/src/hooks/queries/useFetchERC4626DataX.ts +1 -1
- package/src/query-config/index.ts +16 -4
- package/tsconfig.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -85,16 +85,18 @@ const getErrorMapping = () => currentErrorMapping;
|
|
|
85
85
|
* console.log(message); // Outputs a custom error message or a default error message.
|
|
86
86
|
*/
|
|
87
87
|
const getParsedErrorX = (error) => {
|
|
88
|
-
var _a, _b, _c, _d;
|
|
89
88
|
const defaultMessage = "An unknown error occurred. Please contact support.";
|
|
90
89
|
let message = defaultMessage;
|
|
91
90
|
let errorKey = "";
|
|
92
|
-
const revertedError =
|
|
91
|
+
const revertedError = error?.walk
|
|
93
92
|
? error.walk((err) => err instanceof ContractFunctionRevertedError)
|
|
94
93
|
: null;
|
|
95
94
|
if (revertedError instanceof ContractFunctionRevertedError) {
|
|
96
95
|
errorKey =
|
|
97
|
-
|
|
96
|
+
revertedError.data?.errorName ??
|
|
97
|
+
revertedError.signature ??
|
|
98
|
+
revertedError.reason ??
|
|
99
|
+
"";
|
|
98
100
|
if (currentErrorMapping[errorKey])
|
|
99
101
|
return currentErrorMapping[errorKey];
|
|
100
102
|
}
|
|
@@ -118,11 +120,10 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
118
120
|
setErrorMessage(undefined);
|
|
119
121
|
};
|
|
120
122
|
const onSettled = async (txHash, error, args) => {
|
|
121
|
-
var _a, _b, _c;
|
|
122
123
|
try {
|
|
123
124
|
if (error)
|
|
124
125
|
throw error;
|
|
125
|
-
if (!
|
|
126
|
+
if (!settings?.disableWaitingForReceipt) {
|
|
126
127
|
// 1. wait for transaction receipt
|
|
127
128
|
const txReceipt = await waitForTransactionReceipt(wagmiConfig, {
|
|
128
129
|
hash: txHash,
|
|
@@ -146,10 +147,10 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
146
147
|
await invalidateMany(queriesToInvalidate);
|
|
147
148
|
}
|
|
148
149
|
// 4. call onSuccess callback
|
|
149
|
-
|
|
150
|
-
if (settings
|
|
150
|
+
settings?.onSuccess?.(txHash);
|
|
151
|
+
if (settings?.onSuccessAsync)
|
|
151
152
|
await settings.onSuccessAsync(txHash);
|
|
152
|
-
if (!
|
|
153
|
+
if (!settings?.disableLogging) {
|
|
153
154
|
// 5. log result
|
|
154
155
|
// eslint-disable-next-line no-console
|
|
155
156
|
console.info("Operation successful:", txHash); // todo: add logging service
|
|
@@ -159,7 +160,7 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
159
160
|
}
|
|
160
161
|
catch (error) {
|
|
161
162
|
const parsedError = getParsedErrorX(error);
|
|
162
|
-
if (!
|
|
163
|
+
if (!settings?.disableLogging) {
|
|
163
164
|
// 1. log error
|
|
164
165
|
console.error(`ContractWriteExtended Operation failed with error(parsed): ${parsedError}`, { error }, { args });
|
|
165
166
|
console.error({ error });
|
|
@@ -167,15 +168,15 @@ function useHandleTransactionMutationX({ settings, }) {
|
|
|
167
168
|
// 2. set error message
|
|
168
169
|
setErrorMessage(parsedError);
|
|
169
170
|
// 3. call callback
|
|
170
|
-
|
|
171
|
-
if (settings
|
|
171
|
+
settings?.onError?.(error);
|
|
172
|
+
if (settings?.onErrorAsync)
|
|
172
173
|
await settings.onErrorAsync(error);
|
|
173
174
|
}
|
|
174
175
|
finally {
|
|
175
176
|
setIsPending(false);
|
|
176
177
|
// 1. call callback
|
|
177
|
-
|
|
178
|
-
if (settings
|
|
178
|
+
settings?.onSettled?.();
|
|
179
|
+
if (settings?.onSettledAsync)
|
|
179
180
|
await settings.onSettledAsync();
|
|
180
181
|
}
|
|
181
182
|
return undefined;
|
|
@@ -225,10 +226,10 @@ function useContractWriteX(settings) {
|
|
|
225
226
|
// 1) optional dry-run
|
|
226
227
|
const { chain, ...others } = params;
|
|
227
228
|
if (!disableSimulation) {
|
|
228
|
-
await
|
|
229
|
+
await publicClient?.simulateContract({
|
|
229
230
|
...others,
|
|
230
231
|
...(chain != null ? { chain } : {}),
|
|
231
|
-
})
|
|
232
|
+
});
|
|
232
233
|
}
|
|
233
234
|
wagmiWrite.writeContract(params);
|
|
234
235
|
}
|
|
@@ -290,21 +291,20 @@ function useSendTransactionX(settings) {
|
|
|
290
291
|
* @returns {Promise<void>}
|
|
291
292
|
*/
|
|
292
293
|
async function sendTransactionX(params, simulationParams) {
|
|
293
|
-
var _a;
|
|
294
294
|
onMutate();
|
|
295
295
|
try {
|
|
296
296
|
if (params.to && simulationParams) {
|
|
297
297
|
//simulate!
|
|
298
|
-
await
|
|
298
|
+
await publicClient?.simulateContract({
|
|
299
299
|
address: params.to,
|
|
300
300
|
abi: simulationParams.abi,
|
|
301
301
|
functionName: simulationParams.functionName,
|
|
302
|
-
args:
|
|
302
|
+
args: simulationParams.args ?? [],
|
|
303
303
|
account: params.account,
|
|
304
304
|
...(simulationParams.chain != null
|
|
305
305
|
? { chain: simulationParams.chain }
|
|
306
306
|
: {}),
|
|
307
|
-
})
|
|
307
|
+
});
|
|
308
308
|
}
|
|
309
309
|
// actual send!
|
|
310
310
|
await sendTransaction(params);
|
|
@@ -322,19 +322,34 @@ function useSendTransactionX(settings) {
|
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
+
var QueryType;
|
|
326
|
+
(function (QueryType) {
|
|
327
|
+
QueryType["MetaDataQuery"] = "metaDataQuery";
|
|
328
|
+
QueryType["SemiSensitiveQuery"] = "semiSensitiveQuery";
|
|
329
|
+
QueryType["LowSensitiveQuery"] = "lowSensitiveQuery";
|
|
330
|
+
QueryType["ExpensiveQuery"] = "expensiveQuery";
|
|
331
|
+
QueryType["PriceQuery"] = "priceQuery";
|
|
332
|
+
})(QueryType || (QueryType = {}));
|
|
325
333
|
const queryConfig = {
|
|
326
334
|
metaDataQuery: {
|
|
327
335
|
staleTime: Number.POSITIVE_INFINITY,
|
|
328
|
-
meta: {
|
|
336
|
+
meta: { queryType: QueryType.MetaDataQuery },
|
|
329
337
|
},
|
|
330
338
|
lowSensitiveQuery: {
|
|
331
339
|
staleTime: 60000,
|
|
332
|
-
meta: {
|
|
340
|
+
meta: { queryType: QueryType.SemiSensitiveQuery },
|
|
333
341
|
},
|
|
334
342
|
semiSensitiveQuery: {
|
|
335
343
|
staleTime: 180000,
|
|
336
|
-
meta: {
|
|
337
|
-
}
|
|
344
|
+
meta: { queryType: QueryType.LowSensitiveQuery },
|
|
345
|
+
},
|
|
346
|
+
priceQuery: {
|
|
347
|
+
meta: { queryType: QueryType.PriceQuery },
|
|
348
|
+
},
|
|
349
|
+
expensiveQuery: {
|
|
350
|
+
meta: { queryType: QueryType.ExpensiveQuery },
|
|
351
|
+
},
|
|
352
|
+
};
|
|
338
353
|
|
|
339
354
|
// You can adjust the type for wagmiConfig to match your needs.
|
|
340
355
|
let defaultQueryClient = null;
|
|
@@ -836,5 +851,5 @@ async function fetchERC4626DataX(vault, user, spender, queryClient, wagmiConfig)
|
|
|
836
851
|
};
|
|
837
852
|
}
|
|
838
853
|
|
|
839
|
-
export { EthTokenData, HookFetchTokenQK, fetchAllowanceX, fetchBalanceOfX, fetchDecimalsX, fetchERC20DataX, fetchERC4626AssetX, fetchERC4626DataX, fetchERC4626MaxDepositX, fetchERC4626MaxMintX, fetchERC4626MaxRedeemX, fetchERC4626MaxWithdrawX, fetchERC4626TotalAssetsX, fetchNameX, fetchSymbolX, fetchTokenX, fetchTotalSupplyX, getDefaults, getErrorMapping, getParsedErrorX, resetErrorMapping, setDefaults, setErrorMapping, useContractWriteX, useERC20ApproveX, useFetchAssetAllowanceX, useHandleTransactionMutationX, useSendTransactionX, useTokenX };
|
|
854
|
+
export { EthTokenData, HookFetchAssetAllowanceQK, HookFetchTokenQK, fetchAllowanceX, fetchBalanceOfX, fetchDecimalsX, fetchERC20DataX, fetchERC4626AssetX, fetchERC4626DataX, fetchERC4626MaxDepositX, fetchERC4626MaxMintX, fetchERC4626MaxRedeemX, fetchERC4626MaxWithdrawX, fetchERC4626TotalAssetsX, fetchNameX, fetchSymbolX, fetchTokenX, fetchTotalSupplyX, getDefaults, getErrorMapping, getParsedErrorX, resetErrorMapping, setDefaults, setErrorMapping, useContractWriteX, useERC20ApproveX, useFetchAssetAllowanceX, useHandleTransactionMutationX, useSendTransactionX, useTokenX };
|
|
840
855
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/hooks/mutations/useInvalidateQueries.ts","../src/utils/errorParserX.ts","../src/hooks/mutations/useHandleTransactionMutationX.ts","../src/hooks/mutations/useContractWriteX.ts","../src/hooks/mutations/useSendTransactionX.ts","../src/query-config/index.ts","../src/config/defaults.ts","../src/utils/ensureClientAndConfig.ts","../src/fetch-functions/erc20/fetchAllowanceX.ts","../src/hooks/queries/useFetchAssetAllowanceX.ts","../src/hooks/mutations/useERC20ApproveX.ts","../src/fetch-functions/fetchTokenX.ts","../src/hooks/queries/useTokenX.ts","../src/fetch-functions/erc20/fetchBalanceOfX.ts","../src/fetch-functions/erc20/fetchTotalSupplyX.ts","../src/fetch-functions/erc20/fetchERC20DataX.ts","../src/fetch-functions/erc4626/fetchERC4626AssetX.ts","../src/fetch-functions/erc4626/fetchERC4626TotalAssetsX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxDepositX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxMintX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxRedeemX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxWithdrawX.ts","../src/fetch-functions/erc4626/fetchERC4626DataX.ts"],"sourcesContent":["import { QueryKey, useQueryClient } from \"@tanstack/react-query\";\n\n/**\n * Hook to invalidate multiple queries in the React Query cache.\n *\n * @returns An object with the invalidateMany function.\n */\nexport function useInvalidateQueries() {\n const queryClient = useQueryClient();\n\n const invalidateMany = async (queries: (QueryKey | undefined)[]) => {\n const promises = queries.map((queryKey) =>\n queryClient.invalidateQueries({ queryKey })\n );\n await Promise.all(promises);\n };\n\n return { invalidateMany };\n}\n","import { BaseError, ContractFunctionRevertedError } from \"viem\";\n\n/**\n * Default error mapping that contains a set of error identifiers mapped to user-friendly error messages.\n */\nconst defaultErrorMapping: Record<string, string> = {\n EnforcedPause: \"Temporary pause in effect, please check Discord for updates.\",\n ErrorNotEnoughAllowance:\n \"Not enough allowance, did you approve your tokens first?\",\n \"0xc2139725\": \"Not enough allowance, did you approve your tokens first?\",\n SharesReceivedBelowMinimum:\n \"Action exceeded safe slippage parameters, please try again later\",\n \"0xea8d7f02\":\n \"Action exceeded safe slippage parameters, please try again later\",\n MaxSlippageExceeded:\n \"Action exceeded safe slippage parameters, please try again later\",\n \"51\": \"Supply cap exceeded\",\n};\n\n/**\n * A mutable copy of the default error mapping that can be extended or overridden by users.\n */\nlet currentErrorMapping: Record<string, string> = { ...defaultErrorMapping };\n\n/**\n * Merges a custom error mapping into the current error mapping.\n * Custom values override any existing keys.\n *\n * @param customMapping - An object containing error keys and the corresponding custom messages.\n *\n * @example\n * setErrorMapping({\n * ErrorNotEnoughAllowance: \"Custom message: Please approve tokens first!\",\n * NewCustomError: \"A custom error occurred.\"\n * });\n */\nexport const setErrorMapping = (\n customMapping: Record<string, string>\n): void => {\n currentErrorMapping = { ...currentErrorMapping, ...customMapping };\n};\n\n/**\n * Resets the current error mapping to the default error mapping.\n *\n * @example\n * resetErrorMapping();\n */\nexport const resetErrorMapping = (): void => {\n currentErrorMapping = {};\n};\n\n/**\n * Retrieves the current error mapping.\n *\n * @returns The current error mapping object.\n *\n * @example\n * const mapping = getErrorMapping();\n * console.log(mapping);\n */\nexport const getErrorMapping = (): Record<string, string> =>\n currentErrorMapping;\n\n/**\n * Parses an error object and returns a user-friendly error message.\n *\n * The function checks if the error is a ContractFunctionRevertedError by attempting to walk through\n * the error using its `walk` method. If a matching error is found and its error key exists in the\n * current error mapping, the corresponding custom message will be returned. Otherwise, it falls back\n * to the error's own message properties.\n *\n * @param error - The error object, potentially including additional error details.\n * @returns A user-friendly error message.\n *\n * @example\n * const message = getParsedError(someError);\n * console.log(message); // Outputs a custom error message or a default error message.\n */\nexport const getParsedErrorX = (error: any | BaseError): string => {\n const defaultMessage = \"An unknown error occurred. Please contact support.\";\n let message = defaultMessage;\n let errorKey = \"\";\n\n const revertedError = error?.walk\n ? error.walk((err: unknown) => err instanceof ContractFunctionRevertedError)\n : null;\n if (revertedError instanceof ContractFunctionRevertedError) {\n errorKey =\n revertedError.data?.errorName ??\n revertedError.signature ??\n revertedError.reason ??\n \"\";\n if (currentErrorMapping[errorKey]) return currentErrorMapping[errorKey];\n }\n\n message = error.shortMessage || error.details || error.message || message;\n return message;\n};\n","import { waitForTransactionReceipt } from \"wagmi/actions\";\nimport { useConfig } from \"wagmi\";\nimport { Query, QueryKey } from \"@tanstack/query-core\";\nimport { Address } from \"viem\";\nimport { useState } from \"react\";\nimport { useInvalidateQueries } from \"./useInvalidateQueries.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { getParsedErrorX } from \"../../utils/errorParserX.js\";\n\nexport type WriteExtendedAsyncParams = {\n onSuccess?: (txHash: Address) => void;\n onError?: (e: any) => void;\n onSettled?: () => void;\n\n onSuccessAsync?: (txHash: Address) => Promise<void>;\n onErrorAsync?: (e: any) => Promise<void>;\n onSettledAsync?: () => Promise<void>;\n\n /** simple list of keys to invalidate */\n queriesToInvalidate?: (QueryKey | undefined)[];\n /** a predicate to decide which queries to invalidate */\n invalidatePredicate?: (query: Query<unknown, unknown>) => boolean;\n\n disableLogging?: boolean;\n disableWaitingForReceipt?: boolean;\n};\n\n/**\n * Custom hook to handle transaction mutations.\n *\n * @returns {Function} A shared `onSettled` callback for transaction mutations.\n */\nexport function useHandleTransactionMutationX({\n settings,\n}: {\n settings?: WriteExtendedAsyncParams;\n}) {\n const wagmiConfig = useConfig();\n const queryClient = useQueryClient();\n\n const { invalidateMany } = useInvalidateQueries();\n const [isPending, setIsPending] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | undefined>(\n undefined\n );\n\n const onMutate = () => {\n setIsPending(true);\n setErrorMessage(undefined);\n };\n\n const onSettled = async (\n txHash: Address | undefined,\n error: any,\n args: any\n ) => {\n try {\n if (error) throw error;\n\n if (!settings?.disableWaitingForReceipt) {\n // 1. wait for transaction receipt\n const txReceipt = await waitForTransactionReceipt(wagmiConfig, {\n hash: txHash!,\n });\n\n // 2. throw if receipt is not valid\n if (txReceipt.status === \"reverted\")\n throw new Error(\"Execution reverted.\");\n if (txReceipt.status !== \"success\")\n throw new Error(\"Execution reverted.\");\n }\n\n // 3. invalidate queries\n const { queriesToInvalidate, invalidatePredicate } = settings || {};\n\n if (invalidatePredicate) {\n // 1) predicate-based\n await queryClient.invalidateQueries({\n predicate: invalidatePredicate,\n });\n }\n if (queriesToInvalidate) {\n // 2) explicit key list\n await invalidateMany(queriesToInvalidate);\n }\n\n // 4. call onSuccess callback\n settings?.onSuccess?.(txHash!);\n if (settings?.onSuccessAsync) await settings.onSuccessAsync(txHash!);\n\n if (!settings?.disableLogging) {\n // 5. log result\n // eslint-disable-next-line no-console\n console.info(\"Operation successful:\", txHash); // todo: add logging service\n }\n // 6. return result\n return txHash;\n } catch (error) {\n const parsedError = getParsedErrorX(error);\n\n if (!settings?.disableLogging) {\n // 1. log error\n console.error(\n `ContractWriteExtended Operation failed with error(parsed): ${parsedError}`,\n { error },\n { args }\n );\n console.error({ error });\n }\n // 2. set error message\n setErrorMessage(parsedError);\n\n // 3. call callback\n settings?.onError?.(error);\n if (settings?.onErrorAsync) await settings.onErrorAsync(error);\n } finally {\n setIsPending(false);\n // 1. call callback\n settings?.onSettled?.();\n if (settings?.onSettledAsync) await settings.onSettledAsync();\n }\n return undefined;\n };\n\n return {\n onMutate,\n onSettled,\n isPending,\n errorMessage,\n };\n}\n","import { usePublicClient, useSimulateContract, useWriteContract } from \"wagmi\";\nimport {\n WriteExtendedAsyncParams,\n useHandleTransactionMutationX,\n} from \"./useHandleTransactionMutationX.js\";\nimport { Address } from \"viem\";\n\n/**\n * Custom hook for writing to a smart contract using Wagmi with optional simulation.\n *\n * @param {WriteExtendedAsyncParams} settings - Settings for handling transaction lifecycle:\n * @param {boolean} [settings.disableWaitingForReceipt] - Disable waiting for receipt.\n * @param {boolean} [settings.disableLogging] - Disable logging.\n * @param {Function} [settings.onSuccess] - Callback invoked on successful transaction receipt.\n * @param {Function} [settings.onError] - Callback invoked on simulation or transaction error.\n * @param {Function} [settings.onSettled] - Callback invoked after transaction settles.\n * @param {Array<import('@tanstack/query-core').QueryKey>} [settings.queriesToInvalidate] - Query keys to invalidate after receipt.\n * @returns {Object} An object containing:\n * - writeContract: Wagmi's writeContract function.\n * - writeContractX: Wrapped writeContract with optional simulation.\n * - isPending: Boolean indicating if transaction is in progress.\n * - errorMessage: Error message if one occurred.\n *\n * @example\n * const { writeContractX, isPending, errorMessage } = useContractWriteX({ onSuccess: ..., onError: ... });\n * await writeContractX(\n * { abi, address, functionName, args, account, chain, value },\n * disable simulation? = false\n * );\n */\nexport function useContractWriteX(settings: WriteExtendedAsyncParams) {\n const publicClient = usePublicClient();\n\n const { isPending, errorMessage, onMutate, onSettled } =\n useHandleTransactionMutationX({ settings });\n\n // Underlying Wagmi write hook:\n const wagmiWrite = useWriteContract({\n mutation: { onMutate, onSettled },\n });\n\n async function writeContractX(\n params: Parameters<typeof wagmiWrite.writeContract>[0],\n disableSimulation = false\n ) {\n // 0) signal start\n onMutate();\n\n try {\n // 1) optional dry-run\n const { chain, ...others } = params;\n\n if (!disableSimulation) {\n await publicClient?.simulateContract({\n ...others,\n ...(chain != null ? { chain } : {}),\n });\n }\n\n wagmiWrite.writeContract(params);\n } catch (err) {\n await onSettled(undefined, err, params);\n }\n }\n\n return {\n ...wagmiWrite,\n writeContractX,\n isPending,\n errorMessage,\n };\n}\n","import { usePublicClient, useSendTransaction, useWriteContract } from \"wagmi\";\nimport {\n useHandleTransactionMutationX,\n WriteExtendedAsyncParams,\n} from \"./useHandleTransactionMutationX.js\";\nimport { writeContract } from \"wagmi/actions\";\n\n/**\n * Custom hook for sending a transaction using Wagmi with optional simulation.\n *\n * @param {WriteExtendedAsyncParams} [settings] - Settings for handling transaction lifecycle:\n * @param {boolean} [settings.disableWaitingForReceipt] - Disable waiting for receipt.\n * @param {boolean} [settings.disableLogging] - Disable logging.\n * @param {Function} [settings.onSuccess] - Callback on success.\n * @param {Function} [settings.onError] - Callback on error.\n * @param {Function} [settings.onSettled] - Callback after settlement.\n * @param {Array<import('@tanstack/query-core').QueryKey>} [settings.queriesToInvalidate] - Query keys to invalidate after receipt.\n * @returns {Object} An object containing:\n * - sendTransaction: Wagmi's sendTransaction function.\n * - sendTransactionX: Wrapped sendTransaction with optional simulation.\n * - isPending: Boolean indicating if transaction is in progress.\n * - errorMessage: Error message if one occurred.\n *\n * @example\n * const { sendTransactionX, isPending, errorMessage } = useSendTransactionX({ onSuccess: ..., onError: ... });\n * await sendTransactionX(\n * { to, value, data, account, chain },\n * { abi, functionName, args, chain }\n * );\n */\nexport function useSendTransactionX(settings?: WriteExtendedAsyncParams) {\n const publicClient = usePublicClient();\n\n const { isPending, errorMessage, onMutate, onSettled } =\n useHandleTransactionMutationX({\n settings,\n });\n\n const { sendTransaction, ...rest } = useSendTransaction({\n mutation: {\n onMutate,\n onSettled,\n },\n });\n\n /**\n * Wraps sendTransaction with an optional simulation step.\n *\n * @param {import('viem').SendTransactionParameters} params - Parameters to sendTransaction.\n * @param {import('viem').SimulateContractParameters} [simulationParams] - Optional parameters to simulate contract call:\n * @param {Array|object} simulationParams.abi - Contract ABI for simulation.\n * @param {string} simulationParams.functionName - Name of the contract function to simulate.\n * @param {any[]} [simulationParams.args] - Arguments for the function call.\n * @param {import('viem').Chain} [simulationParams.chain] - Chain to run the simulation on.\n * @returns {Promise<void>}\n */\n async function sendTransactionX(\n params: Parameters<typeof sendTransaction>[0],\n simulationParams?: Parameters<typeof writeContract>[1]\n ) {\n onMutate();\n\n try {\n if (params.to && simulationParams) {\n //simulate!\n await publicClient?.simulateContract({\n address: params.to,\n abi: simulationParams.abi,\n functionName: simulationParams.functionName,\n args: simulationParams.args ?? [],\n account: params.account,\n ...(simulationParams.chain != null\n ? { chain: simulationParams.chain }\n : {}),\n });\n }\n // actual send!\n await sendTransaction(params);\n } catch (err) {\n await onSettled(undefined, err, params);\n }\n }\n\n return {\n ...rest,\n isPending,\n errorMessage,\n sendTransaction,\n sendTransactionX,\n };\n}\n","export const queryConfig = {\n metaDataQuery: {\n staleTime: Number.POSITIVE_INFINITY,\n meta: { category: \"metadata\" } as const,\n },\n lowSensitiveQuery: {\n staleTime: 60_000,\n meta: { category: \"lowSensitive\" } as const,\n },\n semiSensitiveQuery: {\n staleTime: 180_000,\n meta: { category: \"semiSensitive\" } as const,\n },\n expensiveQuery: {\n staleTime: 60 * 60 * 1000,\n meta: { category: \"expensive\" } as const,\n },\n};\n","// src/config/defaults.ts\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { Config } from \"wagmi\";\n\n// You can adjust the type for wagmiConfig to match your needs.\nlet defaultQueryClient: QueryClient | null = null;\nlet defaultWagmiConfig: any = null;\n\n/**\n * Sets the default configuration values.\n *\n * @param queryClient - The default QueryClient instance.\n * @param wagmiConfig - The default Wagmi configuration.\n * @example\n * //In your application initialization (e.g., index.tsx or App.tsx):\n * import { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n * import { wagmiConfig } from \"/path/to/wagmi-config\";\n * import { setDefaults } from \"wagmi-extended\";\n *\n * const queryClient = new QueryClient();\n *\n * //Set defaults for the extended library functions.\n * setDefaults(queryClient, wagmiConfig);\n *\n * //Now helper functions like fetchTokenX can use these defaults if no explicit parameters are provided.\n */\nexport function setDefaults(\n queryClient: QueryClient,\n wagmiConfig: Config\n): void {\n defaultQueryClient = queryClient;\n defaultWagmiConfig = wagmiConfig;\n}\n\n/**\n * Retrieves the currently set default configurations.\n *\n * @throws Will throw an error if defaults are not initialized.\n * @returns An object containing the default queryClient and wagmiConfig.\n *\n * @example\n * // Usage in a helper function:\n * import { getDefaults } from \"wagmi-extended\";\n *\n * function exampleFunction() {\n * const { queryClient, wagmiConfig } = getDefaults();\n * // Use queryClient and wagmiConfig as needed...\n * }\n */\nexport function getDefaults(): {\n queryClient: QueryClient;\n wagmiConfig: Config;\n} {\n if (!defaultQueryClient || !defaultWagmiConfig) {\n throw new Error(\n \"Default configuration not set. Please call setDefaults() first.\"\n );\n }\n return { queryClient: defaultQueryClient, wagmiConfig: defaultWagmiConfig };\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Config } from \"wagmi\";\nimport { getDefaults } from \"../config/defaults.js\";\n\nexport function ensureClientAndConfig(\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): { queryClient: QueryClient; wagmiConfig: Config } {\n if (!queryClient || !wagmiConfig) {\n ({ queryClient, wagmiConfig } = getDefaults());\n }\n if (!queryClient || !wagmiConfig) {\n throw new Error(\n \"Could not find queryClient or wagmiConfig; pass them in or setDefaults() first\"\n );\n }\n return { queryClient, wagmiConfig };\n}\n","import { Address, erc20Abi } from \"viem\";\nimport type { Config } from \"wagmi\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchAllowanceX(\n asset: Address,\n spender: Address,\n user: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const allowance = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [user, spender],\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return allowance;\n}\n","import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { useAccount, useConfig } from \"wagmi\";\nimport { fetchAllowanceX } from \"../../fetch-functions/erc20/fetchAllowanceX.js\";\nimport { queryConfig } from \"../../query-config/index.js\";\n\nconst HookFetchAssetAllowanceQK = (\n asset?: Address,\n spender?: Address,\n userAddress?: Address\n) => [\"HookFetchAllowance\", asset, spender, userAddress] as const;\n\n/**\n * Custom hook for fetching asset allowance.\n *\n * @param {Address} asset - The address of the ERC20 token contract.\n * @param {Address} spender - The address of the spender to check allowance for.\n *\n *\n * @example\n * // In your component:\n * function AllowanceDisplay() {\n * const { data: allowance, isLoading, error } = useFetchAssetAllowanceX({\n * asset: \"0xTokenAddressExample\",\n * spender: \"0xSpenderAddressExample\",\n * });\n *\n * if (isLoading) return <div>Loading allowance...</div>;\n * if (error) return <div>Error loading allowance</div>;\n *\n * return (\n * <div>\n * Current Allowance: {allowance}\n * </div>\n * );\n * }\n */\nexport const useFetchAssetAllowanceX = ({\n asset,\n spender,\n}: {\n asset?: Address;\n spender?: Address;\n}) => {\n const config = useConfig();\n const queryClient = useQueryClient();\n const { address: userAddress } = useAccount();\n\n const { data, ...rest } = useQuery({\n queryKey: HookFetchAssetAllowanceQK(asset, spender, userAddress),\n queryFn: () =>\n fetchAllowanceX(asset!, spender!, userAddress!, queryClient, config),\n enabled: Boolean(asset) && Boolean(spender) && Boolean(userAddress),\n ...queryConfig.lowSensitiveQuery,\n });\n\n return {\n ...rest,\n data,\n queryKey: HookFetchAssetAllowanceQK(asset, spender, userAddress),\n };\n};\n","import { useState, useEffect } from \"react\";\nimport { Address, maxUint256, erc20Abi } from \"viem\";\nimport { useFetchAssetAllowanceX } from \"../queries/useFetchAssetAllowanceX.js\";\nimport { useContractWriteX } from \"./useContractWriteX.js\";\n\n/**\n * Custom hook for approving ERC20 token transfers.\n *\n * This hook provides functionality for approving ERC20 token transfers, checking the current allowance, and handling the approval transaction using Wagmi.\n *\n * @param {Address} tokenAddress - The address of the ERC20 token contract (the transfer from).\n * @param {Address} spenderAddress - The address of the spender to approve the transfer to.\n * @param {bigint} [amount=BigInt(0)] - The amount to approve for transfer. Defaults to undefined.\n * @param {boolean} [approveMax=false] - Indicates whether to approve the maximum amount or a specific amount.\n * @returns {Object} Object containing the following properties:\n * - {boolean} isApproved - Indicates whether the spender is already approved to transfer the specified amount of tokens.\n * - {boolean} isApproving - Indicates whether an approval transaction is currently pending.\n * - {Function} approveAsync - Function to trigger the approval transaction.\n *\n * @example\n * // In your component:\n * function ApproveTokenButton(amountToApprove) {\n * const tokenAddress = \"0xTokenAddressExample\";\n * const spenderAddress = \"0xSpenderAddressExample\";\n *\n * const { isApproved, isApproving, justApproved, approveAsync } = useERC20ApproveX(\n * tokenAddress,\n * spenderAddress,\n * parseUnits(amountToApprove.toString(), 18),\n * );\n *\n * return (\n * <button onClick={approveAsync} disabled={isApproving || isApproved}>\n * {isApproving ? \"Approving...\" : isApproved ? \"Approved\" : \"Approve Token\"}\n * </button>\n * );\n * }\n */\n\nexport const useERC20ApproveX = (\n tokenAddress?: Address,\n spenderAddress?: Address,\n amount?: bigint,\n approveMax?: boolean\n) => {\n const [isApproved, setIsApproved] = useState(false);\n const [justApproved, setJustApproved] = useState(false);\n\n const { data: allowance, queryKey: allowanceKQ } = useFetchAssetAllowanceX({\n asset: tokenAddress,\n spender: spenderAddress,\n });\n\n const { writeContractAsync: approveTokenAsync, isPending } =\n useContractWriteX({\n queriesToInvalidate: [allowanceKQ],\n onSuccess: () => {\n setJustApproved(true);\n },\n });\n\n useEffect(() => {\n if (amount == null) {\n setIsApproved(false);\n } else if (allowance && allowance >= amount) {\n setIsApproved(true);\n } else {\n setIsApproved(false);\n }\n }, [allowance, amount]);\n\n const approveAsync = async () => {\n const amountToApprove = approveMax ? maxUint256 : amount;\n\n try {\n if (!spenderAddress) {\n throw new Error(\"spenderAddress is undefined!\");\n }\n if (!tokenAddress) {\n throw new Error(\"tokenAddress is undefined!\");\n }\n if (amountToApprove == null) {\n throw new Error(\"amountToApprove is undefined!\");\n }\n\n await approveTokenAsync({\n address: tokenAddress,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [spenderAddress, amountToApprove],\n });\n } catch (e: any) {\n console.error(\"Error approving token:\", e);\n throw e;\n }\n };\n\n return {\n isApproved,\n isApproving: isPending,\n justApproved,\n approveAsync,\n };\n};\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { Address, zeroAddress, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { queryConfig } from \"../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../utils/ensureClientAndConfig.js\";\n\nexport interface Token {\n symbol: string;\n decimals: number;\n name: string;\n}\n\nexport const EthTokenData: Token = {\n symbol: \"ETH\",\n decimals: 18,\n name: \"Ethereum\",\n};\n\nexport async function fetchDecimalsX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<number | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n if (token === zeroAddress) return EthTokenData.decimals;\n\n const decimals = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"decimals\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return decimals;\n}\n\nexport async function fetchSymbolX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<string> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n if (token === zeroAddress) return EthTokenData.symbol;\n\n const symbol = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"symbol\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return symbol;\n}\n\nexport async function fetchNameX(\n token: Address,\n queryClient: any,\n wagmiConfig: any\n): Promise<string> {\n if (token === zeroAddress) return EthTokenData.name;\n\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const name = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"name\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return name;\n}\n\n/**\n * Fetches the token metadata (symbol, decimals) for the given token address.\n * Internally calls:\n * - `fetchSymbol(token)` to retrieve the token symbol,\n * - `fetchDecimals(token)` to retrieve the token decimals\n * - `fetchName(token)` to retrieve the token name\n *\n * @param token - The address of the token.\n * @returns A `Token` object containing the symbol, decimals.\n * @throws Will throw an error if symbol or decimals cannot be fetched.\n */\nexport async function fetchTokenX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<Token> {\n const [symbol, decimals, name] = await Promise.all([\n fetchSymbolX(token, queryClient, wagmiConfig),\n fetchDecimalsX(token, queryClient, wagmiConfig),\n fetchNameX(token, queryClient, wagmiConfig),\n ]);\n if (!symbol || !decimals || !name) {\n throw new Error(\"Failed to fetch token data\");\n }\n\n return {\n symbol,\n decimals,\n name,\n };\n}\n","import { useQueryClient, useQuery } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport { fetchTokenX } from \"../../fetch-functions/fetchTokenX.js\";\n\n/**\n * Returns a query key for fetching token data.\n *\n * @param {Address | undefined} asset - The token address.\n * @returns {Array} A unique query key for the token fetch.\n *\n * @example\n * const queryKey = HookFetchTokenQK(\"0x123...\");\n */\nexport const HookFetchTokenQK = (asset?: Address): any[] => [\n \"HookTokenWagmiExtended\",\n asset,\n];\n\n/**\n * Custom hook for fetching token metadata using extended Wagmi functionality.\n *\n * This hook leverages React Query for data fetching and caching.\n * It retrieves token metadata (such as symbol, decimals, name, etc.) for a given token address.\n *\n * @param {Address} [asset] - The token address.\n * @returns {Object} An object with the following properties:\n * - `data`: The token data (or undefined if not loaded).\n * - `isLoading`: Boolean indicating if the data is loading.\n * - `error`: Any error encountered during the fetch.\n * - `queryKey`: The unique key used for the query.\n *\n * @example\n * // In your component:\n * function MyTokenComponent() {\n * const { data, isLoading, error, queryKey } = useTokenX(\"0x123456...\");\n *\n * if (isLoading) return <div>Loading token data...</div>;\n * if (error) return <div>Error: {error.message}</div>;\n *\n * return (\n * <div>\n * <p>Token Symbol: {data.symbol}</p>\n * <p>Decimals: {data.decimals}</p>\n * <p>Name: {data.name}</p>\n * </div>\n * );\n * }\n */\nexport const useTokenX = (asset?: Address) => {\n const queryClient = useQueryClient();\n const config = useConfig();\n\n const { data, ...rest } = useQuery({\n queryKey: HookFetchTokenQK(asset),\n queryFn: () => fetchTokenX(asset!, queryClient, config),\n enabled: Boolean(asset),\n });\n\n return {\n ...rest,\n data,\n queryKey: HookFetchTokenQK(asset),\n };\n};\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchBalanceOfX(\n asset: Address,\n user: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n return await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [user],\n }),\n ...queryConfig.lowSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchTotalSupplyX(\n asset: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n return await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"totalSupply\",\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\nimport { fetchAllowanceX } from \"./fetchAllowanceX.js\";\nimport { fetchBalanceOfX } from \"./fetchBalanceOfX.js\";\nimport { fetchTotalSupplyX } from \"./fetchTotalSupplyX.js\";\nimport { fetchNameX, fetchSymbolX, fetchDecimalsX } from \"../fetchTokenX.js\";\n\n/**\n * Fetches the full ERC-20 “summary” for a given vault and user context.\n */\nexport async function fetchERC20DataX(\n address: Address,\n user?: Address,\n spender?: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const [name, symbol, decimals, allowance, balanceOf, asset] =\n await Promise.all([\n fetchNameX(address, queryClient, wagmiConfig),\n fetchSymbolX(address, queryClient, wagmiConfig),\n fetchDecimalsX(address, queryClient, wagmiConfig),\n spender && user\n ? fetchAllowanceX(address, spender, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchBalanceOfX(address, user, queryClient, wagmiConfig)\n : undefined,\n fetchTotalSupplyX(address, queryClient, wagmiConfig),\n ]);\n\n return {\n name,\n symbol,\n decimals,\n allowance,\n balanceOf,\n asset,\n address,\n user,\n spender,\n };\n}\n\nexport type ERC20DataX = Awaited<ReturnType<typeof fetchERC20DataX>>;\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626AssetX(\n vault: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<Address> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"asset\",\n }),\n ...queryConfig.metaDataQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626TotalAssetsX(\n vault: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"totalAssets\",\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxDepositX(\n vault: Address,\n caller: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxDeposit\",\n args: [caller],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxMintX(\n vault: Address,\n caller: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxMint\",\n args: [caller],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxRedeemX(\n vault: Address,\n owner: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxRedeem\",\n args: [owner],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxWithdrawX(\n vault: Address,\n owner: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxWithdraw\",\n args: [owner],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\nimport { fetchERC4626AssetX } from \"./fetchERC4626AssetX.js\";\nimport { fetchERC4626MaxDepositX } from \"./fetchERC4626MaxDepositX.js\";\nimport { fetchERC4626TotalAssetsX } from \"./fetchERC4626TotalAssetsX.js\";\nimport { fetchERC4626MaxMintX } from \"./fetchERC4626MaxMintX.js\";\nimport { fetchERC4626MaxRedeemX } from \"./fetchERC4626MaxRedeemX.js\";\nimport { fetchERC4626MaxWithdrawX } from \"./fetchERC4626MaxWithdrawX.js\";\nimport { fetchERC20DataX } from \"../erc20/fetchERC20DataX.js\";\n\n/**\n * Fetches the full ERC-4626 “summary” for a given vault and user context.\n */\nexport async function fetchERC4626DataX(\n vault: Address,\n user?: Address,\n spender?: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const [erc20Data, maxDeposit, maxMint, maxRedeem, maxWithdraw] =\n await Promise.all([\n fetchERC20DataX(vault, user, spender, queryClient, wagmiConfig),\n\n fetchERC4626AssetX(vault, queryClient, wagmiConfig),\n fetchERC4626TotalAssetsX(vault, queryClient, wagmiConfig),\n user\n ? fetchERC4626MaxDepositX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxMintX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxRedeemX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxWithdrawX(vault, user, queryClient, wagmiConfig)\n : undefined,\n ]);\n\n return {\n ...erc20Data,\n maxDeposit,\n maxMint,\n maxRedeem,\n maxWithdraw,\n vault,\n owner: user,\n spender,\n };\n}\n\nexport type ERC4626DataX = Awaited<ReturnType<typeof fetchERC4626DataX>>;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/hooks/mutations/useInvalidateQueries.ts","../src/utils/errorParserX.ts","../src/hooks/mutations/useHandleTransactionMutationX.ts","../src/hooks/mutations/useContractWriteX.ts","../src/hooks/mutations/useSendTransactionX.ts","../src/query-config/index.ts","../src/config/defaults.ts","../src/utils/ensureClientAndConfig.ts","../src/fetch-functions/erc20/fetchAllowanceX.ts","../src/hooks/queries/useFetchAssetAllowanceX.ts","../src/hooks/mutations/useERC20ApproveX.ts","../src/fetch-functions/fetchTokenX.ts","../src/hooks/queries/useTokenX.ts","../src/fetch-functions/erc20/fetchBalanceOfX.ts","../src/fetch-functions/erc20/fetchTotalSupplyX.ts","../src/fetch-functions/erc20/fetchERC20DataX.ts","../src/fetch-functions/erc4626/fetchERC4626AssetX.ts","../src/fetch-functions/erc4626/fetchERC4626TotalAssetsX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxDepositX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxMintX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxRedeemX.ts","../src/fetch-functions/erc4626/fetchERC4626MaxWithdrawX.ts","../src/fetch-functions/erc4626/fetchERC4626DataX.ts"],"sourcesContent":["import { QueryKey, useQueryClient } from \"@tanstack/react-query\";\n\n/**\n * Hook to invalidate multiple queries in the React Query cache.\n *\n * @returns An object with the invalidateMany function.\n */\nexport function useInvalidateQueries() {\n const queryClient = useQueryClient();\n\n const invalidateMany = async (queries: (QueryKey | undefined)[]) => {\n const promises = queries.map((queryKey) =>\n queryClient.invalidateQueries({ queryKey })\n );\n await Promise.all(promises);\n };\n\n return { invalidateMany };\n}\n","import { BaseError, ContractFunctionRevertedError } from \"viem\";\n\n/**\n * Default error mapping that contains a set of error identifiers mapped to user-friendly error messages.\n */\nconst defaultErrorMapping: Record<string, string> = {\n EnforcedPause: \"Temporary pause in effect, please check Discord for updates.\",\n ErrorNotEnoughAllowance:\n \"Not enough allowance, did you approve your tokens first?\",\n \"0xc2139725\": \"Not enough allowance, did you approve your tokens first?\",\n SharesReceivedBelowMinimum:\n \"Action exceeded safe slippage parameters, please try again later\",\n \"0xea8d7f02\":\n \"Action exceeded safe slippage parameters, please try again later\",\n MaxSlippageExceeded:\n \"Action exceeded safe slippage parameters, please try again later\",\n \"51\": \"Supply cap exceeded\",\n};\n\n/**\n * A mutable copy of the default error mapping that can be extended or overridden by users.\n */\nlet currentErrorMapping: Record<string, string> = { ...defaultErrorMapping };\n\n/**\n * Merges a custom error mapping into the current error mapping.\n * Custom values override any existing keys.\n *\n * @param customMapping - An object containing error keys and the corresponding custom messages.\n *\n * @example\n * setErrorMapping({\n * ErrorNotEnoughAllowance: \"Custom message: Please approve tokens first!\",\n * NewCustomError: \"A custom error occurred.\"\n * });\n */\nexport const setErrorMapping = (\n customMapping: Record<string, string>\n): void => {\n currentErrorMapping = { ...currentErrorMapping, ...customMapping };\n};\n\n/**\n * Resets the current error mapping to the default error mapping.\n *\n * @example\n * resetErrorMapping();\n */\nexport const resetErrorMapping = (): void => {\n currentErrorMapping = {};\n};\n\n/**\n * Retrieves the current error mapping.\n *\n * @returns The current error mapping object.\n *\n * @example\n * const mapping = getErrorMapping();\n * console.log(mapping);\n */\nexport const getErrorMapping = (): Record<string, string> =>\n currentErrorMapping;\n\n/**\n * Parses an error object and returns a user-friendly error message.\n *\n * The function checks if the error is a ContractFunctionRevertedError by attempting to walk through\n * the error using its `walk` method. If a matching error is found and its error key exists in the\n * current error mapping, the corresponding custom message will be returned. Otherwise, it falls back\n * to the error's own message properties.\n *\n * @param error - The error object, potentially including additional error details.\n * @returns A user-friendly error message.\n *\n * @example\n * const message = getParsedError(someError);\n * console.log(message); // Outputs a custom error message or a default error message.\n */\nexport const getParsedErrorX = (error: any | BaseError): string => {\n const defaultMessage = \"An unknown error occurred. Please contact support.\";\n let message = defaultMessage;\n let errorKey = \"\";\n\n const revertedError = error?.walk\n ? error.walk((err: unknown) => err instanceof ContractFunctionRevertedError)\n : null;\n if (revertedError instanceof ContractFunctionRevertedError) {\n errorKey =\n revertedError.data?.errorName ??\n revertedError.signature ??\n revertedError.reason ??\n \"\";\n if (currentErrorMapping[errorKey]) return currentErrorMapping[errorKey];\n }\n\n message = error.shortMessage || error.details || error.message || message;\n return message;\n};\n","import { waitForTransactionReceipt } from \"wagmi/actions\";\nimport { useConfig } from \"wagmi\";\nimport { Query, QueryKey } from \"@tanstack/query-core\";\nimport { Address } from \"viem\";\nimport { useState } from \"react\";\nimport { useInvalidateQueries } from \"./useInvalidateQueries.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { getParsedErrorX } from \"../../utils/errorParserX.js\";\n\nexport type WriteExtendedAsyncParams = {\n onSuccess?: (txHash: Address) => void;\n onError?: (e: any) => void;\n onSettled?: () => void;\n\n onSuccessAsync?: (txHash: Address) => Promise<void>;\n onErrorAsync?: (e: any) => Promise<void>;\n onSettledAsync?: () => Promise<void>;\n\n /** simple list of keys to invalidate */\n queriesToInvalidate?: (QueryKey | undefined)[];\n /** a predicate to decide which queries to invalidate */\n invalidatePredicate?: (query: Query<unknown, unknown>) => boolean;\n\n disableLogging?: boolean;\n disableWaitingForReceipt?: boolean;\n};\n\n/**\n * Custom hook to handle transaction mutations.\n *\n * @returns {Function} A shared `onSettled` callback for transaction mutations.\n */\nexport function useHandleTransactionMutationX({\n settings,\n}: {\n settings?: WriteExtendedAsyncParams;\n}) {\n const wagmiConfig = useConfig();\n const queryClient = useQueryClient();\n\n const { invalidateMany } = useInvalidateQueries();\n const [isPending, setIsPending] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | undefined>(\n undefined\n );\n\n const onMutate = () => {\n setIsPending(true);\n setErrorMessage(undefined);\n };\n\n const onSettled = async (\n txHash: Address | undefined,\n error: any,\n args: any\n ) => {\n try {\n if (error) throw error;\n\n if (!settings?.disableWaitingForReceipt) {\n // 1. wait for transaction receipt\n const txReceipt = await waitForTransactionReceipt(wagmiConfig, {\n hash: txHash!,\n });\n\n // 2. throw if receipt is not valid\n if (txReceipt.status === \"reverted\")\n throw new Error(\"Execution reverted.\");\n if (txReceipt.status !== \"success\")\n throw new Error(\"Execution reverted.\");\n }\n\n // 3. invalidate queries\n const { queriesToInvalidate, invalidatePredicate } = settings || {};\n\n if (invalidatePredicate) {\n // 1) predicate-based\n await queryClient.invalidateQueries({\n predicate: invalidatePredicate,\n });\n }\n if (queriesToInvalidate) {\n // 2) explicit key list\n await invalidateMany(queriesToInvalidate);\n }\n\n // 4. call onSuccess callback\n settings?.onSuccess?.(txHash!);\n if (settings?.onSuccessAsync) await settings.onSuccessAsync(txHash!);\n\n if (!settings?.disableLogging) {\n // 5. log result\n // eslint-disable-next-line no-console\n console.info(\"Operation successful:\", txHash); // todo: add logging service\n }\n // 6. return result\n return txHash;\n } catch (error) {\n const parsedError = getParsedErrorX(error);\n\n if (!settings?.disableLogging) {\n // 1. log error\n console.error(\n `ContractWriteExtended Operation failed with error(parsed): ${parsedError}`,\n { error },\n { args }\n );\n console.error({ error });\n }\n // 2. set error message\n setErrorMessage(parsedError);\n\n // 3. call callback\n settings?.onError?.(error);\n if (settings?.onErrorAsync) await settings.onErrorAsync(error);\n } finally {\n setIsPending(false);\n // 1. call callback\n settings?.onSettled?.();\n if (settings?.onSettledAsync) await settings.onSettledAsync();\n }\n return undefined;\n };\n\n return {\n onMutate,\n onSettled,\n isPending,\n errorMessage,\n };\n}\n","import { usePublicClient, useSimulateContract, useWriteContract } from \"wagmi\";\nimport {\n WriteExtendedAsyncParams,\n useHandleTransactionMutationX,\n} from \"./useHandleTransactionMutationX.js\";\nimport { Address } from \"viem\";\n\n/**\n * Custom hook for writing to a smart contract using Wagmi with optional simulation.\n *\n * @param {WriteExtendedAsyncParams} settings - Settings for handling transaction lifecycle:\n * @param {boolean} [settings.disableWaitingForReceipt] - Disable waiting for receipt.\n * @param {boolean} [settings.disableLogging] - Disable logging.\n * @param {Function} [settings.onSuccess] - Callback invoked on successful transaction receipt.\n * @param {Function} [settings.onError] - Callback invoked on simulation or transaction error.\n * @param {Function} [settings.onSettled] - Callback invoked after transaction settles.\n * @param {Array<import('@tanstack/query-core').QueryKey>} [settings.queriesToInvalidate] - Query keys to invalidate after receipt.\n * @returns {Object} An object containing:\n * - writeContract: Wagmi's writeContract function.\n * - writeContractX: Wrapped writeContract with optional simulation.\n * - isPending: Boolean indicating if transaction is in progress.\n * - errorMessage: Error message if one occurred.\n *\n * @example\n * const { writeContractX, isPending, errorMessage } = useContractWriteX({ onSuccess: ..., onError: ... });\n * await writeContractX(\n * { abi, address, functionName, args, account, chain, value },\n * disable simulation? = false\n * );\n */\nexport function useContractWriteX(settings: WriteExtendedAsyncParams) {\n const publicClient = usePublicClient();\n\n const { isPending, errorMessage, onMutate, onSettled } =\n useHandleTransactionMutationX({ settings });\n\n // Underlying Wagmi write hook:\n const wagmiWrite = useWriteContract({\n mutation: { onMutate, onSettled },\n });\n\n async function writeContractX(\n params: Parameters<typeof wagmiWrite.writeContract>[0],\n disableSimulation = false\n ) {\n // 0) signal start\n onMutate();\n\n try {\n // 1) optional dry-run\n const { chain, ...others } = params;\n\n if (!disableSimulation) {\n await publicClient?.simulateContract({\n ...others,\n ...(chain != null ? { chain } : {}),\n });\n }\n\n wagmiWrite.writeContract(params);\n } catch (err) {\n await onSettled(undefined, err, params);\n }\n }\n\n return {\n ...wagmiWrite,\n writeContractX,\n isPending,\n errorMessage,\n };\n}\n","import { usePublicClient, useSendTransaction, useWriteContract } from \"wagmi\";\nimport {\n useHandleTransactionMutationX,\n WriteExtendedAsyncParams,\n} from \"./useHandleTransactionMutationX.js\";\nimport { writeContract } from \"wagmi/actions\";\n\n/**\n * Custom hook for sending a transaction using Wagmi with optional simulation.\n *\n * @param {WriteExtendedAsyncParams} [settings] - Settings for handling transaction lifecycle:\n * @param {boolean} [settings.disableWaitingForReceipt] - Disable waiting for receipt.\n * @param {boolean} [settings.disableLogging] - Disable logging.\n * @param {Function} [settings.onSuccess] - Callback on success.\n * @param {Function} [settings.onError] - Callback on error.\n * @param {Function} [settings.onSettled] - Callback after settlement.\n * @param {Array<import('@tanstack/query-core').QueryKey>} [settings.queriesToInvalidate] - Query keys to invalidate after receipt.\n * @returns {Object} An object containing:\n * - sendTransaction: Wagmi's sendTransaction function.\n * - sendTransactionX: Wrapped sendTransaction with optional simulation.\n * - isPending: Boolean indicating if transaction is in progress.\n * - errorMessage: Error message if one occurred.\n *\n * @example\n * const { sendTransactionX, isPending, errorMessage } = useSendTransactionX({ onSuccess: ..., onError: ... });\n * await sendTransactionX(\n * { to, value, data, account, chain },\n * { abi, functionName, args, chain }\n * );\n */\nexport function useSendTransactionX(settings?: WriteExtendedAsyncParams) {\n const publicClient = usePublicClient();\n\n const { isPending, errorMessage, onMutate, onSettled } =\n useHandleTransactionMutationX({\n settings,\n });\n\n const { sendTransaction, ...rest } = useSendTransaction({\n mutation: {\n onMutate,\n onSettled,\n },\n });\n\n /**\n * Wraps sendTransaction with an optional simulation step.\n *\n * @param {import('viem').SendTransactionParameters} params - Parameters to sendTransaction.\n * @param {import('viem').SimulateContractParameters} [simulationParams] - Optional parameters to simulate contract call:\n * @param {Array|object} simulationParams.abi - Contract ABI for simulation.\n * @param {string} simulationParams.functionName - Name of the contract function to simulate.\n * @param {any[]} [simulationParams.args] - Arguments for the function call.\n * @param {import('viem').Chain} [simulationParams.chain] - Chain to run the simulation on.\n * @returns {Promise<void>}\n */\n async function sendTransactionX(\n params: Parameters<typeof sendTransaction>[0],\n simulationParams?: Parameters<typeof writeContract>[1]\n ) {\n onMutate();\n\n try {\n if (params.to && simulationParams) {\n //simulate!\n await publicClient?.simulateContract({\n address: params.to,\n abi: simulationParams.abi,\n functionName: simulationParams.functionName,\n args: simulationParams.args ?? [],\n account: params.account,\n ...(simulationParams.chain != null\n ? { chain: simulationParams.chain }\n : {}),\n });\n }\n // actual send!\n await sendTransaction(params);\n } catch (err) {\n await onSettled(undefined, err, params);\n }\n }\n\n return {\n ...rest,\n isPending,\n errorMessage,\n sendTransaction,\n sendTransactionX,\n };\n}\n","export enum QueryType {\n MetaDataQuery = \"metaDataQuery\",\n SemiSensitiveQuery = \"semiSensitiveQuery\",\n LowSensitiveQuery = \"lowSensitiveQuery\",\n ExpensiveQuery = \"expensiveQuery\",\n PriceQuery = \"priceQuery\",\n}\n\nexport const queryConfig = {\n metaDataQuery: {\n staleTime: Number.POSITIVE_INFINITY,\n meta: { queryType: QueryType.MetaDataQuery } as const,\n },\n lowSensitiveQuery: {\n staleTime: 60_000,\n meta: { queryType: QueryType.SemiSensitiveQuery } as const,\n },\n semiSensitiveQuery: {\n staleTime: 180_000,\n meta: { queryType: QueryType.LowSensitiveQuery } as const,\n },\n priceQuery: {\n staleTime: 30 * 60 * 1000,\n meta: { queryType: QueryType.PriceQuery } as const,\n },\n expensiveQuery: {\n staleTime: 60 * 60 * 1000,\n meta: { queryType: QueryType.ExpensiveQuery } as const,\n },\n};\n","// src/config/defaults.ts\nimport { QueryClient } from \"@tanstack/react-query\";\nimport { Config } from \"wagmi\";\n\n// You can adjust the type for wagmiConfig to match your needs.\nlet defaultQueryClient: QueryClient | null = null;\nlet defaultWagmiConfig: any = null;\n\n/**\n * Sets the default configuration values.\n *\n * @param queryClient - The default QueryClient instance.\n * @param wagmiConfig - The default Wagmi configuration.\n * @example\n * //In your application initialization (e.g., index.tsx or App.tsx):\n * import { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n * import { wagmiConfig } from \"/path/to/wagmi-config\";\n * import { setDefaults } from \"wagmi-extended\";\n *\n * const queryClient = new QueryClient();\n *\n * //Set defaults for the extended library functions.\n * setDefaults(queryClient, wagmiConfig);\n *\n * //Now helper functions like fetchTokenX can use these defaults if no explicit parameters are provided.\n */\nexport function setDefaults(\n queryClient: QueryClient,\n wagmiConfig: Config\n): void {\n defaultQueryClient = queryClient;\n defaultWagmiConfig = wagmiConfig;\n}\n\n/**\n * Retrieves the currently set default configurations.\n *\n * @throws Will throw an error if defaults are not initialized.\n * @returns An object containing the default queryClient and wagmiConfig.\n *\n * @example\n * // Usage in a helper function:\n * import { getDefaults } from \"wagmi-extended\";\n *\n * function exampleFunction() {\n * const { queryClient, wagmiConfig } = getDefaults();\n * // Use queryClient and wagmiConfig as needed...\n * }\n */\nexport function getDefaults(): {\n queryClient: QueryClient;\n wagmiConfig: Config;\n} {\n if (!defaultQueryClient || !defaultWagmiConfig) {\n throw new Error(\n \"Default configuration not set. Please call setDefaults() first.\"\n );\n }\n return { queryClient: defaultQueryClient, wagmiConfig: defaultWagmiConfig };\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Config } from \"wagmi\";\nimport { getDefaults } from \"../config/defaults.js\";\n\nexport function ensureClientAndConfig(\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): { queryClient: QueryClient; wagmiConfig: Config } {\n if (!queryClient || !wagmiConfig) {\n ({ queryClient, wagmiConfig } = getDefaults());\n }\n if (!queryClient || !wagmiConfig) {\n throw new Error(\n \"Could not find queryClient or wagmiConfig; pass them in or setDefaults() first\"\n );\n }\n return { queryClient, wagmiConfig };\n}\n","import { Address, erc20Abi } from \"viem\";\nimport type { Config } from \"wagmi\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchAllowanceX(\n asset: Address,\n spender: Address,\n user: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const allowance = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"allowance\",\n args: [user, spender],\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return allowance;\n}\n","import { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { useAccount, useConfig } from \"wagmi\";\nimport { fetchAllowanceX } from \"../../fetch-functions/erc20/fetchAllowanceX.js\";\nimport { queryConfig } from \"../../query-config/index.js\";\n\nexport const HookFetchAssetAllowanceQK = (\n asset?: Address,\n spender?: Address,\n userAddress?: Address\n) => [\"HookFetchAllowance\", asset, spender, userAddress] as const;\n\n/**\n * Custom hook for fetching asset allowance.\n *\n * @param {Address} asset - The address of the ERC20 token contract.\n * @param {Address} spender - The address of the spender to check allowance for.\n *\n *\n * @example\n * // In your component:\n * function AllowanceDisplay() {\n * const { data: allowance, isLoading, error } = useFetchAssetAllowanceX({\n * asset: \"0xTokenAddressExample\",\n * spender: \"0xSpenderAddressExample\",\n * });\n *\n * if (isLoading) return <div>Loading allowance...</div>;\n * if (error) return <div>Error loading allowance</div>;\n *\n * return (\n * <div>\n * Current Allowance: {allowance}\n * </div>\n * );\n * }\n */\nexport const useFetchAssetAllowanceX = ({\n asset,\n spender,\n}: {\n asset?: Address;\n spender?: Address;\n}) => {\n const config = useConfig();\n const queryClient = useQueryClient();\n const { address: userAddress } = useAccount();\n\n const { data, ...rest } = useQuery({\n queryKey: HookFetchAssetAllowanceQK(asset, spender, userAddress),\n queryFn: () =>\n fetchAllowanceX(asset!, spender!, userAddress!, queryClient, config),\n enabled: Boolean(asset) && Boolean(spender) && Boolean(userAddress),\n ...queryConfig.lowSensitiveQuery,\n });\n\n return {\n ...rest,\n data,\n queryKey: HookFetchAssetAllowanceQK(asset, spender, userAddress),\n };\n};\n","import { useState, useEffect } from \"react\";\nimport { Address, maxUint256, erc20Abi } from \"viem\";\nimport { useFetchAssetAllowanceX } from \"../queries/useFetchAssetAllowanceX.js\";\nimport { useContractWriteX } from \"./useContractWriteX.js\";\n\n/**\n * Custom hook for approving ERC20 token transfers.\n *\n * This hook provides functionality for approving ERC20 token transfers, checking the current allowance, and handling the approval transaction using Wagmi.\n *\n * @param {Address} tokenAddress - The address of the ERC20 token contract (the transfer from).\n * @param {Address} spenderAddress - The address of the spender to approve the transfer to.\n * @param {bigint} [amount=BigInt(0)] - The amount to approve for transfer. Defaults to undefined.\n * @param {boolean} [approveMax=false] - Indicates whether to approve the maximum amount or a specific amount.\n * @returns {Object} Object containing the following properties:\n * - {boolean} isApproved - Indicates whether the spender is already approved to transfer the specified amount of tokens.\n * - {boolean} isApproving - Indicates whether an approval transaction is currently pending.\n * - {Function} approveAsync - Function to trigger the approval transaction.\n *\n * @example\n * // In your component:\n * function ApproveTokenButton(amountToApprove) {\n * const tokenAddress = \"0xTokenAddressExample\";\n * const spenderAddress = \"0xSpenderAddressExample\";\n *\n * const { isApproved, isApproving, justApproved, approveAsync } = useERC20ApproveX(\n * tokenAddress,\n * spenderAddress,\n * parseUnits(amountToApprove.toString(), 18),\n * );\n *\n * return (\n * <button onClick={approveAsync} disabled={isApproving || isApproved}>\n * {isApproving ? \"Approving...\" : isApproved ? \"Approved\" : \"Approve Token\"}\n * </button>\n * );\n * }\n */\n\nexport const useERC20ApproveX = (\n tokenAddress?: Address,\n spenderAddress?: Address,\n amount?: bigint,\n approveMax?: boolean\n) => {\n const [isApproved, setIsApproved] = useState(false);\n const [justApproved, setJustApproved] = useState(false);\n\n const { data: allowance, queryKey: allowanceKQ } = useFetchAssetAllowanceX({\n asset: tokenAddress,\n spender: spenderAddress,\n });\n\n const { writeContractAsync: approveTokenAsync, isPending } =\n useContractWriteX({\n queriesToInvalidate: [allowanceKQ],\n onSuccess: () => {\n setJustApproved(true);\n },\n });\n\n useEffect(() => {\n if (amount == null) {\n setIsApproved(false);\n } else if (allowance && allowance >= amount) {\n setIsApproved(true);\n } else {\n setIsApproved(false);\n }\n }, [allowance, amount]);\n\n const approveAsync = async () => {\n const amountToApprove = approveMax ? maxUint256 : amount;\n\n try {\n if (!spenderAddress) {\n throw new Error(\"spenderAddress is undefined!\");\n }\n if (!tokenAddress) {\n throw new Error(\"tokenAddress is undefined!\");\n }\n if (amountToApprove == null) {\n throw new Error(\"amountToApprove is undefined!\");\n }\n\n await approveTokenAsync({\n address: tokenAddress,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [spenderAddress, amountToApprove],\n });\n } catch (e: any) {\n console.error(\"Error approving token:\", e);\n throw e;\n }\n };\n\n return {\n isApproved,\n isApproving: isPending,\n justApproved,\n approveAsync,\n };\n};\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { Address, zeroAddress, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { queryConfig } from \"../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../utils/ensureClientAndConfig.js\";\n\nexport interface Token {\n symbol: string;\n decimals: number;\n name: string;\n}\n\nexport const EthTokenData: Token = {\n symbol: \"ETH\",\n decimals: 18,\n name: \"Ethereum\",\n};\n\nexport async function fetchDecimalsX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<number | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n if (token === zeroAddress) return EthTokenData.decimals;\n\n const decimals = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"decimals\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return decimals;\n}\n\nexport async function fetchSymbolX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<string> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n if (token === zeroAddress) return EthTokenData.symbol;\n\n const symbol = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"symbol\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return symbol;\n}\n\nexport async function fetchNameX(\n token: Address,\n queryClient: any,\n wagmiConfig: any\n): Promise<string> {\n if (token === zeroAddress) return EthTokenData.name;\n\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const name = await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: token,\n abi: erc20Abi,\n functionName: \"name\",\n }),\n ...queryConfig.metaDataQuery,\n });\n\n return name;\n}\n\n/**\n * Fetches the token metadata (symbol, decimals) for the given token address.\n * Internally calls:\n * - `fetchSymbol(token)` to retrieve the token symbol,\n * - `fetchDecimals(token)` to retrieve the token decimals\n * - `fetchName(token)` to retrieve the token name\n *\n * @param token - The address of the token.\n * @returns A `Token` object containing the symbol, decimals.\n * @throws Will throw an error if symbol or decimals cannot be fetched.\n */\nexport async function fetchTokenX(\n token: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<Token> {\n const [symbol, decimals, name] = await Promise.all([\n fetchSymbolX(token, queryClient, wagmiConfig),\n fetchDecimalsX(token, queryClient, wagmiConfig),\n fetchNameX(token, queryClient, wagmiConfig),\n ]);\n if (!symbol || !decimals || !name) {\n throw new Error(\"Failed to fetch token data\");\n }\n\n return {\n symbol,\n decimals,\n name,\n };\n}\n","import { useQueryClient, useQuery } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport { fetchTokenX } from \"../../fetch-functions/fetchTokenX.js\";\n\n/**\n * Returns a query key for fetching token data.\n *\n * @param {Address | undefined} asset - The token address.\n * @returns {Array} A unique query key for the token fetch.\n *\n * @example\n * const queryKey = HookFetchTokenQK(\"0x123...\");\n */\nexport const HookFetchTokenQK = (asset?: Address): any[] => [\n \"HookTokenWagmiExtended\",\n asset,\n];\n\n/**\n * Custom hook for fetching token metadata using extended Wagmi functionality.\n *\n * This hook leverages React Query for data fetching and caching.\n * It retrieves token metadata (such as symbol, decimals, name, etc.) for a given token address.\n *\n * @param {Address} [asset] - The token address.\n * @returns {Object} An object with the following properties:\n * - `data`: The token data (or undefined if not loaded).\n * - `isLoading`: Boolean indicating if the data is loading.\n * - `error`: Any error encountered during the fetch.\n * - `queryKey`: The unique key used for the query.\n *\n * @example\n * // In your component:\n * function MyTokenComponent() {\n * const { data, isLoading, error, queryKey } = useTokenX(\"0x123456...\");\n *\n * if (isLoading) return <div>Loading token data...</div>;\n * if (error) return <div>Error: {error.message}</div>;\n *\n * return (\n * <div>\n * <p>Token Symbol: {data.symbol}</p>\n * <p>Decimals: {data.decimals}</p>\n * <p>Name: {data.name}</p>\n * </div>\n * );\n * }\n */\nexport const useTokenX = (asset?: Address) => {\n const queryClient = useQueryClient();\n const config = useConfig();\n\n const { data, ...rest } = useQuery({\n queryKey: HookFetchTokenQK(asset),\n queryFn: () => fetchTokenX(asset!, queryClient, config),\n enabled: Boolean(asset),\n });\n\n return {\n ...rest,\n data,\n queryKey: HookFetchTokenQK(asset),\n };\n};\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchBalanceOfX(\n asset: Address,\n user: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n return await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [user],\n }),\n ...queryConfig.lowSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc20Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchTotalSupplyX(\n asset: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint | undefined> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n return await queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: asset,\n abi: erc20Abi,\n functionName: \"totalSupply\",\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\nimport { fetchAllowanceX } from \"./fetchAllowanceX.js\";\nimport { fetchBalanceOfX } from \"./fetchBalanceOfX.js\";\nimport { fetchTotalSupplyX } from \"./fetchTotalSupplyX.js\";\nimport { fetchNameX, fetchSymbolX, fetchDecimalsX } from \"../fetchTokenX.js\";\n\n/**\n * Fetches the full ERC-20 “summary” for a given vault and user context.\n */\nexport async function fetchERC20DataX(\n address: Address,\n user?: Address,\n spender?: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const [name, symbol, decimals, allowance, balanceOf, asset] =\n await Promise.all([\n fetchNameX(address, queryClient, wagmiConfig),\n fetchSymbolX(address, queryClient, wagmiConfig),\n fetchDecimalsX(address, queryClient, wagmiConfig),\n spender && user\n ? fetchAllowanceX(address, spender, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchBalanceOfX(address, user, queryClient, wagmiConfig)\n : undefined,\n fetchTotalSupplyX(address, queryClient, wagmiConfig),\n ]);\n\n return {\n name,\n symbol,\n decimals,\n allowance,\n balanceOf,\n asset,\n address,\n user,\n spender,\n };\n}\n\nexport type ERC20DataX = Awaited<ReturnType<typeof fetchERC20DataX>>;\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626AssetX(\n vault: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<Address> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"asset\",\n }),\n ...queryConfig.metaDataQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626TotalAssetsX(\n vault: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"totalAssets\",\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxDepositX(\n vault: Address,\n caller: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxDeposit\",\n args: [caller],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxMintX(\n vault: Address,\n caller: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxMint\",\n args: [caller],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxRedeemX(\n vault: Address,\n owner: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxRedeem\",\n args: [owner],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address, erc4626Abi } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { readContractQueryOptions } from \"wagmi/query\";\nimport { queryConfig } from \"../../query-config/index.js\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\n\nexport async function fetchERC4626MaxWithdrawX(\n vault: Address,\n owner: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n): Promise<bigint> {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n return queryClient.fetchQuery({\n ...readContractQueryOptions(wagmiConfig, {\n address: vault,\n abi: erc4626Abi,\n functionName: \"maxWithdraw\",\n args: [owner],\n }),\n ...queryConfig.semiSensitiveQuery,\n });\n}\n","import { QueryClient } from \"@tanstack/react-query\";\nimport { Address } from \"viem\";\nimport { Config } from \"wagmi\";\nimport { ensureClientAndConfig } from \"../../utils/ensureClientAndConfig.js\";\nimport { fetchERC4626AssetX } from \"./fetchERC4626AssetX.js\";\nimport { fetchERC4626MaxDepositX } from \"./fetchERC4626MaxDepositX.js\";\nimport { fetchERC4626TotalAssetsX } from \"./fetchERC4626TotalAssetsX.js\";\nimport { fetchERC4626MaxMintX } from \"./fetchERC4626MaxMintX.js\";\nimport { fetchERC4626MaxRedeemX } from \"./fetchERC4626MaxRedeemX.js\";\nimport { fetchERC4626MaxWithdrawX } from \"./fetchERC4626MaxWithdrawX.js\";\nimport { fetchERC20DataX } from \"../erc20/fetchERC20DataX.js\";\n\n/**\n * Fetches the full ERC-4626 “summary” for a given vault and user context.\n */\nexport async function fetchERC4626DataX(\n vault: Address,\n user?: Address,\n spender?: Address,\n queryClient?: QueryClient,\n wagmiConfig?: Config\n) {\n ({ queryClient, wagmiConfig } = ensureClientAndConfig(\n queryClient,\n wagmiConfig\n ));\n\n const [erc20Data, maxDeposit, maxMint, maxRedeem, maxWithdraw] =\n await Promise.all([\n fetchERC20DataX(vault, user, spender, queryClient, wagmiConfig),\n\n fetchERC4626AssetX(vault, queryClient, wagmiConfig),\n fetchERC4626TotalAssetsX(vault, queryClient, wagmiConfig),\n user\n ? fetchERC4626MaxDepositX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxMintX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxRedeemX(vault, user, queryClient, wagmiConfig)\n : undefined,\n user\n ? fetchERC4626MaxWithdrawX(vault, user, queryClient, wagmiConfig)\n : undefined,\n ]);\n\n return {\n ...erc20Data,\n maxDeposit,\n maxMint,\n maxRedeem,\n maxWithdraw,\n vault,\n owner: user,\n spender,\n };\n}\n\nexport type ERC4626DataX = Awaited<ReturnType<typeof fetchERC4626DataX>>;\n"],"names":[],"mappings":";;;;;;;AAEA;;;;AAIG;SACa,oBAAoB,GAAA;AAClC,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AAEpC,IAAA,MAAM,cAAc,GAAG,OAAO,OAAiC,KAAI;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KACpC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC5C;AACD,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,KAAC;IAED,OAAO,EAAE,cAAc,EAAE;AAC3B;;AChBA;;AAEG;AACH,MAAM,mBAAmB,GAA2B;AAClD,IAAA,aAAa,EAAE,8DAA8D;AAC7E,IAAA,uBAAuB,EACrB,0DAA0D;AAC5D,IAAA,YAAY,EAAE,0DAA0D;AACxE,IAAA,0BAA0B,EACxB,kEAAkE;AACpE,IAAA,YAAY,EACV,kEAAkE;AACpE,IAAA,mBAAmB,EACjB,kEAAkE;AACpE,IAAA,IAAI,EAAE,qBAAqB;CAC5B;AAED;;AAEG;AACH,IAAI,mBAAmB,GAA2B,EAAE,GAAG,mBAAmB,EAAE;AAE5E;;;;;;;;;;;AAWG;AACU,MAAA,eAAe,GAAG,CAC7B,aAAqC,KAC7B;IACR,mBAAmB,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,aAAa,EAAE;AACpE;AAEA;;;;;AAKG;AACI,MAAM,iBAAiB,GAAG,MAAW;IAC1C,mBAAmB,GAAG,EAAE;AAC1B;AAEA;;;;;;;;AAQG;MACU,eAAe,GAAG,MAC7B;AAEF;;;;;;;;;;;;;;AAcG;AACU,MAAA,eAAe,GAAG,CAAC,KAAsB,KAAY;IAChE,MAAM,cAAc,GAAG,oDAAoD;IAC3E,IAAI,OAAO,GAAG,cAAc;IAC5B,IAAI,QAAQ,GAAG,EAAE;AAEjB,IAAA,MAAM,aAAa,GAAG,KAAK,EAAE;AAC3B,UAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAY,KAAK,GAAG,YAAY,6BAA6B;UACzE,IAAI;AACR,IAAA,IAAI,aAAa,YAAY,6BAA6B,EAAE;QAC1D,QAAQ;YACN,aAAa,CAAC,IAAI,EAAE,SAAS;AAC7B,gBAAA,aAAa,CAAC,SAAS;AACvB,gBAAA,aAAa,CAAC,MAAM;AACpB,gBAAA,EAAE;QACJ,IAAI,mBAAmB,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,mBAAmB,CAAC,QAAQ,CAAC;;AAGzE,IAAA,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO;AACzE,IAAA,OAAO,OAAO;AAChB;;ACvEA;;;;AAIG;AACa,SAAA,6BAA6B,CAAC,EAC5C,QAAQ,GAGT,EAAA;AACC,IAAA,MAAM,WAAW,GAAG,SAAS,EAAE;AAC/B,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AAEpC,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,oBAAoB,EAAE;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,SAAS,CACV;IAED,MAAM,QAAQ,GAAG,MAAK;QACpB,YAAY,CAAC,IAAI,CAAC;QAClB,eAAe,CAAC,SAAS,CAAC;AAC5B,KAAC;IAED,MAAM,SAAS,GAAG,OAChB,MAA2B,EAC3B,KAAU,EACV,IAAS,KACP;AACF,QAAA,IAAI;AACF,YAAA,IAAI,KAAK;AAAE,gBAAA,MAAM,KAAK;AAEtB,YAAA,IAAI,CAAC,QAAQ,EAAE,wBAAwB,EAAE;;AAEvC,gBAAA,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,WAAW,EAAE;AAC7D,oBAAA,IAAI,EAAE,MAAO;AACd,iBAAA,CAAC;;AAGF,gBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU;AACjC,oBAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;AACxC,gBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;AAChC,oBAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;;;YAI1C,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,QAAQ,IAAI,EAAE;YAEnE,IAAI,mBAAmB,EAAE;;gBAEvB,MAAM,WAAW,CAAC,iBAAiB,CAAC;AAClC,oBAAA,SAAS,EAAE,mBAAmB;AAC/B,iBAAA,CAAC;;YAEJ,IAAI,mBAAmB,EAAE;;AAEvB,gBAAA,MAAM,cAAc,CAAC,mBAAmB,CAAC;;;AAI3C,YAAA,QAAQ,EAAE,SAAS,GAAG,MAAO,CAAC;YAC9B,IAAI,QAAQ,EAAE,cAAc;AAAE,gBAAA,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAO,CAAC;AAEpE,YAAA,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE;;;gBAG7B,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;;;AAGhD,YAAA,OAAO,MAAM;;QACb,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;AAE1C,YAAA,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE;;AAE7B,gBAAA,OAAO,CAAC,KAAK,CACX,CAAA,2DAAA,EAA8D,WAAW,CAAE,CAAA,EAC3E,EAAE,KAAK,EAAE,EACT,EAAE,IAAI,EAAE,CACT;AACD,gBAAA,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;;;YAG1B,eAAe,CAAC,WAAW,CAAC;;AAG5B,YAAA,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;YAC1B,IAAI,QAAQ,EAAE,YAAY;AAAE,gBAAA,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;;gBACtD;YACR,YAAY,CAAC,KAAK,CAAC;;AAEnB,YAAA,QAAQ,EAAE,SAAS,IAAI;YACvB,IAAI,QAAQ,EAAE,cAAc;AAAE,gBAAA,MAAM,QAAQ,CAAC,cAAc,EAAE;;AAE/D,QAAA,OAAO,SAAS;AAClB,KAAC;IAED,OAAO;QACL,QAAQ;QACR,SAAS;QACT,SAAS;QACT,YAAY;KACb;AACH;;AC3HA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACG,SAAU,iBAAiB,CAAC,QAAkC,EAAA;AAClE,IAAA,MAAM,YAAY,GAAG,eAAe,EAAE;AAEtC,IAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GACpD,6BAA6B,CAAC,EAAE,QAAQ,EAAE,CAAC;;IAG7C,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAClC,QAAA,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;AAClC,KAAA,CAAC;AAEF,IAAA,eAAe,cAAc,CAC3B,MAAsD,EACtD,iBAAiB,GAAG,KAAK,EAAA;;AAGzB,QAAA,QAAQ,EAAE;AAEV,QAAA,IAAI;;YAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM;YAEnC,IAAI,CAAC,iBAAiB,EAAE;gBACtB,MAAM,YAAY,EAAE,gBAAgB,CAAC;AACnC,oBAAA,GAAG,MAAM;AACT,oBAAA,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACpC,iBAAA,CAAC;;AAGJ,YAAA,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;;QAChC,OAAO,GAAG,EAAE;YACZ,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;;;IAI3C,OAAO;AACL,QAAA,GAAG,UAAU;QACb,cAAc;QACd,SAAS;QACT,YAAY;KACb;AACH;;AChEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACG,SAAU,mBAAmB,CAAC,QAAmC,EAAA;AACrE,IAAA,MAAM,YAAY,GAAG,eAAe,EAAE;IAEtC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GACpD,6BAA6B,CAAC;QAC5B,QAAQ;AACT,KAAA,CAAC;IAEJ,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,kBAAkB,CAAC;AACtD,QAAA,QAAQ,EAAE;YACR,QAAQ;YACR,SAAS;AACV,SAAA;AACF,KAAA,CAAC;AAEF;;;;;;;;;;AAUG;AACH,IAAA,eAAe,gBAAgB,CAC7B,MAA6C,EAC7C,gBAAsD,EAAA;AAEtD,QAAA,QAAQ,EAAE;AAEV,QAAA,IAAI;AACF,YAAA,IAAI,MAAM,CAAC,EAAE,IAAI,gBAAgB,EAAE;;gBAEjC,MAAM,YAAY,EAAE,gBAAgB,CAAC;oBACnC,OAAO,EAAE,MAAM,CAAC,EAAE;oBAClB,GAAG,EAAE,gBAAgB,CAAC,GAAG;oBACzB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC3C,oBAAA,IAAI,EAAE,gBAAgB,CAAC,IAAI,IAAI,EAAE;oBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,oBAAA,IAAI,gBAAgB,CAAC,KAAK,IAAI;AAC5B,0BAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK;0BAC/B,EAAE,CAAC;AACR,iBAAA,CAAC;;;AAGJ,YAAA,MAAM,eAAe,CAAC,MAAM,CAAC;;QAC7B,OAAO,GAAG,EAAE;YACZ,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;;;IAI3C,OAAO;AACL,QAAA,GAAG,IAAI;QACP,SAAS;QACT,YAAY;QACZ,eAAe;QACf,gBAAgB;KACjB;AACH;;AC1FA,IAAY,SAMX;AAND,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,SAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,SAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA;AAEM,MAAM,WAAW,GAAG;AACzB,IAAA,aAAa,EAAE;QACb,SAAS,EAAE,MAAM,CAAC,iBAAiB;AACnC,QAAA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,aAAa,EAAW;AACtD,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,SAAS,EAAE,KAAM;AACjB,QAAA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,kBAAkB,EAAW;AAC3D,KAAA;AACD,IAAA,kBAAkB,EAAE;AAClB,QAAA,SAAS,EAAE,MAAO;AAClB,QAAA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,iBAAiB,EAAW;AAC1D,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QACA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,UAAU,EAAW;AACnD,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QACA,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,cAAc,EAAW;AACvD,KAAA;CACF;;ACzBD;AACA,IAAI,kBAAkB,GAAuB,IAAI;AACjD,IAAI,kBAAkB,GAAQ,IAAI;AAElC;;;;;;;;;;;;;;;;;AAiBG;AACa,SAAA,WAAW,CACzB,WAAwB,EACxB,WAAmB,EAAA;IAEnB,kBAAkB,GAAG,WAAW;IAChC,kBAAkB,GAAG,WAAW;AAClC;AAEA;;;;;;;;;;;;;;AAcG;SACa,WAAW,GAAA;AAIzB,IAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,EAAE;AAC9C,QAAA,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE;;IAEH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE;AAC7E;;ACvDgB,SAAA,qBAAqB,CACnC,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;QAChC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;;AAE/C,IAAA,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF;;AAEH,IAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;AACrC;;ACVO,eAAe,eAAe,CACnC,KAAc,EACd,OAAgB,EAChB,IAAa,EACb,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;QAC7C,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,WAAW;AACzB,YAAA,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,CAAC;QACF,GAAG,WAAW,CAAC,aAAa;AAC7B,KAAA,CAAC;AAEF,IAAA,OAAO,SAAS;AAClB;;MCxBa,yBAAyB,GAAG,CACvC,KAAe,EACf,OAAiB,EACjB,WAAqB,KAClB,CAAC,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AACU,MAAA,uBAAuB,GAAG,CAAC,EACtC,KAAK,EACL,OAAO,GAIR,KAAI;AACH,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE;AAC1B,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;IACpC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE;IAE7C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QACjC,QAAQ,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;AAChE,QAAA,OAAO,EAAE,MACP,eAAe,CAAC,KAAM,EAAE,OAAQ,EAAE,WAAY,EAAE,WAAW,EAAE,MAAM,CAAC;AACtE,QAAA,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC;QACnE,GAAG,WAAW,CAAC,iBAAiB;AACjC,KAAA,CAAC;IAEF,OAAO;AACL,QAAA,GAAG,IAAI;QACP,IAAI;QACJ,QAAQ,EAAE,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;KACjE;AACH;;ACxDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,gBAAgB,GAAG,CAC9B,YAAsB,EACtB,cAAwB,EACxB,MAAe,EACf,UAAoB,KAClB;IACF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEvD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,uBAAuB,CAAC;AACzE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,OAAO,EAAE,cAAc;AACxB,KAAA,CAAC;IAEF,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,GACxD,iBAAiB,CAAC;QAChB,mBAAmB,EAAE,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,MAAK;YACd,eAAe,CAAC,IAAI,CAAC;SACtB;AACF,KAAA,CAAC;IAEJ,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,aAAa,CAAC,KAAK,CAAC;;AACf,aAAA,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM,EAAE;YAC3C,aAAa,CAAC,IAAI,CAAC;;aACd;YACL,aAAa,CAAC,KAAK,CAAC;;AAExB,KAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEvB,IAAA,MAAM,YAAY,GAAG,YAAW;QAC9B,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM;AAExD,QAAA,IAAI;YACF,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;;YAEjD,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;;AAE/C,YAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;;AAGlD,YAAA,MAAM,iBAAiB,CAAC;AACtB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,IAAI,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;AACxC,aAAA,CAAC;;QACF,OAAO,CAAM,EAAE;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC;;AAEX,KAAC;IAED,OAAO;QACL,UAAU;AACV,QAAA,WAAW,EAAE,SAAS;QACtB,YAAY;QACZ,YAAY;KACb;AACH;;AC1Fa,MAAA,YAAY,GAAU;AACjC,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,IAAI,EAAE,UAAU;;AAGX,eAAe,cAAc,CAClC,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,QAAQ;AAEvD,IAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;QAC5C,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,UAAU;SACzB,CAAC;QACF,GAAG,WAAW,CAAC,aAAa;AAC7B,KAAA,CAAC;AAEF,IAAA,OAAO,QAAQ;AACjB;AAEO,eAAe,YAAY,CAChC,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,MAAM;AAErD,IAAA,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;QAC1C,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,QAAQ;SACvB,CAAC;QACF,GAAG,WAAW,CAAC,aAAa;AAC7B,KAAA,CAAC;AAEF,IAAA,OAAO,MAAM;AACf;AAEO,eAAe,UAAU,CAC9B,KAAc,EACd,WAAgB,EAChB,WAAgB,EAAA;IAEhB,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC,IAAI;AAEnD,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;QACxC,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,MAAM;SACrB,CAAC;QACF,GAAG,WAAW,CAAC,aAAa;AAC7B,KAAA,CAAC;AAEF,IAAA,OAAO,IAAI;AACb;AAEA;;;;;;;;;;AAUG;AACI,eAAe,WAAW,CAC/B,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACjD,QAAA,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;AAC7C,QAAA,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;AAC/C,QAAA,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;AAC5C,KAAA,CAAC;IACF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;;IAG/C,OAAO;QACL,MAAM;QACN,QAAQ;QACR,IAAI;KACL;AACH;;AClHA;;;;;;;;AAQG;MACU,gBAAgB,GAAG,CAAC,KAAe,KAAY;IAC1D,wBAAwB;IACxB,KAAK;;AAGP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACU,MAAA,SAAS,GAAG,CAAC,KAAe,KAAI;AAC3C,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AACpC,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE;IAE1B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;AACjC,QAAA,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACjC,OAAO,EAAE,MAAM,WAAW,CAAC,KAAM,EAAE,WAAW,EAAE,MAAM,CAAC;AACvD,QAAA,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AACxB,KAAA,CAAC;IAEF,OAAO;AACL,QAAA,GAAG,IAAI;QACP,IAAI;AACJ,QAAA,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC;KAClC;AACH;;ACzDO,eAAe,eAAe,CACnC,KAAc,EACd,IAAa,EACb,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,OAAO,MAAM,WAAW,CAAC,UAAU,CAAC;QAClC,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC;SACb,CAAC;QACF,GAAG,WAAW,CAAC,iBAAiB;AACjC,KAAA,CAAC;AACJ;;ACpBO,eAAe,iBAAiB,CACrC,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,OAAO,MAAM,WAAW,CAAC,UAAU,CAAC;QAClC,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,YAAY,EAAE,aAAa;SAC5B,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;AChBA;;AAEG;AACI,eAAe,eAAe,CACnC,OAAgB,EAChB,IAAc,EACd,OAAiB,EACjB,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,GACzD,MAAM,OAAO,CAAC,GAAG,CAAC;AAChB,QAAA,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AAC7C,QAAA,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AAC/C,QAAA,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AACjD,QAAA,OAAO,IAAI;AACT,cAAE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AAClE,cAAE,SAAS;QACb;cACI,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AACzD,cAAE,SAAS;AACb,QAAA,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AACrD,KAAA,CAAC;IAEJ,OAAO;QACL,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,SAAS;QACT,KAAK;QACL,OAAO;QACP,IAAI;QACJ,OAAO;KACR;AACH;;AC1CO,eAAe,kBAAkB,CACtC,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,GAAG,WAAW,CAAC,aAAa;AAC7B,KAAA,CAAC;AACJ;;ACjBO,eAAe,wBAAwB,CAC5C,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,aAAa;SAC5B,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;ACjBO,eAAe,uBAAuB,CAC3C,KAAc,EACd,MAAe,EACf,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,MAAM,CAAC;SACf,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;ACnBO,eAAe,oBAAoB,CACxC,KAAc,EACd,MAAe,EACf,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,MAAM,CAAC;SACf,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;ACnBO,eAAe,sBAAsB,CAC1C,KAAc,EACd,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;ACnBO,eAAe,wBAAwB,CAC5C,KAAc,EACd,KAAc,EACd,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;IACD,OAAO,WAAW,CAAC,UAAU,CAAC;QAC5B,GAAG,wBAAwB,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,CAAC;QACF,GAAG,WAAW,CAAC,kBAAkB;AAClC,KAAA,CAAC;AACJ;;ACdA;;AAEG;AACI,eAAe,iBAAiB,CACrC,KAAc,EACd,IAAc,EACd,OAAiB,EACjB,WAAyB,EACzB,WAAoB,EAAA;AAEpB,IAAA,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,qBAAqB,CACnD,WAAW,EACX,WAAW,CACZ;AAED,IAAA,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,GAC5D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;AAE/D,QAAA,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;AACnD,QAAA,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;QACzD;cACI,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AAC/D,cAAE,SAAS;QACb;cACI,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AAC5D,cAAE,SAAS;QACb;cACI,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AAC9D,cAAE,SAAS;QACb;cACI,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW;AAChE,cAAE,SAAS;AACd,KAAA,CAAC;IAEJ,OAAO;AACL,QAAA,GAAG,SAAS;QACZ,UAAU;QACV,OAAO;QACP,SAAS;QACT,WAAW;QACX,KAAK;AACL,QAAA,KAAK,EAAE,IAAI;QACX,OAAO;KACR;AACH;;;;"}
|
|
@@ -1,26 +1,39 @@
|
|
|
1
|
+
export declare enum QueryType {
|
|
2
|
+
MetaDataQuery = "metaDataQuery",
|
|
3
|
+
SemiSensitiveQuery = "semiSensitiveQuery",
|
|
4
|
+
LowSensitiveQuery = "lowSensitiveQuery",
|
|
5
|
+
ExpensiveQuery = "expensiveQuery",
|
|
6
|
+
PriceQuery = "priceQuery"
|
|
7
|
+
}
|
|
1
8
|
export declare const queryConfig: {
|
|
2
9
|
metaDataQuery: {
|
|
3
10
|
staleTime: number;
|
|
4
11
|
meta: {
|
|
5
|
-
readonly
|
|
12
|
+
readonly queryType: QueryType.MetaDataQuery;
|
|
6
13
|
};
|
|
7
14
|
};
|
|
8
15
|
lowSensitiveQuery: {
|
|
9
16
|
staleTime: number;
|
|
10
17
|
meta: {
|
|
11
|
-
readonly
|
|
18
|
+
readonly queryType: QueryType.SemiSensitiveQuery;
|
|
12
19
|
};
|
|
13
20
|
};
|
|
14
21
|
semiSensitiveQuery: {
|
|
15
22
|
staleTime: number;
|
|
16
23
|
meta: {
|
|
17
|
-
readonly
|
|
24
|
+
readonly queryType: QueryType.LowSensitiveQuery;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
priceQuery: {
|
|
28
|
+
staleTime: number;
|
|
29
|
+
meta: {
|
|
30
|
+
readonly queryType: QueryType.PriceQuery;
|
|
18
31
|
};
|
|
19
32
|
};
|
|
20
33
|
expensiveQuery: {
|
|
21
34
|
staleTime: number;
|
|
22
35
|
meta: {
|
|
23
|
-
readonly
|
|
36
|
+
readonly queryType: QueryType.ExpensiveQuery;
|
|
24
37
|
};
|
|
25
38
|
};
|
|
26
39
|
};
|