@turtleclub/hooks 0.5.0-beta.2 → 0.5.0-beta.4

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
@@ -22,7 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  ApiError: () => ApiError,
24
24
  BalanceSourcePriority: () => BalanceSourcePriority,
25
- TurtleProvider: () => TurtleProvider,
25
+ TurtleHooksProvider: () => TurtleHooksProvider,
26
26
  apiClient: () => apiClient,
27
27
  approveStep: () => approveStep,
28
28
  asset: () => asset,
@@ -66,8 +66,16 @@ __export(index_exports, {
66
66
  getSourcePriority: () => getSourcePriority,
67
67
  getSupportedChains: () => getSupportedChains,
68
68
  getSupportedTokens: () => getSupportedTokens,
69
+ getUserById: () => getUserById,
70
+ getUserByIdInputSchema: () => getUserByIdInputSchema,
71
+ getUserByIdOutputSchema: () => getUserByIdOutputSchema,
72
+ getUserPortfolio: () => getUserPortfolio,
73
+ getUserTurtlePortfolioInputSchema: () => getUserTurtlePortfolioInputSchema,
74
+ getUserTurtlePortfolioOutputSchema: () => getUserTurtlePortfolioOutputSchema,
75
+ getUserTurtlePortfolioPathSchema: () => getUserTurtlePortfolioPathSchema,
69
76
  getWalletBalances: () => getWalletBalances,
70
77
  getWidgetOpportunities: () => getWidgetOpportunities,
78
+ holdingsDataSchema: () => holdingsDataSchema,
71
79
  incentiveSchema: () => incentiveSchema,
72
80
  lendingConfigSchema: () => lendingConfigSchema,
73
81
  mergeBalancesByPriority: () => mergeBalancesByPriority,
@@ -77,6 +85,7 @@ __export(index_exports, {
77
85
  paginationMetadataSchema: () => paginationMetadataSchema,
78
86
  portfolioBalanceResponseSchema: () => portfolioBalanceResponseSchema,
79
87
  portfolioHoldingsSchema: () => portfolioHoldingsSchema,
88
+ portfolioSchema: () => portfolioSchema,
80
89
  portfolioTokenSchema: () => portfolioTokenSchema,
81
90
  portfolioWalletSchema: () => portfolioWalletSchema,
82
91
  processRouteDetails: () => processRouteDetails,
@@ -118,10 +127,16 @@ __export(index_exports, {
118
127
  useTokenBalance: () => useTokenBalance,
119
128
  useUpdateProduct: () => useUpdateProduct,
120
129
  useUploadProductLogo: () => useUploadProductLogo,
130
+ useUserById: () => useUserById,
131
+ useUserPortfolio: () => useUserPortfolio,
121
132
  useWidgetOpportunities: () => useWidgetOpportunities,
133
+ userEarningsSchema: () => userEarningsSchema,
134
+ userWithDetailsSchema: () => userWithDetailsSchema,
135
+ usersQueries: () => usersQueries,
122
136
  vaultConfigSchema: () => vaultConfigSchema,
123
137
  walletBalanceSchema: () => walletBalanceSchema,
124
138
  walletBalancesResponseSchema: () => walletBalancesResponseSchema,
139
+ walletDataSchema: () => walletDataSchema,
125
140
  walletEcosystemEnum: () => walletEcosystemEnum,
126
141
  widgetOpportunitiesResponseSchema: () => widgetOpportunitiesResponseSchema,
127
142
  widgetQueries: () => widgetQueries
@@ -129,7 +144,7 @@ __export(index_exports, {
129
144
  module.exports = __toCommonJS(index_exports);
130
145
 
131
146
  // src/v2/index.ts
132
- var import_query_key_factory12 = require("@lukemorales/query-key-factory");
147
+ var import_query_key_factory13 = require("@lukemorales/query-key-factory");
133
148
 
134
149
  // src/v2/opportunities/queries.ts
135
150
  var import_query_key_factory = require("@lukemorales/query-key-factory");
@@ -814,7 +829,7 @@ async function getProducts(filters) {
814
829
  const params = new URLSearchParams();
815
830
  if (filters?.organizationId) params.append("organizationId", filters.organizationId);
816
831
  const queryString = params.toString();
817
- const endpoint = `/admin/products${queryString ? `?${queryString}` : ""}`;
832
+ const endpoint = `/turtle/products${queryString ? `?${queryString}` : ""}`;
818
833
  const data = await apiClient.fetch(endpoint, {
819
834
  method: "GET"
820
835
  });
@@ -826,7 +841,7 @@ async function getProducts(filters) {
826
841
  return result.data;
827
842
  }
828
843
  async function getProduct(id) {
829
- const endpoint = `/admin/products/${id}`;
844
+ const endpoint = `/turtle/products/${id}`;
830
845
  const data = await apiClient.fetch(endpoint, {
831
846
  method: "GET"
832
847
  });
@@ -1067,6 +1082,114 @@ var supportedTokensQueries = (0, import_query_key_factory10.createQueryKeys)("su
1067
1082
  })
1068
1083
  });
1069
1084
 
1085
+ // src/v2/users/queries.ts
1086
+ var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1087
+
1088
+ // src/v2/users/schemas.ts
1089
+ var import_zod12 = require("zod");
1090
+ var walletDataSchema = import_zod12.z.object({
1091
+ address: import_zod12.z.string(),
1092
+ totalAmountInUSD: import_zod12.z.string(),
1093
+ tokens: import_zod12.z.array(tokenSchema)
1094
+ });
1095
+ var holdingsDataSchema = import_zod12.z.object({
1096
+ totalAmountInUSD: import_zod12.z.string(),
1097
+ chains: import_zod12.z.array(chainSchema).nullish(),
1098
+ wallets: import_zod12.z.array(walletDataSchema).nullish()
1099
+ });
1100
+ var userEarningsSchema = import_zod12.z.object({
1101
+ productId: import_zod12.z.string().uuid(),
1102
+ value: import_zod12.z.number(),
1103
+ referralsEarnings: import_zod12.z.number().nullish(),
1104
+ rewardName: import_zod12.z.string().nullish(),
1105
+ rewardType: import_zod12.z.string().nullish()
1106
+ });
1107
+ var portfolioSchema = import_zod12.z.object({
1108
+ productsEarnings: import_zod12.z.array(userEarningsSchema),
1109
+ holdings: holdingsDataSchema.nullish()
1110
+ });
1111
+ var holdingInfoSchema = import_zod12.z.object({
1112
+ amount: import_zod12.z.number(),
1113
+ usdValue: import_zod12.z.number(),
1114
+ token: tokenSchema.nullish()
1115
+ });
1116
+ var walletInfoSchema = import_zod12.z.object({
1117
+ address: import_zod12.z.string().nullish(),
1118
+ ecosystem: import_zod12.z.string().nullish(),
1119
+ isMain: import_zod12.z.boolean().nullish(),
1120
+ holdings: import_zod12.z.array(holdingInfoSchema).nullish()
1121
+ });
1122
+ var userWithDetailsSchema = import_zod12.z.object({
1123
+ id: import_zod12.z.string(),
1124
+ email: import_zod12.z.string().nullable(),
1125
+ username: import_zod12.z.string().nullish(),
1126
+ firstName: import_zod12.z.string().nullish(),
1127
+ lastName: import_zod12.z.string().nullish(),
1128
+ avatarUrl: import_zod12.z.string().nullish(),
1129
+ telegramHandle: import_zod12.z.string().nullish(),
1130
+ xUsername: import_zod12.z.string().nullish(),
1131
+ role: import_zod12.z.string(),
1132
+ createdAt: import_zod12.z.string(),
1133
+ updatedAt: import_zod12.z.string(),
1134
+ tags: import_zod12.z.array(import_zod12.z.string()).nullish(),
1135
+ wallets: import_zod12.z.array(walletInfoSchema).nullish()
1136
+ });
1137
+ var getUserTurtlePortfolioInputSchema = import_zod12.z.object({
1138
+ userId: import_zod12.z.string().uuid()
1139
+ });
1140
+ var getUserTurtlePortfolioOutputSchema = import_zod12.z.object({
1141
+ portfolio: portfolioSchema
1142
+ });
1143
+ var getUserTurtlePortfolioPathSchema = import_zod12.z.object({
1144
+ userId: import_zod12.z.string().uuid()
1145
+ });
1146
+ var getUserByIdInputSchema = import_zod12.z.object({
1147
+ userId: import_zod12.z.string().uuid()
1148
+ });
1149
+ var getUserByIdOutputSchema = import_zod12.z.object({
1150
+ user: userWithDetailsSchema.nullable(),
1151
+ error: import_zod12.z.string().optional()
1152
+ });
1153
+
1154
+ // src/v2/users/api.ts
1155
+ async function getUserById(input) {
1156
+ console.log("input", input);
1157
+ const endpoint = `/admin/users/${input.userId}`;
1158
+ const data = await apiClient.fetch(endpoint, {
1159
+ method: "GET"
1160
+ });
1161
+ const result = getUserByIdOutputSchema.safeParse(data);
1162
+ if (result.success === false) {
1163
+ console.log("[ZOD ERROR]", result.error);
1164
+ throw new Error(`Failed to parse user: ${result.error.message}`);
1165
+ }
1166
+ return result.data;
1167
+ }
1168
+ async function getUserPortfolio(input) {
1169
+ const endpoint = `/admin/users/${input.userId}/portfolio`;
1170
+ const data = await apiClient.fetch(endpoint, {
1171
+ method: "GET"
1172
+ });
1173
+ const result = getUserTurtlePortfolioOutputSchema.safeParse(data);
1174
+ if (result.success === false) {
1175
+ console.log("[ZOD ERROR]", result.error);
1176
+ throw new Error(`Failed to parse user portfolio: ${result.error.message}`);
1177
+ }
1178
+ return result.data;
1179
+ }
1180
+
1181
+ // src/v2/users/queries.ts
1182
+ var usersQueries = (0, import_query_key_factory11.createQueryKeys)("users", {
1183
+ byId: (input) => ({
1184
+ queryKey: [input.userId],
1185
+ queryFn: () => getUserById(input)
1186
+ }),
1187
+ portfolio: (input) => ({
1188
+ queryKey: ["portfolio", input.userId],
1189
+ queryFn: () => getUserPortfolio(input)
1190
+ })
1191
+ });
1192
+
1070
1193
  // src/v2/earn-opportunities/hooks.ts
1071
1194
  var import_react_query = require("@tanstack/react-query");
1072
1195
 
@@ -1312,33 +1435,33 @@ var BalanceSourcePriority = /* @__PURE__ */ ((BalanceSourcePriority2) => {
1312
1435
  })(BalanceSourcePriority || {});
1313
1436
 
1314
1437
  // src/v2/balance/schema.ts
1315
- var import_zod12 = require("zod");
1316
- var portfolioTokenSchema = import_zod12.z.object({
1317
- id: import_zod12.z.string(),
1318
- address: import_zod12.z.string(),
1319
- name: import_zod12.z.string(),
1320
- symbol: import_zod12.z.string(),
1321
- decimals: import_zod12.z.number(),
1322
- isNative: import_zod12.z.boolean(),
1323
- logoUrl: import_zod12.z.string().nullable(),
1324
- amount: import_zod12.z.string(),
1438
+ var import_zod13 = require("zod");
1439
+ var portfolioTokenSchema = import_zod13.z.object({
1440
+ id: import_zod13.z.string(),
1441
+ address: import_zod13.z.string(),
1442
+ name: import_zod13.z.string(),
1443
+ symbol: import_zod13.z.string(),
1444
+ decimals: import_zod13.z.number(),
1445
+ isNative: import_zod13.z.boolean(),
1446
+ logoUrl: import_zod13.z.string().nullable(),
1447
+ amount: import_zod13.z.string(),
1325
1448
  // Portfolio-specific field (decimal format)
1326
- price: import_zod12.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
1449
+ price: import_zod13.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
1327
1450
  // Portfolio-specific field
1328
1451
  // Chain with optional fields to match Portfolio API response
1329
1452
  chain: chainSchema.partial().required({ chainId: true })
1330
1453
  });
1331
- var portfolioWalletSchema = import_zod12.z.object({
1332
- id: import_zod12.z.string().optional(),
1333
- address: import_zod12.z.string(),
1334
- blockchain: import_zod12.z.string().optional(),
1335
- tokens: import_zod12.z.array(portfolioTokenSchema)
1454
+ var portfolioWalletSchema = import_zod13.z.object({
1455
+ id: import_zod13.z.string().optional(),
1456
+ address: import_zod13.z.string(),
1457
+ blockchain: import_zod13.z.string().optional(),
1458
+ tokens: import_zod13.z.array(portfolioTokenSchema)
1336
1459
  });
1337
- var portfolioHoldingsSchema = import_zod12.z.object({
1338
- wallets: import_zod12.z.array(portfolioWalletSchema)
1460
+ var portfolioHoldingsSchema = import_zod13.z.object({
1461
+ wallets: import_zod13.z.array(portfolioWalletSchema)
1339
1462
  });
1340
- var portfolioBalanceResponseSchema = import_zod12.z.object({
1341
- portfolio: import_zod12.z.object({
1463
+ var portfolioBalanceResponseSchema = import_zod13.z.object({
1464
+ portfolio: import_zod13.z.object({
1342
1465
  holdings: portfolioHoldingsSchema
1343
1466
  })
1344
1467
  });
@@ -1359,8 +1482,8 @@ async function getPortfolioBalance(address, options) {
1359
1482
  }
1360
1483
 
1361
1484
  // src/v2/balance/queries.ts
1362
- var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1363
- var balanceQueries = (0, import_query_key_factory11.createQueryKeys)("balance", {
1485
+ var import_query_key_factory12 = require("@lukemorales/query-key-factory");
1486
+ var balanceQueries = (0, import_query_key_factory12.createQueryKeys)("balance", {
1364
1487
  // Portfolio balance by address
1365
1488
  portfolio: (address) => ({
1366
1489
  queryKey: [address],
@@ -1906,10 +2029,28 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
1906
2029
  };
1907
2030
  }
1908
2031
 
2032
+ // src/v2/users/hooks.ts
2033
+ var import_react_query13 = require("@tanstack/react-query");
2034
+ function useUserById({ userId, enabled = true }) {
2035
+ return (0, import_react_query13.useQuery)({
2036
+ ...usersQueries.byId({ userId }),
2037
+ ...queryDefaults,
2038
+ enabled
2039
+ });
2040
+ }
2041
+ function useUserPortfolio({ userId, enabled = true }) {
2042
+ const input = { userId };
2043
+ return (0, import_react_query13.useQuery)({
2044
+ ...usersQueries.portfolio(input),
2045
+ ...queryDefaults,
2046
+ enabled
2047
+ });
2048
+ }
2049
+
1909
2050
  // src/v2/lib/turtle-provider.tsx
1910
2051
  var import_react9 = require("react");
1911
2052
  var import_jsx_runtime = require("react/jsx-runtime");
1912
- function TurtleProvider({
2053
+ function TurtleHooksProvider({
1913
2054
  children,
1914
2055
  apiUrl,
1915
2056
  earnUrl,
@@ -1927,7 +2068,7 @@ function TurtleProvider({
1927
2068
  }
1928
2069
 
1929
2070
  // src/v2/index.ts
1930
- var queries = (0, import_query_key_factory12.mergeQueryKeys)(
2071
+ var queries = (0, import_query_key_factory13.mergeQueryKeys)(
1931
2072
  opportunitiesQueries,
1932
2073
  earnOpportunitiesQueries,
1933
2074
  earnRouteQueries,
@@ -1937,13 +2078,14 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
1937
2078
  ensoBalancesQueries,
1938
2079
  widgetQueries,
1939
2080
  supportedChainsQueries,
1940
- supportedTokensQueries
2081
+ supportedTokensQueries,
2082
+ usersQueries
1941
2083
  );
1942
2084
  // Annotate the CommonJS export names for ESM import in node:
1943
2085
  0 && (module.exports = {
1944
2086
  ApiError,
1945
2087
  BalanceSourcePriority,
1946
- TurtleProvider,
2088
+ TurtleHooksProvider,
1947
2089
  apiClient,
1948
2090
  approveStep,
1949
2091
  asset,
@@ -1987,8 +2129,16 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
1987
2129
  getSourcePriority,
1988
2130
  getSupportedChains,
1989
2131
  getSupportedTokens,
2132
+ getUserById,
2133
+ getUserByIdInputSchema,
2134
+ getUserByIdOutputSchema,
2135
+ getUserPortfolio,
2136
+ getUserTurtlePortfolioInputSchema,
2137
+ getUserTurtlePortfolioOutputSchema,
2138
+ getUserTurtlePortfolioPathSchema,
1990
2139
  getWalletBalances,
1991
2140
  getWidgetOpportunities,
2141
+ holdingsDataSchema,
1992
2142
  incentiveSchema,
1993
2143
  lendingConfigSchema,
1994
2144
  mergeBalancesByPriority,
@@ -1998,6 +2148,7 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
1998
2148
  paginationMetadataSchema,
1999
2149
  portfolioBalanceResponseSchema,
2000
2150
  portfolioHoldingsSchema,
2151
+ portfolioSchema,
2001
2152
  portfolioTokenSchema,
2002
2153
  portfolioWalletSchema,
2003
2154
  processRouteDetails,
@@ -2039,10 +2190,16 @@ var queries = (0, import_query_key_factory12.mergeQueryKeys)(
2039
2190
  useTokenBalance,
2040
2191
  useUpdateProduct,
2041
2192
  useUploadProductLogo,
2193
+ useUserById,
2194
+ useUserPortfolio,
2042
2195
  useWidgetOpportunities,
2196
+ userEarningsSchema,
2197
+ userWithDetailsSchema,
2198
+ usersQueries,
2043
2199
  vaultConfigSchema,
2044
2200
  walletBalanceSchema,
2045
2201
  walletBalancesResponseSchema,
2202
+ walletDataSchema,
2046
2203
  walletEcosystemEnum,
2047
2204
  widgetOpportunitiesResponseSchema,
2048
2205
  widgetQueries