@turtleclub/hooks 0.5.0-beta.52 → 0.5.0-beta.54

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.
Files changed (36) hide show
  1. package/dist/index.cjs +1718 -1241
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +1532 -1092
  4. package/dist/index.js.map +1 -1
  5. package/package.json +2 -2
  6. package/src/v2/balance/hooks/useEnsoBalances.ts +0 -2
  7. package/src/v2/balance/hooks/useGetOnChainBalance.ts +4 -11
  8. package/src/v2/balance/hooks/usePortfolioBalance.ts +2 -2
  9. package/src/v2/balance/schema.ts +1 -1
  10. package/src/v2/balance/types.ts +2 -1
  11. package/src/v2/balance/utils.ts +1 -1
  12. package/src/v2/deposits/index.ts +1 -1
  13. package/src/v2/earn-actions/useEarnDeposit.ts +2 -1
  14. package/src/v2/earn-deposits/hooks/useActionsDefaultParams.ts +6 -5
  15. package/src/v2/earn-deposits/hooks/useDepositFlow.ts +2 -1
  16. package/src/v2/earn-deposits/hooks/useDepositValidation.ts +10 -10
  17. package/src/v2/earn-opportunities/schema.ts +1 -1
  18. package/src/v2/incentives/index.ts +4 -28
  19. package/src/v2/index.ts +13 -1
  20. package/src/v2/opportunities/api.ts +2 -2
  21. package/src/v2/opportunities/hooks.ts +9 -5
  22. package/src/v2/opportunities/index.ts +4 -42
  23. package/src/v2/opportunities/schema.ts +53 -1
  24. package/src/v2/organizations/schema.ts +15 -0
  25. package/src/v2/products/api.ts +11 -11
  26. package/src/v2/products/index.ts +4 -19
  27. package/src/v2/products/schema.ts +34 -35
  28. package/src/v2/schemas/shared.ts +1 -128
  29. package/src/v2/streams/schemas.ts +1 -1
  30. package/src/v2/supported-chains/hooks.ts +2 -2
  31. package/src/v2/supported-chains/schema.ts +13 -1
  32. package/src/v2/supported-tokens/api.ts +1 -0
  33. package/src/v2/supported-tokens/hooks.ts +8 -9
  34. package/src/v2/supported-tokens/schema.ts +18 -1
  35. package/src/v2/users/schemas.ts +2 -1
  36. package/src/v2/widget/schema.ts +1 -1
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,15 +50,22 @@ __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,
55
58
  createMembershipResponseSchema: () => createMembershipResponseSchema,
59
+ createProduct: () => createProduct,
60
+ createProductInputSchema: () => createProductInputSchema,
61
+ createProductResponseSchema: () => createProductResponseSchema,
56
62
  createStreamPoint: () => createStreamPoint,
57
63
  createStreamPointBodySchema: () => createStreamPointBodySchema,
58
64
  createStreamPointOutputSchema: () => createStreamPointOutputSchema,
59
65
  createWithdrawAction: () => createWithdrawAction,
60
66
  createWithdrawInteraction: () => createWithdrawInteraction,
67
+ deleteIncentive: () => deleteIncentive,
68
+ deleteProduct: () => deleteProduct,
61
69
  depositSchema: () => depositSchema,
62
70
  depositSubstep: () => depositSubstep,
63
71
  depositsResponseSchema: () => depositsResponseSchema,
