@turtleclub/hooks 0.5.0-beta.53 → 0.5.0-beta.55

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,6 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  ApiError: () => ApiError,
24
24
  BalanceSourcePriority: () => BalanceSourcePriority,
25
+ GetLiquidityProvidersResponseSchema: () => GetLiquidityProvidersResponseSchema,
25
26
  LeaveOrganizationInputSchema: () => LeaveOrganizationInputSchema,
26
27
  LeaveOrganizationOutputSchema: () => LeaveOrganizationOutputSchema,
27
28
  TurtleHooksProvider: () => TurtleHooksProvider,
@@ -49,6 +50,8 @@ __export(index_exports, {
49
50
  createClaimWithdrawInteraction: () => createClaimWithdrawInteraction,
50
51
  createDepositAction: () => createDepositAction,
51
52
  createDepositInteraction: () => createDepositInteraction,
53
+ createIncentive: () => createIncentive,
54
+ createIncentiveInputSchema: () => createIncentiveInputSchema,
52
55
  createMembership: () => createMembership,
53
56
  createMembershipAgreement: () => createMembershipAgreement,
54
57
  createMembershipRequestSchema: () => createMembershipRequestSchema,
@@ -61,6 +64,7 @@ __export(index_exports, {
61
64
  createStreamPointOutputSchema: () => createStreamPointOutputSchema,
62
65
  createWithdrawAction: () => createWithdrawAction,
63
66
  createWithdrawInteraction: () => createWithdrawInteraction,
67
+ deleteIncentive: () => deleteIncentive,
64
68
  deleteProduct: () => deleteProduct,
65
69
  depositSchema: () => depositSchema,
66
70
  depositSubstep: () => depositSubstep,
@@ -86,6 +90,10 @@ __export(index_exports, {
86
90
  getDeposits: () => getDeposits,
87
91
  getEarnOpportunities: () => getEarnOpportunities,
88
92
  getEarnRoute: () => getEarnRoute,
93
+ getIncentive: () => getIncentive,
94
+ getIncentives: () => getIncentives,
95
+ getLiquidityProviders: () => getLiquidityProviders,
96
+ getLiquidityProvidersInputSchema: () => getLiquidityProvidersInputSchema,
89
97
  getOpportunities: () => getOpportunities,
90
98
  getOpportunitiesFilterOptions: () => getOpportunitiesFilterOptions,
91
99
  getOpportunitiesFilterOptionsSchema: () => getOpportunitiesFilterOptionsSchema,
@@ -123,8 +131,13 @@ __export(index_exports, {
123
131
  getWalletBalances: () => getWalletBalances,
124
132
  getWidgetOpportunities: () => getWidgetOpportunities,
125
133
  holdingsDataSchema: () => holdingsDataSchema,
134
+ incentiveSchema: () => incentiveSchema,
135
+ incentivesQueries: () => incentivesQueries,
136
+ incentivesResponseSchema: () => incentivesResponseSchema,
126
137
  leaveOrganization: () => leaveOrganization,
127
138
  lendingConfigSchema: () => lendingConfigSchema,
139
+ liquidityProviderSchema: () => liquidityProviderSchema,
140
+ liquidityProvidersQueries: () => liquidityProvidersQueries,
128
141
  mergeBalancesByPriority: () => mergeBalancesByPriority,
129
142
  nftsQueries: () => nftsQueries,
130
143
  opportunitiesQueries: () => opportunitiesQueries,
@@ -175,9 +188,15 @@ __export(index_exports, {
175
188
  tokenSchema: () => tokenSchema,
176
189
  transactionSchema: () => transactionSchema,
177
190
  txResponseItemSchema: () => txResponseItemSchema,
191
+ updateDistributorEarnDetails: () => updateDistributorEarnDetails,
192
+ updateIncentive: () => updateIncentive,
193
+ updateIncentiveInputSchema: () => updateIncentiveInputSchema,
178
194
  updateProduct: () => updateProduct,
179
195
  updateProductInputSchema: () => updateProductInputSchema,
180
196
  updateProductResponseSchema: () => updateProductResponseSchema,
197
+ uploadIncentiveIcon: () => uploadIncentiveIcon,
198
+ uploadIncentiveIconRequestSchema: () => uploadIncentiveIconRequestSchema,
199
+ uploadIncentiveIconResponseSchema: () => uploadIncentiveIconResponseSchema,
181
200
  uploadProductLogo: () => uploadProductLogo,
182
201
  uploadProductLogoRequestSchema: () => uploadProductLogoRequestSchema,
183
202
  uploadProductLogoResponseSchema: () => uploadProductLogoResponseSchema,
@@ -191,10 +210,12 @@ __export(index_exports, {
191
210
  useClaimWithdrawAction: () => useClaimWithdrawAction,
192
211
  useCreateClaimWithdrawInteraction: () => useCreateClaimWithdrawInteraction,
193
212
  useCreateDepositInteraction: () => useCreateDepositInteraction,
213
+ useCreateIncentive: () => useCreateIncentive,
194
214
  useCreateMembership: () => useCreateMembership,
195
215
  useCreateMembershipAgreement: () => useCreateMembershipAgreement,
196
216
  useCreateProduct: () => useCreateProduct,
197
217
  useCreateWithdrawInteraction: () => useCreateWithdrawInteraction,
218
+ useDeleteIncentive: () => useDeleteIncentive,
198
219
  useDeleteProduct: () => useDeleteProduct,
199
220
  useDepositAction: () => useDepositAction,
200
221
  useDepositFlow: () => useDepositFlow,
@@ -207,7 +228,10 @@ __export(index_exports, {
207
228
  useEnsoBalances: () => useEnsoBalances,
208
229
  useGeocheck: () => useGeocheck,
209
230
  useGetOnChainBalance: () => useGetOnChainBalance,
231
+ useIncentive: () => useIncentive,
232
+ useIncentives: () => useIncentives,
210
233
  useLeaveOrganization: () => useLeaveOrganization,
234
+ useLiquidityProviders: () => useLiquidityProviders,
211
235
  useMultiChainBalances: () => useMultiChainBalances,
212
236
  useOpportunities: () => useOpportunities,
213
237
  useOpportunitiesFilterOptions: () => useOpportunitiesFilterOptions,
@@ -227,7 +251,10 @@ __export(index_exports, {
227
251
  useSwapRoute: () => useSwapRoute,
228
252
  useTokenBalance: () => useTokenBalance,
229
253
  useTurtleMembershipFlow: () => useTurtleMembershipFlow,
254
+ useUpdateDistributorEarnDetails: () => useUpdateDistributorEarnDetails,
255
+ useUpdateIncentive: () => useUpdateIncentive,
230
256
  useUpdateProduct: () => useUpdateProduct,
257
+ useUploadIncentiveIcon: () => useUploadIncentiveIcon,
231
258
  useUploadProductLogo: () => useUploadProductLogo,
232
259
  useUserById: () => useUserById,
233
260
  useUserNfts: () => useUserNfts,
@@ -248,7 +275,7 @@ __export(index_exports, {
248
275
  module.exports = __toCommonJS(index_exports);
249
276
 
250
277
  // src/v2/index.ts
251
- var import_query_key_factory16 = require("@lukemorales/query-key-factory");
278
+ var import_query_key_factory19 = require("@lukemorales/query-key-factory");
252
279
 
253
280
  // src/v2/opportunities/queries.ts
254
281
  var import_query_key_factory3 = require("@lukemorales/query-key-factory");
@@ -479,7 +506,7 @@ var getSupportedChainsInputSchema = import_zod3.z.object({
479
506
  });
480
507
  var supportedChainsResponseSchema = import_zod3.z.object({
481
508
  chains: import_zod3.z.array(chainSchema),
482
- pagination: paginationMetadataSchema.optional()
509
+ pagination: paginationMetadataSchema.partial().optional()
483
510
  });
484
511
 
485
512
  // src/v2/supported-chains/api.ts
@@ -580,7 +607,7 @@ var tokenSchema = import_zod4.z.object({
580
607
  rawAmount: import_zod4.z.string().optional()
581
608
  });
582
609
  var supportedTokenSchema = tokenSchema.extend({
583
- active: import_zod4.z.boolean()
610
+ active: import_zod4.z.boolean().optional()
584
611
  });
585
612
  var supportedTokensResponseSchema = import_zod4.z.object({
586
613
  tokens: import_zod4.z.array(supportedTokenSchema),
@@ -2098,6 +2125,345 @@ var nftsQueries = (0, import_query_key_factory14.createQueryKeys)("nfts", {
2098
2125
  })
2099
2126
  });
2100
2127
 
2128
+ // src/v2/balance/queries.ts
2129
+ var import_query_key_factory15 = require("@lukemorales/query-key-factory");
2130
+
2131
+ // src/v2/balance/schema.ts
2132
+ var import_zod16 = require("zod");
2133
+ var portfolioTokenSchema = import_zod16.z.object({
2134
+ id: import_zod16.z.string(),
2135
+ address: import_zod16.z.string(),
2136
+ name: import_zod16.z.string(),
2137
+ symbol: import_zod16.z.string(),
2138
+ decimals: import_zod16.z.number(),
2139
+ isNative: import_zod16.z.boolean(),
2140
+ logoUrl: import_zod16.z.string().nullable(),
2141
+ amount: import_zod16.z.string(),
2142
+ // Portfolio-specific field (decimal format)
2143
+ price: import_zod16.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
2144
+ // Portfolio-specific field
2145
+ // Chain with optional fields to match Portfolio API response
2146
+ chain: chainSchema.partial().required({ chainId: true })
2147
+ });
2148
+ var portfolioWalletSchema = import_zod16.z.object({
2149
+ id: import_zod16.z.string().optional(),
2150
+ address: import_zod16.z.string(),
2151
+ blockchain: import_zod16.z.string().optional(),
2152
+ tokens: import_zod16.z.array(portfolioTokenSchema)
2153
+ });
2154
+ var portfolioHoldingsSchema = import_zod16.z.object({
2155
+ wallets: import_zod16.z.array(portfolioWalletSchema)
2156
+ });
2157
+ var portfolioBalanceResponseSchema = import_zod16.z.object({
2158
+ portfolio: import_zod16.z.object({
2159
+ holdings: portfolioHoldingsSchema
2160
+ })
2161
+ });
2162
+
2163
+ // src/v2/balance/api.ts
2164
+ async function getPortfolioBalance(address, options) {
2165
+ const data = await apiClient.fetch(`/wallet/${address}/balance`, {
2166
+ method: "GET",
2167
+ domain: "api",
2168
+ debug: options?.debug
2169
+ });
2170
+ const result = portfolioBalanceResponseSchema.safeParse(data);
2171
+ if (result.success === false) {
2172
+ console.log("[ZOD ERROR]", result.error);
2173
+ throw new Error(`Failed to parse portfolio balance: ${result.error.message}`);
2174
+ }
2175
+ return result.data;
2176
+ }
2177
+
2178
+ // src/v2/balance/queries.ts
2179
+ var balanceQueries = (0, import_query_key_factory15.createQueryKeys)("balance", {
2180
+ // Portfolio balance by address
2181
+ portfolio: (address) => ({
2182
+ queryKey: [address],
2183
+ queryFn: () => getPortfolioBalance(address)
2184
+ })
2185
+ });
2186
+
2187
+ // src/v2/deposits/queries.ts
2188
+ var import_query_key_factory16 = require("@lukemorales/query-key-factory");
2189
+
2190
+ // src/v2/deposits/schemas.ts
2191
+ var import_zod17 = require("zod");
2192
+ var uuidSchema = import_zod17.z.string().uuid();
2193
+ var sortBySchema = import_zod17.z.enum(["date", "usd_value"]).optional();
2194
+ var sortOrderSchema = import_zod17.z.enum(["asc", "desc"]).optional();
2195
+ var getDepositsRequestSchema = import_zod17.z.object({
2196
+ // Filter by product or opportunity (optional, not mutually exclusive)
2197
+ product_id: import_zod17.z.string().uuid().optional(),
2198
+ opportunity_id: import_zod17.z.string().uuid().optional(),
2199
+ // Search query
2200
+ search: import_zod17.z.string().optional(),
2201
+ // Sorting options
2202
+ sort_by: sortBySchema,
2203
+ sort_order: sortOrderSchema,
2204
+ // Additional filters
2205
+ distributor_id: import_zod17.z.string().optional(),
2206
+ depositor_address: import_zod17.z.string().optional(),
2207
+ referral: import_zod17.z.string().optional(),
2208
+ // Pagination
2209
+ page: import_zod17.z.number().int().min(1).optional().default(1),
2210
+ page_limit: import_zod17.z.number().int().min(1).max(100).optional().default(20)
2211
+ }).refine(
2212
+ (data) => {
2213
+ const hasProductId = !!data.product_id;
2214
+ const hasOpportunityId = !!data.opportunity_id;
2215
+ return hasProductId !== hasOpportunityId;
2216
+ },
2217
+ {
2218
+ message: "Either product_id or opportunity_id must be provided (but not both)",
2219
+ path: ["product_id", "opportunity_id"]
2220
+ }
2221
+ );
2222
+ var depositResponseSchema = import_zod17.z.object({
2223
+ id: uuidSchema,
2224
+ opportunityId: uuidSchema,
2225
+ walletId: uuidSchema.nullable().optional(),
2226
+ crmWalletId: uuidSchema.nullable().optional(),
2227
+ depositorAddress: import_zod17.z.string(),
2228
+ amount: import_zod17.z.number(),
2229
+ usdValue: import_zod17.z.number(),
2230
+ depositTimestamp: import_zod17.z.string().datetime(),
2231
+ // ISO 8601 format
2232
+ txHash: import_zod17.z.string(),
2233
+ verified: import_zod17.z.boolean().nullable().optional(),
2234
+ distributorId: import_zod17.z.string().nullable().optional(),
2235
+ referral: import_zod17.z.string().nullable().optional(),
2236
+ explorerUrl: import_zod17.z.string().url().nullable().optional(),
2237
+ createdAt: import_zod17.z.string().datetime(),
2238
+ // ISO 8601 format
2239
+ updatedAt: import_zod17.z.string().datetime()
2240
+ // ISO 8601 format
2241
+ });
2242
+ var depositsMetadataSchema = import_zod17.z.object({
2243
+ totalUsdValue: import_zod17.z.number().int().min(0)
2244
+ });
2245
+ var getDepositsResponseSchema = import_zod17.z.object({
2246
+ deposits: import_zod17.z.array(depositResponseSchema),
2247
+ pagination: paginationMetadataSchema.partial(),
2248
+ metadata: depositsMetadataSchema
2249
+ });
2250
+
2251
+ // src/v2/deposits/api.ts
2252
+ async function getDeposits2(filters) {
2253
+ const params = new URLSearchParams();
2254
+ if (filters.product_id) params.append("product_id", filters.product_id);
2255
+ if (filters.opportunity_id) params.append("opportunity_id", filters.opportunity_id);
2256
+ if (filters.search) params.append("search", filters.search);
2257
+ if (filters.sort_by) params.append("sort_by", filters.sort_by);
2258
+ if (filters.sort_order) params.append("sort_order", filters.sort_order);
2259
+ if (filters.distributor_id) params.append("distributor_id", filters.distributor_id);
2260
+ if (filters.depositor_address) params.append("depositor_address", filters.depositor_address);
2261
+ if (filters.referral) params.append("referral", filters.referral);
2262
+ if (filters.page) params.append("page", filters.page.toString());
2263
+ if (filters.page_limit) params.append("page_limit", filters.page_limit.toString());
2264
+ const queryString = params.toString();
2265
+ const endpoint = `/turtle/deposits${queryString ? `?${queryString}` : ""}`;
2266
+ const data = await apiClient.fetch(endpoint, {
2267
+ method: "GET"
2268
+ });
2269
+ const result = getDepositsResponseSchema.safeParse(data);
2270
+ if (result.success === false) {
2271
+ console.log("[ZOD ERROR]", result.error);
2272
+ throw new Error(`Failed to parse deposits: ${result.error.message}`);
2273
+ }
2274
+ return result.data;
2275
+ }
2276
+
2277
+ // src/v2/deposits/queries.ts
2278
+ var depositsQueries = (0, import_query_key_factory16.createQueryKeys)("deposits", {
2279
+ list: (filters) => ({
2280
+ queryKey: [{ filters }],
2281
+ queryFn: () => getDeposits2(filters)
2282
+ })
2283
+ });
2284
+
2285
+ // src/v2/incentives/queries.ts
2286
+ var import_query_key_factory17 = require("@lukemorales/query-key-factory");
2287
+
2288
+ // src/v2/incentives/api.ts
2289
+ async function getIncentives() {
2290
+ const params = new URLSearchParams();
2291
+ const queryString = params.toString();
2292
+ const endpoint = `/turtle/incentives${queryString ? `?${queryString}` : ""}`;
2293
+ const data = await apiClient.fetch(endpoint, {
2294
+ method: "GET"
2295
+ });
2296
+ const result = incentivesResponseSchema.safeParse(data);
2297
+ if (result.success === false) {
2298
+ console.log("[ZOD ERROR]", result.error);
2299
+ throw new Error(`Failed to parse incentives: ${result.error.message}`);
2300
+ }
2301
+ return result.data;
2302
+ }
2303
+ async function getIncentive(id) {
2304
+ const endpoint = `/admin/incentives/${id}`;
2305
+ const data = await apiClient.fetch(endpoint, {
2306
+ method: "GET"
2307
+ });
2308
+ const result = incentiveSchema.safeParse(data);
2309
+ if (result.success === false) {
2310
+ console.log("[ZOD ERROR]", result.error);
2311
+ throw new Error(`Failed to parse incentive: ${result.error.message}`);
2312
+ }
2313
+ return result.data;
2314
+ }
2315
+ async function createIncentive(input) {
2316
+ const endpoint = `/admin/incentives`;
2317
+ const data = await apiClient.fetch(endpoint, {
2318
+ method: "POST",
2319
+ body: JSON.stringify(input),
2320
+ headers: {
2321
+ "Content-Type": "application/json"
2322
+ }
2323
+ });
2324
+ const result = incentiveSchema.safeParse(data);
2325
+ if (result.success === false) {
2326
+ console.log("[ZOD ERROR]", result.error);
2327
+ throw new Error(`Failed to create incentive: ${result.error.message}`);
2328
+ }
2329
+ return result.data;
2330
+ }
2331
+ async function updateIncentive(input) {
2332
+ const endpoint = `/admin/incentives/${input.id}`;
2333
+ const data = await apiClient.fetch(endpoint, {
2334
+ method: "PUT",
2335
+ body: JSON.stringify({ incentive: input }),
2336
+ headers: {
2337
+ "Content-Type": "application/json"
2338
+ }
2339
+ });
2340
+ const result = incentiveSchema.safeParse(data);
2341
+ if (result.success === false) {
2342
+ console.log("[ZOD ERROR]", result.error);
2343
+ throw new Error(`Failed to update incentive: ${result.error.message}`);
2344
+ }
2345
+ return result.data;
2346
+ }
2347
+ async function deleteIncentive(id) {
2348
+ const endpoint = `/admin/incentives/${id}`;
2349
+ const data = await apiClient.fetch(endpoint, {
2350
+ method: "DELETE",
2351
+ headers: {
2352
+ "Content-Type": "application/json"
2353
+ }
2354
+ });
2355
+ const result = incentiveSchema.safeParse(data);
2356
+ if (result.success === false) {
2357
+ console.log("[ZOD ERROR]", result.error);
2358
+ throw new Error(`Failed to delete incentive: ${result.error.message}`);
2359
+ }
2360
+ }
2361
+ async function uploadIncentiveIcon({
2362
+ file,
2363
+ filename,
2364
+ overwrite
2365
+ }) {
2366
+ const endpoint = `/admin/products/upload-logo`;
2367
+ const formData = new FormData();
2368
+ formData.append("file", file, filename || file.name);
2369
+ if (overwrite) {
2370
+ formData.append("overwrite", "true");
2371
+ }
2372
+ if (filename) {
2373
+ formData.append("filename", filename);
2374
+ }
2375
+ const data = await apiClient.fetch(endpoint, {
2376
+ method: "POST",
2377
+ body: formData
2378
+ // Don't set Content-Type header - let the browser set it with boundary for multipart/form-data
2379
+ });
2380
+ const result = uploadIncentiveIconResponseSchema.safeParse(data);
2381
+ if (result.success === false) {
2382
+ console.log("[ZOD ERROR]", result.error);
2383
+ throw new Error(`Failed to upload incentive icon: ${result.error.message}`);
2384
+ }
2385
+ return result.data;
2386
+ }
2387
+
2388
+ // src/v2/incentives/queries.ts
2389
+ var incentivesQueries = (0, import_query_key_factory17.createQueryKeys)("incentives", {
2390
+ // Get all incentives (no filters)
2391
+ all: {
2392
+ queryKey: null,
2393
+ queryFn: () => getIncentives()
2394
+ },
2395
+ byId: (id) => ({
2396
+ queryKey: [id],
2397
+ queryFn: () => getIncentive(id)
2398
+ })
2399
+ });
2400
+
2401
+ // src/v2/liquidity-providers/queries.ts
2402
+ var import_query_key_factory18 = require("@lukemorales/query-key-factory");
2403
+
2404
+ // src/v2/liquidity-providers/schema.ts
2405
+ var import_zod18 = require("zod");
2406
+ var sortBySchema2 = import_zod18.z.enum(["username", "telegram", "total_tvl", "active_tvl", "first_deposit", "wallet_count"]).optional();
2407
+ var sortOrderSchema2 = import_zod18.z.enum(["asc", "desc"]).optional();
2408
+ var getLiquidityProvidersInputSchema = import_zod18.z.object({
2409
+ organizationId: import_zod18.z.string().uuid().optional(),
2410
+ productId: import_zod18.z.string().uuid().optional(),
2411
+ opportunityId: import_zod18.z.string().uuid().optional(),
2412
+ sortBy: sortBySchema2,
2413
+ sortOrder: sortOrderSchema2,
2414
+ limit: import_zod18.z.number().int().min(1).max(100).optional().default(20),
2415
+ offset: import_zod18.z.number().int().min(0).optional().default(0)
2416
+ });
2417
+ var liquidityProviderSchema = import_zod18.z.object({
2418
+ username: import_zod18.z.string(),
2419
+ totalTvl: import_zod18.z.number(),
2420
+ activeTvl: import_zod18.z.number(),
2421
+ opportunities: import_zod18.z.array(import_zod18.z.string().uuid()),
2422
+ telegram: import_zod18.z.string(),
2423
+ firstDeposit: import_zod18.z.string().datetime(),
2424
+ // ISO 8601 format (time.Time in Go)
2425
+ walletCount: import_zod18.z.number().int()
2426
+ });
2427
+ var GetLiquidityProvidersResponseSchema = import_zod18.z.object({
2428
+ liquidityProviders: import_zod18.z.array(liquidityProviderSchema),
2429
+ pagination: paginationMetadataSchema
2430
+ });
2431
+
2432
+ // src/v2/liquidity-providers/api.ts
2433
+ async function getLiquidityProviders(input) {
2434
+ const params = new URLSearchParams();
2435
+ if (input.organizationId) params.append("organization_id", input.organizationId);
2436
+ if (input.productId) params.append("product_id", input.productId);
2437
+ if (input.opportunityId) params.append("opportunity_id", input.opportunityId);
2438
+ if (input.sortBy) params.append("sort_by", input.sortBy);
2439
+ if (input.sortOrder) params.append("sort_order", input.sortOrder);
2440
+ if (input.limit !== void 0) params.append("limit", input.limit.toString());
2441
+ if (input.offset !== void 0) params.append("offset", input.offset.toString());
2442
+ const queryString = params.toString();
2443
+ const endpoint = `/admin/deposits/liquidity-providers${queryString ? `?${queryString}` : ""}`;
2444
+ const data = await apiClient.fetch(endpoint, {
2445
+ method: "GET"
2446
+ });
2447
+ const result = GetLiquidityProvidersResponseSchema.safeParse(data);
2448
+ if (result.success === false) {
2449
+ console.log("[ZOD ERROR]", result.error);
2450
+ throw new Error(`Failed to parse liquidity providers: ${result.error.message}`);
2451
+ }
2452
+ return result.data;
2453
+ }
2454
+
2455
+ // src/v2/liquidity-providers/queries.ts
2456
+ var liquidityProvidersQueries = (0, import_query_key_factory18.createQueryKeys)(
2457
+ "liquidityProviders",
2458
+ {
2459
+ // Get liquidity providers with filters
2460
+ list: (input) => ({
2461
+ queryKey: [{ input }],
2462
+ queryFn: () => getLiquidityProviders(input)
2463
+ })
2464
+ }
2465
+ );
2466
+
2101
2467
  // src/v2/earn-opportunities/hooks.ts
2102
2468
  var import_react_query5 = require("@tanstack/react-query");
2103
2469
  function useEarnOpportunities() {
@@ -2421,45 +2787,45 @@ var import_react_query9 = require("@tanstack/react-query");
2421
2787
  var import_react_query8 = require("@tanstack/react-query");
2422
2788
 
2423
2789
  // src/v2/earn-actions/schema.ts
2424
- var import_zod16 = require("zod");
2425
- var transactionSchema = import_zod16.z.object({
2426
- chainId: import_zod16.z.number().int(),
2427
- data: import_zod16.z.string(),
2428
- to: import_zod16.z.string(),
2429
- value: import_zod16.z.string(),
2430
- gasLimit: import_zod16.z.string().optional()
2431
- });
2432
- var routeTokenSchema = import_zod16.z.object({
2433
- address: import_zod16.z.string(),
2434
- symbol: import_zod16.z.string(),
2435
- decimals: import_zod16.z.number().int(),
2436
- logoUrl: import_zod16.z.string()
2437
- });
2438
- var routeStepSchema = import_zod16.z.object({
2439
- action: import_zod16.z.string(),
2790
+ var import_zod19 = require("zod");
2791
+ var transactionSchema = import_zod19.z.object({
2792
+ chainId: import_zod19.z.number().int(),
2793
+ data: import_zod19.z.string(),
2794
+ to: import_zod19.z.string(),
2795
+ value: import_zod19.z.string(),
2796
+ gasLimit: import_zod19.z.string().optional()
2797
+ });
2798
+ var routeTokenSchema = import_zod19.z.object({
2799
+ address: import_zod19.z.string(),
2800
+ symbol: import_zod19.z.string(),
2801
+ decimals: import_zod19.z.number().int(),
2802
+ logoUrl: import_zod19.z.string()
2803
+ });
2804
+ var routeStepSchema = import_zod19.z.object({
2805
+ action: import_zod19.z.string(),
2440
2806
  from: routeTokenSchema,
2441
2807
  to: routeTokenSchema
2442
2808
  });
2443
- var routeMetadataSchema = import_zod16.z.object({
2444
- provider: import_zod16.z.string(),
2445
- providerImg: import_zod16.z.string(),
2446
- amountOut: import_zod16.z.string(),
2447
- gas: import_zod16.z.string(),
2448
- route: import_zod16.z.array(routeStepSchema)
2809
+ var routeMetadataSchema = import_zod19.z.object({
2810
+ provider: import_zod19.z.string(),
2811
+ providerImg: import_zod19.z.string(),
2812
+ amountOut: import_zod19.z.string(),
2813
+ gas: import_zod19.z.string(),
2814
+ route: import_zod19.z.array(routeStepSchema)
2449
2815
  });
2450
- var txResponseItemSchema = import_zod16.z.object({
2451
- type: import_zod16.z.string().optional(),
2452
- description: import_zod16.z.string().optional(),
2816
+ var txResponseItemSchema = import_zod19.z.object({
2817
+ type: import_zod19.z.string().optional(),
2818
+ description: import_zod19.z.string().optional(),
2453
2819
  transaction: transactionSchema,
2454
2820
  metadata: routeMetadataSchema.optional()
2455
2821
  });
2456
- var actionResponseSchema = import_zod16.z.object({
2457
- actionId: import_zod16.z.string().uuid().optional(),
2458
- transactions: import_zod16.z.array(txResponseItemSchema).nullable()
2822
+ var actionResponseSchema = import_zod19.z.object({
2823
+ actionId: import_zod19.z.string().uuid().optional(),
2824
+ transactions: import_zod19.z.array(txResponseItemSchema).nullable()
2459
2825
  });
2460
- var attributeActionResponseSchema = import_zod16.z.object({
2461
- success: import_zod16.z.boolean(),
2462
- message: import_zod16.z.string().optional()
2826
+ var attributeActionResponseSchema = import_zod19.z.object({
2827
+ success: import_zod19.z.boolean(),
2828
+ message: import_zod19.z.string().optional()
2463
2829
  });
2464
2830
 
2465
2831
  // src/v2/earn-actions/api.ts
@@ -2550,65 +2916,6 @@ var useCreateDepositInteraction = useDepositAction;
2550
2916
  var useCreateWithdrawInteraction = useWithdrawAction;
2551
2917
  var useCreateClaimWithdrawInteraction = useClaimWithdrawAction;
2552
2918
 
2553
- // src/v2/balance/queries.ts
2554
- var import_query_key_factory15 = require("@lukemorales/query-key-factory");
2555
-
2556
- // src/v2/balance/schema.ts
2557
- var import_zod17 = require("zod");
2558
- var portfolioTokenSchema = import_zod17.z.object({
2559
- id: import_zod17.z.string(),
2560
- address: import_zod17.z.string(),
2561
- name: import_zod17.z.string(),
2562
- symbol: import_zod17.z.string(),
2563
- decimals: import_zod17.z.number(),
2564
- isNative: import_zod17.z.boolean(),
2565
- logoUrl: import_zod17.z.string().nullable(),
2566
- amount: import_zod17.z.string(),
2567
- // Portfolio-specific field (decimal format)
2568
- price: import_zod17.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
2569
- // Portfolio-specific field
2570
- // Chain with optional fields to match Portfolio API response
2571
- chain: chainSchema.partial().required({ chainId: true })
2572
- });
2573
- var portfolioWalletSchema = import_zod17.z.object({
2574
- id: import_zod17.z.string().optional(),
2575
- address: import_zod17.z.string(),
2576
- blockchain: import_zod17.z.string().optional(),
2577
- tokens: import_zod17.z.array(portfolioTokenSchema)
2578
- });
2579
- var portfolioHoldingsSchema = import_zod17.z.object({
2580
- wallets: import_zod17.z.array(portfolioWalletSchema)
2581
- });
2582
- var portfolioBalanceResponseSchema = import_zod17.z.object({
2583
- portfolio: import_zod17.z.object({
2584
- holdings: portfolioHoldingsSchema
2585
- })
2586
- });
2587
-
2588
- // src/v2/balance/api.ts
2589
- async function getPortfolioBalance(address, options) {
2590
- const data = await apiClient.fetch(`/wallet/${address}/balance`, {
2591
- method: "GET",
2592
- domain: "api",
2593
- debug: options?.debug
2594
- });
2595
- const result = portfolioBalanceResponseSchema.safeParse(data);
2596
- if (result.success === false) {
2597
- console.log("[ZOD ERROR]", result.error);
2598
- throw new Error(`Failed to parse portfolio balance: ${result.error.message}`);
2599
- }
2600
- return result.data;
2601
- }
2602
-
2603
- // src/v2/balance/queries.ts
2604
- var balanceQueries = (0, import_query_key_factory15.createQueryKeys)("balance", {
2605
- // Portfolio balance by address
2606
- portfolio: (address) => ({
2607
- queryKey: [address],
2608
- queryFn: () => getPortfolioBalance(address)
2609
- })
2610
- });
2611
-
2612
2919
  // src/v2/earn-actions/useEarnDeposit.ts
2613
2920
  var DEFAULT_SLIPPAGE_BPS = 50;
2614
2921
  function useEarnDeposit(options) {
@@ -3586,17 +3893,17 @@ function useUserNfts({ userAddress, chain, tokenAddress }) {
3586
3893
  var import_react_query19 = require("@tanstack/react-query");
3587
3894
 
3588
3895
  // src/v2/covers/schema.ts
3589
- var import_zod18 = require("zod");
3590
- var coverRequestDataSchema = import_zod18.z.object({
3591
- protocolName: import_zod18.z.string(),
3592
- coverageAmount: import_zod18.z.string(),
3593
- periodDays: import_zod18.z.number(),
3594
- desiredApySacrifice: import_zod18.z.string(),
3595
- calculatedEstimatedPremium: import_zod18.z.string(),
3596
- tokenSymbol: import_zod18.z.string()
3597
- });
3598
- var submitCoverRequestResponseSchema = import_zod18.z.object({
3599
- success: import_zod18.z.boolean()
3896
+ var import_zod20 = require("zod");
3897
+ var coverRequestDataSchema = import_zod20.z.object({
3898
+ protocolName: import_zod20.z.string(),
3899
+ coverageAmount: import_zod20.z.string(),
3900
+ periodDays: import_zod20.z.number(),
3901
+ desiredApySacrifice: import_zod20.z.string(),
3902
+ calculatedEstimatedPremium: import_zod20.z.string(),
3903
+ tokenSymbol: import_zod20.z.string()
3904
+ });
3905
+ var submitCoverRequestResponseSchema = import_zod20.z.object({
3906
+ success: import_zod20.z.boolean()
3600
3907
  });
3601
3908
 
3602
3909
  // src/v2/covers/api.ts
@@ -3745,6 +4052,96 @@ var useTurtleMembershipFlow = ({
3745
4052
  };
3746
4053
  };
3747
4054
 
4055
+ // src/v2/incentives/hooks.ts
4056
+ var import_react_query20 = require("@tanstack/react-query");
4057
+ function useIncentives({ enabled = true }) {
4058
+ return (0, import_react_query20.useQuery)({
4059
+ ...incentivesQueries.all,
4060
+ ...queryDefaults,
4061
+ enabled
4062
+ });
4063
+ }
4064
+ function useIncentive({ id, enabled = true }) {
4065
+ return (0, import_react_query20.useQuery)({
4066
+ ...incentivesQueries.byId(id),
4067
+ ...queryDefaults,
4068
+ enabled
4069
+ });
4070
+ }
4071
+ function useCreateIncentive(options) {
4072
+ return (0, import_react_query20.useMutation)({
4073
+ mutationFn: createIncentive,
4074
+ ...options
4075
+ });
4076
+ }
4077
+ function useUpdateIncentive(options) {
4078
+ return (0, import_react_query20.useMutation)({
4079
+ mutationFn: updateIncentive,
4080
+ ...options
4081
+ });
4082
+ }
4083
+ function useDeleteIncentive(options) {
4084
+ return (0, import_react_query20.useMutation)({
4085
+ mutationFn: deleteIncentive,
4086
+ ...options
4087
+ });
4088
+ }
4089
+ function useUploadIncentiveIcon(options) {
4090
+ return (0, import_react_query20.useMutation)({
4091
+ mutationFn: uploadIncentiveIcon,
4092
+ ...options
4093
+ });
4094
+ }
4095
+
4096
+ // src/v2/distributors/hooks.ts
4097
+ var import_react_query21 = require("@tanstack/react-query");
4098
+
4099
+ // src/v2/distributors/schema.ts
4100
+ var import_zod21 = require("zod");
4101
+ var updateDistributorEarnDetailsInputSchema = import_zod21.z.object({
4102
+ organizationId: import_zod21.z.string().uuid(),
4103
+ distributorId: import_zod21.z.string().uuid(),
4104
+ earnDetails: import_zod21.z.any()
4105
+ // JSONB value - using any for now as requested
4106
+ });
4107
+ var updateDistributorEarnDetailsResponseSchema = import_zod21.z.object({
4108
+ success: import_zod21.z.boolean()
4109
+ });
4110
+
4111
+ // src/v2/distributors/api.ts
4112
+ async function updateDistributorEarnDetails(input) {
4113
+ const { organizationId, distributorId, earnDetails } = input;
4114
+ const endpoint = `/organization/${organizationId}/distributors/${distributorId}/earn-details`;
4115
+ const data = await apiClient.fetch(endpoint, {
4116
+ method: "PUT",
4117
+ body: JSON.stringify({ earnDetails })
4118
+ });
4119
+ const result = updateDistributorEarnDetailsResponseSchema.safeParse(data);
4120
+ if (result.success === false) {
4121
+ console.log("[ZOD ERROR]", result.error);
4122
+ throw new Error(`Failed to update distributor earn details: ${result.error.message}`);
4123
+ }
4124
+ return result.data;
4125
+ }
4126
+
4127
+ // src/v2/distributors/hooks.ts
4128
+ function useUpdateDistributorEarnDetails(options) {
4129
+ return (0, import_react_query21.useMutation)({
4130
+ mutationFn: updateDistributorEarnDetails,
4131
+ ...options
4132
+ });
4133
+ }
4134
+
4135
+ // src/v2/liquidity-providers/hooks.ts
4136
+ var import_react_query22 = require("@tanstack/react-query");
4137
+ function useLiquidityProviders({ input, enabled = true }) {
4138
+ return (0, import_react_query22.useQuery)({
4139
+ ...liquidityProvidersQueries.list(input),
4140
+ ...queryDefaults,
4141
+ enabled
4142
+ });
4143
+ }
4144
+
3748
4145
  // src/v2/lib/turtle-provider.tsx
3749
4146
  var import_jsx_runtime = require("react/jsx-runtime");
3750
4147
  function TurtleHooksProvider({
@@ -3759,7 +4156,7 @@ function TurtleHooksProvider({
3759
4156
  }
3760
4157
 
3761
4158
  // src/v2/index.ts
3762
- var queries = (0, import_query_key_factory16.mergeQueryKeys)(
4159
+ var queries = (0, import_query_key_factory19.mergeQueryKeys)(
3763
4160
  opportunitiesQueries,
3764
4161
  earnOpportunitiesQueries,
3765
4162
  earnRouteQueries,
@@ -3773,12 +4170,17 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3773
4170
  supportedChainsQueries,
3774
4171
  supportedTokensQueries,
3775
4172
  usersQueries,
3776
- nftsQueries
4173
+ nftsQueries,
4174
+ balanceQueries,
4175
+ depositsQueries,
4176
+ incentivesQueries,
4177
+ liquidityProvidersQueries
3777
4178
  );
3778
4179
  // Annotate the CommonJS export names for ESM import in node:
3779
4180
  0 && (module.exports = {
3780
4181
  ApiError,
3781
4182
  BalanceSourcePriority,
4183
+ GetLiquidityProvidersResponseSchema,
3782
4184
  LeaveOrganizationInputSchema,
3783
4185
  LeaveOrganizationOutputSchema,
3784
4186
  TurtleHooksProvider,
@@ -3806,6 +4208,8 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3806
4208
  createClaimWithdrawInteraction,
3807
4209
  createDepositAction,
3808
4210
  createDepositInteraction,
4211
+ createIncentive,
4212
+ createIncentiveInputSchema,
3809
4213
  createMembership,
3810
4214
  createMembershipAgreement,
3811
4215
  createMembershipRequestSchema,
@@ -3818,6 +4222,7 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3818
4222
  createStreamPointOutputSchema,
3819
4223
  createWithdrawAction,
3820
4224
  createWithdrawInteraction,
4225
+ deleteIncentive,
3821
4226
  deleteProduct,
3822
4227
  depositSchema,
3823
4228
  depositSubstep,
@@ -3843,6 +4248,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3843
4248
  getDeposits,
3844
4249
  getEarnOpportunities,
3845
4250
  getEarnRoute,
4251
+ getIncentive,
4252
+ getIncentives,
4253
+ getLiquidityProviders,
4254
+ getLiquidityProvidersInputSchema,
3846
4255
  getOpportunities,
3847
4256
  getOpportunitiesFilterOptions,
3848
4257
  getOpportunitiesFilterOptionsSchema,
@@ -3880,8 +4289,13 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3880
4289
  getWalletBalances,
3881
4290
  getWidgetOpportunities,
3882
4291
  holdingsDataSchema,
4292
+ incentiveSchema,
4293
+ incentivesQueries,
4294
+ incentivesResponseSchema,
3883
4295
  leaveOrganization,
3884
4296
  lendingConfigSchema,
4297
+ liquidityProviderSchema,
4298
+ liquidityProvidersQueries,
3885
4299
  mergeBalancesByPriority,
3886
4300
  nftsQueries,
3887
4301
  opportunitiesQueries,
@@ -3932,9 +4346,15 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3932
4346
  tokenSchema,
3933
4347
  transactionSchema,
3934
4348
  txResponseItemSchema,
4349
+ updateDistributorEarnDetails,
4350
+ updateIncentive,
4351
+ updateIncentiveInputSchema,
3935
4352
  updateProduct,
3936
4353
  updateProductInputSchema,
3937
4354
  updateProductResponseSchema,
4355
+ uploadIncentiveIcon,
4356
+ uploadIncentiveIconRequestSchema,
4357
+ uploadIncentiveIconResponseSchema,
3938
4358
  uploadProductLogo,
3939
4359
  uploadProductLogoRequestSchema,
3940
4360
  uploadProductLogoResponseSchema,
@@ -3948,10 +4368,12 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3948
4368
  useClaimWithdrawAction,
3949
4369
  useCreateClaimWithdrawInteraction,
3950
4370
  useCreateDepositInteraction,
4371
+ useCreateIncentive,
3951
4372
  useCreateMembership,
3952
4373
  useCreateMembershipAgreement,
3953
4374
  useCreateProduct,
3954
4375
  useCreateWithdrawInteraction,
4376
+ useDeleteIncentive,
3955
4377
  useDeleteProduct,
3956
4378
  useDepositAction,
3957
4379
  useDepositFlow,
@@ -3964,7 +4386,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3964
4386
  useEnsoBalances,
3965
4387
  useGeocheck,
3966
4388
  useGetOnChainBalance,
4389
+ useIncentive,
4390
+ useIncentives,
3967
4391
  useLeaveOrganization,
4392
+ useLiquidityProviders,
3968
4393
  useMultiChainBalances,
3969
4394
  useOpportunities,
3970
4395
  useOpportunitiesFilterOptions,
@@ -3984,7 +4409,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3984
4409
  useSwapRoute,
3985
4410
  useTokenBalance,
3986
4411
  useTurtleMembershipFlow,
4412
+ useUpdateDistributorEarnDetails,
4413
+ useUpdateIncentive,
3987
4414
  useUpdateProduct,
4415
+ useUploadIncentiveIcon,
3988
4416
  useUploadProductLogo,
3989
4417
  useUserById,
3990
4418
  useUserNfts,