@turtleclub/hooks 0.5.0-beta.12 → 0.5.0-beta.14

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
@@ -34,16 +34,21 @@ __export(index_exports, {
34
34
  chainSchema: () => chainSchema,
35
35
  checkMembership: () => checkMembership,
36
36
  checkMembershipResponseSchema: () => checkMembershipResponseSchema,
37
+ coverRequestDataSchema: () => coverRequestDataSchema,
37
38
  createAgreementRequestSchema: () => createAgreementRequestSchema,
38
39
  createAgreementResponseSchema: () => createAgreementResponseSchema,
40
+ createClaimWithdrawInteraction: () => createClaimWithdrawInteraction,
41
+ createDepositInteraction: () => createDepositInteraction,
39
42
  createMembership: () => createMembership,
40
43
  createMembershipAgreement: () => createMembershipAgreement,
41
44
  createMembershipRequestSchema: () => createMembershipRequestSchema,
42
45
  createMembershipResponseSchema: () => createMembershipResponseSchema,
46
+ createWithdrawInteraction: () => createWithdrawInteraction,
43
47
  depositSchema: () => depositSchema,
44
48
  depositSubstep: () => depositSubstep,
45
49
  depositsResponseSchema: () => depositsResponseSchema,
46
50
  earnDepositsQueries: () => earnDepositsQueries,
51
+ earnInteractionsQueries: () => earnInteractionsQueries,
47
52
  earnMembershipQueries: () => earnMembershipQueries,
48
53
  earnOpportunitiesQueries: () => earnOpportunitiesQueries,
49
54
  earnOpportunitiesResponseSchema: () => earnOpportunitiesResponseSchema,
@@ -52,6 +57,7 @@ __export(index_exports, {
52
57
  earnRouteResponseSchema: () => earnRouteResponseSchema,
53
58
  ensoBalancesQueries: () => ensoBalancesQueries,
54
59
  ensoStep: () => ensoStep,
60
+ fetchUserNfts: () => fetchUserNfts,
55
61
  filterBalancesByChains: () => filterBalancesByChains,
56
62
  filterExcludedTokens: () => filterExcludedTokens,
57
63
  filterNonZeroBalances: () => filterNonZeroBalances,
@@ -82,8 +88,10 @@ __export(index_exports, {
82
88
  getWidgetOpportunities: () => getWidgetOpportunities,
83
89
  holdingsDataSchema: () => holdingsDataSchema,
84
90
  incentiveSchema: () => incentiveSchema,
91
+ interactionResponseSchema: () => interactionResponseSchema,
85
92
  lendingConfigSchema: () => lendingConfigSchema,
86
93
  mergeBalancesByPriority: () => mergeBalancesByPriority,
94
+ nftsQueries: () => nftsQueries,
87
95
  opportunitiesQueries: () => opportunitiesQueries,
88
96
  opportunitySchema: () => opportunitySchema,
89
97
  organizationSchema: () => organizationSchema,
@@ -107,6 +115,8 @@ __export(index_exports, {
107
115
  streamSignatureRequestInputSchema: () => streamSignatureRequestInputSchema,
108
116
  streamSignatureRequestOutputSchema: () => streamSignatureRequestOutputSchema,
109
117
  streamsQueries: () => streamsQueries,
118
+ submitCoverRequest: () => submitCoverRequest,
119
+ submitCoverRequestResponseSchema: () => submitCoverRequestResponseSchema,
110
120
  supportedChainsQueries: () => supportedChainsQueries,
111
121
  supportedChainsResponseSchema: () => supportedChainsResponseSchema,
112
122
  supportedTokenSchema: () => supportedTokenSchema,
@@ -114,11 +124,16 @@ __export(index_exports, {
114
124
  supportedTokensResponseSchema: () => supportedTokensResponseSchema,
115
125
  swapSubstep: () => swapSubstep,
116
126
  tokenSchema: () => tokenSchema,
127
+ transactionSchema: () => transactionSchema,
128
+ txResponseItemSchema: () => txResponseItemSchema,
117
129
  useBalance: () => useBalance,
118
130
  useCheckMembership: () => useCheckMembership,
131
+ useCreateClaimWithdrawInteraction: () => useCreateClaimWithdrawInteraction,
132
+ useCreateDepositInteraction: () => useCreateDepositInteraction,
119
133
  useCreateMembership: () => useCreateMembership,
120
134
  useCreateMembershipAgreement: () => useCreateMembershipAgreement,
121
135
  useCreateProduct: () => useCreateProduct,
136
+ useCreateWithdrawInteraction: () => useCreateWithdrawInteraction,
122
137
  useDeleteProduct: () => useDeleteProduct,
123
138
  useDeposits: () => useDeposits,
124
139
  useEarnOpportunities: () => useEarnOpportunities,
@@ -135,6 +150,7 @@ __export(index_exports, {
135
150
  useRequestStreamSignature: () => useRequestStreamSignature,
136
151
  useStreamSupportedChains: () => useStreamSupportedChains,
137
152
  useStreams: () => useStreams,
153
+ useSubmitCoverRequest: () => useSubmitCoverRequest,
138
154
  useSupportedChains: () => useSupportedChains,
139
155
  useSupportedTokens: () => useSupportedTokens,
140
156
  useSwapRoute: () => useSwapRoute,
@@ -142,6 +158,7 @@ __export(index_exports, {
142
158
  useUpdateProduct: () => useUpdateProduct,
143
159
  useUploadProductLogo: () => useUploadProductLogo,
144
160
  useUserById: () => useUserById,
161
+ useUserNfts: () => useUserNfts,
145
162
  useUserPortfolio: () => useUserPortfolio,
146
163
  useWidgetOpportunities: () => useWidgetOpportunities,
147
164
  userEarningsSchema: () => userEarningsSchema,
@@ -158,7 +175,7 @@ __export(index_exports, {
158
175
  module.exports = __toCommonJS(index_exports);
159
176
 
160
177
  // src/v2/index.ts
161
- var import_query_key_factory14 = require("@lukemorales/query-key-factory");
178
+ var import_query_key_factory16 = require("@lukemorales/query-key-factory");
162
179
 
163
180
  // src/v2/opportunities/queries.ts
164
181
  var import_query_key_factory = require("@lukemorales/query-key-factory");
@@ -762,8 +779,15 @@ var earnDepositsQueries = (0, import_query_key_factory5.createQueryKeys)("earnDe
762
779
  })
763
780
  });
764
781
 
765
- // src/v2/products/queries.ts
782
+ // src/v2/earn-interactions/queries.ts
766
783
  var import_query_key_factory6 = require("@lukemorales/query-key-factory");
784
+ var earnInteractionsQueries = (0, import_query_key_factory6.createQueryKeys)("earnInteractions", {
785
+ // Placeholder for potential future GET endpoints
786
+ // e.g., getting interaction history
787
+ });
788
+
789
+ // src/v2/products/queries.ts
790
+ var import_query_key_factory7 = require("@lukemorales/query-key-factory");
767
791
 
768
792
  // src/v2/products/schema.ts
769
793
  var import_zod7 = require("zod");
@@ -923,7 +947,7 @@ async function uploadProductLogo({
923
947
  }
924
948
 
925
949
  // src/v2/products/queries.ts
926
- var productsQueries = (0, import_query_key_factory6.createQueryKeys)("products", {
950
+ var productsQueries = (0, import_query_key_factory7.createQueryKeys)("products", {
927
951
  // Get all products (no filters)
928
952
  all: () => ({
929
953
  queryKey: ["all"],
@@ -940,7 +964,7 @@ var productsQueries = (0, import_query_key_factory6.createQueryKeys)("products",
940
964
  });
941
965
 
942
966
  // src/v2/enso-balances/queries.ts
943
- var import_query_key_factory7 = require("@lukemorales/query-key-factory");
967
+ var import_query_key_factory8 = require("@lukemorales/query-key-factory");
944
968
 
945
969
  // src/v2/enso-balances/schemas.ts
946
970
  var import_zod8 = require("zod");
@@ -983,7 +1007,7 @@ async function getWalletBalances(params, context) {
983
1007
  }
984
1008
 
985
1009
  // src/v2/enso-balances/queries.ts
986
- var ensoBalancesQueries = (0, import_query_key_factory7.createQueryKeys)("ensoBalances", {
1010
+ var ensoBalancesQueries = (0, import_query_key_factory8.createQueryKeys)("ensoBalances", {
987
1011
  byParams: (params) => ({
988
1012
  queryKey: [params],
989
1013
  queryFn: (context) => getWalletBalances(params, context)
@@ -991,7 +1015,7 @@ var ensoBalancesQueries = (0, import_query_key_factory7.createQueryKeys)("ensoBa
991
1015
  });
992
1016
 
993
1017
  // src/v2/widget/queries.ts
994
- var import_query_key_factory8 = require("@lukemorales/query-key-factory");
1018
+ var import_query_key_factory9 = require("@lukemorales/query-key-factory");
995
1019
 
996
1020
  // src/v2/widget/schema.ts
997
1021
  var import_zod9 = require("zod");
@@ -1015,7 +1039,7 @@ async function getWidgetOpportunities(distributorId, context) {
1015
1039
  }
1016
1040
 
1017
1041
  // src/v2/widget/queries.ts
1018
- var widgetQueries = (0, import_query_key_factory8.createQueryKeys)("widget", {
1042
+ var widgetQueries = (0, import_query_key_factory9.createQueryKeys)("widget", {
1019
1043
  opportunities: (distributorId) => ({
1020
1044
  queryKey: [distributorId],
1021
1045
  queryFn: (context) => getWidgetOpportunities(distributorId, context)
@@ -1023,7 +1047,7 @@ var widgetQueries = (0, import_query_key_factory8.createQueryKeys)("widget", {
1023
1047
  });
1024
1048
 
1025
1049
  // src/v2/streams/queries.ts
1026
- var import_query_key_factory9 = require("@lukemorales/query-key-factory");
1050
+ var import_query_key_factory10 = require("@lukemorales/query-key-factory");
1027
1051
 
1028
1052
  // src/v2/streams/schemas.ts
1029
1053
  var import_zod10 = require("zod");
@@ -1178,7 +1202,7 @@ async function requestStreamSignature(organizationId, input) {
1178
1202
  }
1179
1203
 
1180
1204
  // src/v2/streams/queries.ts
1181
- var streamsQueries = (0, import_query_key_factory9.createQueryKeys)("streams", {
1205
+ var streamsQueries = (0, import_query_key_factory10.createQueryKeys)("streams", {
1182
1206
  list: (query) => ({
1183
1207
  queryKey: [query ?? "all"],
1184
1208
  queryFn: () => getStreams(query)
@@ -1190,7 +1214,7 @@ var streamsQueries = (0, import_query_key_factory9.createQueryKeys)("streams", {
1190
1214
  });
1191
1215
 
1192
1216
  // src/v2/supported-chains/queries.ts
1193
- var import_query_key_factory10 = require("@lukemorales/query-key-factory");
1217
+ var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1194
1218
 
1195
1219
  // src/v2/supported-chains/schema.ts
1196
1220
  var import_zod11 = require("zod");
@@ -1213,7 +1237,7 @@ async function getSupportedChains(options) {
1213
1237
  }
1214
1238
 
1215
1239
  // src/v2/supported-chains/queries.ts
1216
- var supportedChainsQueries = (0, import_query_key_factory10.createQueryKeys)("supportedChains", {
1240
+ var supportedChainsQueries = (0, import_query_key_factory11.createQueryKeys)("supportedChains", {
1217
1241
  all: {
1218
1242
  queryKey: null,
1219
1243
  queryFn: () => getSupportedChains()
@@ -1221,7 +1245,7 @@ var supportedChainsQueries = (0, import_query_key_factory10.createQueryKeys)("su
1221
1245
  });
1222
1246
 
1223
1247
  // src/v2/supported-tokens/queries.ts
1224
- var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1248
+ var import_query_key_factory12 = require("@lukemorales/query-key-factory");
1225
1249
 
1226
1250
  // src/v2/supported-tokens/schema.ts
1227
1251
  var import_zod12 = require("zod");
@@ -1256,7 +1280,7 @@ async function getSupportedTokens(filters, options) {
1256
1280
  }
1257
1281
 
1258
1282
  // src/v2/supported-tokens/queries.ts
1259
- var supportedTokensQueries = (0, import_query_key_factory11.createQueryKeys)("supportedTokens", {
1283
+ var supportedTokensQueries = (0, import_query_key_factory12.createQueryKeys)("supportedTokens", {
1260
1284
  list: (filters) => ({
1261
1285
  queryKey: [filters],
1262
1286
  queryFn: () => getSupportedTokens(filters)
@@ -1264,7 +1288,7 @@ var supportedTokensQueries = (0, import_query_key_factory11.createQueryKeys)("su
1264
1288
  });
1265
1289
 
1266
1290
  // src/v2/users/queries.ts
1267
- var import_query_key_factory12 = require("@lukemorales/query-key-factory");
1291
+ var import_query_key_factory13 = require("@lukemorales/query-key-factory");
1268
1292
 
1269
1293
  // src/v2/users/schemas.ts
1270
1294
  var import_zod13 = require("zod");
@@ -1360,7 +1384,7 @@ async function getUserPortfolio(input) {
1360
1384
  }
1361
1385
 
1362
1386
  // src/v2/users/queries.ts
1363
- var usersQueries = (0, import_query_key_factory12.createQueryKeys)("users", {
1387
+ var usersQueries = (0, import_query_key_factory13.createQueryKeys)("users", {
1364
1388
  byId: (input) => ({
1365
1389
  queryKey: [input.userId],
1366
1390
  queryFn: () => getUserById(input)
@@ -1371,6 +1395,37 @@ var usersQueries = (0, import_query_key_factory12.createQueryKeys)("users", {
1371
1395
  })
1372
1396
  });
1373
1397
 
1398
+ // src/v2/nfts/queries.ts
1399
+ var import_query_key_factory14 = require("@lukemorales/query-key-factory");
1400
+
1401
+ // src/v2/nfts/api.ts
1402
+ var LUMON_API_BASE_URL = "https://lumon.turtle.xyz";
1403
+ async function fetchUserNfts(userAddress, chain) {
1404
+ const endpoint = `${LUMON_API_BASE_URL}/query/token/erc721_portfolio`;
1405
+ const response = await fetch(endpoint, {
1406
+ method: "POST",
1407
+ headers: {
1408
+ "Content-Type": "application/json"
1409
+ },
1410
+ body: JSON.stringify({
1411
+ user: userAddress,
1412
+ chain
1413
+ })
1414
+ });
1415
+ if (!response.ok) {
1416
+ throw new Error("Failed to fetch user NFTs");
1417
+ }
1418
+ return response.json();
1419
+ }
1420
+
1421
+ // src/v2/nfts/queries.ts
1422
+ var nftsQueries = (0, import_query_key_factory14.createQueryKeys)("nfts", {
1423
+ byUser: (userAddress, chain) => ({
1424
+ queryKey: [userAddress, chain],
1425
+ queryFn: () => fetchUserNfts(userAddress, chain)
1426
+ })
1427
+ });
1428
+
1374
1429
  // src/v2/earn-opportunities/hooks.ts
1375
1430
  var import_react_query = require("@tanstack/react-query");
1376
1431
 
@@ -1454,14 +1509,91 @@ function useDeposits({ params, enabled = true }) {
1454
1509
  });
1455
1510
  }
1456
1511
 
1512
+ // src/v2/earn-interactions/schema.ts
1513
+ var import_zod14 = require("zod");
1514
+ var transactionSchema = import_zod14.z.object({
1515
+ chainId: import_zod14.z.number().int(),
1516
+ data: import_zod14.z.string(),
1517
+ to: import_zod14.z.string(),
1518
+ value: import_zod14.z.string(),
1519
+ gasLimit: import_zod14.z.string().optional()
1520
+ });
1521
+ var txResponseItemSchema = import_zod14.z.object({
1522
+ type: import_zod14.z.string().optional(),
1523
+ description: import_zod14.z.string().optional(),
1524
+ transaction: transactionSchema
1525
+ });
1526
+ var interactionResponseSchema = import_zod14.z.object({
1527
+ transactions: import_zod14.z.array(txResponseItemSchema).nullable()
1528
+ });
1529
+
1530
+ // src/v2/earn-interactions/api.ts
1531
+ function buildInteractionQuery(params) {
1532
+ const searchParams = new URLSearchParams({
1533
+ userAddress: params.userAddress,
1534
+ tokenIn: params.tokenIn,
1535
+ amount: params.amount,
1536
+ distributorId: params.distributorId
1537
+ });
1538
+ if (params.referralCode) {
1539
+ searchParams.set("referralCode", params.referralCode);
1540
+ }
1541
+ if (params.slippageBps !== void 0) {
1542
+ searchParams.set("slippageBps", params.slippageBps.toString());
1543
+ }
1544
+ return searchParams.toString();
1545
+ }
1546
+ async function createInteraction(interactionType, params) {
1547
+ const { opportunityId, ...queryParams } = params;
1548
+ const query = buildInteractionQuery(queryParams);
1549
+ const data = await apiClient.fetch(
1550
+ `/v1/interactions/${interactionType}/${opportunityId}?${query}`,
1551
+ {
1552
+ method: "POST",
1553
+ domain: "earn"
1554
+ }
1555
+ );
1556
+ const result = interactionResponseSchema.safeParse(data);
1557
+ if (result.success === false) {
1558
+ console.log("[ZOD ERROR]", result.error);
1559
+ throw new Error(
1560
+ `Failed to parse ${interactionType} interaction: ${result.error.message}`
1561
+ );
1562
+ }
1563
+ return result.data;
1564
+ }
1565
+ var createDepositInteraction = (params) => createInteraction("deposit", params);
1566
+ var createWithdrawInteraction = (params) => createInteraction("withdraw", params);
1567
+ var createClaimWithdrawInteraction = (params) => createInteraction("claimWithdraw", params);
1568
+
1569
+ // src/v2/earn-interactions/hooks.ts
1570
+ var import_react_query5 = require("@tanstack/react-query");
1571
+ function createInteractionHook(mutationFn) {
1572
+ return function useInteraction(options) {
1573
+ return (0, import_react_query5.useMutation)({
1574
+ mutationFn,
1575
+ ...options
1576
+ });
1577
+ };
1578
+ }
1579
+ var useCreateDepositInteraction = createInteractionHook(
1580
+ createDepositInteraction
1581
+ );
1582
+ var useCreateWithdrawInteraction = createInteractionHook(
1583
+ createWithdrawInteraction
1584
+ );
1585
+ var useCreateClaimWithdrawInteraction = createInteractionHook(
1586
+ createClaimWithdrawInteraction
1587
+ );
1588
+
1457
1589
  // src/v2/enso-balances/hooks.ts
1458
1590
  var import_react = require("react");
1459
- var import_react_query5 = require("@tanstack/react-query");
1591
+ var import_react_query6 = require("@tanstack/react-query");
1460
1592
  function useMultiChainBalances({
1461
1593
  chainIds,
1462
1594
  address
1463
1595
  }) {
1464
- const queries2 = (0, import_react_query5.useQueries)({
1596
+ const queries2 = (0, import_react_query6.useQueries)({
1465
1597
  queries: chainIds.map((chainId) => ({
1466
1598
  ...ensoBalancesQueries.byParams({ user: address || "", chain: chainId }),
1467
1599
  enabled: !!address,
@@ -1497,9 +1629,9 @@ function useMultiChainBalances({
1497
1629
  }
1498
1630
 
1499
1631
  // src/v2/opportunities/hooks.ts
1500
- var import_react_query6 = require("@tanstack/react-query");
1632
+ var import_react_query7 = require("@tanstack/react-query");
1501
1633
  function useOpportunities(options) {
1502
- return (0, import_react_query6.useQuery)({
1634
+ return (0, import_react_query7.useQuery)({
1503
1635
  ...opportunitiesQueries.all,
1504
1636
  ...queryDefaults,
1505
1637
  select: (data) => {
@@ -1515,7 +1647,7 @@ function useOpportunities(options) {
1515
1647
  });
1516
1648
  }
1517
1649
  function useOpportunity({ id, ...options }) {
1518
- return (0, import_react_query6.useQuery)({
1650
+ return (0, import_react_query7.useQuery)({
1519
1651
  ...opportunitiesQueries.byId(id),
1520
1652
  ...queryDefaults,
1521
1653
  select: (data) => {
@@ -1528,41 +1660,41 @@ function useOpportunity({ id, ...options }) {
1528
1660
  }
1529
1661
 
1530
1662
  // src/v2/products/hooks.ts
1531
- var import_react_query7 = require("@tanstack/react-query");
1663
+ var import_react_query8 = require("@tanstack/react-query");
1532
1664
  function useProducts({ filters, enabled = true }) {
1533
- return (0, import_react_query7.useQuery)({
1665
+ return (0, import_react_query8.useQuery)({
1534
1666
  ...productsQueries.list(filters),
1535
1667
  ...queryDefaults,
1536
1668
  enabled
1537
1669
  });
1538
1670
  }
1539
1671
  function useProduct({ id, enabled = true }) {
1540
- return (0, import_react_query7.useQuery)({
1672
+ return (0, import_react_query8.useQuery)({
1541
1673
  ...productsQueries.byId(id),
1542
1674
  ...queryDefaults,
1543
1675
  enabled
1544
1676
  });
1545
1677
  }
1546
1678
  function useCreateProduct(options) {
1547
- return (0, import_react_query7.useMutation)({
1679
+ return (0, import_react_query8.useMutation)({
1548
1680
  mutationFn: (input) => createProduct(input),
1549
1681
  ...options
1550
1682
  });
1551
1683
  }
1552
1684
  function useUpdateProduct(options) {
1553
- return (0, import_react_query7.useMutation)({
1685
+ return (0, import_react_query8.useMutation)({
1554
1686
  mutationFn: (input) => updateProduct(input),
1555
1687
  ...options
1556
1688
  });
1557
1689
  }
1558
1690
  function useDeleteProduct(options) {
1559
- return (0, import_react_query7.useMutation)({
1691
+ return (0, import_react_query8.useMutation)({
1560
1692
  mutationFn: (id) => deleteProduct(id),
1561
1693
  ...options
1562
1694
  });
1563
1695
  }
1564
1696
  function useUploadProductLogo(options) {
1565
- return (0, import_react_query7.useMutation)({
1697
+ return (0, import_react_query8.useMutation)({
1566
1698
  mutationFn: (request) => uploadProductLogo(request),
1567
1699
  ...options
1568
1700
  });
@@ -1623,33 +1755,33 @@ var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
1623
1755
  })(BalanceSourcePriority || {});
1624
1756
 
1625
1757
  // src/v2/balance/schema.ts
1626
- var import_zod14 = require("zod");
1627
- var portfolioTokenSchema = import_zod14.z.object({
1628
- id: import_zod14.z.string(),
1629
- address: import_zod14.z.string(),
1630
- name: import_zod14.z.string(),
1631
- symbol: import_zod14.z.string(),
1632
- decimals: import_zod14.z.number(),
1633
- isNative: import_zod14.z.boolean(),
1634
- logoUrl: import_zod14.z.string().nullable(),
1635
- amount: import_zod14.z.string(),
1758
+ var import_zod15 = require("zod");
1759
+ var portfolioTokenSchema = import_zod15.z.object({
1760
+ id: import_zod15.z.string(),
1761
+ address: import_zod15.z.string(),
1762
+ name: import_zod15.z.string(),
1763
+ symbol: import_zod15.z.string(),
1764
+ decimals: import_zod15.z.number(),
1765
+ isNative: import_zod15.z.boolean(),
1766
+ logoUrl: import_zod15.z.string().nullable(),
1767
+ amount: import_zod15.z.string(),
1636
1768
  // Portfolio-specific field (decimal format)
1637
- price: import_zod14.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
1769
+ price: import_zod15.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
1638
1770
  // Portfolio-specific field
1639
1771
  // Chain with optional fields to match Portfolio API response
1640
1772
  chain: chainSchema.partial().required({ chainId: true })
1641
1773
  });
1642
- var portfolioWalletSchema = import_zod14.z.object({
1643
- id: import_zod14.z.string().optional(),
1644
- address: import_zod14.z.string(),
1645
- blockchain: import_zod14.z.string().optional(),
1646
- tokens: import_zod14.z.array(portfolioTokenSchema)
1774
+ var portfolioWalletSchema = import_zod15.z.object({
1775
+ id: import_zod15.z.string().optional(),
1776
+ address: import_zod15.z.string(),
1777
+ blockchain: import_zod15.z.string().optional(),
1778
+ tokens: import_zod15.z.array(portfolioTokenSchema)
1647
1779
  });
1648
- var portfolioHoldingsSchema = import_zod14.z.object({
1649
- wallets: import_zod14.z.array(portfolioWalletSchema)
1780
+ var portfolioHoldingsSchema = import_zod15.z.object({
1781
+ wallets: import_zod15.z.array(portfolioWalletSchema)
1650
1782
  });
1651
- var portfolioBalanceResponseSchema = import_zod14.z.object({
1652
- portfolio: import_zod14.z.object({
1783
+ var portfolioBalanceResponseSchema = import_zod15.z.object({
1784
+ portfolio: import_zod15.z.object({
1653
1785
  holdings: portfolioHoldingsSchema
1654
1786
  })
1655
1787
  });
@@ -1670,8 +1802,8 @@ async function getPortfolioBalance(address, options) {
1670
1802
  }
1671
1803
 
1672
1804
  // src/v2/balance/queries.ts
1673
- var import_query_key_factory13 = require("@lukemorales/query-key-factory");
1674
- var balanceQueries = (0, import_query_key_factory13.createQueryKeys)("balance", {
1805
+ var import_query_key_factory15 = require("@lukemorales/query-key-factory");
1806
+ var balanceQueries = (0, import_query_key_factory15.createQueryKeys)("balance", {
1675
1807
  // Portfolio balance by address
1676
1808
  portfolio: (address) => ({
1677
1809
  queryKey: [address],
@@ -1740,13 +1872,13 @@ function useGetOnChainBalance({
1740
1872
  }
1741
1873
 
1742
1874
  // src/v2/balance/hooks/usePortfolioBalance.ts
1743
- var import_react_query10 = require("@tanstack/react-query");
1875
+ var import_react_query11 = require("@tanstack/react-query");
1744
1876
  var import_react5 = require("react");
1745
1877
 
1746
1878
  // src/v2/supported-chains/hooks.ts
1747
- var import_react_query8 = require("@tanstack/react-query");
1879
+ var import_react_query9 = require("@tanstack/react-query");
1748
1880
  function useSupportedChains() {
1749
- const { data, isLoading, error, refetch } = (0, import_react_query8.useQuery)({
1881
+ const { data, isLoading, error, refetch } = (0, import_react_query9.useQuery)({
1750
1882
  ...supportedChainsQueries.all,
1751
1883
  ...queryDefaults
1752
1884
  });
@@ -1761,7 +1893,7 @@ function useSupportedChains() {
1761
1893
  }
1762
1894
 
1763
1895
  // src/v2/supported-tokens/hooks.ts
1764
- var import_react_query9 = require("@tanstack/react-query");
1896
+ var import_react_query10 = require("@tanstack/react-query");
1765
1897
  var import_react4 = require("react");
1766
1898
  function useSupportedTokens({
1767
1899
  page = 0,
@@ -1769,7 +1901,7 @@ function useSupportedTokens({
1769
1901
  search,
1770
1902
  enabled = true
1771
1903
  } = {}) {
1772
- const { data, isLoading, error, refetch } = (0, import_react_query9.useQuery)({
1904
+ const { data, isLoading, error, refetch } = (0, import_react_query10.useQuery)({
1773
1905
  ...supportedTokensQueries.list({ page, limit, search }),
1774
1906
  ...queryDefaults,
1775
1907
  staleTime: 5 * 60 * 1e3,
@@ -1811,7 +1943,7 @@ function usePortfolioBalance({
1811
1943
  isLoading,
1812
1944
  error,
1813
1945
  refetch
1814
- } = (0, import_react_query10.useQuery)({
1946
+ } = (0, import_react_query11.useQuery)({
1815
1947
  ...balanceQueries.portfolio(address || ""),
1816
1948
  ...queryDefaults,
1817
1949
  enabled: !!address,
@@ -2059,9 +2191,9 @@ function useBalance({
2059
2191
  }
2060
2192
 
2061
2193
  // src/v2/widget/hooks.ts
2062
- var import_react_query11 = require("@tanstack/react-query");
2194
+ var import_react_query12 = require("@tanstack/react-query");
2063
2195
  function useWidgetOpportunities(distributorId) {
2064
- return (0, import_react_query11.useQuery)({
2196
+ return (0, import_react_query12.useQuery)({
2065
2197
  ...widgetQueries.opportunities(distributorId),
2066
2198
  ...queryDefaults,
2067
2199
  select: (data) => {
@@ -2085,7 +2217,7 @@ function useWidgetOpportunities(distributorId) {
2085
2217
  }
2086
2218
 
2087
2219
  // src/v2/geocheck/useGeocheck.ts
2088
- var import_react_query12 = require("@tanstack/react-query");
2220
+ var import_react_query13 = require("@tanstack/react-query");
2089
2221
  var INDEXER_ENDPOINT = "https://api.turtle.xyz";
2090
2222
  async function fetchGeocheck() {
2091
2223
  const url = `${INDEXER_ENDPOINT}/turtle/geocheck`;
@@ -2101,13 +2233,13 @@ async function fetchGeocheck() {
2101
2233
  }
2102
2234
  return data;
2103
2235
  }
2104
- var geocheckQueryOptions = () => (0, import_react_query12.queryOptions)({
2236
+ var geocheckQueryOptions = () => (0, import_react_query13.queryOptions)({
2105
2237
  queryKey: ["geocheck"],
2106
2238
  queryFn: fetchGeocheck
2107
2239
  });
2108
2240
  function useGeocheck(options = {}) {
2109
2241
  const { enabled = true, staleTime, gcTime } = options;
2110
- return (0, import_react_query12.useQuery)({
2242
+ return (0, import_react_query13.useQuery)({
2111
2243
  ...geocheckQueryOptions(),
2112
2244
  enabled,
2113
2245
  staleTime: staleTime ?? 5 * 60 * 1e3,
@@ -2120,15 +2252,15 @@ function useGeocheck(options = {}) {
2120
2252
  }
2121
2253
 
2122
2254
  // src/v2/streams/hooks.ts
2123
- var import_react_query13 = require("@tanstack/react-query");
2255
+ var import_react_query14 = require("@tanstack/react-query");
2124
2256
  function useStreams({ query, ...options } = {}) {
2125
- return (0, import_react_query13.useQuery)(createQueryOptions(streamsQueries.list(query), options));
2257
+ return (0, import_react_query14.useQuery)(createQueryOptions(streamsQueries.list(query), options));
2126
2258
  }
2127
2259
  function useStreamSupportedChains(options) {
2128
- return (0, import_react_query13.useQuery)(createQueryOptions(streamsQueries.supportedChains, options));
2260
+ return (0, import_react_query14.useQuery)(createQueryOptions(streamsQueries.supportedChains, options));
2129
2261
  }
2130
2262
  function useRequestStreamSignature(options) {
2131
- return (0, import_react_query13.useMutation)({
2263
+ return (0, import_react_query14.useMutation)({
2132
2264
  mutationFn: ({ organizationId, data }) => requestStreamSignature(organizationId, data),
2133
2265
  ...options
2134
2266
  });
@@ -2233,9 +2365,9 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
2233
2365
  }
2234
2366
 
2235
2367
  // src/v2/users/hooks.ts
2236
- var import_react_query14 = require("@tanstack/react-query");
2368
+ var import_react_query15 = require("@tanstack/react-query");
2237
2369
  function useUserById({ userId, enabled = true }) {
2238
- return (0, import_react_query14.useQuery)({
2370
+ return (0, import_react_query15.useQuery)({
2239
2371
  ...usersQueries.byId({ userId }),
2240
2372
  ...queryDefaults,
2241
2373
  enabled
@@ -2243,13 +2375,68 @@ function useUserById({ userId, enabled = true }) {
2243
2375
  }
2244
2376
  function useUserPortfolio({ userId, enabled = true }) {
2245
2377
  const input = { userId };
2246
- return (0, import_react_query14.useQuery)({
2378
+ return (0, import_react_query15.useQuery)({
2247
2379
  ...usersQueries.portfolio(input),
2248
2380
  ...queryDefaults,
2249
2381
  enabled
2250
2382
  });
2251
2383
  }
2252
2384
 
2385
+ // src/v2/nfts/hooks.ts
2386
+ var import_react_query16 = require("@tanstack/react-query");
2387
+ function useUserNfts({ userAddress, chain, tokenAddress }) {
2388
+ return (0, import_react_query16.useQuery)(
2389
+ userAddress ? createQueryOptions(nftsQueries.byUser(userAddress, chain), {
2390
+ select: (data) => tokenAddress ? data.filter((nft) => nft.token.toLowerCase() === tokenAddress.toLowerCase()) : data
2391
+ }) : { queryKey: ["nfts", "byUser", "skip"], queryFn: import_react_query16.skipToken }
2392
+ );
2393
+ }
2394
+
2395
+ // src/v2/covers/hooks.ts
2396
+ var import_react_query17 = require("@tanstack/react-query");
2397
+
2398
+ // src/v2/covers/schema.ts
2399
+ var import_zod16 = require("zod");
2400
+ var coverRequestDataSchema = import_zod16.z.object({
2401
+ protocolName: import_zod16.z.string(),
2402
+ coverageAmount: import_zod16.z.string(),
2403
+ periodDays: import_zod16.z.number(),
2404
+ desiredApySacrifice: import_zod16.z.string(),
2405
+ calculatedEstimatedPremium: import_zod16.z.string(),
2406
+ tokenSymbol: import_zod16.z.string()
2407
+ });
2408
+ var submitCoverRequestResponseSchema = import_zod16.z.object({
2409
+ success: import_zod16.z.boolean()
2410
+ });
2411
+
2412
+ // src/v2/covers/api.ts
2413
+ async function submitCoverRequest(data) {
2414
+ const response = await apiClient.fetch("/turtle/nexus-cover-requests", {
2415
+ method: "POST",
2416
+ body: data
2417
+ });
2418
+ const result = submitCoverRequestResponseSchema.safeParse(response);
2419
+ if (!result.success) {
2420
+ console.log("[ZOD ERROR]", result.error);
2421
+ throw new Error(`Failed to submit cover request due to an invalid server response.`);
2422
+ }
2423
+ return result.data;
2424
+ }
2425
+
2426
+ // src/v2/covers/hooks.ts
2427
+ function useSubmitCoverRequest(options) {
2428
+ return (0, import_react_query17.useMutation)({
2429
+ mutationFn: submitCoverRequest,
2430
+ onSuccess: () => {
2431
+ options?.onSuccess?.("Cover request submitted successfully!");
2432
+ },
2433
+ onError: (error) => {
2434
+ console.error("[useSubmitCoverRequest]", error);
2435
+ options?.onError?.("Failed to submit Cover Request");
2436
+ }
2437
+ });
2438
+ }
2439
+
2253
2440
  // src/v2/lib/turtle-provider.tsx
2254
2441
  var import_react9 = require("react");
2255
2442
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -2271,19 +2458,21 @@ function TurtleHooksProvider({
2271
2458
  }
2272
2459
 
2273
2460
  // src/v2/index.ts
2274
- var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2461
+ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
2275
2462
  opportunitiesQueries,
2276
2463
  earnOpportunitiesQueries,
2277
2464
  earnRouteQueries,
2278
2465
  earnMembershipQueries,
2279
2466
  earnDepositsQueries,
2467
+ earnInteractionsQueries,
2280
2468
  productsQueries,
2281
2469
  ensoBalancesQueries,
2282
2470
  widgetQueries,
2283
2471
  streamsQueries,
2284
2472
  supportedChainsQueries,
2285
2473
  supportedTokensQueries,
2286
- usersQueries
2474
+ usersQueries,
2475
+ nftsQueries
2287
2476
  );
2288
2477
  // Annotate the CommonJS export names for ESM import in node:
2289
2478
  0 && (module.exports = {
@@ -2301,16 +2490,21 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2301
2490
  chainSchema,
2302
2491
  checkMembership,
2303
2492
  checkMembershipResponseSchema,
2493
+ coverRequestDataSchema,
2304
2494
  createAgreementRequestSchema,
2305
2495
  createAgreementResponseSchema,
2496
+ createClaimWithdrawInteraction,
2497
+ createDepositInteraction,
2306
2498
  createMembership,
2307
2499
  createMembershipAgreement,
2308
2500
  createMembershipRequestSchema,
2309
2501
  createMembershipResponseSchema,
2502
+ createWithdrawInteraction,
2310
2503
  depositSchema,
2311
2504
  depositSubstep,
2312
2505
  depositsResponseSchema,
2313
2506
  earnDepositsQueries,
2507
+ earnInteractionsQueries,
2314
2508
  earnMembershipQueries,
2315
2509
  earnOpportunitiesQueries,
2316
2510
  earnOpportunitiesResponseSchema,
@@ -2319,6 +2513,7 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2319
2513
  earnRouteResponseSchema,
2320
2514
  ensoBalancesQueries,
2321
2515
  ensoStep,
2516
+ fetchUserNfts,
2322
2517
  filterBalancesByChains,
2323
2518
  filterExcludedTokens,
2324
2519
  filterNonZeroBalances,
@@ -2349,8 +2544,10 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2349
2544
  getWidgetOpportunities,
2350
2545
  holdingsDataSchema,
2351
2546
  incentiveSchema,
2547
+ interactionResponseSchema,
2352
2548
  lendingConfigSchema,
2353
2549
  mergeBalancesByPriority,
2550
+ nftsQueries,
2354
2551
  opportunitiesQueries,
2355
2552
  opportunitySchema,
2356
2553
  organizationSchema,
@@ -2374,6 +2571,8 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2374
2571
  streamSignatureRequestInputSchema,
2375
2572
  streamSignatureRequestOutputSchema,
2376
2573
  streamsQueries,
2574
+ submitCoverRequest,
2575
+ submitCoverRequestResponseSchema,
2377
2576
  supportedChainsQueries,
2378
2577
  supportedChainsResponseSchema,
2379
2578
  supportedTokenSchema,
@@ -2381,11 +2580,16 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2381
2580
  supportedTokensResponseSchema,
2382
2581
  swapSubstep,
2383
2582
  tokenSchema,
2583
+ transactionSchema,
2584
+ txResponseItemSchema,
2384
2585
  useBalance,
2385
2586
  useCheckMembership,
2587
+ useCreateClaimWithdrawInteraction,
2588
+ useCreateDepositInteraction,
2386
2589
  useCreateMembership,
2387
2590
  useCreateMembershipAgreement,
2388
2591
  useCreateProduct,
2592
+ useCreateWithdrawInteraction,
2389
2593
  useDeleteProduct,
2390
2594
  useDeposits,
2391
2595
  useEarnOpportunities,
@@ -2402,6 +2606,7 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2402
2606
  useRequestStreamSignature,
2403
2607
  useStreamSupportedChains,
2404
2608
  useStreams,
2609
+ useSubmitCoverRequest,
2405
2610
  useSupportedChains,
2406
2611
  useSupportedTokens,
2407
2612
  useSwapRoute,
@@ -2409,6 +2614,7 @@ var queries = (0, import_query_key_factory14.mergeQueryKeys)(
2409
2614
  useUpdateProduct,
2410
2615
  useUploadProductLogo,
2411
2616
  useUserById,
2617
+ useUserNfts,
2412
2618
  useUserPortfolio,
2413
2619
  useWidgetOpportunities,
2414
2620
  userEarningsSchema,