@@ -82,6 +90,10 @@ __export(index_exports, {
82
90
  getDeposits: () => getDeposits,
83
91
  getEarnOpportunities: () => getEarnOpportunities,
84
92
  getEarnRoute: () => getEarnRoute,
93
+ getIncentive: () => getIncentive,
94
+ getIncentives: () => getIncentives,
95
+ getLiquidityProviders: () => getLiquidityProviders,
96
+ getLiquidityProvidersInputSchema: () => getLiquidityProvidersInputSchema,
85
97
  getOpportunities: () => getOpportunities,
86
98
  getOpportunitiesFilterOptions: () => getOpportunitiesFilterOptions,
87
99
  getOpportunitiesFilterOptionsSchema: () => getOpportunitiesFilterOptionsSchema,
@@ -90,6 +102,7 @@ __export(index_exports, {
90
102
  getOpportunitiesPaginatedSchema: () => getOpportunitiesPaginatedSchema,
91
103
  getOpportunityById: () => getOpportunityById,
92
104
  getPortfolioBalance: () => getPortfolioBalance,
105
+ getProduct: () => getProduct,
93
106
  getProducts: () => getProducts,
94
107
  getSourcePriority: () => getSourcePriority,
95
108
  getStreamPoints: () => getStreamPoints,
@@ -119,8 +132,12 @@ __export(index_exports, {
119
132
  getWidgetOpportunities: () => getWidgetOpportunities,
120
133
  holdingsDataSchema: () => holdingsDataSchema,
121
134
  incentiveSchema: () => incentiveSchema,
135
+ incentivesQueries: () => incentivesQueries,
136
+ incentivesResponseSchema: () => incentivesResponseSchema,
122
137
  leaveOrganization: () => leaveOrganization,
123
138
  lendingConfigSchema: () => lendingConfigSchema,
139
+ liquidityProviderSchema: () => liquidityProviderSchema,
140
+ liquidityProvidersQueries: () => liquidityProvidersQueries,
124
141
  mergeBalancesByPriority: () => mergeBalancesByPriority,
125
142
  nftsQueries: () => nftsQueries,
126
143
  opportunitiesQueries: () => opportunitiesQueries,
@@ -137,8 +154,11 @@ __export(index_exports, {
137
154
  portfolioTokenSchema: () => portfolioTokenSchema,
138
155
  portfolioWalletSchema: () => portfolioWalletSchema,
139
156
  processRouteDetails: () => processRouteDetails,
157
+ productFiltersSchema: () => productFiltersSchema,
158
+ productResponseSchema: () => productResponseSchema,
140
159
  productSchema: () => productSchema,
141
160
  productsQueries: () => productsQueries,
161
+ productsResponseSchema: () => productsResponseSchema,
142
162
  queries: () => queries,
143
163
  requestStreamSignature: () => requestStreamSignature,
144
164
  routeMetadataSchema: () => routeMetadataSchema,
@@ -168,6 +188,18 @@ __export(index_exports, {
168
188
  tokenSchema: () => tokenSchema,
169
189
  transactionSchema: () => transactionSchema,
170
190
  txResponseItemSchema: () => txResponseItemSchema,
191
+ updateDistributorEarnDetails: () => updateDistributorEarnDetails,
192
+ updateIncentive: () => updateIncentive,
193
+ updateIncentiveInputSchema: () => updateIncentiveInputSchema,
194
+ updateProduct: () => updateProduct,
195
+ updateProductInputSchema: () => updateProductInputSchema,
196
+ updateProductResponseSchema: () => updateProductResponseSchema,
197
+ uploadIncentiveIcon: () => uploadIncentiveIcon,
198
+ uploadIncentiveIconRequestSchema: () => uploadIncentiveIconRequestSchema,
199
+ uploadIncentiveIconResponseSchema: () => uploadIncentiveIconResponseSchema,
200
+ uploadProductLogo: () => uploadProductLogo,
201
+ uploadProductLogoRequestSchema: () => uploadProductLogoRequestSchema,
202
+ uploadProductLogoResponseSchema: () => uploadProductLogoResponseSchema,
171
203
  useActionsDefaultParams: () => useActionsDefaultParams,
172
204
  useAttributeAction: () => useAttributeAction,
173
205
  useBalance: () => useBalance2,
@@ -178,10 +210,12 @@ __export(index_exports, {
178
210
  useClaimWithdrawAction: () => useClaimWithdrawAction,
179
211
  useCreateClaimWithdrawInteraction: () => useCreateClaimWithdrawInteraction,
180
212
  useCreateDepositInteraction: () => useCreateDepositInteraction,
213
+ useCreateIncentive: () => useCreateIncentive,
181
214
  useCreateMembership: () => useCreateMembership,
182
215
  useCreateMembershipAgreement: () => useCreateMembershipAgreement,
183
216
  useCreateProduct: () => useCreateProduct,
184
217
  useCreateWithdrawInteraction: () => useCreateWithdrawInteraction,
218
+ useDeleteIncentive: () => useDeleteIncentive,
185
219
  useDeleteProduct: () => useDeleteProduct,
186
220
  useDepositAction: () => useDepositAction,
187
221
  useDepositFlow: () => useDepositFlow,
@@ -194,7 +228,10 @@ __export(index_exports, {
194
228
  useEnsoBalances: () => useEnsoBalances,
195
229
  useGeocheck: () => useGeocheck,
196
230
  useGetOnChainBalance: () => useGetOnChainBalance,
231
+ useIncentive: () => useIncentive,
232
+ useIncentives: () => useIncentives,
197
233
  useLeaveOrganization: () => useLeaveOrganization,
234
+ useLiquidityProviders: () => useLiquidityProviders,
198
235
  useMultiChainBalances: () => useMultiChainBalances,
199
236
  useOpportunities: () => useOpportunities,
200
237
  useOpportunitiesFilterOptions: () => useOpportunitiesFilterOptions,
@@ -214,7 +251,10 @@ __export(index_exports, {
214
251
  useSwapRoute: () => useSwapRoute,
215
252
  useTokenBalance: () => useTokenBalance,
216
253
  useTurtleMembershipFlow: () => useTurtleMembershipFlow,
254
+ useUpdateDistributorEarnDetails: () => useUpdateDistributorEarnDetails,
255
+ useUpdateIncentive: () => useUpdateIncentive,
217
256
  useUpdateProduct: () => useUpdateProduct,
257
+ useUploadIncentiveIcon: () => useUploadIncentiveIcon,
218
258
  useUploadProductLogo: () => useUploadProductLogo,
219
259
  useUserById: () => useUserById,
220
260
  useUserNfts: () => useUserNfts,
@@ -235,10 +275,10 @@ __export(index_exports, {
235
275
  module.exports = __toCommonJS(index_exports);
236
276
 
237
277
  // src/v2/index.ts
238
- var import_query_key_factory16 = require("@lukemorales/query-key-factory");
278
+ var import_query_key_factory19 = require("@lukemorales/query-key-factory");
239
279
 
240
280
  // src/v2/opportunities/queries.ts
241
- var import_query_key_factory = require("@lukemorales/query-key-factory");
281
+ var import_query_key_factory3 = require("@lukemorales/query-key-factory");
242
282
 
243
283
  // src/v2/lib/api-client.ts
244
284
  var API_BASE_URL = "https://api.turtle.xyz";
@@ -329,32 +369,20 @@ var ApiClient = class _ApiClient {
329
369
  };
330
370
  var apiClient = ApiClient.getInstance();
331
371
 
372
+ // src/v2/opportunities/schema.ts
373
+ var import_zod7 = require("zod");
374
+
375
+ // src/v2/supported-tokens/schema.ts
376
+ var import_zod4 = require("zod");
377
+
378
+ // src/v2/supported-chains/schema.ts
379
+ var import_zod3 = require("zod");
380
+
332
381
  // src/v2/schemas/shared.ts
382
+ var import_zod2 = require("zod");
383
+
384
+ // src/v2/organizations/schema.ts
333
385
  var import_zod = require("zod");
334
- var chainSchema = import_zod.z.object({
335
- id: import_zod.z.string().optional(),
336
- name: import_zod.z.string(),
337
- slug: import_zod.z.string().optional(),
338
- chainId: import_zod.z.string(),
339
- logoUrl: import_zod.z.string().optional(),
340
- ecosystem: import_zod.z.string().optional(),
341
- status: import_zod.z.string().optional(),
342
- explorerUrl: import_zod.z.string().optional()
343
- });
344
- var tokenSchema = import_zod.z.object({
345
- id: import_zod.z.string().optional(),
346
- name: import_zod.z.string(),
347
- symbol: import_zod.z.string(),
348
- address: import_zod.z.string(),
349
- chain: chainSchema,
350
- decimals: import_zod.z.number(),
351
- logoUrl: import_zod.z.string().optional(),
352
- isNative: import_zod.z.boolean(),
353
- priceUsd: import_zod.z.number().optional(),
354
- price: import_zod.z.string().optional(),
355
- amount: import_zod.z.string().optional(),
356
- rawAmount: import_zod.z.string().optional()
357
- });
358
386
  var organizationSchema = import_zod.z.object({
359
387
  id: import_zod.z.string(),
360
388
  name: import_zod.z.string(),
@@ -367,360 +395,697 @@ var organizationSchema = import_zod.z.object({
367
395
  status: import_zod.z.string().optional().nullable(),
368
396
  featured: import_zod.z.boolean().optional().nullable()
369
397
  });
370
- var productSchema = import_zod.z.object({
371
- id: import_zod.z.string(),
372
- name: import_zod.z.string(),
373
- title: import_zod.z.string().optional().nullable(),
374
- subtitle: import_zod.z.string().optional().nullable(),
375
- description: import_zod.z.string().optional().nullable(),
376
- logoUrl: import_zod.z.string().optional().nullable(),
377
- productUrl: import_zod.z.string().optional().nullable(),
378
- startedAt: import_zod.z.string().optional().nullable(),
379
- status: import_zod.z.string().optional().nullable(),
380
- productType: import_zod.z.string().optional().nullable(),
381
- organization: organizationSchema,
382
- createdAt: import_zod.z.string().optional().nullable()
383
- });
384
- var vaultConfigSchema = import_zod.z.object({
385
- id: import_zod.z.string().uuid().optional(),
386
- infraProvider: organizationSchema.optional().nullable(),
387
- curator: organizationSchema.optional().nullable(),
388
- withdrawalCooldownSecs: import_zod.z.number().int().min(0).optional().nullable(),
389
- withdrawalContractAddress: import_zod.z.string().optional().nullable(),
390
- withdrawalDetails: import_zod.z.any().optional().nullable(),
391
- depositUrl: import_zod.z.string().optional().nullable(),
392
- providerMetadata: import_zod.z.any().optional().nullable(),
393
- performanceFee: import_zod.z.number().min(0).max(100).optional().nullable(),
394
- managementFee: import_zod.z.number().min(0).max(100).optional().nullable(),
395
- depositFee: import_zod.z.number().min(0).max(100).optional().nullable(),
396
- withdrawalFee: import_zod.z.number().min(0).max(100).optional().nullable(),
397
- minDepositAmount: import_zod.z.number().optional().nullable(),
398
- minDepositValueUSD: import_zod.z.number().optional().nullable(),
399
- depositCapAmount: import_zod.z.number().optional().nullable(),
400
- depositCapValueUSD: import_zod.z.number().optional().nullable(),
401
- depositFillSecs: import_zod.z.number().int().optional().nullable(),
402
- lockupPeriodSecs: import_zod.z.number().int().optional().nullable(),
403
- asyncDeposit: import_zod.z.boolean().optional().nullable(),
404
- asyncWithdraw: import_zod.z.boolean().optional().nullable(),
405
- secondaryOnly: import_zod.z.boolean().optional().nullable(),
406
- createdAt: import_zod.z.string().datetime().optional(),
407
- updatedAt: import_zod.z.string().datetime().optional()
408
- });
409
- var lendingConfigSchema = import_zod.z.object({
410
- id: import_zod.z.string().uuid().optional(),
411
- protocol: import_zod.z.object({ id: import_zod.z.string() }),
412
- marketAddress: import_zod.z.string().min(1, "Market address is required"),
413
- depositUrl: import_zod.z.string().optional().nullable(),
414
- providerMetadata: import_zod.z.any().optional().nullable(),
415
- createdAt: import_zod.z.string().datetime().optional(),
416
- updatedAt: import_zod.z.string().datetime().optional()
417
- });
418
- var incentiveSchema = import_zod.z.object({
419
- id: import_zod.z.string().uuid(),
420
- name: import_zod.z.string(),
421
- description: import_zod.z.string(),
422
- iconUrl: import_zod.z.string(),
423
- rewardType: import_zod.z.string(),
424
- rewardTypeName: import_zod.z.string(),
425
- boostPct: import_zod.z.number().nullable(),
426
- totalCapacity: import_zod.z.number().nullable(),
427
- maxCapacityPerLP: import_zod.z.number().nullable(),
428
- lockup: import_zod.z.string().nullable(),
429
- minCommitment: import_zod.z.number().nullable(),
430
- baseYieldTarget: import_zod.z.number().nullable(),
431
- baseYieldSource: import_zod.z.string().nullable(),
432
- incentiveYieldTarget: import_zod.z.number().nullable(),
433
- fdvEstimate: import_zod.z.number().nullable(),
434
- isIncentiveYieldGuaranteed: import_zod.z.boolean().nullable(),
435
- tokenSupplyAllocation: import_zod.z.number().nullable(),
436
- yield: import_zod.z.number().nullable()
437
- });
438
- var opportunityTypeEnum = import_zod.z.enum(["vault", "lending", "staking", "stablecoin", "draft", ""]);
439
- var opportunityStatusEnum = import_zod.z.enum(["active", "paused", "deprecated", "draft", "ended"]);
440
- var opportunitySchema = import_zod.z.object({
441
- id: import_zod.z.string().uuid().optional(),
442
- name: import_zod.z.string(),
443
- shortName: import_zod.z.string(),
444
- type: opportunityTypeEnum,
445
- description: import_zod.z.string().optional().default(""),
446
- curator: import_zod.z.string().optional().default(""),
447
- tvl: import_zod.z.number().min(0, "TVL must be positive"),
448
- featured: import_zod.z.boolean().optional().default(false),
449
- featuredOrder: import_zod.z.number().int().optional().nullable(),
450
- originalConfig: import_zod.z.any().optional().nullable(),
451
- exposures: import_zod.z.array(import_zod.z.string()).optional().default([]),
452
- status: opportunityStatusEnum.optional().default("active"),
453
- statusReason: import_zod.z.string().optional().default(""),
454
- depositDisabled: import_zod.z.boolean().optional().default(false),
455
- depositDisabledReason: import_zod.z.string().optional().default(""),
456
- withdrawalDisabled: import_zod.z.boolean().optional().default(false),
457
- withdrawalDisabledReason: import_zod.z.string().optional().default(""),
458
- docsUrl: import_zod.z.string().optional().nullable(),
459
- auditsUrl: import_zod.z.string().optional().nullable(),
460
- turtleTvl: import_zod.z.number(),
461
- turtleUsers: import_zod.z.number(),
462
- earnEnabled: import_zod.z.boolean(),
463
- createdAt: import_zod.z.string().datetime().optional(),
464
- updatedAt: import_zod.z.string().datetime().optional(),
465
- // Relationships
466
- depositTokens: import_zod.z.array(tokenSchema),
467
- baseTokens: tokenSchema,
468
- receiptToken: tokenSchema,
469
- incentives: import_zod.z.array(incentiveSchema),
470
- products: import_zod.z.array(productSchema),
471
- vaultConfig: vaultConfigSchema.optional().nullable(),
472
- lendingConfig: lendingConfigSchema.optional().nullable(),
473
- // Will be deprecated
474
- exposure: import_zod.z.array(import_zod.z.string()),
475
- explorerUrl: import_zod.z.string().nullable()
476
- });
477
- var paginationMetadataSchema = import_zod.z.object({
478
- page: import_zod.z.number().int().min(1).catch(1),
479
- limit: import_zod.z.number().int().min(1).max(100),
480
- total: import_zod.z.number().int().min(0),
481
- total_pages: import_zod.z.number().int().min(1),
482
- has_next: import_zod.z.boolean(),
483
- has_previous: import_zod.z.boolean()
484
- });
485
-
486
- // src/v2/opportunities/schema.ts
487
- var import_zod2 = require("zod");
488
- var opportunityFiltersSchema = import_zod2.z.object({
489
- tokenId: import_zod2.z.string().uuid().optional(),
490
- chain: import_zod2.z.string().optional(),
491
- productId: import_zod2.z.string().uuid().optional()
492
- });
493
- var opportunitiesResponseSchema = import_zod2.z.object({
494
- opportunities: import_zod2.z.array(opportunitySchema),
495
- total: import_zod2.z.number().optional()
496
- });
497
- var getOpportunitiesPaginatedInputSchema = import_zod2.z.object({
498
- page: import_zod2.z.number().min(1).default(1),
499
- limit: import_zod2.z.number().min(1).max(100).default(10),
500
- // Sorting
501
- sortBy: import_zod2.z.enum([
502
- "turtleTvl",
503
- "tvl",
504
- "name",
505
- "turtleUsers",
506
- "type",
507
- "organization",
508
- "curator",
509
- "provider",
510
- "apr"
511
- ]).optional(),
512
- sortOrder: import_zod2.z.enum(["asc", "desc"]).optional(),
513
- // Filter by receipt token chain (comma-separated)
514
- receiptTokenChainId: import_zod2.z.string().optional(),
515
- // Comma-separated UUIDs
516
- receiptTokenChainSlug: import_zod2.z.string().optional(),
517
- // Comma-separated slugs
518
- // Filter by deposit token
519
- depositTokenGroup: import_zod2.z.string().optional(),
520
- depositTokenSymbols: import_zod2.z.string().optional(),
521
- // Comma-separated symbols
522
- depositTokenChainId: import_zod2.z.string().optional(),
523
- // Filter by tags (comma-separated)
524
- tags: import_zod2.z.string().optional(),
525
- // Filter by IDs (comma-separated UUIDs)
526
- productId: import_zod2.z.string().optional(),
527
- // Comma-separated UUIDs
528
- curatorId: import_zod2.z.string().optional(),
529
- // Comma-separated UUIDs
530
- providerId: import_zod2.z.string().optional(),
531
- // Comma-separated UUIDs
532
- partnerId: import_zod2.z.string().optional(),
533
- // Comma-separated UUIDs
534
- lendingProtocolId: import_zod2.z.string().optional(),
535
- // Comma-separated UUIDs
536
- // Status filters
537
- withdrawalDisabled: import_zod2.z.boolean().optional(),
538
- depositDisabled: import_zod2.z.boolean().optional(),
539
- status: import_zod2.z.string().optional(),
540
- earnEnabled: import_zod2.z.boolean().optional(),
541
- featured: import_zod2.z.boolean().optional(),
542
- // TVL filters
543
- tvlGreaterThan: import_zod2.z.number().optional(),
544
- turtleTvlGreaterThan: import_zod2.z.number().optional(),
545
- tvlMin: import_zod2.z.number().optional(),
546
- tvlMax: import_zod2.z.number().optional(),
547
- // APR filters
548
- minApr: import_zod2.z.number().optional(),
549
- maxApr: import_zod2.z.number().optional(),
550
- // Chain IDs (comma-separated)
551
- chainIds: import_zod2.z.string().optional(),
552
- // Search
553
- search: import_zod2.z.string().optional()
554
- });
555
- var paginationMetadataSchema2 = import_zod2.z.object({
556
- page: import_zod2.z.number(),
557
- limit: import_zod2.z.number(),
558
- total: import_zod2.z.number(),
559
- totalPages: import_zod2.z.number()
560
- });
561
- var getOpportunitiesPaginatedSchema = import_zod2.z.object({
562
- opportunities: import_zod2.z.array(opportunitySchema),
563
- pagination: paginationMetadataSchema2
398
+ var LeaveOrganizationInputSchema = import_zod.z.object({
399
+ organizationId: import_zod.z.string().uuid()
564
400
  });
565
- var filterChainSchema = import_zod2.z.object({
566
- id: import_zod2.z.string().uuid(),
567
- name: import_zod2.z.string(),
568
- slug: import_zod2.z.string(),
569
- chainId: import_zod2.z.string(),
570
- logoUrl: import_zod2.z.string(),
571
- ecosystem: import_zod2.z.string(),
572
- status: import_zod2.z.string(),
573
- explorerUrl: import_zod2.z.string()
574
- });
575
- var filterOrganizationSchema = import_zod2.z.object({
576
- id: import_zod2.z.string().uuid(),
577
- name: import_zod2.z.string(),
578
- description: import_zod2.z.string(),
579
- landingUrl: import_zod2.z.string(),
580
- iconUrl: import_zod2.z.string(),
581
- organizationType: import_zod2.z.string(),
582
- turtleRefCode: import_zod2.z.string(),
583
- twitterHandle: import_zod2.z.string(),
584
- status: import_zod2.z.string(),
585
- featured: import_zod2.z.boolean()
586
- });
587
- var filterTagSchema = import_zod2.z.object({
588
- id: import_zod2.z.string().uuid(),
589
- code: import_zod2.z.string(),
590
- name: import_zod2.z.string(),
591
- description: import_zod2.z.string().optional().nullable(),
592
- color: import_zod2.z.string().optional().nullable(),
593
- type: import_zod2.z.string().optional().nullable()
594
- });
595
- var depositTokenSymbolSchema = import_zod2.z.object({
596
- symbol: import_zod2.z.string(),
597
- logoUrl: import_zod2.z.string()
598
- });
599
- var getOpportunitiesFilterOptionsSchema = import_zod2.z.object({
600
- chains: import_zod2.z.array(filterChainSchema),
601
- providers: import_zod2.z.array(filterOrganizationSchema),
602
- curators: import_zod2.z.array(filterOrganizationSchema).optional().nullable(),
603
- partners: import_zod2.z.array(filterOrganizationSchema).optional().nullable(),
604
- tags: import_zod2.z.array(filterTagSchema).optional().nullable(),
605
- lendingProtocols: import_zod2.z.array(filterOrganizationSchema),
606
- depositTokenSymbols: import_zod2.z.array(depositTokenSymbolSchema).optional().nullable()
401
+ var LeaveOrganizationOutputSchema = import_zod.z.object({
402
+ success: import_zod.z.boolean(),
403
+ error: import_zod.z.string().optional()
607
404
  });
608
405
 
609
- // src/v2/opportunities/api.ts
610
- async function getOpportunities(filters, options) {
611
- const params = new URLSearchParams();
612
- if (filters?.tokenId) params.append("tokenId", filters.tokenId);
613
- if (filters?.chain) params.append("chain", filters.chain);
614
- if (filters?.productId) params.append("productId", filters.productId);
615
- const queryString = params.toString();
616
- const endpoint = `/turtle/opportunities${queryString ? `?${queryString}` : ""}`;
406
+ // src/v2/organizations/api.ts
407
+ async function leaveOrganization(input) {
408
+ const endpoint = `/organization/${input.organizationId}/leave`;
617
409
  const data = await apiClient.fetch(endpoint, {
618
- method: "GET",
619
- debug: options?.debug
410
+ method: "POST"
620
411
  });
621
- const result = opportunitiesResponseSchema.safeParse(data);
412
+ const result = LeaveOrganizationOutputSchema.safeParse(data);
622
413
  if (result.success === false) {
623
414
  console.log("[ZOD ERROR]", result.error);
624
- throw new Error(`Failed to parse opportunities: ${result.error.message}`);
415
+ throw new Error(`Failed to parse leave organization response: ${result.error.message}`);
625
416
  }
626
417
  return result.data;
627
418
  }
628
- async function getOpportunityById(id, options) {
629
- const data = await apiClient.fetch(`/turtle/opportunities/${id}`, {
630
- method: "GET",
631
- debug: options?.debug
419
+
420
+ // src/v2/organizations/hooks.ts
421
+ var import_react_query = require("@tanstack/react-query");
422
+ function useLeaveOrganization(options) {
423
+ return (0, import_react_query.useMutation)({
424
+ mutationFn: leaveOrganization,
425
+ ...options
632
426
  });
633
- const result = opportunitySchema.safeParse(data);
634
- if (result.success === false) {
635
- console.log("[ZOD ERROR]", result.error);
636
- throw new Error(`Failed to parse opportunity: ${result.error.message}`);
637
- }
638
- return result.data;
639
427
  }
640
- async function getOpportunitiesPaginated(params, options) {
428
+
429
+ // src/v2/organizations/queries.ts
430
+ var organizationsMutations = {
431
+ leave: (input) => leaveOrganization(input)
432
+ };
433
+
434
+ // src/v2/schemas/shared.ts
435
+ var vaultConfigSchema = import_zod2.z.object({
436
+ id: import_zod2.z.string().uuid().optional(),
437
+ infraProvider: organizationSchema.optional().nullable(),
438
+ curator: organizationSchema.optional().nullable(),
439
+ withdrawalCooldownSecs: import_zod2.z.number().int().min(0).optional().nullable(),
440
+ withdrawalContractAddress: import_zod2.z.string().optional().nullable(),
441
+ withdrawalDetails: import_zod2.z.any().optional().nullable(),
442
+ depositUrl: import_zod2.z.string().optional().nullable(),
443
+ providerMetadata: import_zod2.z.any().optional().nullable(),
444
+ performanceFee: import_zod2.z.number().min(0).max(100).optional().nullable(),
445
+ managementFee: import_zod2.z.number().min(0).max(100).optional().nullable(),
446
+ depositFee: import_zod2.z.number().min(0).max(100).optional().nullable(),
447
+ withdrawalFee: import_zod2.z.number().min(0).max(100).optional().nullable(),
448
+ minDepositAmount: import_zod2.z.number().optional().nullable(),
449
+ minDepositValueUSD: import_zod2.z.number().optional().nullable(),
450
+ depositCapAmount: import_zod2.z.number().optional().nullable(),
451
+ depositCapValueUSD: import_zod2.z.number().optional().nullable(),
452
+ depositFillSecs: import_zod2.z.number().int().optional().nullable(),
453
+ lockupPeriodSecs: import_zod2.z.number().int().optional().nullable(),
454
+ asyncDeposit: import_zod2.z.boolean().optional().nullable(),
455
+ asyncWithdraw: import_zod2.z.boolean().optional().nullable(),
456
+ secondaryOnly: import_zod2.z.boolean().optional().nullable(),
457
+ createdAt: import_zod2.z.string().datetime().optional(),
458
+ updatedAt: import_zod2.z.string().datetime().optional()
459
+ });
460
+ var lendingConfigSchema = import_zod2.z.object({
461
+ id: import_zod2.z.string().uuid().optional(),
462
+ protocol: import_zod2.z.object({ id: import_zod2.z.string() }),
463
+ marketAddress: import_zod2.z.string().min(1, "Market address is required"),
464
+ depositUrl: import_zod2.z.string().optional().nullable(),
465
+ providerMetadata: import_zod2.z.any().optional().nullable(),
466
+ createdAt: import_zod2.z.string().datetime().optional(),
467
+ updatedAt: import_zod2.z.string().datetime().optional()
468
+ });
469
+ var paginationMetadataSchema = import_zod2.z.object({
470
+ page: import_zod2.z.number().int().min(1).catch(1),
471
+ limit: import_zod2.z.number().int().min(1).max(100),
472
+ total: import_zod2.z.number().int().min(0),
473
+ total_pages: import_zod2.z.number().int().min(1),
474
+ has_next: import_zod2.z.boolean(),
475
+ has_previous: import_zod2.z.boolean()
476
+ });
477
+
478
+ // src/v2/supported-chains/schema.ts
479
+ var chainSchema = import_zod3.z.object({
480
+ id: import_zod3.z.string().optional(),
481
+ name: import_zod3.z.string(),
482
+ slug: import_zod3.z.string().optional(),
483
+ chainId: import_zod3.z.string(),
484
+ logoUrl: import_zod3.z.string().optional(),
485
+ ecosystem: import_zod3.z.string().optional(),
486
+ status: import_zod3.z.string().optional(),
487
+ explorerUrl: import_zod3.z.string().optional()
488
+ });
489
+ var getSupportedChainsInputSchema = import_zod3.z.object({
490
+ page: import_zod3.z.number().min(1).default(1).optional(),
491
+ limit: import_zod3.z.number().min(1).max(100).default(50).optional(),
492
+ // Sorting
493
+ sortBy: import_zod3.z.enum(["name", "chainId", "ecosystem", "slug"]).optional(),
494
+ sortOrder: import_zod3.z.enum(["asc", "desc"]).optional(),
495
+ // Filters
496
+ ecosystem: import_zod3.z.string().optional(),
497
+ // Filter by ecosystem
498
+ status: import_zod3.z.string().optional(),
499
+ // Filter by status
500
+ chainId: import_zod3.z.string().optional(),
501
+ // Filter by specific chainId
502
+ slug: import_zod3.z.string().optional(),
503
+ // Filter by slug
504
+ search: import_zod3.z.string().optional()
505
+ // Search by name or slug
506
+ });
507
+ var supportedChainsResponseSchema = import_zod3.z.object({
508
+ chains: import_zod3.z.array(chainSchema),
509
+ pagination: paginationMetadataSchema.optional()
510
+ });
511
+
512
+ // src/v2/supported-chains/api.ts
513
+ async function getSupportedChains(params, options) {
641
514
  const queryParams = new URLSearchParams();
642
515
  if (params) {
643
- Object.entries(params).forEach(([key, value]) => {
644
- if (value !== void 0 && value !== null) {
645
- queryParams.append(key, String(value));
646
- }
647
- });
516
+ if (params.page !== void 0) queryParams.append("page", params.page.toString());
517
+ if (params.limit !== void 0) queryParams.append("limit", params.limit.toString());
518
+ if (params.sortBy) queryParams.append("sortBy", params.sortBy);
519
+ if (params.sortOrder) queryParams.append("sortOrder", params.sortOrder);
520
+ if (params.ecosystem) queryParams.append("ecosystem", params.ecosystem);
521
+ if (params.status) queryParams.append("status", params.status);
522
+ if (params.chainId) queryParams.append("chainId", params.chainId);
523
+ if (params.slug) queryParams.append("slug", params.slug);
524
+ if (params.search) queryParams.append("search", params.search);
648
525
  }
649
526
  const queryString = queryParams.toString();
650
- const endpoint = `/turtle/opportunities-paginated${queryString ? `?${queryString}` : ""}`;
527
+ const endpoint = `/turtle/chains${queryString ? `?${queryString}` : ""}`;
651
528
  const data = await apiClient.fetch(endpoint, {
652
529
  method: "GET",
653
530
  debug: options?.debug
654
531
  });
655
- const result = getOpportunitiesPaginatedSchema.safeParse(data);
532
+ const result = supportedChainsResponseSchema.safeParse(data);
656
533
  if (result.success === false) {
657
534
  console.log("[ZOD ERROR]", result.error);
658
- throw new Error(`Failed to parse paginated opportunities: ${result.error.message}`);
535
+ throw new Error(`Failed to parse supported chains: ${result.error.message}`);
659
536
  }
660
537
  return result.data;
661
538
  }
662
- async function getOpportunitiesFilterOptions(options) {
663
- const data = await apiClient.fetch("/turtle/opportunities-filter-options", {
539
+
540
+ // src/v2/supported-chains/queries.ts
541
+ var import_query_key_factory = require("@lukemorales/query-key-factory");
542
+ var supportedChainsQueries = (0, import_query_key_factory.createQueryKeys)("supportedChains", {
543
+ all: (params, options) => ({
544
+ queryKey: [params],
545
+ queryFn: () => getSupportedChains(params, options)
546
+ })
547
+ });
548
+
549
+ // src/v2/supported-chains/hooks.ts
550
+ var import_react_query2 = require("@tanstack/react-query");
551
+
552
+ // src/v2/lib/query-config.ts
553
+ var queryDefaults = {
554
+ staleTime: 5 * 60 * 1e3,
555
+ // 5 minutes - data is fresh
556
+ gcTime: 10 * 60 * 1e3,
557
+ // 10 minutes - cache garbage collection (formerly cacheTime)
558
+ retry: 1,
559
+ // Retry failed requests once
560
+ refetchOnWindowFocus: false
561
+ // Don't refetch on tab focus
562
+ };
563
+ function createQueryOptions(queryConfig, options) {
564
+ return {
565
+ ...queryDefaults,
566
+ ...queryConfig,
567
+ ...options
568
+ };
569
+ }
570
+
571
+ // src/v2/supported-chains/hooks.ts
572
+ function useSupportedChains(options) {
573
+ const { debug, enabled = true, ...params } = options || {};
574
+ const { data, isLoading, error, refetch, isFetching } = (0, import_react_query2.useQuery)({
575
+ ...supportedChainsQueries.all(params, { debug }),
576
+ ...queryDefaults,
577
+ enabled
578
+ });
579
+ const chains = data?.chains ?? [];
580
+ const pagination = data?.pagination;
581
+ return {
582
+ chains,
583
+ pagination,
584
+ getChainByChainId: (chainId) => chains.find((chain) => chain.chainId === chainId),
585
+ getChainBySlug: (slug) => chains.find((chain) => chain.slug === slug),
586
+ getChainsByEcosystem: (ecosystem) => chains.filter((chain) => chain.ecosystem === ecosystem),
587
+ isLoading,
588
+ error: error ? error : null,
589
+ refetch,
590
+ isFetching
591
+ };
592
+ }
593
+
594
+ // src/v2/supported-tokens/schema.ts
595
+ var tokenSchema = import_zod4.z.object({
596
+ id: import_zod4.z.string().optional(),
597
+ name: import_zod4.z.string(),
598
+ symbol: import_zod4.z.string(),
599
+ address: import_zod4.z.string(),
600
+ chain: chainSchema,
601
+ decimals: import_zod4.z.number(),
602
+ logoUrl: import_zod4.z.string().optional(),
603
+ isNative: import_zod4.z.boolean(),
604
+ priceUsd: import_zod4.z.number().optional(),
605
+ price: import_zod4.z.string().optional(),
606
+ amount: import_zod4.z.string().optional(),
607
+ rawAmount: import_zod4.z.string().optional()
608
+ });
609
+ var supportedTokenSchema = tokenSchema.extend({
610
+ active: import_zod4.z.boolean()
611
+ });
612
+ var supportedTokensResponseSchema = import_zod4.z.object({
613
+ tokens: import_zod4.z.array(supportedTokenSchema),
614
+ total: import_zod4.z.number().optional(),
615
+ limit: import_zod4.z.number().optional(),
616
+ page: import_zod4.z.number().optional()
617
+ });
618
+
619
+ // src/v2/supported-tokens/api.ts
620
+ async function getSupportedTokens(filters, options) {
621
+ const params = new URLSearchParams();
622
+ if (filters?.page !== void 0) params.append("page", filters.page.toString());
623
+ if (filters?.limit !== void 0) params.append("limit", filters.limit.toString());
624
+ if (filters?.search) params.append("search", filters.search);
625
+ if (filters?.chainId) params.append("chainId", filters.chainId);
626
+ const queryString = params.toString();
627
+ const endpoint = `/turtle/tokens${queryString ? `?${queryString}` : ""}`;
628
+ const data = await apiClient.fetch(endpoint, {
664
629
  method: "GET",
665
630
  debug: options?.debug
666
631
  });
667
- const result = getOpportunitiesFilterOptionsSchema.safeParse(data);
632
+ const result = supportedTokensResponseSchema.safeParse(data);
668
633
  if (result.success === false) {
669
634
  console.log("[ZOD ERROR]", result.error);
670
- throw new Error(`Failed to parse opportunities filter options: ${result.error.message}`);
635
+ throw new Error(`Failed to parse supported tokens: ${result.error.message}`);
671
636
  }
672
637
  return result.data;
673
638
  }
674
639
 
675
- // src/v2/opportunities/queries.ts
676
- var opportunitiesQueries = (0, import_query_key_factory.createQueryKeys)("opportunities", {
677
- // Get all opportunities (no filters)
678
- all: {
679
- queryKey: null,
680
- queryFn: () => getOpportunities()
681
- },
682
- // Get opportunities with filters
640
+ // src/v2/supported-tokens/queries.ts
641
+ var import_query_key_factory2 = require("@lukemorales/query-key-factory");
642
+ var supportedTokensQueries = (0, import_query_key_factory2.createQueryKeys)("supportedTokens", {
683
643
  list: (filters) => ({
684
- queryKey: [{ filters }],
685
- queryFn: () => getOpportunities(filters)
686
- }),
687
- // Get single opportunity by ID
688
- byId: (id) => ({
689
- queryKey: [id],
690
- queryFn: () => getOpportunityById(id)
691
- }),
692
- // Get paginated opportunities
693
- paginated: (params) => ({
694
- queryKey: [{ params }],
695
- queryFn: () => getOpportunitiesPaginated(params)
696
- }),
697
- // Get filter options for opportunities
698
- filterOptions: {
699
- queryKey: null,
644
+ queryKey: [filters],
645
+ queryFn: () => getSupportedTokens(filters)
646
+ })
647
+ });
648
+
649
+ // src/v2/supported-tokens/hooks.ts
650
+ var import_react_query3 = require("@tanstack/react-query");
651
+ var import_react = require("react");
652
+ function useSupportedTokens({
653
+ page = 0,
654
+ limit = 20,
655
+ search,
656
+ chainId,
657
+ enabled = true
658
+ } = {}) {
659
+ const { data, isLoading, error, refetch } = (0, import_react_query3.useQuery)({
660
+ ...supportedTokensQueries.list({ page, limit, search, chainId }),
661
+ ...queryDefaults,
662
+ staleTime: 5 * 60 * 1e3,
663
+ // 1 minutes
664
+ gcTime: 10 * 60 * 1e3,
665
+ // 10 minutes
666
+ refetchOnWindowFocus: false,
667
+ // Don't refetch on tab focus
668
+ enabled
669
+ });
670
+ const tokens = (0, import_react.useMemo)(() => {
671
+ if (!data?.tokens) return [];
672
+ return data.tokens;
673
+ }, [data?.tokens]);
674
+ return {
675
+ tokens,
676
+ total: data?.total ?? 0,
677
+ limit: data?.limit ?? limit,
678
+ page: data?.page ?? page,
679
+ isLoading,
680
+ error: error ? error : null,
681
+ refetch,
682
+ getTokenById: (id) => tokens.find((token) => token.id === id),
683
+ getToken: (address, chainId2) => tokens.find(
684
+ (token) => token.address.toLowerCase() === address.toLowerCase() && token.chain.chainId === chainId2
685
+ )
686
+ };
687
+ }
688
+
689
+ // src/v2/incentives/schema.ts
690
+ var import_zod5 = require("zod");
691
+ var incentiveSchema = import_zod5.z.object({
692
+ id: import_zod5.z.string().uuid(),
693
+ name: import_zod5.z.string(),
694
+ description: import_zod5.z.string(),
695
+ iconUrl: import_zod5.z.string(),
696
+ rewardType: import_zod5.z.string(),
697
+ rewardTypeName: import_zod5.z.string(),
698
+ boostPct: import_zod5.z.number().nullable(),
699
+ totalCapacity: import_zod5.z.number().nullable(),
700
+ maxCapacityPerLP: import_zod5.z.number().nullable(),
701
+ lockup: import_zod5.z.string().nullable(),
702
+ minCommitment: import_zod5.z.number().nullable(),
703
+ baseYieldTarget: import_zod5.z.number().nullable(),
704
+ baseYieldSource: import_zod5.z.string().nullable(),
705
+ incentiveYieldTarget: import_zod5.z.number().nullable(),
706
+ fdvEstimate: import_zod5.z.number().nullable(),
707
+ isIncentiveYieldGuaranteed: import_zod5.z.boolean().nullable(),
708
+ tokenSupplyAllocation: import_zod5.z.number().nullable(),
709
+ yield: import_zod5.z.number().nullable(),
710
+ indexed: import_zod5.z.boolean().nullable(),
711
+ minApr: import_zod5.z.number().nullable().optional(),
712
+ maxApr: import_zod5.z.number().nullable().optional()
713
+ });
714
+ var createIncentiveInputSchema = incentiveSchema.omit({
715
+ id: true
716
+ });
717
+ var updateIncentiveInputSchema = incentiveSchema.partial().extend({
718
+ id: import_zod5.z.string().uuid()
719
+ });
720
+ var incentivesResponseSchema = import_zod5.z.object({
721
+ incentives: import_zod5.z.array(incentiveSchema),
722
+ total: import_zod5.z.number().optional()
723
+ });
724
+ var uploadIncentiveIconRequestSchema = import_zod5.z.object({
725
+ file: import_zod5.z.object({
726
+ name: import_zod5.z.string(),
727
+ size: import_zod5.z.number().positive(),
728
+ type: import_zod5.z.string().refine((type) => type.startsWith("image/"), {
729
+ message: "File must be an image type"
730
+ }),
731
+ lastModified: import_zod5.z.number().optional()
732
+ }),
733
+ filename: import_zod5.z.string().optional(),
734
+ overwrite: import_zod5.z.boolean().optional()
735
+ });
736
+ var uploadIncentiveIconResponseSchema = import_zod5.z.object({
737
+ publicUrl: import_zod5.z.string().url()
738
+ });
739
+
740
+ // src/v2/products/schema.ts
741
+ var import_zod6 = require("zod");
742
+ var productTypeSchema = import_zod6.z.enum(["deal", "campaign"]);
743
+ var productStatusSchema = import_zod6.z.enum(["draft", "active", "paused", "ended"]);
744
+ var turtleOrganizationSchema = import_zod6.z.object({
745
+ id: import_zod6.z.string().uuid(),
746
+ name: import_zod6.z.string(),
747
+ iconUrl: import_zod6.z.string(),
748
+ landingUrl: import_zod6.z.string()
749
+ });
750
+ var productSchema = import_zod6.z.object({
751
+ id: import_zod6.z.string().uuid(),
752
+ name: import_zod6.z.string(),
753
+ title: import_zod6.z.string(),
754
+ subtitle: import_zod6.z.string(),
755
+ description: import_zod6.z.string(),
756
+ logoUrl: import_zod6.z.string(),
757
+ productUrl: import_zod6.z.string(),
758
+ startedAt: import_zod6.z.string().optional().nullable(),
759
+ endedAt: import_zod6.z.string().optional().nullable(),
760
+ status: productStatusSchema,
761
+ productType: productTypeSchema,
762
+ organization: turtleOrganizationSchema.nullable(),
763
+ opportunities: import_zod6.z.lazy(() => import_zod6.z.array(import_zod6.z.any())).nullish(),
764
+ createdAt: import_zod6.z.string()
765
+ });
766
+ var createProductInputSchema = import_zod6.z.object({
767
+ product: productSchema.omit({
768
+ id: true,
769
+ createdAt: true,
770
+ organization: true
771
+ }),
772
+ organizationId: import_zod6.z.string().uuid()
773
+ });
774
+ var updateProductInputSchema = import_zod6.z.object({
775
+ product: productSchema.partial().omit({
776
+ organization: true
777
+ })
778
+ // organizationId: z.string().uuid(),
779
+ });
780
+ var productsResponseSchema = import_zod6.z.object({
781
+ products: import_zod6.z.array(productSchema),
782
+ total: import_zod6.z.number().optional()
783
+ });
784
+ var productResponseSchema = import_zod6.z.object({
785
+ product: productSchema
786
+ });
787
+ var createProductResponseSchema = import_zod6.z.object({
788
+ id: import_zod6.z.string().uuid()
789
+ });
790
+ var updateProductResponseSchema = import_zod6.z.object({
791
+ success: import_zod6.z.boolean()
792
+ });
793
+ var fileSchema = import_zod6.z.any().refine((value) => {
794
+ if (!value) return false;
795
+ if (!(value instanceof File)) return false;
796
+ if (value.size > 10 * 1024 * 1024) return false;
797
+ return true;
798
+ }, "Invalid file");
799
+ var uploadProductLogoRequestSchema = import_zod6.z.object({
800
+ // Form data - file upload (required)
801
+ file: fileSchema,
802
+ // Form data - optional filename override
803
+ filename: import_zod6.z.string().optional()
804
+ });
805
+ var uploadProductLogoResponseSchema = import_zod6.z.object({
806
+ url: import_zod6.z.string().url(),
807
+ error: import_zod6.z.string().optional()
808
+ });
809
+ var productFiltersSchema = import_zod6.z.object({
810
+ organizationId: import_zod6.z.string().uuid().optional()
811
+ });
812
+
813
+ // src/v2/opportunities/schema.ts
814
+ var opportunityTypeEnum = import_zod7.z.enum(["vault", "lending", "staking", "stablecoin", "draft", ""]);
815
+ var opportunityStatusEnum = import_zod7.z.enum(["active", "paused", "deprecated", "draft", "ended"]);
816
+ var opportunitySchema = import_zod7.z.object({
817
+ id: import_zod7.z.string().uuid().optional(),
818
+ name: import_zod7.z.string(),
819
+ shortName: import_zod7.z.string(),
820
+ type: opportunityTypeEnum,
821
+ description: import_zod7.z.string().optional().default(""),
822
+ curator: import_zod7.z.string().optional().default(""),
823
+ tvl: import_zod7.z.number().min(0, "TVL must be positive"),
824
+ featured: import_zod7.z.boolean().optional().default(false),
825
+ featuredOrder: import_zod7.z.number().int().optional().nullable(),
826
+ originalConfig: import_zod7.z.any().optional().nullable(),
827
+ exposures: import_zod7.z.array(import_zod7.z.string()).optional().default([]),
828
+ status: opportunityStatusEnum.optional().default("active"),
829
+ statusReason: import_zod7.z.string().optional().default(""),
830
+ depositDisabled: import_zod7.z.boolean().optional().default(false),
831
+ depositDisabledReason: import_zod7.z.string().optional().default(""),
832
+ withdrawalDisabled: import_zod7.z.boolean().optional().default(false),
833
+ withdrawalDisabledReason: import_zod7.z.string().optional().default(""),
834
+ docsUrl: import_zod7.z.string().optional().nullable(),
835
+ auditsUrl: import_zod7.z.string().optional().nullable(),
836
+ turtleTvl: import_zod7.z.number(),
837
+ turtleUsers: import_zod7.z.number(),
838
+ earnEnabled: import_zod7.z.boolean(),
839
+ createdAt: import_zod7.z.string().datetime().optional(),
840
+ updatedAt: import_zod7.z.string().datetime().optional(),
841
+ // Relationships
842
+ depositTokens: import_zod7.z.array(supportedTokenSchema),
843
+ baseTokens: supportedTokenSchema,
844
+ receiptToken: supportedTokenSchema,
845
+ incentives: import_zod7.z.array(incentiveSchema),
846
+ products: import_zod7.z.array(productSchema),
847
+ vaultConfig: vaultConfigSchema.optional().nullable(),
848
+ lendingConfig: lendingConfigSchema.optional().nullable(),
849
+ // Will be deprecated
850
+ exposure: import_zod7.z.array(import_zod7.z.string()),
851
+ explorerUrl: import_zod7.z.string().nullable()
852
+ });
853
+ var opportunityFiltersSchema = import_zod7.z.object({
854
+ tokenId: import_zod7.z.string().uuid().optional(),
855
+ chain: import_zod7.z.string().optional(),
856
+ productId: import_zod7.z.string().uuid().optional()
857
+ });
858
+ var opportunitiesResponseSchema = import_zod7.z.object({
859
+ opportunities: import_zod7.z.array(opportunitySchema),
860
+ total: import_zod7.z.number().optional()
861
+ });
862
+ var getOpportunitiesPaginatedInputSchema = import_zod7.z.object({
863
+ page: import_zod7.z.number().min(1).default(1),
864
+ limit: import_zod7.z.number().min(1).max(100).default(10),
865
+ // Sorting
866
+ sortBy: import_zod7.z.enum([
867
+ "turtleTvl",
868
+ "tvl",
869
+ "name",
870
+ "turtleUsers",
871
+ "type",
872
+ "organization",
873
+ "curator",
874
+ "provider",
875
+ "apr"
876
+ ]).optional(),
877
+ sortOrder: import_zod7.z.enum(["asc", "desc"]).optional(),
878
+ // Filter by receipt token chain (comma-separated)
879
+ receiptTokenChainId: import_zod7.z.string().optional(),
880
+ // Comma-separated UUIDs
881
+ receiptTokenChainSlug: import_zod7.z.string().optional(),
882
+ // Comma-separated slugs
883
+ // Filter by deposit token
884
+ depositTokenGroup: import_zod7.z.string().optional(),
885
+ depositTokenSymbols: import_zod7.z.string().optional(),
886
+ // Comma-separated symbols
887
+ depositTokenChainId: import_zod7.z.string().optional(),
888
+ // Filter by tags (comma-separated)
889
+ tags: import_zod7.z.string().optional(),
890
+ // Filter by IDs (comma-separated UUIDs)
891
+ productId: import_zod7.z.string().optional(),
892
+ // Comma-separated UUIDs
893
+ curatorId: import_zod7.z.string().optional(),
894
+ // Comma-separated UUIDs
895
+ providerId: import_zod7.z.string().optional(),
896
+ // Comma-separated UUIDs
897
+ partnerId: import_zod7.z.string().optional(),
898
+ // Comma-separated UUIDs
899
+ lendingProtocolId: import_zod7.z.string().optional(),
900
+ // Comma-separated UUIDs
901
+ // Status filters
902
+ withdrawalDisabled: import_zod7.z.boolean().optional(),
903
+ depositDisabled: import_zod7.z.boolean().optional(),
904
+ status: import_zod7.z.string().optional(),
905
+ earnEnabled: import_zod7.z.boolean().optional(),
906
+ featured: import_zod7.z.boolean().optional(),
907
+ // TVL filters
908
+ tvlGreaterThan: import_zod7.z.number().optional(),
909
+ turtleTvlGreaterThan: import_zod7.z.number().optional(),
910
+ tvlMin: import_zod7.z.number().optional(),
911
+ tvlMax: import_zod7.z.number().optional(),
912
+ // APR filters
913
+ minApr: import_zod7.z.number().optional(),
914
+ maxApr: import_zod7.z.number().optional(),
915
+ // Chain IDs (comma-separated)
916
+ chainIds: import_zod7.z.string().optional(),
917
+ // Search
918
+ search: import_zod7.z.string().optional()
919
+ });
920
+ var paginationMetadataSchema2 = import_zod7.z.object({
921
+ page: import_zod7.z.number(),
922
+ limit: import_zod7.z.number(),
923
+ total: import_zod7.z.number(),
924
+ totalPages: import_zod7.z.number()
925
+ });
926
+ var getOpportunitiesPaginatedSchema = import_zod7.z.object({
927
+ opportunities: import_zod7.z.array(opportunitySchema),
928
+ pagination: paginationMetadataSchema2
929
+ });
930
+ var filterChainSchema = import_zod7.z.object({
931
+ id: import_zod7.z.string().uuid(),
932
+ name: import_zod7.z.string(),
933
+ slug: import_zod7.z.string(),
934
+ chainId: import_zod7.z.string(),
935
+ logoUrl: import_zod7.z.string(),
936
+ ecosystem: import_zod7.z.string(),
937
+ status: import_zod7.z.string(),
938
+ explorerUrl: import_zod7.z.string()
939
+ });
940
+ var filterOrganizationSchema = import_zod7.z.object({
941
+ id: import_zod7.z.string().uuid(),
942
+ name: import_zod7.z.string(),
943
+ description: import_zod7.z.string(),
944
+ landingUrl: import_zod7.z.string(),
945
+ iconUrl: import_zod7.z.string(),
946
+ organizationType: import_zod7.z.string(),
947
+ turtleRefCode: import_zod7.z.string(),
948
+ twitterHandle: import_zod7.z.string(),
949
+ status: import_zod7.z.string(),
950
+ featured: import_zod7.z.boolean()
951
+ });
952
+ var filterTagSchema = import_zod7.z.object({
953
+ id: import_zod7.z.string().uuid(),
954
+ code: import_zod7.z.string(),
955
+ name: import_zod7.z.string(),
956
+ description: import_zod7.z.string().optional().nullable(),
957
+ color: import_zod7.z.string().optional().nullable(),
958
+ type: import_zod7.z.string().optional().nullable()
959
+ });
960
+ var depositTokenSymbolSchema = import_zod7.z.object({
961
+ symbol: import_zod7.z.string(),
962
+ logoUrl: import_zod7.z.string()
963
+ });
964
+ var getOpportunitiesFilterOptionsSchema = import_zod7.z.object({
965
+ chains: import_zod7.z.array(filterChainSchema),
966
+ providers: import_zod7.z.array(filterOrganizationSchema),
967
+ curators: import_zod7.z.array(filterOrganizationSchema).optional().nullable(),
968
+ partners: import_zod7.z.array(filterOrganizationSchema).optional().nullable(),
969
+ tags: import_zod7.z.array(filterTagSchema).optional().nullable(),
970
+ lendingProtocols: import_zod7.z.array(filterOrganizationSchema),
971
+ depositTokenSymbols: import_zod7.z.array(depositTokenSymbolSchema).optional().nullable()
972
+ });
973
+
974
+ // src/v2/opportunities/api.ts
975
+ async function getOpportunities(filters, options) {
976
+ const params = new URLSearchParams();
977
+ if (filters?.tokenId) params.append("tokenId", filters.tokenId);
978
+ if (filters?.chain) params.append("chain", filters.chain);
979
+ if (filters?.productId) params.append("productId", filters.productId);
980
+ const queryString = params.toString();
981
+ const endpoint = `/turtle/opportunities${queryString ? `?${queryString}` : ""}`;
982
+ const data = await apiClient.fetch(endpoint, {
983
+ method: "GET",
984
+ debug: options?.debug
985
+ });
986
+ const result = opportunitiesResponseSchema.safeParse(data);
987
+ if (result.success === false) {
988
+ console.log("[ZOD ERROR]", result.error);
989
+ throw new Error(`Failed to parse opportunities: ${result.error.message}`);
990
+ }
991
+ return result.data;
992
+ }
993
+ async function getOpportunityById(id, options) {
994
+ const data = await apiClient.fetch(`/turtle/opportunities/${id}`, {
995
+ method: "GET",
996
+ debug: options?.debug
997
+ });
998
+ const result = opportunitySchema.safeParse(data);
999
+ if (result.success === false) {
1000
+ console.log("[ZOD ERROR]", result.error);
1001
+ throw new Error(`Failed to parse opportunity: ${result.error.message}`);
1002
+ }
1003
+ return result.data;
1004
+ }
1005
+ async function getOpportunitiesPaginated(params, options) {
1006
+ const queryParams = new URLSearchParams();
1007
+ if (params) {
1008
+ Object.entries(params).forEach(([key, value]) => {
1009
+ if (value !== void 0 && value !== null) {
1010
+ queryParams.append(key, String(value));
1011
+ }
1012
+ });
1013
+ }
1014
+ const queryString = queryParams.toString();
1015
+ const endpoint = `/turtle/opportunities-paginated${queryString ? `?${queryString}` : ""}`;
1016
+ const data = await apiClient.fetch(endpoint, {
1017
+ method: "GET",
1018
+ debug: options?.debug
1019
+ });
1020
+ const result = getOpportunitiesPaginatedSchema.safeParse(data);
1021
+ if (result.success === false) {
1022
+ console.log("[ZOD ERROR]", result.error);
1023
+ throw new Error(`Failed to parse paginated opportunities: ${result.error.message}`);
1024
+ }
1025
+ return result.data;
1026
+ }
1027
+ async function getOpportunitiesFilterOptions(options) {
1028
+ const data = await apiClient.fetch("/turtle/opportunities-filter-options", {
1029
+ method: "GET",
1030
+ debug: options?.debug
1031
+ });
1032
+ const result = getOpportunitiesFilterOptionsSchema.safeParse(data);
1033
+ if (result.success === false) {
1034
+ console.log("[ZOD ERROR]", result.error);
1035
+ throw new Error(`Failed to parse opportunities filter options: ${result.error.message}`);
1036
+ }
1037
+ return result.data;
1038
+ }
1039
+
1040
+ // src/v2/opportunities/queries.ts
1041
+ var opportunitiesQueries = (0, import_query_key_factory3.createQueryKeys)("opportunities", {
1042
+ // Get all opportunities (no filters)
1043
+ all: {
1044
+ queryKey: null,
1045
+ queryFn: () => getOpportunities()
1046
+ },
1047
+ // Get opportunities with filters
1048
+ list: (filters) => ({
1049
+ queryKey: [{ filters }],
1050
+ queryFn: () => getOpportunities(filters)
1051
+ }),
1052
+ // Get single opportunity by ID
1053
+ byId: (id) => ({
1054
+ queryKey: [id],
1055
+ queryFn: () => getOpportunityById(id)
1056
+ }),
1057
+ // Get paginated opportunities
1058
+ paginated: (params) => ({
1059
+ queryKey: [{ params }],
1060
+ queryFn: () => getOpportunitiesPaginated(params)
1061
+ }),
1062
+ // Get filter options for opportunities
1063
+ filterOptions: {
1064
+ queryKey: null,
700
1065
  queryFn: () => getOpportunitiesFilterOptions()
701
1066
  }
702
1067
  });
703
1068
 
704
1069
  // src/v2/earn-opportunities/queries.ts
705
- var import_query_key_factory2 = require("@lukemorales/query-key-factory");
1070
+ var import_query_key_factory4 = require("@lukemorales/query-key-factory");
706
1071
 
707
1072
  // src/v2/earn-opportunities/schema.ts
708
- var import_zod3 = require("zod");
709
- var earnOpportunitySchema = import_zod3.z.object({
710
- id: import_zod3.z.string().uuid(),
711
- name: import_zod3.z.string(),
712
- description: import_zod3.z.string(),
713
- type: import_zod3.z.string(),
714
- estimatedApr: import_zod3.z.number(),
715
- tvl: import_zod3.z.number(),
716
- featured: import_zod3.z.boolean(),
1073
+ var import_zod8 = require("zod");
1074
+ var earnOpportunitySchema = import_zod8.z.object({
1075
+ id: import_zod8.z.string().uuid(),
1076
+ name: import_zod8.z.string(),
1077
+ description: import_zod8.z.string(),
1078
+ type: import_zod8.z.string(),
1079
+ estimatedApr: import_zod8.z.number(),
1080
+ tvl: import_zod8.z.number(),
1081
+ featured: import_zod8.z.boolean(),
717
1082
  baseTokens: tokenSchema,
718
- depositTokens: import_zod3.z.array(tokenSchema).nullable(),
1083
+ depositTokens: import_zod8.z.array(tokenSchema).nullable(),
719
1084
  receiptToken: tokenSchema
720
1085
  });
721
- var earnOpportunitiesResponseSchema = import_zod3.z.object({
722
- opportunities: import_zod3.z.array(earnOpportunitySchema).nullable(),
723
- total: import_zod3.z.number().int()
1086
+ var earnOpportunitiesResponseSchema = import_zod8.z.object({
1087
+ opportunities: import_zod8.z.array(earnOpportunitySchema).nullable(),
1088
+ total: import_zod8.z.number().int()
724
1089
  });
725
1090
 
726
1091
  // src/v2/earn-opportunities/api.ts
@@ -739,7 +1104,7 @@ async function getEarnOpportunities(context) {
739
1104
  }
740
1105
 
741
1106
  // src/v2/earn-opportunities/queries.ts
742
- var earnOpportunitiesQueries = (0, import_query_key_factory2.createQueryKeys)("earnOpportunities", {
1107
+ var earnOpportunitiesQueries = (0, import_query_key_factory4.createQueryKeys)("earnOpportunities", {
743
1108
  all: {
744
1109
  queryKey: null,
745
1110
  queryFn: (context) => getEarnOpportunities(context)
@@ -747,86 +1112,86 @@ var earnOpportunitiesQueries = (0, import_query_key_factory2.createQueryKeys)("e
747
1112
  });
748
1113
 
749
1114
  // src/v2/earn-route/queries.ts
750
- var import_query_key_factory3 = require("@lukemorales/query-key-factory");
1115
+ var import_query_key_factory5 = require("@lukemorales/query-key-factory");
751
1116
 
752
1117
  // src/v2/earn-route/schema.ts
753
1118
  var import_utils = require("@turtleclub/utils");
754
- var import_zod4 = require("zod");
755
- var assetImageData = import_zod4.z.object({
756
- kind: import_zod4.z.literal("image"),
757
- url: import_zod4.z.string(),
758
- alt: import_zod4.z.string()
759
- });
760
- var assetERC20Data = import_zod4.z.object({
761
- kind: import_zod4.z.literal("erc20"),
762
- address: import_zod4.z.string(),
763
- name: import_zod4.z.string(),
764
- symbol: import_zod4.z.string(),
765
- decimals: import_zod4.z.number()
766
- });
767
- var assetData = import_zod4.z.discriminatedUnion("kind", [assetImageData, assetERC20Data]);
768
- var asset = import_zod4.z.object({
769
- id: import_zod4.z.string().uuid(),
770
- name: import_zod4.z.string(),
771
- slugs: import_zod4.z.array(import_zod4.z.string()),
772
- tags: import_zod4.z.array(import_zod4.z.string()),
773
- description: import_zod4.z.string().nullable(),
774
- data: import_zod4.z.array(assetData)
775
- });
776
- var routeToken = import_zod4.z.object({
777
- address: import_zod4.z.string(),
778
- name: import_zod4.z.string(),
779
- symbol: import_zod4.z.string(),
780
- logos: import_zod4.z.array(import_zod4.z.string()),
781
- decimals: import_zod4.z.number(),
782
- chain: import_zod4.z.number(),
783
- price: import_zod4.z.number().nullable().optional()
784
- });
785
- var swapSubstep = import_zod4.z.object({
786
- kind: import_zod4.z.literal("swap"),
787
- from: import_zod4.z.array(routeToken),
788
- to: import_zod4.z.array(routeToken),
789
- protocol: import_zod4.z.string(),
1119
+ var import_zod9 = require("zod");
1120
+ var assetImageData = import_zod9.z.object({
1121
+ kind: import_zod9.z.literal("image"),
1122
+ url: import_zod9.z.string(),
1123
+ alt: import_zod9.z.string()
1124
+ });
1125
+ var assetERC20Data = import_zod9.z.object({
1126
+ kind: import_zod9.z.literal("erc20"),
1127
+ address: import_zod9.z.string(),
1128
+ name: import_zod9.z.string(),
1129
+ symbol: import_zod9.z.string(),
1130
+ decimals: import_zod9.z.number()
1131
+ });
1132
+ var assetData = import_zod9.z.discriminatedUnion("kind", [assetImageData, assetERC20Data]);
1133
+ var asset = import_zod9.z.object({
1134
+ id: import_zod9.z.string().uuid(),
1135
+ name: import_zod9.z.string(),
1136
+ slugs: import_zod9.z.array(import_zod9.z.string()),
1137
+ tags: import_zod9.z.array(import_zod9.z.string()),
1138
+ description: import_zod9.z.string().nullable(),
1139
+ data: import_zod9.z.array(assetData)
1140
+ });
1141
+ var routeToken = import_zod9.z.object({
1142
+ address: import_zod9.z.string(),
1143
+ name: import_zod9.z.string(),
1144
+ symbol: import_zod9.z.string(),
1145
+ logos: import_zod9.z.array(import_zod9.z.string()),
1146
+ decimals: import_zod9.z.number(),
1147
+ chain: import_zod9.z.number(),
1148
+ price: import_zod9.z.number().nullable().optional()
1149
+ });
1150
+ var swapSubstep = import_zod9.z.object({
1151
+ kind: import_zod9.z.literal("swap"),
1152
+ from: import_zod9.z.array(routeToken),
1153
+ to: import_zod9.z.array(routeToken),
1154
+ protocol: import_zod9.z.string(),
790
1155
  protocol_asset: asset.nullable(),
791
- price_impact: import_zod4.z.number().nullable()
792
- });
793
- var depositSubstep = import_zod4.z.object({
794
- kind: import_zod4.z.literal("deposit"),
795
- vault: import_zod4.z.string(),
796
- from: import_zod4.z.array(routeToken),
797
- to: import_zod4.z.array(routeToken),
798
- amount: import_zod4.z.string(),
799
- protocol: import_zod4.z.string(),
1156
+ price_impact: import_zod9.z.number().nullable()
1157
+ });
1158
+ var depositSubstep = import_zod9.z.object({
1159
+ kind: import_zod9.z.literal("deposit"),
1160
+ vault: import_zod9.z.string(),
1161
+ from: import_zod9.z.array(routeToken),
1162
+ to: import_zod9.z.array(routeToken),
1163
+ amount: import_zod9.z.string(),
1164
+ protocol: import_zod9.z.string(),
800
1165
  protocol_asset: asset.nullable(),
801
- price_impact: import_zod4.z.number().nullable()
1166
+ price_impact: import_zod9.z.number().nullable()
802
1167
  });
803
- var routerSubstep = import_zod4.z.discriminatedUnion("kind", [swapSubstep, depositSubstep]);
804
- var stepTx = import_zod4.z.object({
1168
+ var routerSubstep = import_zod9.z.discriminatedUnion("kind", [swapSubstep, depositSubstep]);
1169
+ var stepTx = import_zod9.z.object({
805
1170
  from: import_utils.ethz.address(),
806
1171
  to: import_utils.ethz.address(),
807
1172
  data: import_utils.ethz.hex(),
808
- value: import_zod4.z.string(),
809
- gas: import_zod4.z.number()
1173
+ value: import_zod9.z.string(),
1174
+ gas: import_zod9.z.number()
810
1175
  });
811
- var approveStep = import_zod4.z.object({
812
- kind: import_zod4.z.literal("approve"),
813
- owner: import_zod4.z.string(),
814
- spender: import_zod4.z.string(),
1176
+ var approveStep = import_zod9.z.object({
1177
+ kind: import_zod9.z.literal("approve"),
1178
+ owner: import_zod9.z.string(),
1179
+ spender: import_zod9.z.string(),
815
1180
  token: routeToken,
816
- amount: import_zod4.z.string(),
1181
+ amount: import_zod9.z.string(),
817
1182
  tx: stepTx
818
1183
  });
819
- var ensoStep = import_zod4.z.object({
820
- kind: import_zod4.z.literal("enso"),
821
- substeps: import_zod4.z.array(routerSubstep),
1184
+ var ensoStep = import_zod9.z.object({
1185
+ kind: import_zod9.z.literal("enso"),
1186
+ substeps: import_zod9.z.array(routerSubstep),
822
1187
  tx: stepTx,
823
1188
  asset: asset.nullable()
824
1189
  });
825
- var routerStep = import_zod4.z.discriminatedUnion("kind", [approveStep, ensoStep]);
826
- var earnRouteResponseSchema = import_zod4.z.object({
827
- steps: import_zod4.z.array(routerStep),
828
- amount_out: import_zod4.z.string(),
829
- price_impact: import_zod4.z.number().nullable()
1190
+ var routerStep = import_zod9.z.discriminatedUnion("kind", [approveStep, ensoStep]);
1191
+ var earnRouteResponseSchema = import_zod9.z.object({
1192
+ steps: import_zod9.z.array(routerStep),
1193
+ amount_out: import_zod9.z.string(),
1194
+ price_impact: import_zod9.z.number().nullable()
830
1195
  });
831
1196
 
832
1197
  // src/v2/earn-route/api.ts
@@ -857,7 +1222,7 @@ async function getEarnRoute(params, context) {
857
1222
  }
858
1223
 
859
1224
  // src/v2/earn-route/queries.ts
860
- var earnRouteQueries = (0, import_query_key_factory3.createQueryKeys)("earnRoute", {
1225
+ var earnRouteQueries = (0, import_query_key_factory5.createQueryKeys)("earnRoute", {
861
1226
  // Get earn route with specific parameters
862
1227
  byParams: (params) => ({
863
1228
  queryKey: [params],
@@ -866,33 +1231,33 @@ var earnRouteQueries = (0, import_query_key_factory3.createQueryKeys)("earnRoute
866
1231
  });
867
1232
 
868
1233
  // src/v2/earn-membership/queries.ts
869
- var import_query_key_factory4 = require("@lukemorales/query-key-factory");
1234
+ var import_query_key_factory6 = require("@lukemorales/query-key-factory");
870
1235
 
871
1236
  // src/v2/earn-membership/schema.ts
872
- var import_zod5 = require("zod");
873
- var walletEcosystemEnum = import_zod5.z.enum(["evm", "solana", "ton"]);
874
- var checkMembershipResponseSchema = import_zod5.z.object({
875
- isMember: import_zod5.z.boolean()
1237
+ var import_zod10 = require("zod");
1238
+ var walletEcosystemEnum = import_zod10.z.enum(["evm", "solana", "ton"]);
1239
+ var checkMembershipResponseSchema = import_zod10.z.object({
1240
+ isMember: import_zod10.z.boolean()
876
1241
  });
877
- var createAgreementRequestSchema = import_zod5.z.object({
878
- address: import_zod5.z.string(),
1242
+ var createAgreementRequestSchema = import_zod10.z.object({
1243
+ address: import_zod10.z.string(),
879
1244
  walletEcosystem: walletEcosystemEnum,
880
- url: import_zod5.z.string(),
881
- chainId: import_zod5.z.string().default("1")
1245
+ url: import_zod10.z.string(),
1246
+ chainId: import_zod10.z.string().default("1")
882
1247
  });
883
- var createAgreementResponseSchema = import_zod5.z.object({
884
- message: import_zod5.z.string(),
885
- nonce: import_zod5.z.string()
1248
+ var createAgreementResponseSchema = import_zod10.z.object({
1249
+ message: import_zod10.z.string(),
1250
+ nonce: import_zod10.z.string()
886
1251
  });
887
- var createMembershipRequestSchema = import_zod5.z.object({
888
- address: import_zod5.z.string(),
889
- walletEcosystem: import_zod5.z.string(),
890
- signature: import_zod5.z.string(),
891
- nonce: import_zod5.z.string()
1252
+ var createMembershipRequestSchema = import_zod10.z.object({
1253
+ address: import_zod10.z.string(),
1254
+ walletEcosystem: import_zod10.z.string(),
1255
+ signature: import_zod10.z.string(),
1256
+ nonce: import_zod10.z.string()
892
1257
  });
893
- var createMembershipResponseSchema = import_zod5.z.object({
894
- isMember: import_zod5.z.boolean(),
895
- error: import_zod5.z.string().optional()
1258
+ var createMembershipResponseSchema = import_zod10.z.object({
1259
+ isMember: import_zod10.z.boolean(),
1260
+ error: import_zod10.z.string().optional()
896
1261
  });
897
1262
 
898
1263
  // src/v2/earn-membership/api.ts
@@ -941,7 +1306,7 @@ async function createMembership(request) {
941
1306
  }
942
1307
 
943
1308
  // src/v2/earn-membership/queries.ts
944
- var earnMembershipQueries = (0, import_query_key_factory4.createQueryKeys)("earnMembership", {
1309
+ var earnMembershipQueries = (0, import_query_key_factory6.createQueryKeys)("earnMembership", {
945
1310
  // Check membership status
946
1311
  check: (params) => ({
947
1312
  queryKey: [params],
@@ -950,26 +1315,26 @@ var earnMembershipQueries = (0, import_query_key_factory4.createQueryKeys)("earn
950
1315
  });
951
1316
 
952
1317
  // src/v2/earn-deposits/queries.ts
953
- var import_query_key_factory5 = require("@lukemorales/query-key-factory");
1318
+ var import_query_key_factory7 = require("@lukemorales/query-key-factory");
954
1319
 
955
1320
  // src/v2/earn-deposits/schema.ts
956
- var import_zod6 = require("zod");
957
- var depositSchema = import_zod6.z.object({
958
- chain: import_zod6.z.number().int(),
959
- deposited_amount_usd: import_zod6.z.string(),
960
- deposited_token_address: import_zod6.z.string(),
961
- deposited_token_decimals: import_zod6.z.number().int(),
962
- deposited_token_logo: import_zod6.z.string(),
963
- deposited_token_name: import_zod6.z.string(),
964
- deposited_token_symbol: import_zod6.z.string(),
965
- deposited_value: import_zod6.z.string(),
966
- depositor: import_zod6.z.string(),
967
- target: import_zod6.z.string(),
968
- timestamp: import_zod6.z.string(),
969
- tx_hash: import_zod6.z.string()
970
- });
971
- var depositsResponseSchema = import_zod6.z.object({
972
- deposits: import_zod6.z.array(depositSchema).nullable()
1321
+ var import_zod11 = require("zod");
1322
+ var depositSchema = import_zod11.z.object({
1323
+ chain: import_zod11.z.number().int(),
1324
+ deposited_amount_usd: import_zod11.z.string(),
1325
+ deposited_token_address: import_zod11.z.string(),
1326
+ deposited_token_decimals: import_zod11.z.number().int(),
1327
+ deposited_token_logo: import_zod11.z.string(),
1328
+ deposited_token_name: import_zod11.z.string(),
1329
+ deposited_token_symbol: import_zod11.z.string(),
1330
+ deposited_value: import_zod11.z.string(),
1331
+ depositor: import_zod11.z.string(),
1332
+ target: import_zod11.z.string(),
1333
+ timestamp: import_zod11.z.string(),
1334
+ tx_hash: import_zod11.z.string()
1335
+ });
1336
+ var depositsResponseSchema = import_zod11.z.object({
1337
+ deposits: import_zod11.z.array(depositSchema).nullable()
973
1338
  });
974
1339
 
975
1340
  // src/v2/earn-deposits/api.ts
@@ -996,7 +1361,7 @@ async function getDeposits(params, context) {
996
1361
  }
997
1362
 
998
1363
  // src/v2/earn-deposits/queries.ts
999
- var earnDepositsQueries = (0, import_query_key_factory5.createQueryKeys)("earnDeposits", {
1364
+ var earnDepositsQueries = (0, import_query_key_factory7.createQueryKeys)("earnDeposits", {
1000
1365
  byParams: (params) => ({
1001
1366
  queryKey: [params],
1002
1367
  queryFn: (context) => getDeposits(params, context)
@@ -1004,88 +1369,15 @@ var earnDepositsQueries = (0, import_query_key_factory5.createQueryKeys)("earnDe
1004
1369
  });
1005
1370
 
1006
1371
  // src/v2/earn-actions/queries.ts
1007
- var import_query_key_factory6 = require("@lukemorales/query-key-factory");
1008
- var earnActionsQueries = (0, import_query_key_factory6.createQueryKeys)("earnActions", {
1372
+ var import_query_key_factory8 = require("@lukemorales/query-key-factory");
1373
+ var earnActionsQueries = (0, import_query_key_factory8.createQueryKeys)("earnActions", {
1009
1374
  // Placeholder for potential future GET endpoints
1010
1375
  // e.g., getting action history
1011
1376
  });
1012
1377
  var earnInteractionsQueries = earnActionsQueries;
1013
1378
 
1014
1379
  // src/v2/products/queries.ts
1015
- var import_query_key_factory7 = require("@lukemorales/query-key-factory");
1016
-
1017
- // src/v2/products/schema.ts
1018
- var import_zod7 = require("zod");
1019
- var ProductTypeSchema = import_zod7.z.enum(["deal", "campaign"]);
1020
- var ProductStatusSchema = import_zod7.z.enum(["draft", "active", "paused", "ended"]);
1021
- var TurtleOrganizationSchema = import_zod7.z.object({
1022
- id: import_zod7.z.string().uuid(),
1023
- name: import_zod7.z.string(),
1024
- iconUrl: import_zod7.z.string(),
1025
- landingUrl: import_zod7.z.string()
1026
- });
1027
- var ProductSchema = import_zod7.z.object({
1028
- id: import_zod7.z.string().uuid(),
1029
- name: import_zod7.z.string(),
1030
- title: import_zod7.z.string(),
1031
- subtitle: import_zod7.z.string(),
1032
- description: import_zod7.z.string(),
1033
- logoUrl: import_zod7.z.string(),
1034
- productUrl: import_zod7.z.string(),
1035
- startedAt: import_zod7.z.string().optional().nullable(),
1036
- endedAt: import_zod7.z.string().optional().nullable(),
1037
- status: ProductStatusSchema,
1038
- productType: ProductTypeSchema,
1039
- organization: TurtleOrganizationSchema.nullable(),
1040
- opportunities: import_zod7.z.array(opportunitySchema).nullish(),
1041
- createdAt: import_zod7.z.string()
1042
- });
1043
- var CreateProductInputSchema = import_zod7.z.object({
1044
- product: ProductSchema.omit({
1045
- id: true,
1046
- createdAt: true,
1047
- organization: true
1048
- }),
1049
- organizationId: import_zod7.z.string().uuid()
1050
- });
1051
- var UpdateProductInputSchema = import_zod7.z.object({
1052
- product: ProductSchema.partial().omit({
1053
- organization: true
1054
- })
1055
- // organizationId: z.string().uuid(),
1056
- });
1057
- var ProductsResponseSchema = import_zod7.z.object({
1058
- products: import_zod7.z.array(ProductSchema),
1059
- total: import_zod7.z.number().optional()
1060
- });
1061
- var ProductResponseSchema = import_zod7.z.object({
1062
- product: ProductSchema
1063
- });
1064
- var CreateProductResponseSchema = import_zod7.z.object({
1065
- id: import_zod7.z.string().uuid()
1066
- });
1067
- var UpdateProductResponseSchema = import_zod7.z.object({
1068
- success: import_zod7.z.boolean()
1069
- });
1070
- var fileSchema = import_zod7.z.any().refine((value) => {
1071
- if (!value) return false;
1072
- if (!(value instanceof File)) return false;
1073
- if (value.size > 10 * 1024 * 1024) return false;
1074
- return true;
1075
- }, "Invalid file");
1076
- var UploadProductLogoRequestSchema = import_zod7.z.object({
1077
- // Form data - file upload (required)
1078
- file: fileSchema,
1079
- // Form data - optional filename override
1080
- filename: import_zod7.z.string().optional()
1081
- });
1082
- var UploadProductLogoResponseSchema = import_zod7.z.object({
1083
- url: import_zod7.z.string().url(),
1084
- error: import_zod7.z.string().optional()
1085
- });
1086
- var ProductFiltersSchema = import_zod7.z.object({
1087
- organizationId: import_zod7.z.string().uuid().optional()
1088
- });
1380
+ var import_query_key_factory9 = require("@lukemorales/query-key-factory");
1089
1381
 
1090
1382
  // src/v2/products/api.ts
1091
1383
  async function getProducts(filters) {
@@ -1096,7 +1388,7 @@ async function getProducts(filters) {
1096
1388
  const data = await apiClient.fetch(endpoint, {
1097
1389
  method: "GET"
1098
1390
  });
1099
- const result = ProductsResponseSchema.safeParse(data);
1391
+ const result = productsResponseSchema.safeParse(data);
1100
1392
  if (result.success === false) {
1101
1393
  console.log("[ZOD ERROR]", result.error);
1102
1394
  throw new Error(`Failed to parse products: ${result.error.message}`);
@@ -1108,7 +1400,7 @@ async function getProduct(id) {
1108
1400
  const data = await apiClient.fetch(endpoint, {
1109
1401
  method: "GET"
1110
1402
  });
1111
- const result = ProductResponseSchema.safeParse(data);
1403
+ const result = productResponseSchema.safeParse(data);
1112
1404
  if (result.success === false) {
1113
1405
  console.log("[ZOD ERROR]", result.error);
1114
1406
  throw new Error(`Failed to parse product: ${result.error.message}`);
@@ -1121,7 +1413,7 @@ async function createProduct(input) {
1121
1413
  method: "POST",
1122
1414
  body: input
1123
1415
  });
1124
- const result = CreateProductResponseSchema.safeParse(data);
1416
+ const result = createProductResponseSchema.safeParse(data);
1125
1417
  if (result.success === false) {
1126
1418
  console.log("[ZOD ERROR]", result.error);
1127
1419
  throw new Error(`Failed to create product: ${result.error.message}`);
@@ -1134,7 +1426,7 @@ async function updateProduct(input) {
1134
1426
  method: "PUT",
1135
1427
  body: input
1136
1428
  });
1137
- const result = UpdateProductResponseSchema.safeParse(data);
1429
+ const result = updateProductResponseSchema.safeParse(data);
1138
1430
  if (result.success === false) {
1139
1431
  console.log("[ZOD ERROR]", result.error);
1140
1432
  throw new Error(`Failed to update product: ${result.error.message}`);
@@ -1146,7 +1438,7 @@ async function deleteProduct(id) {
1146
1438
  const data = await apiClient.fetch(endpoint, {
1147
1439
  method: "DELETE"
1148
1440
  });
1149
- const result = ProductResponseSchema.safeParse(data);
1441
+ const result = productResponseSchema.safeParse(data);
1150
1442
  if (result.success === false) {
1151
1443
  console.log("[ZOD ERROR]", result.error);
1152
1444
  throw new Error(`Failed to delete product: ${result.error.message}`);
@@ -1163,7 +1455,7 @@ async function uploadProductLogo({
1163
1455
  method: "POST",
1164
1456
  body: formData
1165
1457
  });
1166
- const result = UploadProductLogoResponseSchema.safeParse(data);
1458
+ const result = uploadProductLogoResponseSchema.safeParse(data);
1167
1459
  if (result.success === false) {
1168
1460
  console.log("[ZOD ERROR]", result.error);
1169
1461
  throw new Error(`Failed to upload product logo: ${result.error.message}`);
@@ -1172,7 +1464,7 @@ async function uploadProductLogo({
1172
1464
  }
1173
1465
 
1174
1466
  // src/v2/products/queries.ts
1175
- var productsQueries = (0, import_query_key_factory7.createQueryKeys)("products", {
1467
+ var productsQueries = (0, import_query_key_factory9.createQueryKeys)("products", {
1176
1468
  // Get all products (no filters)
1177
1469
  all: () => ({
1178
1470
  queryKey: ["all"],
@@ -1189,25 +1481,25 @@ var productsQueries = (0, import_query_key_factory7.createQueryKeys)("products",
1189
1481
  });
1190
1482
 
1191
1483
  // src/v2/enso-balances/queries.ts
1192
- var import_query_key_factory8 = require("@lukemorales/query-key-factory");
1484
+ var import_query_key_factory10 = require("@lukemorales/query-key-factory");
1193
1485
 
1194
1486
  // src/v2/enso-balances/schemas.ts
1195
- var import_zod8 = require("zod");
1196
- var balanceTokenSchema = import_zod8.z.object({
1197
- address: import_zod8.z.string(),
1198
- name: import_zod8.z.string(),
1199
- symbol: import_zod8.z.string(),
1200
- logos: import_zod8.z.array(import_zod8.z.string()),
1201
- decimals: import_zod8.z.number(),
1202
- chain: import_zod8.z.number(),
1203
- price: import_zod8.z.number().nullable().optional()
1204
- });
1205
- var walletBalanceSchema = import_zod8.z.object({
1487
+ var import_zod12 = require("zod");
1488
+ var balanceTokenSchema = import_zod12.z.object({
1489
+ address: import_zod12.z.string(),
1490
+ name: import_zod12.z.string(),
1491
+ symbol: import_zod12.z.string(),
1492
+ logos: import_zod12.z.array(import_zod12.z.string()),
1493
+ decimals: import_zod12.z.number(),
1494
+ chain: import_zod12.z.number(),
1495
+ price: import_zod12.z.number().nullable().optional()
1496
+ });
1497
+ var walletBalanceSchema = import_zod12.z.object({
1206
1498
  token: balanceTokenSchema,
1207
- amount: import_zod8.z.string()
1499
+ amount: import_zod12.z.string()
1208
1500
  });
1209
- var walletBalancesResponseSchema = import_zod8.z.object({
1210
- balances: import_zod8.z.array(walletBalanceSchema)
1501
+ var walletBalancesResponseSchema = import_zod12.z.object({
1502
+ balances: import_zod12.z.array(walletBalanceSchema)
1211
1503
  });
1212
1504
 
1213
1505
  // src/v2/enso-balances/api.ts
@@ -1232,7 +1524,7 @@ async function getWalletBalances(params, context) {
1232
1524
  }
1233
1525
 
1234
1526
  // src/v2/enso-balances/queries.ts
1235
- var ensoBalancesQueries = (0, import_query_key_factory8.createQueryKeys)("ensoBalances", {
1527
+ var ensoBalancesQueries = (0, import_query_key_factory10.createQueryKeys)("ensoBalances", {
1236
1528
  byParams: (params) => ({
1237
1529
  queryKey: [params],
1238
1530
  queryFn: (context) => getWalletBalances(params, context)
@@ -1240,13 +1532,65 @@ var ensoBalancesQueries = (0, import_query_key_factory8.createQueryKeys)("ensoBa
1240
1532
  });
1241
1533
 
1242
1534
  // src/v2/widget/queries.ts
1243
- var import_query_key_factory9 = require("@lukemorales/query-key-factory");
1535
+ var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1244
1536
 
1245
1537
  // src/v2/widget/schema.ts
1246
- var import_zod9 = require("zod");
1247
- var widgetOpportunitiesResponseSchema = import_zod9.z.object({
1248
- opportunities: import_zod9.z.array(opportunitySchema).nullable(),
1249
- total: import_zod9.z.number().int()
1538
+ var import_zod13 = require("zod");
1539
+
1540
+ // src/v2/opportunities/hooks.ts
1541
+ var import_react_query4 = require("@tanstack/react-query");
1542
+ function useOpportunities(options) {
1543
+ return (0, import_react_query4.useQuery)({
1544
+ ...opportunitiesQueries.all,
1545
+ ...queryDefaults,
1546
+ select: (data) => {
1547
+ const uniqueChainsMap = new Map(
1548
+ data.opportunities.map((opportunity) => opportunity.receiptToken?.chain).filter((chain) => chain !== void 0).map((chain) => [chain.id, chain])
1549
+ );
1550
+ const chains = Array.from(uniqueChainsMap.values());
1551
+ return {
1552
+ ...data,
1553
+ chains
1554
+ };
1555
+ }
1556
+ });
1557
+ }
1558
+ function useOpportunity({ id, ...options }) {
1559
+ return (0, import_react_query4.useQuery)({
1560
+ ...opportunitiesQueries.byId(id),
1561
+ ...queryDefaults,
1562
+ select: (data) => {
1563
+ return {
1564
+ ...data,
1565
+ chain: data.receiptToken?.chain
1566
+ };
1567
+ }
1568
+ });
1569
+ }
1570
+ function useOpportunitiesPaginated({
1571
+ params,
1572
+ enabled = true
1573
+ } = {}) {
1574
+ return (0, import_react_query4.useQuery)({
1575
+ ...opportunitiesQueries.paginated(params),
1576
+ ...queryDefaults,
1577
+ enabled
1578
+ });
1579
+ }
1580
+ function useOpportunitiesFilterOptions({
1581
+ enabled = true
1582
+ } = {}) {
1583
+ return (0, import_react_query4.useQuery)({
1584
+ ...opportunitiesQueries.filterOptions,
1585
+ ...queryDefaults,
1586
+ enabled
1587
+ });
1588
+ }
1589
+
1590
+ // src/v2/widget/schema.ts
1591
+ var widgetOpportunitiesResponseSchema = import_zod13.z.object({
1592
+ opportunities: import_zod13.z.array(opportunitySchema).nullable(),
1593
+ total: import_zod13.z.number().int()
1250
1594
  });
1251
1595
 
1252
1596
  // src/v2/widget/api.ts
@@ -1264,7 +1608,7 @@ async function getWidgetOpportunities(distributorId, context) {
1264
1608
  }
1265
1609
 
1266
1610
  // src/v2/widget/queries.ts
1267
- var widgetQueries = (0, import_query_key_factory9.createQueryKeys)("widget", {
1611
+ var widgetQueries = (0, import_query_key_factory11.createQueryKeys)("widget", {
1268
1612
  opportunities: (distributorId) => ({
1269
1613
  queryKey: [distributorId],
1270
1614
  queryFn: (context) => getWidgetOpportunities(distributorId, context)
@@ -1272,245 +1616,245 @@ var widgetQueries = (0, import_query_key_factory9.createQueryKeys)("widget", {
1272
1616
  });
1273
1617
 
1274
1618
  // src/v2/streams/queries.ts
1275
- var import_query_key_factory10 = require("@lukemorales/query-key-factory");
1619
+ var import_query_key_factory12 = require("@lukemorales/query-key-factory");
1276
1620
 
1277
1621
  // src/v2/streams/schemas.ts
1278
- var import_zod10 = require("zod");
1279
- var snapshotSchema = import_zod10.z.object({
1280
- amountBase: import_zod10.z.string(),
1281
- amountDistributed: import_zod10.z.string(),
1282
- createdAt: import_zod10.z.string().datetime(),
1283
- rootHash: import_zod10.z.string().nullable(),
1284
- timestamp: import_zod10.z.string().datetime(),
1285
- updatedAt: import_zod10.z.string().datetime(),
1286
- userCount: import_zod10.z.number().nullable().optional(),
1287
- tvl: import_zod10.z.string().nullable().optional(),
1288
- baseTvl: import_zod10.z.string().nullable().optional()
1289
- });
1290
- var streamPointSchema = import_zod10.z.object({
1291
- id: import_zod10.z.string(),
1292
- orgId: import_zod10.z.string().optional(),
1293
- symbol: import_zod10.z.string(),
1294
- name: import_zod10.z.string(),
1295
- decimals: import_zod10.z.coerce.number().optional(),
1296
- logoUrl: import_zod10.z.string().url().nullable().optional(),
1297
- createdAt: import_zod10.z.string().optional(),
1298
- updatedAt: import_zod10.z.string().optional(),
1299
- deletedAt: import_zod10.z.string().nullable().optional(),
1622
+ var import_zod14 = require("zod");
1623
+ var snapshotSchema = import_zod14.z.object({
1624
+ amountBase: import_zod14.z.string(),
1625
+ amountDistributed: import_zod14.z.string(),
1626
+ createdAt: import_zod14.z.string().datetime(),
1627
+ rootHash: import_zod14.z.string().nullable(),
1628
+ timestamp: import_zod14.z.string().datetime(),
1629
+ updatedAt: import_zod14.z.string().datetime(),
1630
+ userCount: import_zod14.z.number().nullable().optional(),
1631
+ tvl: import_zod14.z.string().nullable().optional(),
1632
+ baseTvl: import_zod14.z.string().nullable().optional()
1633
+ });
1634
+ var streamPointSchema = import_zod14.z.object({
1635
+ id: import_zod14.z.string(),
1636
+ orgId: import_zod14.z.string().optional(),
1637
+ symbol: import_zod14.z.string(),
1638
+ name: import_zod14.z.string(),
1639
+ decimals: import_zod14.z.coerce.number().optional(),
1640
+ logoUrl: import_zod14.z.string().url().nullable().optional(),
1641
+ createdAt: import_zod14.z.string().optional(),
1642
+ updatedAt: import_zod14.z.string().optional(),
1643
+ deletedAt: import_zod14.z.string().nullable().optional(),
1300
1644
  organization: organizationSchema.nullable().optional()
1301
1645
  });
1302
- var customArgsTokensPerUsdSchema = import_zod10.z.object({
1303
- tokensPerUSD: import_zod10.z.string(),
1304
- targetChainId: import_zod10.z.number(),
1305
- targetTokenAddress: import_zod10.z.string()
1306
- });
1307
- var customArgsAprSchema = import_zod10.z.object({
1308
- apr: import_zod10.z.string(),
1309
- targetChainId: import_zod10.z.number(),
1310
- targetTokenAddress: import_zod10.z.string()
1311
- });
1312
- var chainSchema3 = import_zod10.z.object({
1313
- chainId: import_zod10.z.coerce.number(),
1314
- ecosystem: import_zod10.z.string(),
1315
- explorerUrl: import_zod10.z.string(),
1316
- id: import_zod10.z.string().uuid(),
1317
- isTestnet: import_zod10.z.boolean(),
1318
- logoUrl: import_zod10.z.string(),
1319
- name: import_zod10.z.string(),
1320
- slug: import_zod10.z.string(),
1321
- status: import_zod10.z.string()
1322
- });
1323
- var rewardTokenSchema = import_zod10.z.object({
1324
- active: import_zod10.z.boolean(),
1325
- address: import_zod10.z.string(),
1326
- canonicalAssetId: import_zod10.z.string().uuid(),
1327
- chain: chainSchema3,
1328
- decimals: import_zod10.z.number(),
1329
- id: import_zod10.z.string().uuid(),
1330
- isNative: import_zod10.z.boolean(),
1331
- logoUrl: import_zod10.z.string(),
1332
- name: import_zod10.z.string(),
1333
- priceUsd: import_zod10.z.number(),
1334
- symbol: import_zod10.z.string(),
1335
- streamsMinAmount: import_zod10.z.string().nullable().optional()
1646
+ var customArgsTokensPerUsdSchema = import_zod14.z.object({
1647
+ tokensPerUSD: import_zod14.z.string(),
1648
+ targetChainId: import_zod14.z.number(),
1649
+ targetTokenAddress: import_zod14.z.string()
1650
+ });
1651
+ var customArgsAprSchema = import_zod14.z.object({
1652
+ apr: import_zod14.z.string(),
1653
+ targetChainId: import_zod14.z.number(),
1654
+ targetTokenAddress: import_zod14.z.string()
1655
+ });
1656
+ var chainSchema2 = import_zod14.z.object({
1657
+ chainId: import_zod14.z.coerce.number(),
1658
+ ecosystem: import_zod14.z.string(),
1659
+ explorerUrl: import_zod14.z.string(),
1660
+ id: import_zod14.z.string().uuid(),
1661
+ isTestnet: import_zod14.z.boolean(),
1662
+ logoUrl: import_zod14.z.string(),
1663
+ name: import_zod14.z.string(),
1664
+ slug: import_zod14.z.string(),
1665
+ status: import_zod14.z.string()
1666
+ });
1667
+ var rewardTokenSchema = import_zod14.z.object({
1668
+ active: import_zod14.z.boolean(),
1669
+ address: import_zod14.z.string(),
1670
+ canonicalAssetId: import_zod14.z.string().uuid(),
1671
+ chain: chainSchema2,
1672
+ decimals: import_zod14.z.number(),
1673
+ id: import_zod14.z.string().uuid(),
1674
+ isNative: import_zod14.z.boolean(),
1675
+ logoUrl: import_zod14.z.string(),
1676
+ name: import_zod14.z.string(),
1677
+ priceUsd: import_zod14.z.number(),
1678
+ symbol: import_zod14.z.string(),
1679
+ streamsMinAmount: import_zod14.z.string().nullable().optional()
1336
1680
  }).nullable();
1337
- var adaptersSchema = import_zod10.z.array(
1338
- import_zod10.z.object({
1339
- type: import_zod10.z.string(),
1340
- params: import_zod10.z.record(import_zod10.z.string(), import_zod10.z.number())
1681
+ var adaptersSchema = import_zod14.z.array(
1682
+ import_zod14.z.object({
1683
+ type: import_zod14.z.string(),
1684
+ params: import_zod14.z.record(import_zod14.z.string(), import_zod14.z.number())
1341
1685
  })
1342
1686
  );
1343
- var feeTierSchema = import_zod10.z.object({
1344
- maxTVL: import_zod10.z.string().nullable(),
1687
+ var feeTierSchema = import_zod14.z.object({
1688
+ maxTVL: import_zod14.z.string().nullable(),
1345
1689
  // represents a USD amount
1346
- feePct: import_zod10.z.string()
1690
+ feePct: import_zod14.z.string()
1347
1691
  // represents a percentage (e.g. 0.15 means 15%)
1348
1692
  });
1349
- var feeScheduleSchema = import_zod10.z.object({
1350
- feeTiers: import_zod10.z.array(feeTierSchema),
1351
- until: import_zod10.z.string().datetime().nullable()
1693
+ var feeScheduleSchema = import_zod14.z.object({
1694
+ feeTiers: import_zod14.z.array(feeTierSchema),
1695
+ until: import_zod14.z.string().datetime().nullable()
1352
1696
  });
1353
- var feeSnapshotSchema = import_zod10.z.object({
1354
- timestamp: import_zod10.z.string().datetime(),
1355
- tvl: import_zod10.z.string().nullable(),
1697
+ var feeSnapshotSchema = import_zod14.z.object({
1698
+ timestamp: import_zod14.z.string().datetime(),
1699
+ tvl: import_zod14.z.string().nullable(),
1356
1700
  // means USD amount
1357
- accumulatedFee: import_zod10.z.string(),
1701
+ accumulatedFee: import_zod14.z.string(),
1358
1702
  // means USD amount
1359
- createdAt: import_zod10.z.string().datetime(),
1360
- updatedAt: import_zod10.z.string().datetime()
1361
- });
1362
- var feeSchema = import_zod10.z.object({
1363
- managementFeeSchedules: import_zod10.z.array(feeScheduleSchema),
1364
- createdAt: import_zod10.z.string().datetime(),
1365
- updatedAt: import_zod10.z.string().datetime(),
1366
- lastFeeSnapshotTimestamp: import_zod10.z.string().datetime(),
1367
- feeComputationPaused: import_zod10.z.boolean(),
1368
- feeSnapshots: import_zod10.z.array(feeSnapshotSchema).optional(),
1703
+ createdAt: import_zod14.z.string().datetime(),
1704
+ updatedAt: import_zod14.z.string().datetime()
1705
+ });
1706
+ var feeSchema = import_zod14.z.object({
1707
+ managementFeeSchedules: import_zod14.z.array(feeScheduleSchema),
1708
+ createdAt: import_zod14.z.string().datetime(),
1709
+ updatedAt: import_zod14.z.string().datetime(),
1710
+ lastFeeSnapshotTimestamp: import_zod14.z.string().datetime(),
1711
+ feeComputationPaused: import_zod14.z.boolean(),
1712
+ feeSnapshots: import_zod14.z.array(feeSnapshotSchema).optional(),
1369
1713
  lastFeeSnapshot: feeSnapshotSchema.nullable()
1370
1714
  });
1371
- var streamSchema = import_zod10.z.object({
1715
+ var streamSchema = import_zod14.z.object({
1372
1716
  adapters: adaptersSchema,
1373
- admin: import_zod10.z.string().nullable(),
1374
- chainId: import_zod10.z.number().nullable(),
1375
- chargedFee: import_zod10.z.string().nullable(),
1376
- claimPaused: import_zod10.z.boolean(),
1377
- contractAddress: import_zod10.z.string().nullable(),
1378
- createdAt: import_zod10.z.string().datetime(),
1379
- creationConfirmedAt: import_zod10.z.string().datetime().nullable(),
1380
- customArgs: import_zod10.z.union([customArgsTokensPerUsdSchema, customArgsAprSchema]),
1381
- endTimestamp: import_zod10.z.string().datetime().nullable(),
1717
+ admin: import_zod14.z.string().nullable(),
1718
+ chainId: import_zod14.z.number().nullable(),
1719
+ chargedFee: import_zod14.z.string().nullable(),
1720
+ claimPaused: import_zod14.z.boolean(),
1721
+ contractAddress: import_zod14.z.string().nullable(),
1722
+ createdAt: import_zod14.z.string().datetime(),
1723
+ creationConfirmedAt: import_zod14.z.string().datetime().nullable(),
1724
+ customArgs: import_zod14.z.union([customArgsTokensPerUsdSchema, customArgsAprSchema]),
1725
+ endTimestamp: import_zod14.z.string().datetime().nullable(),
1382
1726
  fee: feeSchema.nullable(),
1383
- hashCommitmentPaused: import_zod10.z.boolean(),
1384
- id: import_zod10.z.string().uuid(),
1727
+ hashCommitmentPaused: import_zod14.z.boolean(),
1728
+ id: import_zod14.z.string().uuid(),
1385
1729
  lastSnapshot: snapshotSchema.nullable(),
1386
- merkleTreeComputationPaused: import_zod10.z.boolean(),
1387
- orgId: import_zod10.z.string().uuid(),
1730
+ merkleTreeComputationPaused: import_zod14.z.boolean(),
1731
+ orgId: import_zod14.z.string().uuid(),
1388
1732
  point: streamPointSchema.nullable().optional(),
1389
1733
  rewardToken: rewardTokenSchema,
1390
- snapshotComputationPaused: import_zod10.z.boolean(),
1391
- snapshots: import_zod10.z.array(snapshotSchema).optional(),
1392
- startTimestamp: import_zod10.z.string().datetime(),
1393
- strategy: import_zod10.z.string(),
1394
- totalAmount: import_zod10.z.string().nullable(),
1395
- type: import_zod10.z.number(),
1396
- updatedAt: import_zod10.z.string().datetime(),
1397
- userId: import_zod10.z.string().uuid()
1398
- });
1399
- var getStreamsOutputSchema = import_zod10.z.object({
1400
- streams: import_zod10.z.array(streamSchema)
1401
- });
1402
- var getStreamPointsOutputSchema = import_zod10.z.object({
1403
- points: import_zod10.z.array(streamPointSchema)
1404
- });
1405
- var createStreamPointBodySchema = import_zod10.z.object({
1406
- name: import_zod10.z.string(),
1407
- symbol: import_zod10.z.string(),
1408
- decimals: import_zod10.z.number().optional(),
1409
- logoUrl: import_zod10.z.string().url().nullable().optional()
1410
- });
1411
- var createStreamPointOutputSchema = import_zod10.z.object({
1734
+ snapshotComputationPaused: import_zod14.z.boolean(),
1735
+ snapshots: import_zod14.z.array(snapshotSchema).optional(),
1736
+ startTimestamp: import_zod14.z.string().datetime(),
1737
+ strategy: import_zod14.z.string(),
1738
+ totalAmount: import_zod14.z.string().nullable(),
1739
+ type: import_zod14.z.number(),
1740
+ updatedAt: import_zod14.z.string().datetime(),
1741
+ userId: import_zod14.z.string().uuid()
1742
+ });
1743
+ var getStreamsOutputSchema = import_zod14.z.object({
1744
+ streams: import_zod14.z.array(streamSchema)
1745
+ });
1746
+ var getStreamPointsOutputSchema = import_zod14.z.object({
1747
+ points: import_zod14.z.array(streamPointSchema)
1748
+ });
1749
+ var createStreamPointBodySchema = import_zod14.z.object({
1750
+ name: import_zod14.z.string(),
1751
+ symbol: import_zod14.z.string(),
1752
+ decimals: import_zod14.z.number().optional(),
1753
+ logoUrl: import_zod14.z.string().url().nullable().optional()
1754
+ });
1755
+ var createStreamPointOutputSchema = import_zod14.z.object({
1412
1756
  point: streamPointSchema
1413
1757
  });
1414
- var getStreamsSupportedChainsOutputSchema = import_zod10.z.object({
1415
- success: import_zod10.z.boolean(),
1416
- chains: import_zod10.z.array(
1417
- import_zod10.z.object({
1418
- id: import_zod10.z.string(),
1419
- name: import_zod10.z.string(),
1420
- slug: import_zod10.z.string(),
1421
- chainId: import_zod10.z.number(),
1422
- logoUrl: import_zod10.z.string(),
1423
- ecosystem: import_zod10.z.string(),
1424
- status: import_zod10.z.string(),
1425
- explorerUrl: import_zod10.z.string(),
1426
- streamFactory: import_zod10.z.string()
1758
+ var getStreamsSupportedChainsOutputSchema = import_zod14.z.object({
1759
+ success: import_zod14.z.boolean(),
1760
+ chains: import_zod14.z.array(
1761
+ import_zod14.z.object({
1762
+ id: import_zod14.z.string(),
1763
+ name: import_zod14.z.string(),
1764
+ slug: import_zod14.z.string(),
1765
+ chainId: import_zod14.z.number(),
1766
+ logoUrl: import_zod14.z.string(),
1767
+ ecosystem: import_zod14.z.string(),
1768
+ status: import_zod14.z.string(),
1769
+ explorerUrl: import_zod14.z.string(),
1770
+ streamFactory: import_zod14.z.string()
1427
1771
  // Address as string
1428
1772
  })
1429
1773
  )
1430
1774
  });
1431
- var streamSignatureRequestInputSchema = import_zod10.z.object({
1775
+ var streamSignatureRequestInputSchema = import_zod14.z.object({
1432
1776
  adapters: adaptersSchema,
1433
- chainId: import_zod10.z.number().nullable(),
1434
- customArgs: import_zod10.z.intersection(
1435
- import_zod10.z.object({
1436
- targetChainId: import_zod10.z.number(),
1437
- targetTokenAddress: import_zod10.z.string()
1777
+ chainId: import_zod14.z.number().nullable(),
1778
+ customArgs: import_zod14.z.intersection(
1779
+ import_zod14.z.object({
1780
+ targetChainId: import_zod14.z.number(),
1781
+ targetTokenAddress: import_zod14.z.string()
1438
1782
  }),
1439
- import_zod10.z.union([import_zod10.z.object({ tokensPerUSD: import_zod10.z.string() }), import_zod10.z.object({ apr: import_zod10.z.string() })])
1783
+ import_zod14.z.union([import_zod14.z.object({ tokensPerUSD: import_zod14.z.string() }), import_zod14.z.object({ apr: import_zod14.z.string() })])
1440
1784
  ),
1441
- endTimestamp: import_zod10.z.string().nullable(),
1442
- pointId: import_zod10.z.string().uuid().nullable(),
1443
- rewardToken: import_zod10.z.string().nullable(),
1444
- startTimestamp: import_zod10.z.string(),
1445
- totalAmount: import_zod10.z.string().nullable(),
1446
- type: import_zod10.z.number(),
1447
- walletAddress: import_zod10.z.string().nullable()
1448
- });
1449
- var streamSignatureRequestOutputSchema = import_zod10.z.object({
1450
- success: import_zod10.z.boolean(),
1451
- message: import_zod10.z.string(),
1452
- txParams: import_zod10.z.object({
1453
- chainId: import_zod10.z.number(),
1454
- sender: import_zod10.z.string(),
1455
- params: import_zod10.z.object({
1456
- deadline: import_zod10.z.number(),
1457
- params: import_zod10.z.object({
1458
- StreamId: import_zod10.z.array(import_zod10.z.number()),
1459
- RewardToken: import_zod10.z.string(),
1460
- NetTotalAmount: import_zod10.z.string(),
1461
- FeeAmount: import_zod10.z.string()
1785
+ endTimestamp: import_zod14.z.string().nullable(),
1786
+ pointId: import_zod14.z.string().uuid().nullable(),
1787
+ rewardToken: import_zod14.z.string().nullable(),
1788
+ startTimestamp: import_zod14.z.string(),
1789
+ totalAmount: import_zod14.z.string().nullable(),
1790
+ type: import_zod14.z.number(),
1791
+ walletAddress: import_zod14.z.string().nullable()
1792
+ });
1793
+ var streamSignatureRequestOutputSchema = import_zod14.z.object({
1794
+ success: import_zod14.z.boolean(),
1795
+ message: import_zod14.z.string(),
1796
+ txParams: import_zod14.z.object({
1797
+ chainId: import_zod14.z.number(),
1798
+ sender: import_zod14.z.string(),
1799
+ params: import_zod14.z.object({
1800
+ deadline: import_zod14.z.number(),
1801
+ params: import_zod14.z.object({
1802
+ StreamId: import_zod14.z.array(import_zod14.z.number()),
1803
+ RewardToken: import_zod14.z.string(),
1804
+ NetTotalAmount: import_zod14.z.string(),
1805
+ FeeAmount: import_zod14.z.string()
1462
1806
  }),
1463
- signature: import_zod10.z.string()
1807
+ signature: import_zod14.z.string()
1464
1808
  })
1465
1809
  }).nullable()
1466
1810
  });
1467
- var getStreamsQuerySchema = import_zod10.z.object({
1468
- streamId: import_zod10.z.string().optional(),
1469
- userId: import_zod10.z.string().optional(),
1470
- organizationId: import_zod10.z.string().optional(),
1471
- withSnapshots: import_zod10.z.boolean().optional(),
1472
- usersCount: import_zod10.z.boolean().optional()
1473
- });
1474
- var getStreamPointsQuerySchema = import_zod10.z.object({
1475
- id: import_zod10.z.string().optional().nullable(),
1476
- organizationId: import_zod10.z.string().optional().nullable(),
1477
- symbol: import_zod10.z.string().optional().nullable(),
1478
- name: import_zod10.z.string().optional().nullable()
1479
- });
1480
- var streamWalletSnapshotSchema = import_zod10.z.object({
1481
- timestamp: import_zod10.z.string().datetime(),
1482
- rewardsAccumulated: import_zod10.z.string(),
1483
- rewardsAccumulatedBase: import_zod10.z.string(),
1484
- createdAt: import_zod10.z.string().datetime(),
1485
- updatedAt: import_zod10.z.string().datetime(),
1486
- tvl: import_zod10.z.string().nullable().optional()
1487
- });
1488
- var streamWalletSchema = import_zod10.z.object({
1489
- userAddress: import_zod10.z.string(),
1811
+ var getStreamsQuerySchema = import_zod14.z.object({
1812
+ streamId: import_zod14.z.string().optional(),
1813
+ userId: import_zod14.z.string().optional(),
1814
+ organizationId: import_zod14.z.string().optional(),
1815
+ withSnapshots: import_zod14.z.boolean().optional(),
1816
+ usersCount: import_zod14.z.boolean().optional()
1817
+ });
1818
+ var getStreamPointsQuerySchema = import_zod14.z.object({
1819
+ id: import_zod14.z.string().optional().nullable(),
1820
+ organizationId: import_zod14.z.string().optional().nullable(),
1821
+ symbol: import_zod14.z.string().optional().nullable(),
1822
+ name: import_zod14.z.string().optional().nullable()
1823
+ });
1824
+ var streamWalletSnapshotSchema = import_zod14.z.object({
1825
+ timestamp: import_zod14.z.string().datetime(),
1826
+ rewardsAccumulated: import_zod14.z.string(),
1827
+ rewardsAccumulatedBase: import_zod14.z.string(),
1828
+ createdAt: import_zod14.z.string().datetime(),
1829
+ updatedAt: import_zod14.z.string().datetime(),
1830
+ tvl: import_zod14.z.string().nullable().optional()
1831
+ });
1832
+ var streamWalletSchema = import_zod14.z.object({
1833
+ userAddress: import_zod14.z.string(),
1490
1834
  lastSnapshot: streamWalletSnapshotSchema
1491
1835
  });
1492
- var paginationSchema = import_zod10.z.object({
1493
- limit: import_zod10.z.number(),
1494
- page: import_zod10.z.number(),
1495
- total: import_zod10.z.number(),
1496
- totalPages: import_zod10.z.number()
1836
+ var paginationSchema = import_zod14.z.object({
1837
+ limit: import_zod14.z.number(),
1838
+ page: import_zod14.z.number(),
1839
+ total: import_zod14.z.number(),
1840
+ totalPages: import_zod14.z.number()
1497
1841
  });
1498
- var getStreamWalletsResponseSchema = import_zod10.z.object({
1499
- data: import_zod10.z.array(streamWalletSchema),
1842
+ var getStreamWalletsResponseSchema = import_zod14.z.object({
1843
+ data: import_zod14.z.array(streamWalletSchema),
1500
1844
  pagination: paginationSchema
1501
1845
  });
1502
- var getStreamWalletsQuerySchema = import_zod10.z.object({
1503
- streamId: import_zod10.z.string(),
1504
- page: import_zod10.z.number().optional(),
1505
- limit: import_zod10.z.number().optional()
1846
+ var getStreamWalletsQuerySchema = import_zod14.z.object({
1847
+ streamId: import_zod14.z.string(),
1848
+ page: import_zod14.z.number().optional(),
1849
+ limit: import_zod14.z.number().optional()
1506
1850
  });
1507
- var streamWalletDetailsSchema = import_zod10.z.object({
1508
- streamId: import_zod10.z.string(),
1509
- userAddress: import_zod10.z.string(),
1510
- snapshots: import_zod10.z.array(streamWalletSnapshotSchema),
1851
+ var streamWalletDetailsSchema = import_zod14.z.object({
1852
+ streamId: import_zod14.z.string(),
1853
+ userAddress: import_zod14.z.string(),
1854
+ snapshots: import_zod14.z.array(streamWalletSnapshotSchema),
1511
1855
  stream: streamSchema
1512
1856
  });
1513
- var getStreamWalletDetailsResponseSchema = import_zod10.z.object({
1857
+ var getStreamWalletDetailsResponseSchema = import_zod14.z.object({
1514
1858
  wallet: streamWalletDetailsSchema
1515
1859
  });
1516
1860
 
@@ -1619,7 +1963,7 @@ async function requestStreamSignature(organizationId, input) {
1619
1963
  }
1620
1964
 
1621
1965
  // src/v2/streams/queries.ts
1622
- var streamsQueries = (0, import_query_key_factory10.createQueryKeys)("streams", {
1966
+ var streamsQueries = (0, import_query_key_factory12.createQueryKeys)("streams", {
1623
1967
  list: (query) => ({
1624
1968
  queryKey: [query ?? "all"],
1625
1969
  queryFn: () => getStreams(query)
@@ -1642,180 +1986,73 @@ var streamsQueries = (0, import_query_key_factory10.createQueryKeys)("streams",
1642
1986
  }
1643
1987
  });
1644
1988
 
1645
- // src/v2/supported-chains/queries.ts
1646
- var import_query_key_factory11 = require("@lukemorales/query-key-factory");
1647
-
1648
- // src/v2/supported-chains/schema.ts
1649
- var import_zod11 = require("zod");
1650
- var getSupportedChainsInputSchema = import_zod11.z.object({
1651
- page: import_zod11.z.number().min(1).default(1).optional(),
1652
- limit: import_zod11.z.number().min(1).max(100).default(50).optional(),
1653
- // Sorting
1654
- sortBy: import_zod11.z.enum(["name", "chainId", "ecosystem", "slug"]).optional(),
1655
- sortOrder: import_zod11.z.enum(["asc", "desc"]).optional(),
1656
- // Filters
1657
- ecosystem: import_zod11.z.string().optional(),
1658
- // Filter by ecosystem
1659
- status: import_zod11.z.string().optional(),
1660
- // Filter by status
1661
- chainId: import_zod11.z.string().optional(),
1662
- // Filter by specific chainId
1663
- slug: import_zod11.z.string().optional(),
1664
- // Filter by slug
1665
- search: import_zod11.z.string().optional()
1666
- // Search by name or slug
1667
- });
1668
- var supportedChainsResponseSchema = import_zod11.z.object({
1669
- chains: import_zod11.z.array(chainSchema),
1670
- pagination: paginationMetadataSchema.optional()
1671
- });
1672
-
1673
- // src/v2/supported-chains/api.ts
1674
- async function getSupportedChains(params, options) {
1675
- const queryParams = new URLSearchParams();
1676
- if (params) {
1677
- if (params.page !== void 0) queryParams.append("page", params.page.toString());
1678
- if (params.limit !== void 0) queryParams.append("limit", params.limit.toString());
1679
- if (params.sortBy) queryParams.append("sortBy", params.sortBy);
1680
- if (params.sortOrder) queryParams.append("sortOrder", params.sortOrder);
1681
- if (params.ecosystem) queryParams.append("ecosystem", params.ecosystem);
1682
- if (params.status) queryParams.append("status", params.status);
1683
- if (params.chainId) queryParams.append("chainId", params.chainId);
1684
- if (params.slug) queryParams.append("slug", params.slug);
1685
- if (params.search) queryParams.append("search", params.search);
1686
- }
1687
- const queryString = queryParams.toString();
1688
- const endpoint = `/turtle/chains${queryString ? `?${queryString}` : ""}`;
1689
- const data = await apiClient.fetch(endpoint, {
1690
- method: "GET",
1691
- debug: options?.debug
1692
- });
1693
- const result = supportedChainsResponseSchema.safeParse(data);
1694
- if (result.success === false) {
1695
- console.log("[ZOD ERROR]", result.error);
1696
- throw new Error(`Failed to parse supported chains: ${result.error.message}`);
1697
- }
1698
- return result.data;
1699
- }
1700
-
1701
- // src/v2/supported-chains/queries.ts
1702
- var supportedChainsQueries = (0, import_query_key_factory11.createQueryKeys)("supportedChains", {
1703
- all: (params, options) => ({
1704
- queryKey: [params],
1705
- queryFn: () => getSupportedChains(params, options)
1706
- })
1707
- });
1708
-
1709
- // src/v2/supported-tokens/queries.ts
1710
- var import_query_key_factory12 = require("@lukemorales/query-key-factory");
1711
-
1712
- // src/v2/supported-tokens/schema.ts
1713
- var import_zod12 = require("zod");
1714
- var supportedTokenSchema = tokenSchema.extend({
1715
- active: import_zod12.z.boolean()
1716
- });
1717
- var supportedTokensResponseSchema = import_zod12.z.object({
1718
- tokens: import_zod12.z.array(supportedTokenSchema),
1719
- total: import_zod12.z.number().optional(),
1720
- limit: import_zod12.z.number().optional(),
1721
- page: import_zod12.z.number().optional()
1722
- });
1723
-
1724
- // src/v2/supported-tokens/api.ts
1725
- async function getSupportedTokens(filters, options) {
1726
- const params = new URLSearchParams();
1727
- if (filters?.page !== void 0) params.append("page", filters.page.toString());
1728
- if (filters?.limit !== void 0) params.append("limit", filters.limit.toString());
1729
- if (filters?.search) params.append("search", filters.search);
1730
- const queryString = params.toString();
1731
- const endpoint = `/turtle/tokens${queryString ? `?${queryString}` : ""}`;
1732
- const data = await apiClient.fetch(endpoint, {
1733
- method: "GET",
1734
- debug: options?.debug
1735
- });
1736
- const result = supportedTokensResponseSchema.safeParse(data);
1737
- if (result.success === false) {
1738
- console.log("[ZOD ERROR]", result.error);
1739
- throw new Error(`Failed to parse supported tokens: ${result.error.message}`);
1740
- }
1741
- return result.data;
1742
- }
1743
-
1744
- // src/v2/supported-tokens/queries.ts
1745
- var supportedTokensQueries = (0, import_query_key_factory12.createQueryKeys)("supportedTokens", {
1746
- list: (filters) => ({
1747
- queryKey: [filters],
1748
- queryFn: () => getSupportedTokens(filters)
1749
- })
1750
- });
1751
-
1752
1989
  // src/v2/users/queries.ts
1753
1990
  var import_query_key_factory13 = require("@lukemorales/query-key-factory");
1754
1991
 
1755
1992
  // src/v2/users/schemas.ts
1756
- var import_zod13 = require("zod");
1757
- var walletDataSchema = import_zod13.z.object({
1758
- address: import_zod13.z.string(),
1759
- totalAmountInUSD: import_zod13.z.string(),
1760
- tokens: import_zod13.z.array(tokenSchema)
1761
- });
1762
- var holdingsDataSchema = import_zod13.z.object({
1763
- totalAmountInUSD: import_zod13.z.string(),
1764
- chains: import_zod13.z.array(chainSchema).nullish(),
1765
- wallets: import_zod13.z.array(walletDataSchema).nullish()
1766
- });
1767
- var userEarningsSchema = import_zod13.z.object({
1768
- productId: import_zod13.z.string().uuid(),
1769
- value: import_zod13.z.number(),
1770
- referralsEarnings: import_zod13.z.number().nullish(),
1771
- rewardName: import_zod13.z.string().nullish(),
1772
- rewardType: import_zod13.z.string().nullish()
1773
- });
1774
- var portfolioSchema = import_zod13.z.object({
1775
- productsEarnings: import_zod13.z.array(userEarningsSchema),
1993
+ var import_zod15 = require("zod");
1994
+ var walletDataSchema = import_zod15.z.object({
1995
+ address: import_zod15.z.string(),
1996
+ totalAmountInUSD: import_zod15.z.string(),
1997
+ tokens: import_zod15.z.array(tokenSchema)
1998
+ });
1999
+ var holdingsDataSchema = import_zod15.z.object({
2000
+ totalAmountInUSD: import_zod15.z.string(),
2001
+ chains: import_zod15.z.array(chainSchema).nullish(),
2002
+ wallets: import_zod15.z.array(walletDataSchema).nullish()
2003
+ });
2004
+ var userEarningsSchema = import_zod15.z.object({
2005
+ productId: import_zod15.z.string().uuid(),
2006
+ value: import_zod15.z.number(),
2007
+ referralsEarnings: import_zod15.z.number().nullish(),
2008
+ rewardName: import_zod15.z.string().nullish(),
2009
+ rewardType: import_zod15.z.string().nullish()
2010
+ });
2011
+ var portfolioSchema = import_zod15.z.object({
2012
+ productsEarnings: import_zod15.z.array(userEarningsSchema),
1776
2013
  holdings: holdingsDataSchema.nullish()
1777
2014
  });
1778
- var holdingInfoSchema = import_zod13.z.object({
1779
- amount: import_zod13.z.number(),
1780
- usdValue: import_zod13.z.number(),
2015
+ var holdingInfoSchema = import_zod15.z.object({
2016
+ amount: import_zod15.z.number(),
2017
+ usdValue: import_zod15.z.number(),
1781
2018
  token: tokenSchema.nullish()
1782
2019
  });
1783
- var walletInfoSchema = import_zod13.z.object({
1784
- address: import_zod13.z.string().nullish(),
1785
- ecosystem: import_zod13.z.string().nullish(),
1786
- isMain: import_zod13.z.boolean().nullish(),
1787
- holdings: import_zod13.z.array(holdingInfoSchema).nullish()
1788
- });
1789
- var userWithDetailsSchema = import_zod13.z.object({
1790
- id: import_zod13.z.string(),
1791
- email: import_zod13.z.string().nullable(),
1792
- username: import_zod13.z.string().nullish(),
1793
- firstName: import_zod13.z.string().nullish(),
1794
- lastName: import_zod13.z.string().nullish(),
1795
- avatarUrl: import_zod13.z.string().nullish(),
1796
- telegramHandle: import_zod13.z.string().nullish(),
1797
- xUsername: import_zod13.z.string().nullish(),
1798
- role: import_zod13.z.string(),
1799
- createdAt: import_zod13.z.string(),
1800
- updatedAt: import_zod13.z.string(),
1801
- tags: import_zod13.z.array(import_zod13.z.string()).nullish(),
1802
- wallets: import_zod13.z.array(walletInfoSchema).nullish()
1803
- });
1804
- var getUserTurtlePortfolioInputSchema = import_zod13.z.object({
1805
- userId: import_zod13.z.string().uuid()
1806
- });
1807
- var getUserTurtlePortfolioOutputSchema = import_zod13.z.object({
2020
+ var walletInfoSchema = import_zod15.z.object({
2021
+ address: import_zod15.z.string().nullish(),
2022
+ ecosystem: import_zod15.z.string().nullish(),
2023
+ isMain: import_zod15.z.boolean().nullish(),
2024
+ holdings: import_zod15.z.array(holdingInfoSchema).nullish()
2025
+ });
2026
+ var userWithDetailsSchema = import_zod15.z.object({
2027
+ id: import_zod15.z.string(),
2028
+ email: import_zod15.z.string().nullable(),
2029
+ username: import_zod15.z.string().nullish(),
2030
+ firstName: import_zod15.z.string().nullish(),
2031
+ lastName: import_zod15.z.string().nullish(),
2032
+ avatarUrl: import_zod15.z.string().nullish(),
2033
+ telegramHandle: import_zod15.z.string().nullish(),
2034
+ xUsername: import_zod15.z.string().nullish(),
2035
+ role: import_zod15.z.string(),
2036
+ createdAt: import_zod15.z.string(),
2037
+ updatedAt: import_zod15.z.string(),
2038
+ tags: import_zod15.z.array(import_zod15.z.string()).nullish(),
2039
+ wallets: import_zod15.z.array(walletInfoSchema).nullish()
2040
+ });
2041
+ var getUserTurtlePortfolioInputSchema = import_zod15.z.object({
2042
+ userId: import_zod15.z.string().uuid()
2043
+ });
2044
+ var getUserTurtlePortfolioOutputSchema = import_zod15.z.object({
1808
2045
  portfolio: portfolioSchema
1809
2046
  });
1810
- var getUserTurtlePortfolioPathSchema = import_zod13.z.object({
1811
- userId: import_zod13.z.string().uuid()
2047
+ var getUserTurtlePortfolioPathSchema = import_zod15.z.object({
2048
+ userId: import_zod15.z.string().uuid()
1812
2049
  });
1813
- var getUserByIdInputSchema = import_zod13.z.object({
1814
- userId: import_zod13.z.string().uuid()
2050
+ var getUserByIdInputSchema = import_zod15.z.object({
2051
+ userId: import_zod15.z.string().uuid()
1815
2052
  });
1816
- var getUserByIdOutputSchema = import_zod13.z.object({
2053
+ var getUserByIdOutputSchema = import_zod15.z.object({
1817
2054
  user: userWithDetailsSchema.nullable(),
1818
- error: import_zod13.z.string().optional()
2055
+ error: import_zod15.z.string().optional()
1819
2056
  });
1820
2057
 
1821
2058
  // src/v2/users/api.ts
@@ -1888,40 +2125,358 @@ var nftsQueries = (0, import_query_key_factory14.createQueryKeys)("nfts", {
1888
2125
  })
1889
2126
  });
1890
2127
 
1891
- // src/v2/earn-opportunities/hooks.ts
1892
- var import_react_query = require("@tanstack/react-query");
2128
+ // src/v2/balance/queries.ts
2129
+ var import_query_key_factory15 = require("@lukemorales/query-key-factory");
1893
2130
 
1894
- // src/v2/lib/query-config.ts
1895
- var queryDefaults = {
1896
- staleTime: 5 * 60 * 1e3,
1897
- // 5 minutes - data is fresh
1898
- gcTime: 10 * 60 * 1e3,
1899
- // 10 minutes - cache garbage collection (formerly cacheTime)
1900
- retry: 1,
1901
- // Retry failed requests once
1902
- refetchOnWindowFocus: false
1903
- // Don't refetch on tab focus
1904
- };
1905
- function createQueryOptions(queryConfig, options) {
1906
- return {
1907
- ...queryDefaults,
1908
- ...queryConfig,
1909
- ...options
1910
- };
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;
1911
2453
  }
1912
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
+
1913
2467
  // src/v2/earn-opportunities/hooks.ts
2468
+ var import_react_query5 = require("@tanstack/react-query");
1914
2469
  function useEarnOpportunities() {
1915
- return (0, import_react_query.useQuery)({
2470
+ return (0, import_react_query5.useQuery)({
1916
2471
  ...earnOpportunitiesQueries.all,
1917
2472
  ...queryDefaults
1918
2473
  });
1919
2474
  }
1920
2475
 
1921
2476
  // src/v2/earn-route/hooks.ts
1922
- var import_react_query2 = require("@tanstack/react-query");
2477
+ var import_react_query6 = require("@tanstack/react-query");
1923
2478
  function useEarnRoute({ params, enabled = true }) {
1924
- return (0, import_react_query2.useQuery)({
2479
+ return (0, import_react_query6.useQuery)({
1925
2480
  // Null assertion is safe because the query is enable only if params is provided
1926
2481
  ...earnRouteQueries.byParams(params),
1927
2482
  ...queryDefaults,
@@ -1930,25 +2485,25 @@ function useEarnRoute({ params, enabled = true }) {
1930
2485
  }
1931
2486
 
1932
2487
  // src/v2/earn-membership/hooks.ts
1933
- var import_react_query3 = require("@tanstack/react-query");
2488
+ var import_react_query7 = require("@tanstack/react-query");
1934
2489
  function useCheckMembership({
1935
2490
  params,
1936
2491
  enabled = true
1937
2492
  }) {
1938
- return (0, import_react_query3.useQuery)({
2493
+ return (0, import_react_query7.useQuery)({
1939
2494
  ...earnMembershipQueries.check(params),
1940
2495
  ...queryDefaults,
1941
2496
  enabled
1942
2497
  });
1943
2498
  }
1944
2499
  function useCreateMembershipAgreement() {
1945
- return (0, import_react_query3.useMutation)({
2500
+ return (0, import_react_query7.useMutation)({
1946
2501
  mutationFn: (request) => createMembershipAgreement(request)
1947
2502
  });
1948
2503
  }
1949
2504
  function useCreateMembership() {
1950
- const queryClient = (0, import_react_query3.useQueryClient)();
1951
- return (0, import_react_query3.useMutation)({
2505
+ const queryClient = (0, import_react_query7.useQueryClient)();
2506
+ return (0, import_react_query7.useMutation)({
1952
2507
  mutationFn: (request) => createMembership(request),
1953
2508
  onSuccess: (data, variables) => {
1954
2509
  queryClient.invalidateQueries({
@@ -1962,10 +2517,10 @@ function useCreateMembership() {
1962
2517
  }
1963
2518
 
1964
2519
  // src/v2/earn-deposits/hooks.ts
1965
- var import_react_query9 = require("@tanstack/react-query");
2520
+ var import_react_query11 = require("@tanstack/react-query");
1966
2521
 
1967
2522
  // src/v2/earn-deposits/hooks/useDepositValidation.ts
1968
- var import_react = require("react");
2523
+ var import_react2 = require("react");
1969
2524
  var import_viem = require("viem");
1970
2525
  function calculateUsdValue(amount, token) {
1971
2526
  if (!token.priceUsd) return null;
@@ -1980,7 +2535,7 @@ function useDepositValidation({
1980
2535
  isConfirming = false,
1981
2536
  walletChainId
1982
2537
  }) {
1983
- return (0, import_react.useMemo)(() => {
2538
+ return (0, import_react2.useMemo)(() => {
1984
2539
  if (!opportunity) {
1985
2540
  return {
1986
2541
  canDeposit: false,
@@ -2126,10 +2681,10 @@ function useDepositValidation({
2126
2681
  }
2127
2682
 
2128
2683
  // src/v2/earn-deposits/hooks/useDepositSelection.ts
2129
- var import_react3 = require("react");
2684
+ var import_react4 = require("react");
2130
2685
 
2131
2686
  // src/v2/balance/hooks/useTokenBalance.ts
2132
- var import_react2 = require("react");
2687
+ var import_react3 = require("react");
2133
2688
  var import_viem2 = require("viem");
2134
2689
  var import_utils2 = require("@turtleclub/utils");
2135
2690
  function checkInsufficientBalance(tokenBalance, amount) {
@@ -2145,20 +2700,20 @@ function checkInsufficientBalance(tokenBalance, amount) {
2145
2700
  }
2146
2701
  function useTokenBalance({ tokenBalance, amount, setAmount }) {
2147
2702
  const token = tokenBalance?.token;
2148
- const usdValue = (0, import_react2.useMemo)(
2703
+ const usdValue = (0, import_react3.useMemo)(
2149
2704
  () => (0, import_utils2.calculateUsdValue)(amount, token?.priceUsd),
2150
2705
  [amount, token?.priceUsd]
2151
2706
  );
2152
- const hasInsufficientBalance = (0, import_react2.useMemo)(
2707
+ const hasInsufficientBalance = (0, import_react3.useMemo)(
2153
2708
  () => checkInsufficientBalance(tokenBalance, amount),
2154
2709
  [tokenBalance, amount]
2155
2710
  );
2156
- const handleMaxClick = (0, import_react2.useCallback)(() => {
2711
+ const handleMaxClick = (0, import_react3.useCallback)(() => {
2157
2712
  if (!tokenBalance?.token || !tokenBalance.amount) return;
2158
2713
  const maxAmount = (0, import_utils2.calculateMaxAmount)(tokenBalance.amount, tokenBalance.token.decimals);
2159
2714
  setAmount(maxAmount);
2160
2715
  }, [tokenBalance, setAmount]);
2161
- const amountBigInt = (0, import_react2.useMemo)(() => {
2716
+ const amountBigInt = (0, import_react3.useMemo)(() => {
2162
2717
  if (!token || !amount) return void 0;
2163
2718
  try {
2164
2719
  return (0, import_viem2.parseUnits)(amount, token.decimals);
@@ -2179,13 +2734,13 @@ function useDepositSelection({
2179
2734
  balances,
2180
2735
  opportunityId
2181
2736
  }) {
2182
- const [selectedTokenAddress, setSelectedTokenAddress] = (0, import_react3.useState)();
2183
- const [amount, setAmount] = (0, import_react3.useState)();
2184
- (0, import_react3.useEffect)(() => {
2737
+ const [selectedTokenAddress, setSelectedTokenAddress] = (0, import_react4.useState)();
2738
+ const [amount, setAmount] = (0, import_react4.useState)();
2739
+ (0, import_react4.useEffect)(() => {
2185
2740
  setSelectedTokenAddress(void 0);
2186
2741
  setAmount(void 0);
2187
2742
  }, [opportunityId]);
2188
- (0, import_react3.useEffect)(() => {
2743
+ (0, import_react4.useEffect)(() => {
2189
2744
  if (balances.length === 0) return;
2190
2745
  const tokenExistsInBalances = balances.some(
2191
2746
  (b) => b.token.address === selectedTokenAddress
@@ -2194,7 +2749,7 @@ function useDepositSelection({
2194
2749
  setSelectedTokenAddress(balances[0].token.address);
2195
2750
  }
2196
2751
  }, [selectedTokenAddress, balances]);
2197
- const selectedTokenBalance = (0, import_react3.useMemo)(
2752
+ const selectedTokenBalance = (0, import_react4.useMemo)(
2198
2753
  () => balances.find((b) => b.token.address === selectedTokenAddress) ?? null,
2199
2754
  [balances, selectedTokenAddress]
2200
2755
  );
@@ -2203,7 +2758,7 @@ function useDepositSelection({
2203
2758
  amount,
2204
2759
  setAmount
2205
2760
  });
2206
- const reset = (0, import_react3.useCallback)(() => {
2761
+ const reset = (0, import_react4.useCallback)(() => {
2207
2762
  setSelectedTokenAddress(void 0);
2208
2763
  setAmount(void 0);
2209
2764
  }, []);
@@ -2222,55 +2777,55 @@ function useDepositSelection({
2222
2777
  }
2223
2778
 
2224
2779
  // src/v2/earn-deposits/hooks/useDepositFlow.ts
2225
- var import_react5 = require("react");
2780
+ var import_react6 = require("react");
2226
2781
 
2227
2782
  // src/v2/earn-actions/useEarnDeposit.ts
2228
- var import_react4 = require("react");
2229
- var import_react_query5 = require("@tanstack/react-query");
2783
+ var import_react5 = require("react");
2784
+ var import_react_query9 = require("@tanstack/react-query");
2230
2785
 
2231
2786
  // src/v2/earn-actions/hooks.ts
2232
- var import_react_query4 = require("@tanstack/react-query");
2787
+ var import_react_query8 = require("@tanstack/react-query");
2233
2788
 
2234
2789
  // src/v2/earn-actions/schema.ts
2235
- var import_zod14 = require("zod");
2236
- var transactionSchema = import_zod14.z.object({
2237
- chainId: import_zod14.z.number().int(),
2238
- data: import_zod14.z.string(),
2239
- to: import_zod14.z.string(),
2240
- value: import_zod14.z.string(),
2241
- gasLimit: import_zod14.z.string().optional()
2242
- });
2243
- var routeTokenSchema = import_zod14.z.object({
2244
- address: import_zod14.z.string(),
2245
- symbol: import_zod14.z.string(),
2246
- decimals: import_zod14.z.number().int(),
2247
- logoUrl: import_zod14.z.string()
2248
- });
2249
- var routeStepSchema = import_zod14.z.object({
2250
- action: import_zod14.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(),
2251
2806
  from: routeTokenSchema,
2252
2807
  to: routeTokenSchema
2253
2808
  });
2254
- var routeMetadataSchema = import_zod14.z.object({
2255
- provider: import_zod14.z.string(),
2256
- providerImg: import_zod14.z.string(),
2257
- amountOut: import_zod14.z.string(),
2258
- gas: import_zod14.z.string(),
2259
- route: import_zod14.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)
2260
2815
  });
2261
- var txResponseItemSchema = import_zod14.z.object({
2262
- type: import_zod14.z.string().optional(),
2263
- description: import_zod14.z.string().optional(),
2816
+ var txResponseItemSchema = import_zod19.z.object({
2817
+ type: import_zod19.z.string().optional(),
2818
+ description: import_zod19.z.string().optional(),
2264
2819
  transaction: transactionSchema,
2265
2820
  metadata: routeMetadataSchema.optional()
2266
2821
  });
2267
- var actionResponseSchema = import_zod14.z.object({
2268
- actionId: import_zod14.z.string().uuid().optional(),
2269
- transactions: import_zod14.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()
2270
2825
  });
2271
- var attributeActionResponseSchema = import_zod14.z.object({
2272
- success: import_zod14.z.boolean(),
2273
- message: import_zod14.z.string().optional()
2826
+ var attributeActionResponseSchema = import_zod19.z.object({
2827
+ success: import_zod19.z.boolean(),
2828
+ message: import_zod19.z.string().optional()
2274
2829
  });
2275
2830
 
2276
2831
  // src/v2/earn-actions/api.ts
@@ -2339,7 +2894,7 @@ var createClaimWithdrawInteraction = createClaimWithdrawAction;
2339
2894
  // src/v2/earn-actions/hooks.ts
2340
2895
  function createActionHook(mutationFn) {
2341
2896
  return function useAction(options) {
2342
- return (0, import_react_query4.useMutation)({
2897
+ return (0, import_react_query8.useMutation)({
2343
2898
  mutationFn,
2344
2899
  ...options
2345
2900
  });
@@ -2352,7 +2907,7 @@ var useClaimDepositAction = createActionHook(createClaimDepositAction);
2352
2907
  var useCancelDepositAction = createActionHook(createCancelDepositAction);
2353
2908
  var useCancelWithdrawAction = createActionHook(createCancelWithdrawAction);
2354
2909
  function useAttributeAction(options) {
2355
- return (0, import_react_query4.useMutation)({
2910
+ return (0, import_react_query8.useMutation)({
2356
2911
  mutationFn: attributeAction,
2357
2912
  ...options
2358
2913
  });
@@ -2361,65 +2916,6 @@ var useCreateDepositInteraction = useDepositAction;
2361
2916
  var useCreateWithdrawInteraction = useWithdrawAction;
2362
2917
  var useCreateClaimWithdrawInteraction = useClaimWithdrawAction;
2363
2918
 
2364
- // src/v2/balance/queries.ts
2365
- var import_query_key_factory15 = require("@lukemorales/query-key-factory");
2366
-
2367
- // src/v2/balance/schema.ts
2368
- var import_zod15 = require("zod");
2369
- var portfolioTokenSchema = import_zod15.z.object({
2370
- id: import_zod15.z.string(),
2371
- address: import_zod15.z.string(),
2372
- name: import_zod15.z.string(),
2373
- symbol: import_zod15.z.string(),
2374
- decimals: import_zod15.z.number(),
2375
- isNative: import_zod15.z.boolean(),
2376
- logoUrl: import_zod15.z.string().nullable(),
2377
- amount: import_zod15.z.string(),
2378
- // Portfolio-specific field (decimal format)
2379
- price: import_zod15.z.string().nullable().transform((val) => val ? parseFloat(val) : null),
2380
- // Portfolio-specific field
2381
- // Chain with optional fields to match Portfolio API response
2382
- chain: chainSchema.partial().required({ chainId: true })
2383
- });
2384
- var portfolioWalletSchema = import_zod15.z.object({
2385
- id: import_zod15.z.string().optional(),
2386
- address: import_zod15.z.string(),
2387
- blockchain: import_zod15.z.string().optional(),
2388
- tokens: import_zod15.z.array(portfolioTokenSchema)
2389
- });
2390
- var portfolioHoldingsSchema = import_zod15.z.object({
2391
- wallets: import_zod15.z.array(portfolioWalletSchema)
2392
- });
2393
- var portfolioBalanceResponseSchema = import_zod15.z.object({
2394
- portfolio: import_zod15.z.object({
2395
- holdings: portfolioHoldingsSchema
2396
- })
2397
- });
2398
-
2399
- // src/v2/balance/api.ts
2400
- async function getPortfolioBalance(address, options) {
2401
- const data = await apiClient.fetch(`/wallet/${address}/balance`, {
2402
- method: "GET",
2403
- domain: "api",
2404
- debug: options?.debug
2405
- });
2406
- const result = portfolioBalanceResponseSchema.safeParse(data);
2407
- if (result.success === false) {
2408
- console.log("[ZOD ERROR]", result.error);
2409
- throw new Error(`Failed to parse portfolio balance: ${result.error.message}`);
2410
- }
2411
- return result.data;
2412
- }
2413
-
2414
- // src/v2/balance/queries.ts
2415
- var balanceQueries = (0, import_query_key_factory15.createQueryKeys)("balance", {
2416
- // Portfolio balance by address
2417
- portfolio: (address) => ({
2418
- queryKey: [address],
2419
- queryFn: () => getPortfolioBalance(address)
2420
- })
2421
- });
2422
-
2423
2919
  // src/v2/earn-actions/useEarnDeposit.ts
2424
2920
  var DEFAULT_SLIPPAGE_BPS = 50;
2425
2921
  function useEarnDeposit(options) {
@@ -2432,14 +2928,14 @@ function useEarnDeposit(options) {
2432
2928
  onSuccess,
2433
2929
  referralCode
2434
2930
  } = options;
2435
- const queryClient = (0, import_react_query5.useQueryClient)();
2436
- const [isConfirming, setIsConfirming] = (0, import_react4.useState)(false);
2437
- const [error, setError] = (0, import_react4.useState)(null);
2438
- const [metadata, setMetadata] = (0, import_react4.useState)(null);
2439
- const [hasApprove, setHasApprove] = (0, import_react4.useState)(false);
2931
+ const queryClient = (0, import_react_query9.useQueryClient)();
2932
+ const [isConfirming, setIsConfirming] = (0, import_react5.useState)(false);
2933
+ const [error, setError] = (0, import_react5.useState)(null);
2934
+ const [metadata, setMetadata] = (0, import_react5.useState)(null);
2935
+ const [hasApprove, setHasApprove] = (0, import_react5.useState)(false);
2440
2936
  const depositAction = useDepositAction();
2441
2937
  const attributeAction2 = useAttributeAction();
2442
- const toTransactionRequest = (0, import_react4.useCallback)((txItem) => {
2938
+ const toTransactionRequest = (0, import_react5.useCallback)((txItem) => {
2443
2939
  return {
2444
2940
  to: txItem.transaction.to,
2445
2941
  data: txItem.transaction.data,
@@ -2448,7 +2944,7 @@ function useEarnDeposit(options) {
2448
2944
  type: txItem.type
2449
2945
  };
2450
2946
  }, []);
2451
- const executeTransactionsSequentially = (0, import_react4.useCallback)(
2947
+ const executeTransactionsSequentially = (0, import_react5.useCallback)(
2452
2948
  async (transactions) => {
2453
2949
  let lastTxHash;
2454
2950
  for (const txItem of transactions) {
@@ -2463,7 +2959,7 @@ function useEarnDeposit(options) {
2463
2959
  },
2464
2960
  [executeTransactionAndWait, toTransactionRequest]
2465
2961
  );
2466
- const attributeTransactionSafely = (0, import_react4.useCallback)(
2962
+ const attributeTransactionSafely = (0, import_react5.useCallback)(
2467
2963
  async (actionId, txHash) => {
2468
2964
  try {
2469
2965
  await attributeAction2.mutateAsync({ actionId, txHash });
@@ -2473,7 +2969,7 @@ function useEarnDeposit(options) {
2473
2969
  },
2474
2970
  [attributeAction2]
2475
2971
  );
2476
- const deposit = (0, import_react4.useCallback)(
2972
+ const deposit = (0, import_react5.useCallback)(
2477
2973
  async (amount, tokenAddress, slippage = DEFAULT_SLIPPAGE_BPS) => {
2478
2974
  setError(null);
2479
2975
  if (!opportunity?.id) {
@@ -2544,7 +3040,7 @@ function useEarnDeposit(options) {
2544
3040
  onSuccess
2545
3041
  ]
2546
3042
  );
2547
- const resetMetadata = (0, import_react4.useCallback)(() => {
3043
+ const resetMetadata = (0, import_react5.useCallback)(() => {
2548
3044
  setMetadata(null);
2549
3045
  setHasApprove(false);
2550
3046
  }, []);
@@ -2606,7 +3102,7 @@ function useDepositFlow({
2606
3102
  isConfirming,
2607
3103
  walletChainId
2608
3104
  });
2609
- const execute = (0, import_react5.useCallback)(async () => {
3105
+ const execute = (0, import_react6.useCallback)(async () => {
2610
3106
  if (!selection.amountBigInt || !selection.selectedTokenAddress) {
2611
3107
  return void 0;
2612
3108
  }
@@ -2634,7 +3130,7 @@ var import_react10 = require("react");
2634
3130
  // src/v2/balance/hooks/useGetOnChainBalance.ts
2635
3131
  var import_wagmi = require("wagmi");
2636
3132
  var import_viem3 = require("viem");
2637
- var import_react6 = require("react");
3133
+ var import_react7 = require("react");
2638
3134
  var NATIVE_TOKEN_ADDRESSES = [
2639
3135
  "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
2640
3136
  "0x0000000000000000000000000000000000000000"
@@ -2649,7 +3145,7 @@ function useGetOnChainBalance({
2649
3145
  address,
2650
3146
  enabled = true
2651
3147
  }) {
2652
- const { nativeTokens, erc20Tokens } = (0, import_react6.useMemo)(() => {
3148
+ const { nativeTokens, erc20Tokens } = (0, import_react7.useMemo)(() => {
2653
3149
  const native = [];
2654
3150
  const erc20 = [];
2655
3151
  for (const token of tokens) {
@@ -2677,7 +3173,7 @@ function useGetOnChainBalance({
2677
3173
  refetchOnWindowFocus: true
2678
3174
  }
2679
3175
  });
2680
- const contracts = (0, import_react6.useMemo)(() => {
3176
+ const contracts = (0, import_react7.useMemo)(() => {
2681
3177
  if (!address || !enabled) return [];
2682
3178
  return erc20Tokens.map(
2683
3179
  (token) => ({
@@ -2703,7 +3199,7 @@ function useGetOnChainBalance({
2703
3199
  refetchOnWindowFocus: true
2704
3200
  }
2705
3201
  });
2706
- const balances = (0, import_react6.useMemo)(() => {
3202
+ const balances = (0, import_react7.useMemo)(() => {
2707
3203
  const result = [];
2708
3204
  if (nativeToken && nativeBalanceData) {
2709
3205
  result.push({
@@ -2730,7 +3226,7 @@ function useGetOnChainBalance({
2730
3226
  }, [nativeToken, nativeBalanceData, erc20Results, erc20Tokens]);
2731
3227
  const isLoading = nativeTokens.length > 0 && isNativeLoading || erc20Tokens.length > 0 && isErc20Loading;
2732
3228
  const error = nativeError || erc20Error;
2733
- const refetch = (0, import_react6.useCallback)(() => {
3229
+ const refetch = (0, import_react7.useCallback)(() => {
2734
3230
  if (nativeTokens.length > 0) {
2735
3231
  refetchNative();
2736
3232
  }
@@ -2750,73 +3246,8 @@ function useGetOnChainBalance({
2750
3246
  var import_react9 = require("react");
2751
3247
 
2752
3248
  // src/v2/balance/hooks/usePortfolioBalance.ts
2753
- var import_react_query8 = require("@tanstack/react-query");
3249
+ var import_react_query10 = require("@tanstack/react-query");
2754
3250
  var import_react8 = require("react");
2755
-
2756
- // src/v2/supported-chains/hooks.ts
2757
- var import_react_query6 = require("@tanstack/react-query");
2758
- function useSupportedChains(options) {
2759
- const { debug, enabled = true, ...params } = options || {};
2760
- const { data, isLoading, error, refetch, isFetching } = (0, import_react_query6.useQuery)({
2761
- ...supportedChainsQueries.all(params, { debug }),
2762
- ...queryDefaults,
2763
- enabled
2764
- });
2765
- const chains = data?.chains ?? [];
2766
- const pagination = data?.pagination;
2767
- return {
2768
- chains,
2769
- pagination,
2770
- getChainByChainId: (chainId) => chains.find((chain) => chain.chainId === chainId),
2771
- getChainBySlug: (slug) => chains.find((chain) => chain.slug === slug),
2772
- getChainsByEcosystem: (ecosystem) => chains.filter((chain) => chain.ecosystem === ecosystem),
2773
- isLoading,
2774
- error: error ? error : null,
2775
- refetch,
2776
- isFetching
2777
- };
2778
- }
2779
-
2780
- // src/v2/supported-tokens/hooks.ts
2781
- var import_react_query7 = require("@tanstack/react-query");
2782
- var import_react7 = require("react");
2783
- function useSupportedTokens({
2784
- page = 0,
2785
- limit = 20,
2786
- search,
2787
- enabled = true
2788
- } = {}) {
2789
- const { data, isLoading, error, refetch } = (0, import_react_query7.useQuery)({
2790
- ...supportedTokensQueries.list({ page, limit, search }),
2791
- ...queryDefaults,
2792
- staleTime: 5 * 60 * 1e3,
2793
- // 1 minutes
2794
- gcTime: 10 * 60 * 1e3,
2795
- // 10 minutes
2796
- refetchOnWindowFocus: false,
2797
- // Don't refetch on tab focus
2798
- enabled
2799
- });
2800
- const tokens = (0, import_react7.useMemo)(() => {
2801
- if (!data?.tokens) return [];
2802
- return data.tokens.map(({ active, ...token }) => token);
2803
- }, [data?.tokens]);
2804
- return {
2805
- tokens,
2806
- total: data?.total ?? 0,
2807
- limit: data?.limit ?? limit,
2808
- page: data?.page ?? page,
2809
- isLoading,
2810
- error: error ? error : null,
2811
- refetch,
2812
- getTokenById: (id) => tokens.find((token) => token.id === id),
2813
- getToken: (address, chainId) => tokens.find(
2814
- (token) => token.address.toLowerCase() === address.toLowerCase() && token.chain.chainId === chainId
2815
- )
2816
- };
2817
- }
2818
-
2819
- // src/v2/balance/hooks/usePortfolioBalance.ts
2820
3251
  var import_viem4 = require("viem");
2821
3252
  function usePortfolioBalance({
2822
3253
  address
@@ -2828,7 +3259,7 @@ function usePortfolioBalance({
2828
3259
  isLoading,
2829
3260
  error,
2830
3261
  refetch
2831
- } = (0, import_react_query8.useQuery)({
3262
+ } = (0, import_react_query10.useQuery)({
2832
3263
  ...balanceQueries.portfolio(address || ""),
2833
3264
  ...queryDefaults,
2834
3265
  enabled: !!address,
@@ -3108,7 +3539,7 @@ function useActionsDefaultParams({
3108
3539
 
3109
3540
  // src/v2/earn-deposits/hooks.ts
3110
3541
  function useDeposits({ params, enabled = true }) {
3111
- return (0, import_react_query9.useQuery)({
3542
+ return (0, import_react_query11.useQuery)({
3112
3543
  ...earnDepositsQueries.byParams(params),
3113
3544
  ...queryDefaults,
3114
3545
  enabled
@@ -3117,12 +3548,12 @@ function useDeposits({ params, enabled = true }) {
3117
3548
 
3118
3549
  // src/v2/enso-balances/hooks.ts
3119
3550
  var import_react11 = require("react");
3120
- var import_react_query10 = require("@tanstack/react-query");
3551
+ var import_react_query12 = require("@tanstack/react-query");
3121
3552
  function useMultiChainBalances({
3122
3553
  chainIds,
3123
3554
  address
3124
3555
  }) {
3125
- const queries2 = (0, import_react_query10.useQueries)({
3556
+ const queries2 = (0, import_react_query12.useQueries)({
3126
3557
  queries: chainIds.map((chainId) => ({
3127
3558
  ...ensoBalancesQueries.byParams({ user: address || "", chain: chainId }),
3128
3559
  enabled: !!address,
@@ -3157,92 +3588,42 @@ function useMultiChainBalances({
3157
3588
  };
3158
3589
  }
3159
3590
 
3160
- // src/v2/opportunities/hooks.ts
3161
- var import_react_query11 = require("@tanstack/react-query");
3162
- function useOpportunities(options) {
3163
- return (0, import_react_query11.useQuery)({
3164
- ...opportunitiesQueries.all,
3165
- ...queryDefaults,
3166
- select: (data) => {
3167
- const uniqueChainsMap = new Map(
3168
- data.opportunities.map((opportunity) => opportunity.receiptToken?.chain).filter((chain) => chain !== void 0).map((chain) => [chain.id, chain])
3169
- );
3170
- const chains = Array.from(uniqueChainsMap.values());
3171
- return {
3172
- ...data,
3173
- chains
3174
- };
3175
- }
3176
- });
3177
- }
3178
- function useOpportunity({ id, ...options }) {
3179
- return (0, import_react_query11.useQuery)({
3180
- ...opportunitiesQueries.byId(id),
3181
- ...queryDefaults,
3182
- select: (data) => {
3183
- return {
3184
- ...data,
3185
- chain: data.receiptToken?.chain
3186
- };
3187
- }
3188
- });
3189
- }
3190
- function useOpportunitiesPaginated({
3191
- params,
3192
- enabled = true
3193
- } = {}) {
3194
- return (0, import_react_query11.useQuery)({
3195
- ...opportunitiesQueries.paginated(params),
3196
- ...queryDefaults,
3197
- enabled
3198
- });
3199
- }
3200
- function useOpportunitiesFilterOptions({
3201
- enabled = true
3202
- } = {}) {
3203
- return (0, import_react_query11.useQuery)({
3204
- ...opportunitiesQueries.filterOptions,
3205
- ...queryDefaults,
3206
- enabled
3207
- });
3208
- }
3209
-
3210
3591
  // src/v2/products/hooks.ts
3211
- var import_react_query12 = require("@tanstack/react-query");
3592
+ var import_react_query13 = require("@tanstack/react-query");
3212
3593
  function useProducts({ filters, enabled = true }) {
3213
- return (0, import_react_query12.useQuery)({
3594
+ return (0, import_react_query13.useQuery)({
3214
3595
  ...productsQueries.list(filters),
3215
3596
  ...queryDefaults,
3216
3597
  enabled
3217
3598
  });
3218
3599
  }
3219
3600
  function useProduct({ id, enabled = true }) {
3220
- return (0, import_react_query12.useQuery)({
3601
+ return (0, import_react_query13.useQuery)({
3221
3602
  ...productsQueries.byId(id),
3222
3603
  ...queryDefaults,
3223
3604
  enabled
3224
3605
  });
3225
3606
  }
3226
3607
  function useCreateProduct(options) {
3227
- return (0, import_react_query12.useMutation)({
3608
+ return (0, import_react_query13.useMutation)({
3228
3609
  mutationFn: (input) => createProduct(input),
3229
3610
  ...options
3230
3611
  });
3231
3612
  }
3232
3613
  function useUpdateProduct(options) {
3233
- return (0, import_react_query12.useMutation)({
3614
+ return (0, import_react_query13.useMutation)({
3234
3615
  mutationFn: (input) => updateProduct(input),
3235
3616
  ...options
3236
3617
  });
3237
3618
  }
3238
3619
  function useDeleteProduct(options) {
3239
- return (0, import_react_query12.useMutation)({
3620
+ return (0, import_react_query13.useMutation)({
3240
3621
  mutationFn: (id) => deleteProduct(id),
3241
3622
  ...options
3242
3623
  });
3243
3624
  }
3244
3625
  function useUploadProductLogo(options) {
3245
- return (0, import_react_query12.useMutation)({
3626
+ return (0, import_react_query13.useMutation)({
3246
3627
  mutationFn: (request) => uploadProductLogo(request),
3247
3628
  ...options
3248
3629
  });
@@ -3290,9 +3671,9 @@ function useEnsoBalances({
3290
3671
  }
3291
3672
 
3292
3673
  // src/v2/widget/hooks.ts
3293
- var import_react_query13 = require("@tanstack/react-query");
3674
+ var import_react_query14 = require("@tanstack/react-query");
3294
3675
  function useWidgetOpportunities(distributorId) {
3295
- return (0, import_react_query13.useQuery)({
3676
+ return (0, import_react_query14.useQuery)({
3296
3677
  ...widgetQueries.opportunities(distributorId),
3297
3678
  ...queryDefaults,
3298
3679
  select: (data) => {
@@ -3316,7 +3697,7 @@ function useWidgetOpportunities(distributorId) {
3316
3697
  }
3317
3698
 
3318
3699
  // src/v2/geocheck/useGeocheck.ts
3319
- var import_react_query14 = require("@tanstack/react-query");
3700
+ var import_react_query15 = require("@tanstack/react-query");
3320
3701
  var INDEXER_ENDPOINT = "https://api.turtle.xyz";
3321
3702
  async function fetchGeocheck() {
3322
3703
  const url = `${INDEXER_ENDPOINT}/turtle/geocheck`;
@@ -3332,13 +3713,13 @@ async function fetchGeocheck() {
3332
3713
  }
3333
3714
  return data;
3334
3715
  }
3335
- var geocheckQueryOptions = () => (0, import_react_query14.queryOptions)({
3716
+ var geocheckQueryOptions = () => (0, import_react_query15.queryOptions)({
3336
3717
  queryKey: ["geocheck"],
3337
3718
  queryFn: fetchGeocheck
3338
3719
  });
3339
3720
  function useGeocheck(options = {}) {
3340
3721
  const { enabled = true, staleTime, gcTime } = options;
3341
- return (0, import_react_query14.useQuery)({
3722
+ return (0, import_react_query15.useQuery)({
3342
3723
  ...geocheckQueryOptions(),
3343
3724
  enabled,
3344
3725
  staleTime: staleTime ?? 5 * 60 * 1e3,
@@ -3351,35 +3732,35 @@ function useGeocheck(options = {}) {
3351
3732
  }
3352
3733
 
3353
3734
  // src/v2/streams/hooks.ts
3354
- var import_react_query15 = require("@tanstack/react-query");
3735
+ var import_react_query16 = require("@tanstack/react-query");
3355
3736
  function useStreams({
3356
3737
  query,
3357
3738
  options
3358
3739
  } = {}) {
3359
- return (0, import_react_query15.useQuery)(createQueryOptions(streamsQueries.list(query), options));
3740
+ return (0, import_react_query16.useQuery)(createQueryOptions(streamsQueries.list(query), options));
3360
3741
  }
3361
3742
  function useStreamPoints({
3362
3743
  query,
3363
3744
  options
3364
3745
  } = {}) {
3365
- return (0, import_react_query15.useQuery)(createQueryOptions(streamsQueries.points(query), options));
3746
+ return (0, import_react_query16.useQuery)(createQueryOptions(streamsQueries.points(query), options));
3366
3747
  }
3367
3748
  function useStreamWallets({
3368
3749
  query,
3369
3750
  options
3370
3751
  }) {
3371
- return (0, import_react_query15.useQuery)(createQueryOptions(streamsQueries.wallets(query), options));
3752
+ return (0, import_react_query16.useQuery)(createQueryOptions(streamsQueries.wallets(query), options));
3372
3753
  }
3373
3754
  function useStreamWalletDetails({
3374
3755
  query,
3375
3756
  options
3376
3757
  }) {
3377
- return (0, import_react_query15.useQuery)(createQueryOptions(streamsQueries.walletDetails(query), options));
3758
+ return (0, import_react_query16.useQuery)(createQueryOptions(streamsQueries.walletDetails(query), options));
3378
3759
  }
3379
3760
  function useStreamSupportedChains({
3380
3761
  options
3381
3762
  } = {}) {
3382
- return (0, import_react_query15.useQuery)(createQueryOptions(streamsQueries.supportedChains, options));
3763
+ return (0, import_react_query16.useQuery)(createQueryOptions(streamsQueries.supportedChains, options));
3383
3764
  }
3384
3765
 
3385
3766
  // src/v2/swap/useSwapRoute.ts
@@ -3481,9 +3862,9 @@ function useSwapRoute(isEnabled, userAddress, distributorId, options, referralCo
3481
3862
  }
3482
3863
 
3483
3864
  // src/v2/users/hooks.ts
3484
- var import_react_query16 = require("@tanstack/react-query");
3865
+ var import_react_query17 = require("@tanstack/react-query");
3485
3866
  function useUserById({ userId, enabled = true }) {
3486
- return (0, import_react_query16.useQuery)({
3867
+ return (0, import_react_query17.useQuery)({
3487
3868
  ...usersQueries.byId({ userId }),
3488
3869
  ...queryDefaults,
3489
3870
  enabled
@@ -3491,7 +3872,7 @@ function useUserById({ userId, enabled = true }) {
3491
3872
  }
3492
3873
  function useUserPortfolio({ userId, enabled = true }) {
3493
3874
  const input = { userId };
3494
- return (0, import_react_query16.useQuery)({
3875
+ return (0, import_react_query17.useQuery)({
3495
3876
  ...usersQueries.portfolio(input),
3496
3877
  ...queryDefaults,
3497
3878
  enabled
@@ -3499,30 +3880,30 @@ function useUserPortfolio({ userId, enabled = true }) {
3499
3880
  }
3500
3881
 
3501
3882
  // src/v2/nfts/hooks.ts
3502
- var import_react_query17 = require("@tanstack/react-query");
3883
+ var import_react_query18 = require("@tanstack/react-query");
3503
3884
  function useUserNfts({ userAddress, chain, tokenAddress }) {
3504
- return (0, import_react_query17.useQuery)(
3885
+ return (0, import_react_query18.useQuery)(
3505
3886
  userAddress ? createQueryOptions(nftsQueries.byUser(userAddress, chain), {
3506
3887
  select: (data) => tokenAddress ? data.filter((nft) => nft.token.toLowerCase() === tokenAddress.toLowerCase()) : data
3507
- }) : { queryKey: ["nfts", "byUser", "skip"], queryFn: import_react_query17.skipToken }
3888
+ }) : { queryKey: ["nfts", "byUser", "skip"], queryFn: import_react_query18.skipToken }
3508
3889
  );
3509
3890
  }
3510
3891
 
3511
3892
  // src/v2/covers/hooks.ts
3512
- var import_react_query18 = require("@tanstack/react-query");
3893
+ var import_react_query19 = require("@tanstack/react-query");
3513
3894
 
3514
3895
  // src/v2/covers/schema.ts
3515
- var import_zod16 = require("zod");
3516
- var coverRequestDataSchema = import_zod16.z.object({
3517
- protocolName: import_zod16.z.string(),
3518
- coverageAmount: import_zod16.z.string(),
3519
- periodDays: import_zod16.z.number(),
3520
- desiredApySacrifice: import_zod16.z.string(),
3521
- calculatedEstimatedPremium: import_zod16.z.string(),
3522
- tokenSymbol: import_zod16.z.string()
3523
- });
3524
- var submitCoverRequestResponseSchema = import_zod16.z.object({
3525
- success: import_zod16.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()
3526
3907
  });
3527
3908
 
3528
3909
  // src/v2/covers/api.ts
@@ -3541,7 +3922,7 @@ async function submitCoverRequest(data) {
3541
3922
 
3542
3923
  // src/v2/covers/hooks.ts
3543
3924
  function useSubmitCoverRequest(options) {
3544
- return (0, import_react_query18.useMutation)({
3925
+ return (0, import_react_query19.useMutation)({
3545
3926
  mutationFn: submitCoverRequest,
3546
3927
  onSuccess: () => {
3547
3928
  options?.onSuccess?.("Cover request submitted successfully!");
@@ -3671,43 +4052,95 @@ var useTurtleMembershipFlow = ({
3671
4052
  };
3672
4053
  };
3673
4054
 
3674
- // src/v2/organizations/schema.ts
3675
- var import_zod17 = require("zod");
3676
- var LeaveOrganizationInputSchema = import_zod17.z.object({
3677
- organizationId: import_zod17.z.string().uuid()
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
3678
4106
  });
3679
- var LeaveOrganizationOutputSchema = import_zod17.z.object({
3680
- success: import_zod17.z.boolean(),
3681
- error: import_zod17.z.string().optional()
4107
+ var updateDistributorEarnDetailsResponseSchema = import_zod21.z.object({
4108
+ success: import_zod21.z.boolean()
3682
4109
  });
3683
4110
 
3684
- // src/v2/organizations/api.ts
3685
- async function leaveOrganization(input) {
3686
- const endpoint = `/organization/${input.organizationId}/leave`;
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`;
3687
4115
  const data = await apiClient.fetch(endpoint, {
3688
- method: "POST"
4116
+ method: "PUT",
4117
+ body: JSON.stringify({ earnDetails })
3689
4118
  });
3690
- const result = LeaveOrganizationOutputSchema.safeParse(data);
4119
+ const result = updateDistributorEarnDetailsResponseSchema.safeParse(data);
3691
4120
  if (result.success === false) {
3692
4121
  console.log("[ZOD ERROR]", result.error);
3693
- throw new Error(`Failed to parse leave organization response: ${result.error.message}`);
4122
+ throw new Error(`Failed to update distributor earn details: ${result.error.message}`);
3694
4123
  }
3695
4124
  return result.data;
3696
4125
  }
3697
4126
 
3698
- // src/v2/organizations/hooks.ts
3699
- var import_react_query19 = require("@tanstack/react-query");
3700
- function useLeaveOrganization(options) {
3701
- return (0, import_react_query19.useMutation)({
3702
- mutationFn: leaveOrganization,
4127
+ // src/v2/distributors/hooks.ts
4128
+ function useUpdateDistributorEarnDetails(options) {
4129
+ return (0, import_react_query21.useMutation)({
4130
+ mutationFn: updateDistributorEarnDetails,
3703
4131
  ...options
3704
4132
  });
3705
4133
  }
3706
4134
 
3707
- // src/v2/organizations/queries.ts
3708
- var organizationsMutations = {
3709
- leave: (input) => leaveOrganization(input)
3710
- };
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
+ }
3711
4144
 
3712
4145
  // src/v2/lib/turtle-provider.tsx
3713
4146
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -3723,7 +4156,7 @@ function TurtleHooksProvider({
3723
4156
  }
3724
4157
 
3725
4158
  // src/v2/index.ts
3726
- var queries = (0, import_query_key_factory16.mergeQueryKeys)(
4159
+ var queries = (0, import_query_key_factory19.mergeQueryKeys)(
3727
4160
  opportunitiesQueries,
3728
4161
  earnOpportunitiesQueries,
3729
4162
  earnRouteQueries,
@@ -3737,12 +4170,17 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3737
4170
  supportedChainsQueries,
3738
4171
  supportedTokensQueries,
3739
4172
  usersQueries,
3740
- nftsQueries
4173
+ nftsQueries,
4174
+ balanceQueries,
4175
+ depositsQueries,
4176
+ incentivesQueries,
4177
+ liquidityProvidersQueries
3741
4178
  );
3742
4179
  // Annotate the CommonJS export names for ESM import in node:
3743
4180
  0 && (module.exports = {
3744
4181
  ApiError,
3745
4182
  BalanceSourcePriority,
4183
+ GetLiquidityProvidersResponseSchema,
3746
4184
  LeaveOrganizationInputSchema,
3747
4185
  LeaveOrganizationOutputSchema,
3748
4186
  TurtleHooksProvider,
@@ -3770,15 +4208,22 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3770
4208
  createClaimWithdrawInteraction,
3771
4209
  createDepositAction,
3772
4210
  createDepositInteraction,
4211
+ createIncentive,
4212
+ createIncentiveInputSchema,
3773
4213
  createMembership,
3774
4214
  createMembershipAgreement,
3775
4215
  createMembershipRequestSchema,
3776
4216
  createMembershipResponseSchema,
4217
+ createProduct,
4218
+ createProductInputSchema,
4219
+ createProductResponseSchema,
3777
4220
  createStreamPoint,
3778
4221
  createStreamPointBodySchema,
3779
4222
  createStreamPointOutputSchema,
3780
4223
  createWithdrawAction,
3781
4224
  createWithdrawInteraction,
4225
+ deleteIncentive,
4226
+ deleteProduct,
3782
4227
  depositSchema,
3783
4228
  depositSubstep,
3784
4229
  depositsResponseSchema,
@@ -3803,6 +4248,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3803
4248
  getDeposits,
3804
4249
  getEarnOpportunities,
3805
4250
  getEarnRoute,
4251
+ getIncentive,
4252
+ getIncentives,
4253
+ getLiquidityProviders,
4254
+ getLiquidityProvidersInputSchema,
3806
4255
  getOpportunities,
3807
4256
  getOpportunitiesFilterOptions,
3808
4257
  getOpportunitiesFilterOptionsSchema,
@@ -3811,6 +4260,7 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3811
4260
  getOpportunitiesPaginatedSchema,
3812
4261
  getOpportunityById,
3813
4262
  getPortfolioBalance,
4263
+ getProduct,
3814
4264
  getProducts,
3815
4265
  getSourcePriority,
3816
4266
  getStreamPoints,
@@ -3840,8 +4290,12 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3840
4290
  getWidgetOpportunities,
3841
4291
  holdingsDataSchema,
3842
4292
  incentiveSchema,
4293
+ incentivesQueries,
4294
+ incentivesResponseSchema,
3843
4295
  leaveOrganization,
3844
4296
  lendingConfigSchema,
4297
+ liquidityProviderSchema,
4298
+ liquidityProvidersQueries,
3845
4299
  mergeBalancesByPriority,
3846
4300
  nftsQueries,
3847
4301
  opportunitiesQueries,
@@ -3858,8 +4312,11 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3858
4312
  portfolioTokenSchema,
3859
4313
  portfolioWalletSchema,
3860
4314
  processRouteDetails,
4315
+ productFiltersSchema,
4316
+ productResponseSchema,
3861
4317
  productSchema,
3862
4318
  productsQueries,
4319
+ productsResponseSchema,
3863
4320
  queries,
3864
4321
  requestStreamSignature,
3865
4322
  routeMetadataSchema,
@@ -3889,6 +4346,18 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3889
4346
  tokenSchema,
3890
4347
  transactionSchema,
3891
4348
  txResponseItemSchema,
4349
+ updateDistributorEarnDetails,
4350
+ updateIncentive,
4351
+ updateIncentiveInputSchema,
4352
+ updateProduct,
4353
+ updateProductInputSchema,
4354
+ updateProductResponseSchema,
4355
+ uploadIncentiveIcon,
4356
+ uploadIncentiveIconRequestSchema,
4357
+ uploadIncentiveIconResponseSchema,
4358
+ uploadProductLogo,
4359
+ uploadProductLogoRequestSchema,
4360
+ uploadProductLogoResponseSchema,
3892
4361
  useActionsDefaultParams,
3893
4362
  useAttributeAction,
3894
4363
  useBalance,
@@ -3899,10 +4368,12 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3899
4368
  useClaimWithdrawAction,
3900
4369
  useCreateClaimWithdrawInteraction,
3901
4370
  useCreateDepositInteraction,
4371
+ useCreateIncentive,
3902
4372
  useCreateMembership,
3903
4373
  useCreateMembershipAgreement,
3904
4374
  useCreateProduct,
3905
4375
  useCreateWithdrawInteraction,
4376
+ useDeleteIncentive,
3906
4377
  useDeleteProduct,
3907
4378
  useDepositAction,
3908
4379
  useDepositFlow,
@@ -3915,7 +4386,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3915
4386
  useEnsoBalances,
3916
4387
  useGeocheck,
3917
4388
  useGetOnChainBalance,
4389
+ useIncentive,
4390
+ useIncentives,
3918
4391
  useLeaveOrganization,
4392
+ useLiquidityProviders,
3919
4393
  useMultiChainBalances,
3920
4394
  useOpportunities,
3921
4395
  useOpportunitiesFilterOptions,
@@ -3935,7 +4409,10 @@ var queries = (0, import_query_key_factory16.mergeQueryKeys)(
3935
4409
  useSwapRoute,
3936
4410
  useTokenBalance,
3937
4411
  useTurtleMembershipFlow,
4412
+ useUpdateDistributorEarnDetails,
4413
+ useUpdateIncentive,
3938
4414
  useUpdateProduct,
4415
+ useUploadIncentiveIcon,
3939
4416
  useUploadProductLogo,
3940
4417
  useUserById,
3941
4418
  useUserNfts,