@merkl/api 1.19.27 → 1.20.0

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 (132) hide show
  1. package/dist/src/cache/declaration.d.ts +0 -5
  2. package/dist/src/cache/declaration.js.map +1 -1
  3. package/dist/src/constants.js.map +1 -1
  4. package/dist/src/eden/index.d.ts +199 -112
  5. package/dist/src/engine/deprecated/dynamicData/implementations/Erc20.d.ts +10 -0
  6. package/dist/src/engine/implementations/Erc20/subTypes/implementations/bunni/metadata.js.map +1 -1
  7. package/dist/src/engine/implementations/Erc20/subTypes/implementations/bunni/tvl.js.map +1 -1
  8. package/dist/src/engine/implementations/Erc20/subTypes/implementations/euler/metadata.js.map +1 -1
  9. package/dist/src/engine/implementations/Erc20/subTypes/implementations/eulerEarn/metadata.js.map +1 -1
  10. package/dist/src/engine/implementations/ErcMultiToken/metadata.d.ts +1 -1
  11. package/dist/src/engine/implementations/EulerBorrowFromCollateral/metadata.js.map +1 -1
  12. package/dist/src/engine/implementations/MerklCredit/metadata.d.ts +15 -0
  13. package/dist/src/engine/implementations/MerklCredit/metadata.js.map +1 -0
  14. package/dist/src/engine/implementations/MultiLog/metadata.js.map +1 -1
  15. package/dist/src/engine/implementations/pancakeSwapInfinity/metadata.d.ts +19 -0
  16. package/dist/src/engine/implementations/pancakeSwapInfinity/metadata.js.map +1 -0
  17. package/dist/src/engine/metadata/factory.js.map +1 -1
  18. package/dist/src/engine/tvl/factory.js.map +1 -1
  19. package/dist/src/guards/CampaignAccess.guard.d.ts +18 -16
  20. package/dist/src/guards/CampaignAccess.guard.js.map +1 -1
  21. package/dist/src/index.d.ts +208 -115
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/jobs/claim-etl/config.d.ts +2 -2
  24. package/dist/src/jobs/claim-etl/config.js.map +1 -1
  25. package/dist/src/jobs/claim-etl/load.js.map +1 -1
  26. package/dist/src/jobs/deposit-credit-etl/config.d.ts +13 -0
  27. package/dist/src/jobs/deposit-credit-etl/config.js.map +1 -0
  28. package/dist/src/jobs/deposit-credit-etl/index.d.ts +16 -0
  29. package/dist/src/jobs/deposit-credit-etl/index.js.map +1 -0
  30. package/dist/src/jobs/deposit-credit-etl/load.d.ts +13 -0
  31. package/dist/src/jobs/deposit-credit-etl/load.js.map +1 -0
  32. package/dist/src/jobs/deposit-credit-etl/types.d.ts +11 -0
  33. package/dist/src/jobs/deposit-credit-etl/types.js.map +1 -0
  34. package/dist/src/jobs/prices.js.map +1 -1
  35. package/dist/src/jobs/refresh-materialized-views.js.map +1 -1
  36. package/dist/src/modules/v4/authentication/authentication.service.js.map +1 -1
  37. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +26 -20
  38. package/dist/src/modules/v4/campaign/campaign.controller.js.map +1 -1
  39. package/dist/src/modules/v4/campaign/campaign.model.d.ts +3 -2
  40. package/dist/src/modules/v4/campaign/campaign.model.js.map +1 -1
  41. package/dist/src/modules/v4/campaign/campaign.query-transformer.d.ts +21 -11
  42. package/dist/src/modules/v4/campaign/campaign.query-transformer.js.map +1 -1
  43. package/dist/src/modules/v4/campaign/campaign.service.d.ts +7 -5
  44. package/dist/src/modules/v4/campaign/campaign.service.js.map +1 -1
  45. package/dist/src/modules/v4/campaignToProcess/campaignToProcess.repository.js.map +1 -1
  46. package/dist/src/modules/v4/carousel/carousel.controller.d.ts +48 -12
  47. package/dist/src/modules/v4/carousel/carousel.formatter.d.ts +8 -1
  48. package/dist/src/modules/v4/carousel/carousel.formatter.js.map +1 -1
  49. package/dist/src/modules/v4/carousel/carousel.repository.d.ts +6 -0
  50. package/dist/src/modules/v4/carousel/carousel.service.d.ts +19 -8
  51. package/dist/src/modules/v4/carousel/carousel.service.js.map +1 -1
  52. package/dist/src/modules/v4/chain/chain.controller.d.ts +4 -4
  53. package/dist/src/modules/v4/chain/chain.formatter.js.map +1 -1
  54. package/dist/src/modules/v4/chain/chain.model.d.ts +1 -1
  55. package/dist/src/modules/v4/chain/chain.repository.js.map +1 -1
  56. package/dist/src/modules/v4/clamm/clamm.controller.d.ts +2 -2
  57. package/dist/src/modules/v4/clamm/clamm.service.js.map +1 -1
  58. package/dist/src/modules/v4/creator/creator.controller.d.ts +3 -3
  59. package/dist/src/modules/v4/historical/historical.controller.d.ts +38 -2
  60. package/dist/src/modules/v4/historical/historical.controller.js.map +1 -1
  61. package/dist/src/modules/v4/historical/historical.model.d.ts +28 -0
  62. package/dist/src/modules/v4/historical/historical.model.js.map +1 -1
  63. package/dist/src/modules/v4/indexingRange/indexingRange.model.js.map +1 -1
  64. package/dist/src/modules/v4/indexingRange/indexingRange.service.js.map +1 -1
  65. package/dist/src/modules/v4/jobWatermark/jobWatermark.constants.d.ts +2 -1
  66. package/dist/src/modules/v4/jobWatermark/jobWatermark.constants.js.map +1 -1
  67. package/dist/src/modules/v4/keyStore/keyStore.controller.d.ts +20 -15
  68. package/dist/src/modules/v4/keyStore/keyStore.controller.js.map +1 -1
  69. package/dist/src/modules/v4/leaf/latestCompute.repository.d.ts +24 -0
  70. package/dist/src/modules/v4/leaf/latestCompute.repository.js.map +1 -0
  71. package/dist/src/modules/v4/leaf/leaf.repository.d.ts +130 -0
  72. package/dist/src/modules/v4/leaf/leaf.repository.js.map +1 -1
  73. package/dist/src/modules/v4/leaf/leaf.service.d.ts +609 -0
  74. package/dist/src/modules/v4/leaf/leaf.service.js.map +1 -1
  75. package/dist/src/modules/v4/leaf/leafTemp.repository.d.ts +12 -0
  76. package/dist/src/modules/v4/leaf/leafTemp.repository.js.map +1 -1
  77. package/dist/src/modules/v4/leaf/leafView.repository.d.ts +15 -0
  78. package/dist/src/modules/v4/leaf/leafView.repository.js.map +1 -1
  79. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +19 -18
  80. package/dist/src/modules/v4/opportunity/opportunity.controller.js.map +1 -1
  81. package/dist/src/modules/v4/opportunity/opportunity.formatter.d.ts +3 -3
  82. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +8 -8
  83. package/dist/src/modules/v4/opportunity/opportunity.query-transformer.d.ts +210 -17
  84. package/dist/src/modules/v4/opportunity/opportunity.query-transformer.js.map +1 -1
  85. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +8 -7
  86. package/dist/src/modules/v4/opportunity/opportunity.repository.js.map +1 -1
  87. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +18 -18
  88. package/dist/src/modules/v4/opportunity/opportunity.service.js.map +1 -1
  89. package/dist/src/modules/v4/priceSource/priceFetchers/implementations/coinGeckoService.d.ts +1 -0
  90. package/dist/src/modules/v4/priceSource/priceFetchers/implementations/coinGeckoService.js.map +1 -1
  91. package/dist/src/modules/v4/program/program.controller.d.ts +4 -4
  92. package/dist/src/modules/v4/program/program.service.d.ts +4 -4
  93. package/dist/src/modules/v4/programPayload/subPayloads/ethena.d.ts +48 -48
  94. package/dist/src/modules/v4/reward/reward.service.d.ts +4 -4
  95. package/dist/src/modules/v4/router.d.ts +208 -85
  96. package/dist/src/modules/v4/token/token.service.d.ts +0 -8
  97. package/dist/src/modules/v4/token/token.service.js.map +1 -1
  98. package/dist/src/modules/v4/transaction/transaction.service.d.ts +64 -8
  99. package/dist/src/modules/v4/uniswap/uniswap.controller.d.ts +2 -2
  100. package/dist/src/modules/v4/uniswap/uniswap.service.d.ts +1 -1
  101. package/dist/src/modules/v4/user/user.controller.d.ts +42 -3
  102. package/dist/src/modules/v4/user/user.controller.js.map +1 -1
  103. package/dist/src/modules/v4/user/user.model.d.ts +15 -1
  104. package/dist/src/modules/v4/user/user.model.js.map +1 -1
  105. package/dist/src/modules/v4/user/user.service.d.ts +13 -1
  106. package/dist/src/modules/v4/user/user.service.js.map +1 -1
  107. package/dist/src/routes/v1/router.d.ts +0 -26
  108. package/dist/src/routes/v1/router.js.map +1 -1
  109. package/dist/src/routes/v3/app.d.ts +0 -8
  110. package/dist/src/routes/v3/app.js.map +1 -1
  111. package/dist/src/routes/v3/router.d.ts +0 -4
  112. package/dist/src/scripts/backfill-leafbreakdown-opportunities.js.map +1 -1
  113. package/dist/src/utils/eulerVerified.d.ts +8 -0
  114. package/dist/src/utils/eulerVerified.js.map +1 -0
  115. package/dist/src/utils/getAPR.d.ts +32 -4
  116. package/dist/src/utils/parseDistributionType.d.ts +32 -4
  117. package/dist/tsconfig.tsbuildinfo +1 -1
  118. package/package.json +1 -1
  119. package/dist/src/routes/v1/prices.d.ts +0 -85
  120. package/dist/src/routes/v1/prices.js.map +0 -1
  121. package/dist/src/utils/pricer.d.ts +0 -57
  122. package/dist/src/utils/pricer.js.map +0 -1
  123. package/dist/src/utils/prices/chainlinkRead.d.ts +0 -4
  124. package/dist/src/utils/prices/chainlinkRead.js.map +0 -1
  125. package/dist/src/utils/prices/curveVirtualPrice.d.ts +0 -4
  126. package/dist/src/utils/prices/curveVirtualPrice.js.map +0 -1
  127. package/dist/src/utils/prices/getDQUICK.d.ts +0 -4
  128. package/dist/src/utils/prices/getDQUICK.js.map +0 -1
  129. package/dist/src/utils/prices/priceService.d.ts +0 -13
  130. package/dist/src/utils/prices/priceService.js.map +0 -1
  131. package/dist/src/utils/prices/uniV2Price.d.ts +0 -4
  132. package/dist/src/utils/prices/uniV2Price.js.map +0 -1
