@turtleclub/hooks 0.5.0-beta.43 → 0.5.0-beta.45
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/index.cjs +280 -186
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +271 -178
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/v2/earn-actions/api.ts +1 -0
- package/src/v2/earn-actions/schema.ts +2 -0
- package/src/v2/earn-actions/useEarnDeposit.ts +21 -5
- package/src/v2/earn-deposits/hooks/useActionsDefaultParams.ts +122 -0
- package/src/v2/earn-deposits/hooks/useDepositFlow.ts +12 -4
- package/src/v2/earn-deposits/hooks.ts +7 -0
package/dist/index.cjs
CHANGED
|
@@ -167,6 +167,7 @@ __export(index_exports, {
|
|
|
167
167
|
tokenSchema: () => tokenSchema,
|
|
168
168
|
transactionSchema: () => transactionSchema,
|
|
169
169
|
txResponseItemSchema: () => txResponseItemSchema,
|
|
170
|
+
useActionsDefaultParams: () => useActionsDefaultParams,
|
|
170
171
|
useAttributeAction: () => useAttributeAction,
|
|
171
172
|
useBalance: () => useBalance2,
|
|
172
173
|
useCancelDepositAction: () => useCancelDepositAction,
|
|
@@ -1896,7 +1897,7 @@ function useCreateMembership() {
|
|
|
1896
1897
|
}
|
|
1897
1898
|
|
|
1898
1899
|
// src/v2/earn-deposits/hooks.ts
|
|
1899
|
-
var
|
|
1900
|
+
var import_react_query9 = require("@tanstack/react-query");
|
|
1900
1901
|
|
|
1901
1902
|
// src/v2/earn-deposits/hooks/useDepositValidation.ts
|
|
1902
1903
|
var import_react = require("react");
|
|
@@ -2194,6 +2195,7 @@ var attributeActionResponseSchema = import_zod14.z.object({
|
|
|
2194
2195
|
// src/v2/earn-actions/api.ts
|
|
2195
2196
|
function buildActionQuery(params) {
|
|
2196
2197
|
const searchParams = new URLSearchParams({
|
|
2198
|
+
mode: params.mode,
|
|
2197
2199
|
userAddress: params.userAddress,
|
|
2198
2200
|
tokenIn: params.tokenIn,
|
|
2199
2201
|
amount: params.amount,
|
|
@@ -2340,7 +2342,15 @@ var balanceQueries = (0, import_query_key_factory15.createQueryKeys)("balance",
|
|
|
2340
2342
|
// src/v2/earn-actions/useEarnDeposit.ts
|
|
2341
2343
|
var DEFAULT_SLIPPAGE_BPS = 50;
|
|
2342
2344
|
function useEarnDeposit(options) {
|
|
2343
|
-
const {
|
|
2345
|
+
const {
|
|
2346
|
+
mode,
|
|
2347
|
+
opportunity,
|
|
2348
|
+
userAddress,
|
|
2349
|
+
distributorId,
|
|
2350
|
+
executeTransactionAndWait,
|
|
2351
|
+
onSuccess,
|
|
2352
|
+
referralCode
|
|
2353
|
+
} = options;
|
|
2344
2354
|
const queryClient = (0, import_react_query5.useQueryClient)();
|
|
2345
2355
|
const [isConfirming, setIsConfirming] = (0, import_react4.useState)(false);
|
|
2346
2356
|
const [error, setError] = (0, import_react4.useState)(null);
|
|
@@ -2361,7 +2371,7 @@ function useEarnDeposit(options) {
|
|
|
2361
2371
|
let lastTxHash;
|
|
2362
2372
|
for (const txItem of transactions) {
|
|
2363
2373
|
const txRequest = toTransactionRequest(txItem);
|
|
2364
|
-
const txHash = await
|
|
2374
|
+
const txHash = await executeTransactionAndWait(txRequest);
|
|
2365
2375
|
if (!txHash) {
|
|
2366
2376
|
throw new Error(`Transaction failed: ${txItem.description || "Unknown transaction"}`);
|
|
2367
2377
|
}
|
|
@@ -2369,7 +2379,7 @@ function useEarnDeposit(options) {
|
|
|
2369
2379
|
}
|
|
2370
2380
|
return lastTxHash;
|
|
2371
2381
|
},
|
|
2372
|
-
[
|
|
2382
|
+
[executeTransactionAndWait, toTransactionRequest]
|
|
2373
2383
|
);
|
|
2374
2384
|
const attributeTransactionSafely = (0, import_react4.useCallback)(
|
|
2375
2385
|
async (actionId, txHash) => {
|
|
@@ -2401,6 +2411,7 @@ function useEarnDeposit(options) {
|
|
|
2401
2411
|
}
|
|
2402
2412
|
try {
|
|
2403
2413
|
const actionResponse = await depositAction.mutateAsync({
|
|
2414
|
+
mode,
|
|
2404
2415
|
opportunityId: opportunity.id,
|
|
2405
2416
|
userAddress,
|
|
2406
2417
|
tokenIn: tokenAddress,
|
|
@@ -2468,11 +2479,12 @@ function useEarnDeposit(options) {
|
|
|
2468
2479
|
|
|
2469
2480
|
// src/v2/earn-deposits/hooks/useDepositFlow.ts
|
|
2470
2481
|
function useDepositFlow({
|
|
2482
|
+
mode,
|
|
2471
2483
|
opportunity,
|
|
2472
2484
|
userAddress,
|
|
2473
2485
|
distributorId,
|
|
2474
2486
|
balances,
|
|
2475
|
-
|
|
2487
|
+
executeTransactionAndWait,
|
|
2476
2488
|
onDepositSuccess,
|
|
2477
2489
|
refetchBalances,
|
|
2478
2490
|
slippageBps,
|
|
@@ -2491,10 +2503,11 @@ function useDepositFlow({
|
|
|
2491
2503
|
hasApprove,
|
|
2492
2504
|
resetMetadata
|
|
2493
2505
|
} = useEarnDeposit({
|
|
2506
|
+
mode,
|
|
2494
2507
|
opportunity,
|
|
2495
2508
|
userAddress,
|
|
2496
2509
|
distributorId,
|
|
2497
|
-
|
|
2510
|
+
executeTransactionAndWait,
|
|
2498
2511
|
onSuccess: () => {
|
|
2499
2512
|
selection.setAmount(void 0);
|
|
2500
2513
|
refetchBalances?.();
|
|
@@ -2532,163 +2545,13 @@ function useDepositFlow({
|
|
|
2532
2545
|
};
|
|
2533
2546
|
}
|
|
2534
2547
|
|
|
2535
|
-
// src/v2/earn-deposits/hooks.ts
|
|
2536
|
-
function useDeposits({ params, enabled = true }) {
|
|
2537
|
-
return (0, import_react_query6.useQuery)({
|
|
2538
|
-
...earnDepositsQueries.byParams(params),
|
|
2539
|
-
...queryDefaults,
|
|
2540
|
-
enabled
|
|
2541
|
-
});
|
|
2542
|
-
}
|
|
2543
|
-
|
|
2544
|
-
// src/v2/enso-balances/hooks.ts
|
|
2545
|
-
var import_react6 = require("react");
|
|
2546
|
-
var import_react_query7 = require("@tanstack/react-query");
|
|
2547
|
-
function useMultiChainBalances({
|
|
2548
|
-
chainIds,
|
|
2549
|
-
address
|
|
2550
|
-
}) {
|
|
2551
|
-
const queries2 = (0, import_react_query7.useQueries)({
|
|
2552
|
-
queries: chainIds.map((chainId) => ({
|
|
2553
|
-
...ensoBalancesQueries.byParams({ user: address || "", chain: chainId }),
|
|
2554
|
-
enabled: !!address,
|
|
2555
|
-
staleTime: 60 * 1e3,
|
|
2556
|
-
refetchInterval: 3 * 60 * 1e3,
|
|
2557
|
-
refetchOnMount: false,
|
|
2558
|
-
refetchOnWindowFocus: false
|
|
2559
|
-
}))
|
|
2560
|
-
});
|
|
2561
|
-
const isLoading = queries2.some((query) => query.isLoading);
|
|
2562
|
-
const error = queries2.find((query) => query.error)?.error || null;
|
|
2563
|
-
const refetchAll = () => {
|
|
2564
|
-
queries2.forEach((query) => {
|
|
2565
|
-
query.refetch();
|
|
2566
|
-
});
|
|
2567
|
-
};
|
|
2568
|
-
const balances = (0, import_react6.useMemo)(() => {
|
|
2569
|
-
const balanceMap = {};
|
|
2570
|
-
queries2.forEach((query, index) => {
|
|
2571
|
-
const chainId = chainIds[index];
|
|
2572
|
-
if (query.data && chainId !== void 0) {
|
|
2573
|
-
balanceMap[chainId] = query.data.balances;
|
|
2574
|
-
}
|
|
2575
|
-
});
|
|
2576
|
-
return balanceMap;
|
|
2577
|
-
}, [queries2, chainIds]);
|
|
2578
|
-
return {
|
|
2579
|
-
balances,
|
|
2580
|
-
isLoading,
|
|
2581
|
-
error,
|
|
2582
|
-
refetchAll
|
|
2583
|
-
};
|
|
2584
|
-
}
|
|
2585
|
-
|
|
2586
|
-
// src/v2/opportunities/hooks.ts
|
|
2587
|
-
var import_react_query8 = require("@tanstack/react-query");
|
|
2588
|
-
function useOpportunities(options) {
|
|
2589
|
-
return (0, import_react_query8.useQuery)({
|
|
2590
|
-
...opportunitiesQueries.all,
|
|
2591
|
-
...queryDefaults,
|
|
2592
|
-
select: (data) => {
|
|
2593
|
-
const uniqueChainsMap = new Map(
|
|
2594
|
-
data.opportunities.map((opportunity) => opportunity.receiptToken?.chain).filter((chain) => chain !== void 0).map((chain) => [chain.id, chain])
|
|
2595
|
-
);
|
|
2596
|
-
const chains = Array.from(uniqueChainsMap.values());
|
|
2597
|
-
return {
|
|
2598
|
-
...data,
|
|
2599
|
-
chains
|
|
2600
|
-
};
|
|
2601
|
-
}
|
|
2602
|
-
});
|
|
2603
|
-
}
|
|
2604
|
-
function useOpportunity({ id, ...options }) {
|
|
2605
|
-
return (0, import_react_query8.useQuery)({
|
|
2606
|
-
...opportunitiesQueries.byId(id),
|
|
2607
|
-
...queryDefaults,
|
|
2608
|
-
select: (data) => {
|
|
2609
|
-
return {
|
|
2610
|
-
...data,
|
|
2611
|
-
chain: data.receiptToken?.chain
|
|
2612
|
-
};
|
|
2613
|
-
}
|
|
2614
|
-
});
|
|
2615
|
-
}
|
|
2616
|
-
function useOpportunitiesPaginated({
|
|
2617
|
-
params,
|
|
2618
|
-
enabled = true
|
|
2619
|
-
} = {}) {
|
|
2620
|
-
return (0, import_react_query8.useQuery)({
|
|
2621
|
-
...opportunitiesQueries.paginated(params),
|
|
2622
|
-
...queryDefaults,
|
|
2623
|
-
enabled
|
|
2624
|
-
});
|
|
2625
|
-
}
|
|
2626
|
-
function useOpportunitiesFilterOptions({
|
|
2627
|
-
enabled = true
|
|
2628
|
-
} = {}) {
|
|
2629
|
-
return (0, import_react_query8.useQuery)({
|
|
2630
|
-
...opportunitiesQueries.filterOptions,
|
|
2631
|
-
...queryDefaults,
|
|
2632
|
-
enabled
|
|
2633
|
-
});
|
|
2634
|
-
}
|
|
2635
|
-
|
|
2636
|
-
// src/v2/products/hooks.ts
|
|
2637
|
-
var import_react_query9 = require("@tanstack/react-query");
|
|
2638
|
-
function useProducts({ filters, enabled = true }) {
|
|
2639
|
-
return (0, import_react_query9.useQuery)({
|
|
2640
|
-
...productsQueries.list(filters),
|
|
2641
|
-
...queryDefaults,
|
|
2642
|
-
enabled
|
|
2643
|
-
});
|
|
2644
|
-
}
|
|
2645
|
-
function useProduct({ id, enabled = true }) {
|
|
2646
|
-
return (0, import_react_query9.useQuery)({
|
|
2647
|
-
...productsQueries.byId(id),
|
|
2648
|
-
...queryDefaults,
|
|
2649
|
-
enabled
|
|
2650
|
-
});
|
|
2651
|
-
}
|
|
2652
|
-
function useCreateProduct(options) {
|
|
2653
|
-
return (0, import_react_query9.useMutation)({
|
|
2654
|
-
mutationFn: (input) => createProduct(input),
|
|
2655
|
-
...options
|
|
2656
|
-
});
|
|
2657
|
-
}
|
|
2658
|
-
function useUpdateProduct(options) {
|
|
2659
|
-
return (0, import_react_query9.useMutation)({
|
|
2660
|
-
mutationFn: (input) => updateProduct(input),
|
|
2661
|
-
...options
|
|
2662
|
-
});
|
|
2663
|
-
}
|
|
2664
|
-
function useDeleteProduct(options) {
|
|
2665
|
-
return (0, import_react_query9.useMutation)({
|
|
2666
|
-
mutationFn: (id) => deleteProduct(id),
|
|
2667
|
-
...options
|
|
2668
|
-
});
|
|
2669
|
-
}
|
|
2670
|
-
function useUploadProductLogo(options) {
|
|
2671
|
-
return (0, import_react_query9.useMutation)({
|
|
2672
|
-
mutationFn: (request) => uploadProductLogo(request),
|
|
2673
|
-
...options
|
|
2674
|
-
});
|
|
2675
|
-
}
|
|
2676
|
-
|
|
2677
|
-
// src/v2/balance/types.ts
|
|
2678
|
-
var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
|
|
2679
|
-
BalanceSourcePriority2[BalanceSourcePriority2["ONCHAIN"] = 1] = "ONCHAIN";
|
|
2680
|
-
BalanceSourcePriority2[BalanceSourcePriority2["PORTFOLIO"] = 2] = "PORTFOLIO";
|
|
2681
|
-
BalanceSourcePriority2[BalanceSourcePriority2["ENSO"] = 3] = "ENSO";
|
|
2682
|
-
return BalanceSourcePriority2;
|
|
2683
|
-
})(BalanceSourcePriority || {});
|
|
2684
|
-
|
|
2685
|
-
// src/v2/balance/hooks/useBalance.ts
|
|
2548
|
+
// src/v2/earn-deposits/hooks/useActionsDefaultParams.ts
|
|
2686
2549
|
var import_react10 = require("react");
|
|
2687
2550
|
|
|
2688
2551
|
// src/v2/balance/hooks/useGetOnChainBalance.ts
|
|
2689
2552
|
var import_wagmi = require("wagmi");
|
|
2690
2553
|
var import_viem3 = require("viem");
|
|
2691
|
-
var
|
|
2554
|
+
var import_react6 = require("react");
|
|
2692
2555
|
var NATIVE_TOKEN_ADDRESSES = [
|
|
2693
2556
|
"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
2694
2557
|
"0x0000000000000000000000000000000000000000"
|
|
@@ -2703,7 +2566,7 @@ function useGetOnChainBalance({
|
|
|
2703
2566
|
address,
|
|
2704
2567
|
enabled = true
|
|
2705
2568
|
}) {
|
|
2706
|
-
const { nativeTokens, erc20Tokens } = (0,
|
|
2569
|
+
const { nativeTokens, erc20Tokens } = (0, import_react6.useMemo)(() => {
|
|
2707
2570
|
const native = [];
|
|
2708
2571
|
const erc20 = [];
|
|
2709
2572
|
for (const token of tokens) {
|
|
@@ -2731,7 +2594,7 @@ function useGetOnChainBalance({
|
|
|
2731
2594
|
refetchOnWindowFocus: true
|
|
2732
2595
|
}
|
|
2733
2596
|
});
|
|
2734
|
-
const contracts = (0,
|
|
2597
|
+
const contracts = (0, import_react6.useMemo)(() => {
|
|
2735
2598
|
if (!address || !enabled) return [];
|
|
2736
2599
|
return erc20Tokens.map(
|
|
2737
2600
|
(token) => ({
|
|
@@ -2757,7 +2620,7 @@ function useGetOnChainBalance({
|
|
|
2757
2620
|
refetchOnWindowFocus: true
|
|
2758
2621
|
}
|
|
2759
2622
|
});
|
|
2760
|
-
const balances = (0,
|
|
2623
|
+
const balances = (0, import_react6.useMemo)(() => {
|
|
2761
2624
|
const result = [];
|
|
2762
2625
|
if (nativeToken && nativeBalanceData) {
|
|
2763
2626
|
result.push({
|
|
@@ -2784,7 +2647,7 @@ function useGetOnChainBalance({
|
|
|
2784
2647
|
}, [nativeToken, nativeBalanceData, erc20Results, erc20Tokens]);
|
|
2785
2648
|
const isLoading = nativeTokens.length > 0 && isNativeLoading || erc20Tokens.length > 0 && isErc20Loading;
|
|
2786
2649
|
const error = nativeError || erc20Error;
|
|
2787
|
-
const refetch = (0,
|
|
2650
|
+
const refetch = (0, import_react6.useCallback)(() => {
|
|
2788
2651
|
if (nativeTokens.length > 0) {
|
|
2789
2652
|
refetchNative();
|
|
2790
2653
|
}
|
|
@@ -2800,14 +2663,17 @@ function useGetOnChainBalance({
|
|
|
2800
2663
|
};
|
|
2801
2664
|
}
|
|
2802
2665
|
|
|
2803
|
-
// src/v2/balance/hooks/
|
|
2804
|
-
var import_react_query12 = require("@tanstack/react-query");
|
|
2666
|
+
// src/v2/balance/hooks/useBalance.ts
|
|
2805
2667
|
var import_react9 = require("react");
|
|
2806
2668
|
|
|
2669
|
+
// src/v2/balance/hooks/usePortfolioBalance.ts
|
|
2670
|
+
var import_react_query8 = require("@tanstack/react-query");
|
|
2671
|
+
var import_react8 = require("react");
|
|
2672
|
+
|
|
2807
2673
|
// src/v2/supported-chains/hooks.ts
|
|
2808
|
-
var
|
|
2674
|
+
var import_react_query6 = require("@tanstack/react-query");
|
|
2809
2675
|
function useSupportedChains() {
|
|
2810
|
-
const { data, isLoading, error, refetch } = (0,
|
|
2676
|
+
const { data, isLoading, error, refetch } = (0, import_react_query6.useQuery)({
|
|
2811
2677
|
...supportedChainsQueries.all,
|
|
2812
2678
|
...queryDefaults
|
|
2813
2679
|
});
|
|
@@ -2822,15 +2688,15 @@ function useSupportedChains() {
|
|
|
2822
2688
|
}
|
|
2823
2689
|
|
|
2824
2690
|
// src/v2/supported-tokens/hooks.ts
|
|
2825
|
-
var
|
|
2826
|
-
var
|
|
2691
|
+
var import_react_query7 = require("@tanstack/react-query");
|
|
2692
|
+
var import_react7 = require("react");
|
|
2827
2693
|
function useSupportedTokens({
|
|
2828
2694
|
page = 0,
|
|
2829
2695
|
limit = 20,
|
|
2830
2696
|
search,
|
|
2831
2697
|
enabled = true
|
|
2832
2698
|
} = {}) {
|
|
2833
|
-
const { data, isLoading, error, refetch } = (0,
|
|
2699
|
+
const { data, isLoading, error, refetch } = (0, import_react_query7.useQuery)({
|
|
2834
2700
|
...supportedTokensQueries.list({ page, limit, search }),
|
|
2835
2701
|
...queryDefaults,
|
|
2836
2702
|
staleTime: 5 * 60 * 1e3,
|
|
@@ -2841,7 +2707,7 @@ function useSupportedTokens({
|
|
|
2841
2707
|
// Don't refetch on tab focus
|
|
2842
2708
|
enabled
|
|
2843
2709
|
});
|
|
2844
|
-
const tokens = (0,
|
|
2710
|
+
const tokens = (0, import_react7.useMemo)(() => {
|
|
2845
2711
|
if (!data?.tokens) return [];
|
|
2846
2712
|
return data.tokens.map(({ active, ...token }) => token);
|
|
2847
2713
|
}, [data?.tokens]);
|
|
@@ -2872,14 +2738,14 @@ function usePortfolioBalance({
|
|
|
2872
2738
|
isLoading,
|
|
2873
2739
|
error,
|
|
2874
2740
|
refetch
|
|
2875
|
-
} = (0,
|
|
2741
|
+
} = (0, import_react_query8.useQuery)({
|
|
2876
2742
|
...balanceQueries.portfolio(address || ""),
|
|
2877
2743
|
...queryDefaults,
|
|
2878
2744
|
enabled: !!address,
|
|
2879
2745
|
refetchInterval: 1 * 60 * 1e3
|
|
2880
2746
|
// 1 minute
|
|
2881
2747
|
});
|
|
2882
|
-
const balances = (0,
|
|
2748
|
+
const balances = (0, import_react8.useMemo)(() => {
|
|
2883
2749
|
if (!portfolioData) return [];
|
|
2884
2750
|
const tokenBalances = [];
|
|
2885
2751
|
portfolioData.portfolio.holdings.wallets.forEach((wallet) => {
|
|
@@ -2934,6 +2800,14 @@ function usePortfolioBalance({
|
|
|
2934
2800
|
};
|
|
2935
2801
|
}
|
|
2936
2802
|
|
|
2803
|
+
// src/v2/balance/types.ts
|
|
2804
|
+
var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
|
|
2805
|
+
BalanceSourcePriority2[BalanceSourcePriority2["ONCHAIN"] = 1] = "ONCHAIN";
|
|
2806
|
+
BalanceSourcePriority2[BalanceSourcePriority2["PORTFOLIO"] = 2] = "PORTFOLIO";
|
|
2807
|
+
BalanceSourcePriority2[BalanceSourcePriority2["ENSO"] = 3] = "ENSO";
|
|
2808
|
+
return BalanceSourcePriority2;
|
|
2809
|
+
})(BalanceSourcePriority || {});
|
|
2810
|
+
|
|
2937
2811
|
// src/v2/balance/utils.ts
|
|
2938
2812
|
var import_viem5 = require("viem");
|
|
2939
2813
|
|
|
@@ -3037,7 +2911,7 @@ function useBalance2({
|
|
|
3037
2911
|
} = usePortfolioBalance({
|
|
3038
2912
|
address
|
|
3039
2913
|
});
|
|
3040
|
-
const consolidatedBalances = (0,
|
|
2914
|
+
const consolidatedBalances = (0, import_react9.useMemo)(() => {
|
|
3041
2915
|
const sources = [];
|
|
3042
2916
|
if (depositOpportunity && onChainBalances.length > 0) {
|
|
3043
2917
|
sources.push(onChainBalances);
|
|
@@ -3065,8 +2939,227 @@ function useBalance2({
|
|
|
3065
2939
|
};
|
|
3066
2940
|
}
|
|
3067
2941
|
|
|
3068
|
-
// src/v2/
|
|
2942
|
+
// src/v2/earn-deposits/hooks/useActionsDefaultParams.ts
|
|
2943
|
+
function sortByBalance(balances) {
|
|
2944
|
+
return [...balances].sort((a, b) => {
|
|
2945
|
+
const aValue = BigInt(a.amount);
|
|
2946
|
+
const bValue = BigInt(b.amount);
|
|
2947
|
+
if (bValue > aValue) return 1;
|
|
2948
|
+
if (bValue < aValue) return -1;
|
|
2949
|
+
return 0;
|
|
2950
|
+
});
|
|
2951
|
+
}
|
|
2952
|
+
function useActionsDefaultParams({
|
|
2953
|
+
opportunity,
|
|
2954
|
+
address,
|
|
2955
|
+
depositMode
|
|
2956
|
+
}) {
|
|
2957
|
+
const opportunityChainId = opportunity ? Number(opportunity.receiptToken.chain.chainId) : void 0;
|
|
2958
|
+
const isSecondaryOnly = opportunity?.vaultConfig?.secondaryOnly === true;
|
|
2959
|
+
const effectiveDepositMode = isSecondaryOnly ? "route" : depositMode;
|
|
2960
|
+
const useOnChainBalances = effectiveDepositMode === "native";
|
|
2961
|
+
const {
|
|
2962
|
+
balances: depositTokenBalances,
|
|
2963
|
+
isLoading: isDepositBalancesLoading,
|
|
2964
|
+
refetch: refetchDepositBalances
|
|
2965
|
+
} = useGetOnChainBalance({
|
|
2966
|
+
tokens: opportunity?.depositTokens ?? [],
|
|
2967
|
+
chainId: opportunityChainId,
|
|
2968
|
+
address,
|
|
2969
|
+
enabled: !!address && !!opportunity && opportunityChainId != null
|
|
2970
|
+
});
|
|
2971
|
+
const {
|
|
2972
|
+
balances: allChainBalances,
|
|
2973
|
+
isLoading: isAllChainBalancesLoading,
|
|
2974
|
+
refetchAll: refetchAllBalances
|
|
2975
|
+
} = useBalance2({
|
|
2976
|
+
address,
|
|
2977
|
+
chainIds: opportunityChainId ? [opportunityChainId] : [],
|
|
2978
|
+
depositOpportunity: opportunity ?? void 0
|
|
2979
|
+
});
|
|
2980
|
+
const rawBalances = (0, import_react10.useMemo)(() => {
|
|
2981
|
+
if (useOnChainBalances) {
|
|
2982
|
+
if (depositTokenBalances.length > 0) {
|
|
2983
|
+
return depositTokenBalances;
|
|
2984
|
+
}
|
|
2985
|
+
if (opportunity?.depositTokens) {
|
|
2986
|
+
return opportunity.depositTokens.map((token) => ({
|
|
2987
|
+
token,
|
|
2988
|
+
amount: "0",
|
|
2989
|
+
source: "onchain"
|
|
2990
|
+
}));
|
|
2991
|
+
}
|
|
2992
|
+
return [];
|
|
2993
|
+
}
|
|
2994
|
+
return allChainBalances;
|
|
2995
|
+
}, [useOnChainBalances, depositTokenBalances, allChainBalances, opportunity?.depositTokens]);
|
|
2996
|
+
const isBalancesLoading = useOnChainBalances ? isDepositBalancesLoading : isAllChainBalancesLoading;
|
|
2997
|
+
const refetchBalances = useOnChainBalances ? refetchDepositBalances : refetchAllBalances;
|
|
2998
|
+
const balances = (0, import_react10.useMemo)(() => {
|
|
2999
|
+
let filtered = rawBalances;
|
|
3000
|
+
if (!useOnChainBalances && opportunityChainId) {
|
|
3001
|
+
filtered = filtered.filter((b) => {
|
|
3002
|
+
const tokenChainId = Number(b.token.chain?.chainId);
|
|
3003
|
+
return tokenChainId === opportunityChainId;
|
|
3004
|
+
});
|
|
3005
|
+
}
|
|
3006
|
+
if (!useOnChainBalances) {
|
|
3007
|
+
filtered = filtered.filter((b) => BigInt(b.amount) > 0n);
|
|
3008
|
+
}
|
|
3009
|
+
filtered = filterExcludedTokens(filtered);
|
|
3010
|
+
return sortByBalance(filtered);
|
|
3011
|
+
}, [rawBalances, useOnChainBalances, opportunityChainId]);
|
|
3012
|
+
return {
|
|
3013
|
+
balances,
|
|
3014
|
+
isBalancesLoading,
|
|
3015
|
+
refetchBalances
|
|
3016
|
+
};
|
|
3017
|
+
}
|
|
3018
|
+
|
|
3019
|
+
// src/v2/earn-deposits/hooks.ts
|
|
3020
|
+
function useDeposits({ params, enabled = true }) {
|
|
3021
|
+
return (0, import_react_query9.useQuery)({
|
|
3022
|
+
...earnDepositsQueries.byParams(params),
|
|
3023
|
+
...queryDefaults,
|
|
3024
|
+
enabled
|
|
3025
|
+
});
|
|
3026
|
+
}
|
|
3027
|
+
|
|
3028
|
+
// src/v2/enso-balances/hooks.ts
|
|
3069
3029
|
var import_react11 = require("react");
|
|
3030
|
+
var import_react_query10 = require("@tanstack/react-query");
|
|
3031
|
+
function useMultiChainBalances({
|
|
3032
|
+
chainIds,
|
|
3033
|
+
address
|
|
3034
|
+
}) {
|
|
3035
|
+
const queries2 = (0, import_react_query10.useQueries)({
|
|
3036
|
+
queries: chainIds.map((chainId) => ({
|
|
3037
|
+
...ensoBalancesQueries.byParams({ user: address || "", chain: chainId }),
|
|
3038
|
+
enabled: !!address,
|
|
3039
|
+
staleTime: 60 * 1e3,
|
|
3040
|
+
refetchInterval: 3 * 60 * 1e3,
|
|
3041
|
+
refetchOnMount: false,
|
|
3042
|
+
refetchOnWindowFocus: false
|
|
3043
|
+
}))
|
|
3044
|
+
});
|
|
3045
|
+
const isLoading = queries2.some((query) => query.isLoading);
|
|
3046
|
+
const error = queries2.find((query) => query.error)?.error || null;
|
|
3047
|
+
const refetchAll = () => {
|
|
3048
|
+
queries2.forEach((query) => {
|
|
3049
|
+
query.refetch();
|
|
3050
|
+
});
|
|
3051
|
+
};
|
|
3052
|
+
const balances = (0, import_react11.useMemo)(() => {
|
|
3053
|
+
const balanceMap = {};
|
|
3054
|
+
queries2.forEach((query, index) => {
|
|
3055
|
+
const chainId = chainIds[index];
|
|
3056
|
+
if (query.data && chainId !== void 0) {
|
|
3057
|
+
balanceMap[chainId] = query.data.balances;
|
|
3058
|
+
}
|
|
3059
|
+
});
|
|
3060
|
+
return balanceMap;
|
|
3061
|
+
}, [queries2, chainIds]);
|
|
3062
|
+
return {
|
|
3063
|
+
balances,
|
|
3064
|
+
isLoading,
|
|
3065
|
+
error,
|
|
3066
|
+
refetchAll
|
|
3067
|
+
};
|
|
3068
|
+
}
|
|
3069
|
+
|
|
3070
|
+
// src/v2/opportunities/hooks.ts
|
|
3071
|
+
var import_react_query11 = require("@tanstack/react-query");
|
|
3072
|
+
function useOpportunities(options) {
|
|
3073
|
+
return (0, import_react_query11.useQuery)({
|
|
3074
|
+
...opportunitiesQueries.all,
|
|
3075
|
+
...queryDefaults,
|
|
3076
|
+
select: (data) => {
|
|
3077
|
+
const uniqueChainsMap = new Map(
|
|
3078
|
+
data.opportunities.map((opportunity) => opportunity.receiptToken?.chain).filter((chain) => chain !== void 0).map((chain) => [chain.id, chain])
|
|
3079
|
+
);
|
|
3080
|
+
const chains = Array.from(uniqueChainsMap.values());
|
|
3081
|
+
return {
|
|
3082
|
+
...data,
|
|
3083
|
+
chains
|
|
3084
|
+
};
|
|
3085
|
+
}
|
|
3086
|
+
});
|
|
3087
|
+
}
|
|
3088
|
+
function useOpportunity({ id, ...options }) {
|
|
3089
|
+
return (0, import_react_query11.useQuery)({
|
|
3090
|
+
...opportunitiesQueries.byId(id),
|
|
3091
|
+
...queryDefaults,
|
|
3092
|
+
select: (data) => {
|
|
3093
|
+
return {
|
|
3094
|
+
...data,
|
|
3095
|
+
chain: data.receiptToken?.chain
|
|
3096
|
+
};
|
|
3097
|
+
}
|
|
3098
|
+
});
|
|
3099
|
+
}
|
|
3100
|
+
function useOpportunitiesPaginated({
|
|
3101
|
+
params,
|
|
3102
|
+
enabled = true
|
|
3103
|
+
} = {}) {
|
|
3104
|
+
return (0, import_react_query11.useQuery)({
|
|
3105
|
+
...opportunitiesQueries.paginated(params),
|
|
3106
|
+
...queryDefaults,
|
|
3107
|
+
enabled
|
|
3108
|
+
});
|
|
3109
|
+
}
|
|
3110
|
+
function useOpportunitiesFilterOptions({
|
|
3111
|
+
enabled = true
|
|
3112
|
+
} = {}) {
|
|
3113
|
+
return (0, import_react_query11.useQuery)({
|
|
3114
|
+
...opportunitiesQueries.filterOptions,
|
|
3115
|
+
...queryDefaults,
|
|
3116
|
+
enabled
|
|
3117
|
+
});
|
|
3118
|
+
}
|
|
3119
|
+
|
|
3120
|
+
// src/v2/products/hooks.ts
|
|
3121
|
+
var import_react_query12 = require("@tanstack/react-query");
|
|
3122
|
+
function useProducts({ filters, enabled = true }) {
|
|
3123
|
+
return (0, import_react_query12.useQuery)({
|
|
3124
|
+
...productsQueries.list(filters),
|
|
3125
|
+
...queryDefaults,
|
|
3126
|
+
enabled
|
|
3127
|
+
});
|
|
3128
|
+
}
|
|
3129
|
+
function useProduct({ id, enabled = true }) {
|
|
3130
|
+
return (0, import_react_query12.useQuery)({
|
|
3131
|
+
...productsQueries.byId(id),
|
|
3132
|
+
...queryDefaults,
|
|
3133
|
+
enabled
|
|
3134
|
+
});
|
|
3135
|
+
}
|
|
3136
|
+
function useCreateProduct(options) {
|
|
3137
|
+
return (0, import_react_query12.useMutation)({
|
|
3138
|
+
mutationFn: (input) => createProduct(input),
|
|
3139
|
+
...options
|
|
3140
|
+
});
|
|
3141
|
+
}
|
|
3142
|
+
function useUpdateProduct(options) {
|
|
3143
|
+
return (0, import_react_query12.useMutation)({
|
|
3144
|
+
mutationFn: (input) => updateProduct(input),
|
|
3145
|
+
...options
|
|
3146
|
+
});
|
|
3147
|
+
}
|
|
3148
|
+
function useDeleteProduct(options) {
|
|
3149
|
+
return (0, import_react_query12.useMutation)({
|
|
3150
|
+
mutationFn: (id) => deleteProduct(id),
|
|
3151
|
+
...options
|
|
3152
|
+
});
|
|
3153
|
+
}
|
|
3154
|
+
function useUploadProductLogo(options) {
|
|
3155
|
+
return (0, import_react_query12.useMutation)({
|
|
3156
|
+
mutationFn: (request) => uploadProductLogo(request),
|
|
3157
|
+
...options
|
|
3158
|
+
});
|
|
3159
|
+
}
|
|
3160
|
+
|
|
3161
|
+
// src/v2/balance/hooks/useEnsoBalances.ts
|
|
3162
|
+
var import_react12 = require("react");
|
|
3070
3163
|
function useEnsoBalances({
|
|
3071
3164
|
address,
|
|
3072
3165
|
chainIds
|
|
@@ -3081,7 +3174,7 @@ function useEnsoBalances({
|
|
|
3081
3174
|
chainIds,
|
|
3082
3175
|
address
|
|
3083
3176
|
});
|
|
3084
|
-
const balances = (0,
|
|
3177
|
+
const balances = (0, import_react12.useMemo)(() => {
|
|
3085
3178
|
if (isSupportedTokensLoading || isLoading) return [];
|
|
3086
3179
|
const tokenBalances = [];
|
|
3087
3180
|
Object.entries(ensoBalances).forEach(([, chainBalances]) => {
|
|
@@ -3200,10 +3293,10 @@ function useStreamSupportedChains({
|
|
|
3200
3293
|
}
|
|
3201
3294
|
|
|
3202
3295
|
// src/v2/swap/useSwapRoute.ts
|
|
3203
|
-
var
|
|
3296
|
+
var import_react13 = require("react");
|
|
3204
3297
|
|
|
3205
3298
|
// src/v2/swap/route-processor.ts
|
|
3206
|
-
var
|
|
3299
|
+
var import_utils5 = require("@turtleclub/utils");
|
|
3207
3300
|
var parseEnsoStep = (kind, fromToken, toToken) => {
|
|
3208
3301
|
return {
|
|
3209
3302
|
in: {
|
|
@@ -3225,7 +3318,7 @@ var parseApproveStep = (token, amount) => {
|
|
|
3225
3318
|
symbol: token.symbol
|
|
3226
3319
|
},
|
|
3227
3320
|
out: null,
|
|
3228
|
-
amount: (0,
|
|
3321
|
+
amount: (0, import_utils5.formatToken)(amount, { decimals: token.decimals }, true, false, 4),
|
|
3229
3322
|
type: "approve"
|
|
3230
3323
|
};
|
|
3231
3324
|
};
|
|
@@ -3259,7 +3352,7 @@ function toEnsoTokenAddress(address) {
|
|
|
3259
3352
|
return address;
|
|
3260
3353
|
}
|
|
3261
3354
|
function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCode) {
|
|
3262
|
-
const params = (0,
|
|
3355
|
+
const params = (0, import_react13.useMemo)(() => {
|
|
3263
3356
|
if (!options || !isEnabled) return void 0;
|
|
3264
3357
|
return {
|
|
3265
3358
|
...options,
|
|
@@ -3268,7 +3361,7 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
|
|
|
3268
3361
|
referral_code: referralCode
|
|
3269
3362
|
};
|
|
3270
3363
|
}, [options, userAddress, distributorId, referralCode]);
|
|
3271
|
-
const hasRequiredParams = (0,
|
|
3364
|
+
const hasRequiredParams = (0, import_react13.useMemo)(() => {
|
|
3272
3365
|
return !!(userAddress && params?.token_in && params?.token_out && params?.amount && params?.chain && params?.slippage && params?.distributor_id);
|
|
3273
3366
|
}, [options]);
|
|
3274
3367
|
const { data, isLoading, error } = useEarnRoute({
|
|
@@ -3285,7 +3378,7 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
|
|
|
3285
3378
|
},
|
|
3286
3379
|
enabled: hasRequiredParams && isEnabled
|
|
3287
3380
|
});
|
|
3288
|
-
const routeDetails = (0,
|
|
3381
|
+
const routeDetails = (0, import_react13.useMemo)(() => processRouteDetails(data ?? null), [data]);
|
|
3289
3382
|
return {
|
|
3290
3383
|
fetchedRoute: data ?? null,
|
|
3291
3384
|
outputAmount: data?.amount_out ?? void 0,
|
|
@@ -3371,7 +3464,7 @@ function useSubmitCoverRequest(options) {
|
|
|
3371
3464
|
}
|
|
3372
3465
|
|
|
3373
3466
|
// src/v2/membership-flow/hooks.ts
|
|
3374
|
-
var
|
|
3467
|
+
var import_react14 = require("react");
|
|
3375
3468
|
var useTurtleMembershipFlow = ({
|
|
3376
3469
|
address,
|
|
3377
3470
|
walletEcosystem = "evm",
|
|
@@ -3381,8 +3474,8 @@ var useTurtleMembershipFlow = ({
|
|
|
3381
3474
|
enabled = true,
|
|
3382
3475
|
onError
|
|
3383
3476
|
}) => {
|
|
3384
|
-
const previousAddressRef = (0,
|
|
3385
|
-
const isProcessingRef = (0,
|
|
3477
|
+
const previousAddressRef = (0, import_react14.useRef)(void 0);
|
|
3478
|
+
const isProcessingRef = (0, import_react14.useRef)(false);
|
|
3386
3479
|
const {
|
|
3387
3480
|
data: membershipData,
|
|
3388
3481
|
isLoading: isCheckingMembership
|
|
@@ -3403,7 +3496,7 @@ var useTurtleMembershipFlow = ({
|
|
|
3403
3496
|
isPending: isCreatingMembership,
|
|
3404
3497
|
error: membershipError
|
|
3405
3498
|
} = useCreateMembership();
|
|
3406
|
-
const handleMembershipFlow = (0,
|
|
3499
|
+
const handleMembershipFlow = (0, import_react14.useCallback)(async (memberAddress) => {
|
|
3407
3500
|
if (isProcessingRef.current) return;
|
|
3408
3501
|
isProcessingRef.current = true;
|
|
3409
3502
|
try {
|
|
@@ -3453,7 +3546,7 @@ var useTurtleMembershipFlow = ({
|
|
|
3453
3546
|
isProcessingRef.current = false;
|
|
3454
3547
|
}
|
|
3455
3548
|
}, [createAgreement, walletEcosystem, url, chainId, signMessage, createMembership2, onError]);
|
|
3456
|
-
(0,
|
|
3549
|
+
(0, import_react14.useEffect)(() => {
|
|
3457
3550
|
if (!enabled) return;
|
|
3458
3551
|
const currentAddress = address;
|
|
3459
3552
|
if (!currentAddress) {
|
|
@@ -3705,6 +3798,7 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
|
|
|
3705
3798
|
tokenSchema,
|
|
3706
3799
|
transactionSchema,
|
|
3707
3800
|
txResponseItemSchema,
|
|
3801
|
+
useActionsDefaultParams,
|
|
3708
3802
|
useAttributeAction,
|
|
3709
3803
|
useBalance,
|
|
3710
3804
|
useCancelDepositAction,
|