@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 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 import_react_query6 = require("@tanstack/react-query");
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 { opportunity, userAddress, distributorId, executeTransaction, onSuccess, referralCode } = options;
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 executeTransaction(txRequest);
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
- [executeTransaction, toTransactionRequest]
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
- executeTransaction,
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
- executeTransaction,
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 import_react7 = require("react");
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, import_react7.useMemo)(() => {
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, import_react7.useMemo)(() => {
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, import_react7.useMemo)(() => {
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, import_react7.useCallback)(() => {
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/usePortfolioBalance.ts
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 import_react_query10 = require("@tanstack/react-query");
2674
+ var import_react_query6 = require("@tanstack/react-query");
2809
2675
  function useSupportedChains() {
2810
- const { data, isLoading, error, refetch } = (0, import_react_query10.useQuery)({
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 import_react_query11 = require("@tanstack/react-query");
2826
- var import_react8 = require("react");
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, import_react_query11.useQuery)({
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, import_react8.useMemo)(() => {
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, import_react_query12.useQuery)({
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, import_react9.useMemo)(() => {
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, import_react10.useMemo)(() => {
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/balance/hooks/useEnsoBalances.ts
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, import_react11.useMemo)(() => {
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 import_react12 = require("react");
3296
+ var import_react13 = require("react");
3204
3297
 
3205
3298
  // src/v2/swap/route-processor.ts
3206
- var import_utils4 = require("@turtleclub/utils");
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, import_utils4.formatToken)(amount, { decimals: token.decimals }, true, false, 4),
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, import_react12.useMemo)(() => {
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, import_react12.useMemo)(() => {
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, import_react12.useMemo)(() => processRouteDetails(data ?? null), [data]);
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 import_react13 = require("react");
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, import_react13.useRef)(void 0);
3385
- const isProcessingRef = (0, import_react13.useRef)(false);
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, import_react13.useCallback)(async (memberAddress) => {
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, import_react13.useEffect)(() => {
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,