@@ -394,6 +394,615 @@ export declare abstract class LeafService {
394
394
  };
395
395
  }[];
396
396
  }[]>;
397
+ /**
398
+ * Fetches per-`(chain, opportunity, token)` reward totals for a recipient, with the resolved
399
+ * `Opportunity` (including standard relations) and every `Campaign` linked to those opps —
400
+ * sufficient for opportunity-level privacy masking via `CampaignService.checkAccessBatch`.
401
+ *
402
+ * Implementation:
403
+ * 1. Step 1 (sums) is served by the `leaf_breakdown_amounts_per_recipient_opportunity`
404
+ * materialized view via `LeafViewRepository.amountsByRecipientOpportunity` — pre-aggregated
405
+ * and refreshed every 30 min, mirroring every other recipient-keyed reward MV.
406
+ * 2. Step 2 (campaigns + opportunities per `(chain, opp)`) goes through `CampaignService.findMany`
407
+ * and `OpportunityService.findMany` in parallel; both apply formatting and centralize
408
+ * access semantics.
409
+ *
410
+ * Privacy semantic: campaigns checked for access are **all campaigns linked to each opp**, not
411
+ * only those the recipient earned from. This means an opp where the recipient only earned from
412
+ * a private campaign but where a public sibling campaign exists will resolve as accessible.
413
+ *
414
+ * Staleness: `amount` / `claimed` reflect the MV refresh cadence (≤ 30 min). Acceptable for the
415
+ * rewards-summary surface (display-only); not safe for transactional reads.
416
+ *
417
+ * Currency: `amount` and `claimed` are raw token-decimal integers (never USD); grouping by
418
+ * `tokenAddress` keeps every output row single-currency. USD conversion remains a JS-side
419
+ * concern in `getRewardsSummary`.
420
+ */
421
+ static getBreakdownsByOpportunity(recipient: string, distributionChainIds: number[]): Promise<{
422
+ distributionChainId: number;
423
+ opportunityId: string;
424
+ tokenAddress: string;
425
+ amount: string;
426
+ claimed: string;
427
+ Opportunity: {
428
+ chainId: number;
429
+ type: string;
430
+ identifier: string;
431
+ name: string;
432
+ description: string;
433
+ howToSteps: string[];
434
+ status: import("@package/databases").Status;
435
+ action: import("@package/databases").OpportunityAction;
436
+ tvl: number;
437
+ apr: number;
438
+ maxApr: number | null;
439
+ dailyRewards: number;
440
+ maxDailyRewards: number;
441
+ tags: string[];
442
+ liveCampaigns: number;
443
+ aprRecord: {
444
+ cumulated: number;
445
+ timestamp: bigint;
446
+ breakdowns: ({
447
+ distributionType: import("@package/databases").DistributionType;
448
+ identifier: string;
449
+ type: "CAMPAIGN";
450
+ timestamp: bigint;
451
+ value: number;
452
+ } | {
453
+ identifier: string;
454
+ type: import("@package/databases").AprType;
455
+ timestamp: bigint;
456
+ value: number;
457
+ })[];
458
+ };
459
+ nativeAprRecord: {
460
+ title: string;
461
+ description: string | undefined;
462
+ value: number;
463
+ timestamp: bigint;
464
+ amount: bigint | undefined;
465
+ rewardToken: {
466
+ id: string;
467
+ name: string | null;
468
+ chainId: number;
469
+ address: string;
470
+ decimals: number;
471
+ symbol: string;
472
+ icon: string;
473
+ verified: boolean;
474
+ isNative: boolean;
475
+ isTest: boolean;
476
+ type: "POINT" | "PRETGE" | "TOKEN";
477
+ price?: number | null | undefined;
478
+ updatedAt?: number | null | undefined;
479
+ priceSource?: string | null | undefined;
480
+ displaySymbol?: string | undefined;
481
+ underlyingTokenId?: string | undefined;
482
+ priceAlertDismissedAt?: number | undefined;
483
+ priceAlertCount?: number | undefined;
484
+ } | undefined;
485
+ };
486
+ tvlRecord: {
487
+ id: string;
488
+ total: number;
489
+ timestamp: bigint;
490
+ breakdowns: {
491
+ identifier: string;
492
+ type: import("@package/databases").TvlType;
493
+ value: number;
494
+ }[];
495
+ };
496
+ rewardsRecord: {
497
+ id: string;
498
+ total: number;
499
+ timestamp: bigint;
500
+ breakdowns: {
501
+ id: string;
502
+ timestamp: bigint;
503
+ campaignId: string;
504
+ dailyRewardsRecordId: string;
505
+ token: {
506
+ id: string;
507
+ name: string | null;
508
+ chainId: number;
509
+ address: string;
510
+ decimals: number;
511
+ symbol: string;
512
+ icon: string;
513
+ verified: boolean;
514
+ isNative: boolean;
515
+ isTest: boolean;
516
+ type: "POINT" | "PRETGE" | "TOKEN";
517
+ price?: number | null | undefined;
518
+ updatedAt?: number | null | undefined;
519
+ priceSource?: string | null | undefined;
520
+ displaySymbol?: string | undefined;
521
+ underlyingTokenId?: string | undefined;
522
+ priceAlertDismissedAt?: number | undefined;
523
+ priceAlertCount?: number | undefined;
524
+ };
525
+ amount: bigint;
526
+ maxAmount: bigint;
527
+ value: number;
528
+ maxValue: number;
529
+ distributionType: import("@package/databases").DistributionType;
530
+ onChainCampaignId: string;
531
+ }[];
532
+ };
533
+ campaigns: (Omit<import("../campaign/campaign.model").CampaignWithParams<import("@package/resources/enums").CampaignType>, "createdAt" | "endTimestamp" | "manualOverrides" | "parentCampaignId" | "pauseCompute" | "pausePrecompute" | "rootCampaignId" | "startTimestamp" | "subType"> & {
534
+ subType: number | null;
535
+ startTimestamp: number;
536
+ endTimestamp: number;
537
+ createdAt: string;
538
+ parentCampaignId?: string | undefined;
539
+ rootCampaignId?: string | undefined;
540
+ pauseCompute?: string | undefined;
541
+ pausePrecompute?: string | undefined;
542
+ } & {
543
+ Opportunity: {
544
+ chainId: number;
545
+ type: string;
546
+ identifier: string;
547
+ name: string;
548
+ description: string;
549
+ howToSteps: string[];
550
+ status: import("@package/databases").Status;
551
+ action: import("@package/databases").OpportunityAction;
552
+ tvl: number;
553
+ apr: number;
554
+ maxApr: number | null;
555
+ dailyRewards: number;
556
+ maxDailyRewards: number;
557
+ tags: string[];
558
+ liveCampaigns: number;
559
+ tokens: {
560
+ id: string;
561
+ name: string | null;
562
+ chainId: number;
563
+ address: string;
564
+ decimals: number;
565
+ symbol: string;
566
+ icon: string;
567
+ verified: boolean;
568
+ isNative: boolean;
569
+ isTest: boolean;
570
+ type: "POINT" | "PRETGE" | "TOKEN";
571
+ price?: number | null | undefined;
572
+ updatedAt?: number | null | undefined;
573
+ priceSource?: string | null | undefined;
574
+ displaySymbol?: string | undefined;
575
+ underlyingTokenId?: string | undefined;
576
+ priceAlertDismissedAt?: number | undefined;
577
+ priceAlertCount?: number | undefined;
578
+ }[];
579
+ chain: {
580
+ id: number;
581
+ name: string;
582
+ icon: string;
583
+ liveCampaigns: number;
584
+ endOfDisputePeriod: number;
585
+ explorers?: {
586
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
587
+ url: string;
588
+ chainId: number;
589
+ }[] | undefined;
590
+ lastClaimsOnchainFetchTimestamp: string | null;
591
+ };
592
+ protocol: {
593
+ id: string;
594
+ tags: string[];
595
+ name: string;
596
+ description: string;
597
+ url: string;
598
+ icon: string;
599
+ banner: string | null;
600
+ opportunityBannerLight: string | null;
601
+ opportunityBannerDark: string | null;
602
+ } | undefined;
603
+ activePrograms: {
604
+ icon: string;
605
+ id: string;
606
+ name: string;
607
+ slug: string | null;
608
+ }[];
609
+ depositUrls: {
610
+ id: string;
611
+ title: string;
612
+ url: string;
613
+ subtitle?: string | undefined;
614
+ icon?: string | undefined;
615
+ priority: number;
616
+ }[] | undefined;
617
+ id: string;
618
+ hidden: true | undefined;
619
+ nativeApr: number | undefined;
620
+ depositUrl: string | undefined;
621
+ explorerAddress: string | undefined;
622
+ lastCampaignCreatedAt: number;
623
+ earliestCampaignStart: bigint | undefined;
624
+ latestCampaignStart: bigint | undefined;
625
+ earliestCampaignEnd: bigint | undefined;
626
+ latestCampaignEnd: bigint | undefined;
627
+ };
628
+ })[] | undefined;
629
+ liveCampaignsForCreator?: any;
630
+ soonCampaignsForCreator?: any;
631
+ pastCampaignsForCreator?: any;
632
+ distributedBycreator?: any;
633
+ tokens: {
634
+ id: string;
635
+ name: string | null;
636
+ chainId: number;
637
+ address: string;
638
+ decimals: number;
639
+ symbol: string;
640
+ icon: string;
641
+ verified: boolean;
642
+ isNative: boolean;
643
+ isTest: boolean;
644
+ type: "POINT" | "PRETGE" | "TOKEN";
645
+ price?: number | null | undefined;
646
+ updatedAt?: number | null | undefined;
647
+ priceSource?: string | null | undefined;
648
+ displaySymbol?: string | undefined;
649
+ underlyingTokenId?: string | undefined;
650
+ priceAlertDismissedAt?: number | undefined;
651
+ priceAlertCount?: number | undefined;
652
+ }[];
653
+ chain: {
654
+ id: number;
655
+ name: string;
656
+ icon: string;
657
+ liveCampaigns: number;
658
+ endOfDisputePeriod: number;
659
+ explorers?: {
660
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
661
+ url: string;
662
+ chainId: number;
663
+ }[] | undefined;
664
+ lastClaimsOnchainFetchTimestamp: string | null;
665
+ };
666
+ protocol: {
667
+ id: string;
668
+ tags: string[];
669
+ name: string;
670
+ description: string;
671
+ url: string;
672
+ icon: string;
673
+ banner: string | null;
674
+ opportunityBannerLight: string | null;
675
+ opportunityBannerDark: string | null;
676
+ } | undefined;
677
+ activePrograms: {
678
+ icon: string;
679
+ id: string;
680
+ name: string;
681
+ slug: string | null;
682
+ }[];
683
+ depositUrls: {
684
+ id: string;
685
+ title: string;
686
+ url: string;
687
+ subtitle?: string | undefined;
688
+ icon?: string | undefined;
689
+ priority: number;
690
+ }[] | undefined;
691
+ id: string;
692
+ hidden: true | undefined;
693
+ nativeApr: number | undefined;
694
+ depositUrl: string | undefined;
695
+ explorerAddress: string | undefined;
696
+ lastCampaignCreatedAt: number;
697
+ earliestCampaignStart: bigint | undefined;
698
+ latestCampaignStart: bigint | undefined;
699
+ earliestCampaignEnd: bigint | undefined;
700
+ latestCampaignEnd: bigint | undefined;
701
+ } | ({
702
+ id: string;
703
+ type: string;
704
+ identifier: string;
705
+ chainId: number;
706
+ name: string;
707
+ description: string;
708
+ howToSteps: string[];
709
+ status: "LIVE" | "NONE" | "PAST" | "SOON";
710
+ action: "BORROW" | "DROP" | "HOLD" | "INVALID" | "LEND" | "LONG" | "POOL" | "SHORT" | "STAKE" | "SWAP";
711
+ tags: string[];
712
+ mainProtocol?: string | undefined;
713
+ depositUrl?: string | undefined;
714
+ depositUrls?: {
715
+ id: string;
716
+ title: string;
717
+ url: string;
718
+ subtitle?: string | undefined;
719
+ icon?: string | undefined;
720
+ priority: number;
721
+ }[] | undefined;
722
+ explorerAddress?: string | undefined;
723
+ hidden?: boolean | undefined;
724
+ tvl: number;
725
+ apr: number;
726
+ dailyRewards: number;
727
+ maxDailyRewards?: number | null | undefined;
728
+ liveCampaigns: number;
729
+ lastCampaignCreatedAt: number;
730
+ earliestCampaignStart?: string | bigint | undefined;
731
+ latestCampaignStart?: string | bigint | undefined;
732
+ earliestCampaignEnd?: string | bigint | undefined;
733
+ latestCampaignEnd?: string | bigint | undefined;
734
+ nativeApr?: number | undefined;
735
+ maxApr?: number | null | undefined;
736
+ liveCampaignsForCreator?: number | undefined;
737
+ soonCampaignsForCreator?: number | undefined;
738
+ pastCampaignsForCreator?: number | undefined;
739
+ distributionType?: string | undefined;
740
+ tokens: {
741
+ id: string;
742
+ name: string | null;
743
+ chainId: number;
744
+ address: string;
745
+ decimals: number;
746
+ symbol: string;
747
+ icon: string;
748
+ verified: boolean;
749
+ isNative: boolean;
750
+ isTest: boolean;
751
+ type: "POINT" | "PRETGE" | "TOKEN";
752
+ price?: number | null | undefined;
753
+ updatedAt?: number | null | undefined;
754
+ priceSource?: string | null | undefined;
755
+ displaySymbol?: string | undefined;
756
+ underlyingTokenId?: string | undefined;
757
+ priceAlertDismissedAt?: number | undefined;
758
+ priceAlertCount?: number | undefined;
759
+ }[];
760
+ chain: {
761
+ id: number;
762
+ name: string;
763
+ icon: string;
764
+ liveCampaigns: number;
765
+ endOfDisputePeriod: number;
766
+ explorers?: {
767
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
768
+ url: string;
769
+ chainId: number;
770
+ }[] | undefined;
771
+ lastClaimsOnchainFetchTimestamp: string | null;
772
+ };
773
+ activePrograms: {
774
+ id: string;
775
+ name: string;
776
+ slug?: string | null | undefined;
777
+ description?: string | undefined;
778
+ icon?: string | undefined;
779
+ }[];
780
+ protocol?: {
781
+ id: string;
782
+ name: string;
783
+ icon: string;
784
+ tags: string[];
785
+ description: string;
786
+ url: string;
787
+ dailyRewards?: number | undefined;
788
+ numberOfLiveCampaigns?: number | undefined;
789
+ opportunityLiveTags?: string[] | undefined;
790
+ banner: string | null;
791
+ opportunityBannerLight: string | null;
792
+ opportunityBannerDark: string | null;
793
+ } | null | undefined;
794
+ aprRecord?: {
795
+ cumulated: number;
796
+ timestamp: string | bigint;
797
+ breakdowns: {
798
+ identifier: string;
799
+ type: "CAMPAIGN" | "PROTOCOL" | "TOKEN";
800
+ value: number;
801
+ timestamp: string | bigint;
802
+ distributionType?: "AAVE_NET_APR" | "AAVE_V4_NET_APR" | "DUTCH_AUCTION" | "ERC4626_APR" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | undefined;
803
+ }[];
804
+ } | undefined;
805
+ nativeAprRecord?: {
806
+ title: string;
807
+ description?: string | undefined;
808
+ value: number;
809
+ timestamp: string | bigint;
810
+ amount?: bigint | undefined;
811
+ rewardToken?: {
812
+ id: string;
813
+ name: string | null;
814
+ chainId: number;
815
+ address: string;
816
+ decimals: number;
817
+ symbol: string;
818
+ icon: string;
819
+ verified: boolean;
820
+ isNative: boolean;
821
+ isTest: boolean;
822
+ type: "POINT" | "PRETGE" | "TOKEN";
823
+ price?: number | null | undefined;
824
+ updatedAt?: number | null | undefined;
825
+ priceSource?: string | null | undefined;
826
+ displaySymbol?: string | undefined;
827
+ underlyingTokenId?: string | undefined;
828
+ priceAlertDismissedAt?: number | undefined;
829
+ priceAlertCount?: number | undefined;
830
+ } | undefined;
831
+ } | undefined;
832
+ tvlRecord?: {
833
+ total: number;
834
+ timestamp: string | bigint;
835
+ breakdowns: {
836
+ identifier: string;
837
+ type: "PROTOCOL" | "TOKEN";
838
+ value: number;
839
+ }[];
840
+ } | undefined;
841
+ rewardsRecord?: {
842
+ total: number;
843
+ timestamp: string | bigint;
844
+ breakdowns: {
845
+ campaignId: string;
846
+ value: number;
847
+ maxValue?: number | undefined;
848
+ timestamp: string | bigint;
849
+ token: {
850
+ id: string;
851
+ name: string | null;
852
+ chainId: number;
853
+ address: string;
854
+ decimals: number;
855
+ symbol: string;
856
+ icon: string;
857
+ verified: boolean;
858
+ isNative: boolean;
859
+ isTest: boolean;
860
+ type: "POINT" | "PRETGE" | "TOKEN";
861
+ price?: number | null | undefined;
862
+ updatedAt?: number | null | undefined;
863
+ priceSource?: string | null | undefined;
864
+ displaySymbol?: string | undefined;
865
+ underlyingTokenId?: string | undefined;
866
+ priceAlertDismissedAt?: number | undefined;
867
+ priceAlertCount?: number | undefined;
868
+ };
869
+ amount: string | bigint;
870
+ distributionType?: "AAVE_NET_APR" | "AAVE_V4_NET_APR" | "DUTCH_AUCTION" | "ERC4626_APR" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | undefined;
871
+ onChainCampaignId?: string | undefined;
872
+ }[];
873
+ } | undefined;
874
+ } & {
875
+ campaigns?: {
876
+ id: string;
877
+ computeChainId: number;
878
+ distributionChainId: number;
879
+ campaignId: string;
880
+ type: string;
881
+ subType?: number | null | undefined;
882
+ amount: string;
883
+ startTimestamp: string | number | bigint;
884
+ endTimestamp: string | number | bigint;
885
+ creatorAddress: string;
886
+ apr?: number | undefined;
887
+ dailyRewards?: number | undefined;
888
+ creator?: {
889
+ address: string;
890
+ tags?: string[] | undefined;
891
+ creatorId?: string | null | undefined;
892
+ } | undefined;
893
+ params: unknown;
894
+ description?: string | undefined;
895
+ chain: {
896
+ id: number;
897
+ name: string;
898
+ icon: string;
899
+ liveCampaigns: number;
900
+ endOfDisputePeriod: number;
901
+ explorers?: {
902
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
903
+ url: string;
904
+ chainId: number;
905
+ }[] | undefined;
906
+ lastClaimsOnchainFetchTimestamp: string | null;
907
+ };
908
+ rewardTokenId?: string | undefined;
909
+ rewardToken: {
910
+ id: string;
911
+ name: string | null;
912
+ chainId: number;
913
+ address: string;
914
+ decimals: number;
915
+ symbol: string;
916
+ icon: string;
917
+ verified: boolean;
918
+ isNative: boolean;
919
+ isTest: boolean;
920
+ type: "POINT" | "PRETGE" | "TOKEN";
921
+ price?: number | null | undefined;
922
+ updatedAt?: number | null | undefined;
923
+ priceSource?: string | null | undefined;
924
+ displaySymbol?: string | undefined;
925
+ underlyingTokenId?: string | undefined;
926
+ priceAlertDismissedAt?: number | undefined;
927
+ priceAlertCount?: number | undefined;
928
+ };
929
+ opportunityId?: string | undefined;
930
+ distributionChain?: {
931
+ id: number;
932
+ name: string;
933
+ icon: string;
934
+ liveCampaigns: number;
935
+ endOfDisputePeriod: number;
936
+ explorers?: {
937
+ type: "BLOCKSCOUT" | "ETHERSCAN" | "SOLSCAN";
938
+ url: string;
939
+ chainId: number;
940
+ }[] | undefined;
941
+ lastClaimsOnchainFetchTimestamp: string | null;
942
+ } | undefined;
943
+ distributionType?: "AAVE_NET_APR" | "AAVE_V4_NET_APR" | "DUTCH_AUCTION" | "ERC4626_APR" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | undefined;
944
+ campaignStatus: {
945
+ campaignId: string;
946
+ computedUntil: string | number;
947
+ processingStarted: string | number;
948
+ status: string;
949
+ preComputeProcessingStarted: string | number;
950
+ preComputeStatus: string;
951
+ delay?: number | undefined;
952
+ error?: string | undefined;
953
+ details?: unknown;
954
+ };
955
+ createdAt: string;
956
+ rootCampaignId?: string | null | undefined;
957
+ parentCampaignId?: string | null | undefined;
958
+ childCampaignIds?: string[] | undefined;
959
+ dailyRewardsBreakdown?: {
960
+ campaignId: string;
961
+ value: number;
962
+ maxValue?: number | undefined;
963
+ timestamp: string | bigint;
964
+ token: {
965
+ id: string;
966
+ name: string | null;
967
+ chainId: number;
968
+ address: string;
969
+ decimals: number;
970
+ symbol: string;
971
+ icon: string;
972
+ verified: boolean;
973
+ isNative: boolean;
974
+ isTest: boolean;
975
+ type: "POINT" | "PRETGE" | "TOKEN";
976
+ price?: number | null | undefined;
977
+ updatedAt?: number | null | undefined;
978
+ priceSource?: string | null | undefined;
979
+ displaySymbol?: string | undefined;
980
+ underlyingTokenId?: string | undefined;
981
+ priceAlertDismissedAt?: number | undefined;
982
+ priceAlertCount?: number | undefined;
983
+ };
984
+ amount: string | bigint;
985
+ distributionType?: "AAVE_NET_APR" | "AAVE_V4_NET_APR" | "DUTCH_AUCTION" | "ERC4626_APR" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "FIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "FIX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUE" | "MAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNT" | "MAX_REWARD_VALUE_PER_LIQUIDITY_VALUE" | undefined;
986
+ onChainCampaignId?: string | undefined;
987
+ }[] | undefined;
988
+ pauseCompute?: string | null | undefined;
989
+ pausePrecompute?: string | null | undefined;
990
+ hasOverrides?: boolean | undefined;
991
+ isPrivate: boolean;
992
+ campaignEncodingHash?: string | undefined;
993
+ }[] | undefined;
994
+ }) | null;
995
+ Campaigns: (Omit<import("../campaign/campaign.model").CampaignWithParams<import("@package/resources/enums").CampaignType>, "createdAt" | "endTimestamp" | "manualOverrides" | "parentCampaignId" | "pauseCompute" | "pausePrecompute" | "rootCampaignId" | "startTimestamp" | "subType"> & {
996
+ subType: number | null;
997
+ startTimestamp: number;
998
+ endTimestamp: number;
999
+ createdAt: string;
1000
+ parentCampaignId?: string | undefined;
1001
+ rootCampaignId?: string | undefined;
1002
+ pauseCompute?: string | undefined;
1003
+ pausePrecompute?: string | undefined;
1004
+ })[];
1005
+ }[]>;
397
1006
  private static fetchData;
398
1007
  /** Extracts unique campaign and token keys from temp leaves for batch prefetch. */
399
1008
  private static extractTempLeafKeys;