@merkl/api 0.17.21 → 0.17.23

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 (37) hide show
  1. package/dist/database/api/.generated/drizzle/schema.d.ts +46 -0
  2. package/dist/database/api/.generated/drizzle/schema.js +5 -1
  3. package/dist/database/api/.generated/drizzle/schema.ts +8 -1
  4. package/dist/database/api/.generated/edge.js +26 -4
  5. package/dist/database/api/.generated/index-browser.js +7 -1
  6. package/dist/database/api/.generated/index.d.ts +149 -2
  7. package/dist/database/api/.generated/index.js +26 -4
  8. package/dist/database/api/.generated/package.json +1 -1
  9. package/dist/database/api/.generated/schema.prisma +29 -8
  10. package/dist/database/api/.generated/wasm.js +7 -1
  11. package/dist/src/eden/index.d.ts +241 -10
  12. package/dist/src/index.d.ts +53 -2
  13. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +40 -1
  14. package/dist/src/modules/v4/campaign/campaign.controller.js +16 -1
  15. package/dist/src/modules/v4/campaign/campaign.model.d.ts +14 -1
  16. package/dist/src/modules/v4/campaign/campaign.model.js +11 -1
  17. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +64 -32
  18. package/dist/src/modules/v4/campaign/campaign.repository.js +84 -122
  19. package/dist/src/modules/v4/campaign/campaign.service.d.ts +61 -19
  20. package/dist/src/modules/v4/campaign/campaign.service.js +51 -63
  21. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +1 -0
  22. package/dist/src/modules/v4/opportunity/opportunity.converter.js +1 -0
  23. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +5 -0
  24. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +3 -0
  25. package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +100 -1
  26. package/dist/src/modules/v4/programPayload/programPayload.repository.js +146 -1
  27. package/dist/src/modules/v4/protocol/protocol.repository.d.ts +1 -0
  28. package/dist/src/modules/v4/router.d.ts +53 -2
  29. package/dist/src/modules/v4/status/status.service.js +1 -1
  30. package/dist/src/modules/v4/token/token.controller.d.ts +12 -1
  31. package/dist/src/modules/v4/token/token.controller.js +2 -2
  32. package/dist/src/modules/v4/token/token.service.d.ts +13 -1
  33. package/dist/src/modules/v4/token/token.service.js +1 -3
  34. package/dist/src/utils/error.d.ts +6 -0
  35. package/dist/src/utils/error.js +12 -0
  36. package/dist/tsconfig.package.tsbuildinfo +1 -1
  37. package/package.json +1 -1
@@ -513,6 +513,7 @@ export declare abstract class OpportunityService {
513
513
  rewardTokenId: string;
514
514
  amount: string;
515
515
  opportunityId: string;
516
+ manualOverrides: import("../../../../database/api/.generated").$Enums.CampaignManualOverride[];
516
517
  }[] | undefined;
517
518
  id: string;
518
519
  depositUrl: string | undefined;
@@ -659,6 +660,7 @@ export declare abstract class OpportunityService {
659
660
  rewardTokenId: string;
660
661
  amount: string;
661
662
  opportunityId: string;
663
+ manualOverrides: import("../../../../database/api/.generated").$Enums.CampaignManualOverride[];
662
664
  }[] | undefined;
663
665
  id: string;
664
666
  depositUrl: string | undefined;
@@ -801,6 +803,7 @@ export declare abstract class OpportunityService {
801
803
  rewardTokenId: string;
802
804
  amount: string;
803
805
  opportunityId: string;
806
+ manualOverrides: import("../../../../database/api/.generated").$Enums.CampaignManualOverride[];
804
807
  }[] | undefined;
805
808
  id: string;
806
809
  depositUrl: string | undefined;
@@ -25,9 +25,13 @@ export declare enum etherlinkCampaigns {
25
25
  Superlend_Supply_WXTZ_Etherlink = "Superlend Supply WXTZ Etherlink 0x008ae222661B6A42e3A097bd7AAC15412829106b",
26
26
  Iguana_WETH_WXTZ = "Iguana WETH/WXTZ Etherlink 0x478F067b0Ed73d120BBcd8c6f4f33438FC483912",
27
27
  Iguana_USDC_USDT = "Iguana USDC/USDT Etherlink 0x86456e2E2A203Da82E61ed34eF4137Fbe545f0DC",
28
+ Iguana_XTZ_USDC = "Iguana XTZ/USDT Etherlink 0x508060A01f11d6a2Eb774B55aEba95931265E0cc",
28
29
  Hanji_HJLP = "Hanji HJLP Etherlink 0x1cd88fBD530281Ad6c639E2B897c4E239003A930",
29
30
  Uranium_Hold_xU308_Etherlink = "Uranium Hold xU308 Etherlink 0x79052Ab3C166D4899a1e0DD033aC3b379AF0B1fD",
30
- referral_test = "referral test Etherlink 0x0"
31
+ referral_test = "referral test Etherlink 0x0",
32
+ Hanji_XTZ_USDC = "Hanji XTZ/USDC Etherlink 0xd0bc067cf877f7b76ceb331891331d9e6acda1a7",
33
+ Hanji_WETH_USDC = "Hanji WETH/USDC Etherlink 0x65ea4dd7f789c71c0f57ed84b3bdc3062898d3cb",
34
+ Hanji_WBTC_USDC = "Hanji WBTC/USDC Etherlink 0xbb6b01d94e3f6ebae8647cb56d544f57928ab758"
31
35
  }
32
36
  export declare enum swapxCampaigns {
33
37
  Swapx_SWPx_USDCe_Swapx = "Swapx SWPx/USDC.e Swapx 0x467865E7Ce29E7ED8f362D51Fd7141117B234b44",
@@ -527,6 +531,20 @@ declare const EtherlinkInterfaceCampaigns: {
527
531
  weightToken0: number;
528
532
  weightToken1: number;
529
533
  };
534
+ "Iguana XTZ/USDT Etherlink 0x508060A01f11d6a2Eb774B55aEba95931265E0cc": {
535
+ campaignType: any;
536
+ computeChainId: any;
537
+ hooks: never[];
538
+ poolAddress: string;
539
+ whitelist: never[];
540
+ blacklist: never[];
541
+ url: string;
542
+ forwarders: never[];
543
+ isOutOfRangeIncentivized: boolean;
544
+ weightFees: number;
545
+ weightToken0: number;
546
+ weightToken1: number;
547
+ };
530
548
  "referral test Etherlink 0x0": {
531
549
  campaignType: any;
532
550
  computeChainId: any;
@@ -551,6 +569,87 @@ declare const EtherlinkInterfaceCampaigns: {
551
569
  url: string;
552
570
  forwarders: never[];
553
571
  };
572
+ "Hanji XTZ/USDC Etherlink 0xd0bc067cf877f7b76ceb331891331d9e6acda1a7": {
573
+ campaignType: any;
574
+ contract: string;
575
+ eventID: string;
576
+ topicToData: {
577
+ topicIndex: number;
578
+ decodeKeyTopic: string;
579
+ dataIndex: number;
580
+ multiplier: string;
581
+ }[];
582
+ computeScoreParameters: {
583
+ computeMethod: any;
584
+ computeSettings: {
585
+ maxRewards: string;
586
+ };
587
+ };
588
+ decodeDataValue: string[];
589
+ expectedChecks: {
590
+ index: number;
591
+ key: string;
592
+ expectedValue: string;
593
+ }[];
594
+ whitelist: never[];
595
+ blacklist: never[];
596
+ forwarders: never[];
597
+ hooks: never[];
598
+ };
599
+ "Hanji WETH/USDC Etherlink 0x65ea4dd7f789c71c0f57ed84b3bdc3062898d3cb": {
600
+ campaignType: any;
601
+ contract: string;
602
+ eventID: string;
603
+ topicToData: {
604
+ topicIndex: number;
605
+ decodeKeyTopic: string;
606
+ dataIndex: number;
607
+ multiplier: string;
608
+ }[];
609
+ computeScoreParameters: {
610
+ computeMethod: any;
611
+ computeSettings: {
612
+ maxRewards: string;
613
+ };
614
+ };
615
+ decodeDataValue: string[];
616
+ expectedChecks: {
617
+ index: number;
618
+ key: string;
619
+ expectedValue: string;
620
+ }[];
621
+ whitelist: never[];
622
+ blacklist: never[];
623
+ forwarders: never[];
624
+ hooks: never[];
625
+ };
626
+ "Hanji WBTC/USDC Etherlink 0xbb6b01d94e3f6ebae8647cb56d544f57928ab758": {
627
+ campaignType: any;
628
+ contract: string;
629
+ eventID: string;
630
+ topicToData: {
631
+ topicIndex: number;
632
+ decodeKeyTopic: string;
633
+ dataIndex: number;
634
+ multiplier: string;
635
+ }[];
636
+ computeScoreParameters: {
637
+ computeMethod: any;
638
+ computeSettings: {
639
+ maxRewards: string;
640
+ };
641
+ };
642
+ decodeDataValue: string[];
643
+ expectedChecks: {
644
+ index: number;
645
+ key: string;
646
+ expectedValue: string;
647
+ }[];
648
+ whitelist: never[];
649
+ blacklist: never[];
650
+ forwarders: never[];
651
+ hooks: never[];
652
+ };
554
653
  };
555
654
  declare const SwapxInterfaceCampaigns: {
556
655
  [key in swapxCampaigns]: partialConfig;
@@ -1,4 +1,5 @@
1
- import { BalanceCallType, Campaign, ChainId, CompFork, CompoundSubCampaignType, Forwarder, HOOK, MorphoSubCampaignType, StandardType, boostingFunction, boostingReferralFunction, contractStateBoost, defaultBoost, defaultReferralBoost, selectionRaffleMethod, } from "@sdk";
1
+ import { BalanceCallType, Campaign, ChainId, CompFork, CompoundSubCampaignType, ComputeScoreMethod, Forwarder, HOOK, MorphoSubCampaignType, StandardType, boostingFunction, boostingReferralFunction, contractStateBoost, defaultBoost, defaultReferralBoost, selectionRaffleMethod, } from "@sdk";
2
+ import { id } from "ethers/lib/utils";
2
3
  export var program;
3
4
  (function (program) {
4
5
  program["Puffer"] = "Puffer";
@@ -30,9 +31,13 @@ export var etherlinkCampaigns;
30
31
  etherlinkCampaigns["Superlend_Supply_WXTZ_Etherlink"] = "Superlend Supply WXTZ Etherlink 0x008ae222661B6A42e3A097bd7AAC15412829106b";
31
32
  etherlinkCampaigns["Iguana_WETH_WXTZ"] = "Iguana WETH/WXTZ Etherlink 0x478F067b0Ed73d120BBcd8c6f4f33438FC483912";
32
33
  etherlinkCampaigns["Iguana_USDC_USDT"] = "Iguana USDC/USDT Etherlink 0x86456e2E2A203Da82E61ed34eF4137Fbe545f0DC";
34
+ etherlinkCampaigns["Iguana_XTZ_USDC"] = "Iguana XTZ/USDT Etherlink 0x508060A01f11d6a2Eb774B55aEba95931265E0cc";
33
35
  etherlinkCampaigns["Hanji_HJLP"] = "Hanji HJLP Etherlink 0x1cd88fBD530281Ad6c639E2B897c4E239003A930";
34
36
  etherlinkCampaigns["Uranium_Hold_xU308_Etherlink"] = "Uranium Hold xU308 Etherlink 0x79052Ab3C166D4899a1e0DD033aC3b379AF0B1fD";
35
37
  etherlinkCampaigns["referral_test"] = "referral test Etherlink 0x0";
38
+ etherlinkCampaigns["Hanji_XTZ_USDC"] = "Hanji XTZ/USDC Etherlink 0xd0bc067cf877f7b76ceb331891331d9e6acda1a7";
39
+ etherlinkCampaigns["Hanji_WETH_USDC"] = "Hanji WETH/USDC Etherlink 0x65ea4dd7f789c71c0f57ed84b3bdc3062898d3cb";
40
+ etherlinkCampaigns["Hanji_WBTC_USDC"] = "Hanji WBTC/USDC Etherlink 0xbb6b01d94e3f6ebae8647cb56d544f57928ab758";
36
41
  })(etherlinkCampaigns || (etherlinkCampaigns = {}));
37
42
  export var swapxCampaigns;
38
43
  (function (swapxCampaigns) {
@@ -569,6 +574,20 @@ const EtherlinkInterfaceCampaigns = {
569
574
  weightToken0: 4000,
570
575
  weightToken1: 4000,
571
576
  },
577
+ [etherlinkCampaigns.Iguana_XTZ_USDC]: {
578
+ campaignType: Campaign.CLAMM,
579
+ computeChainId: ChainId.ETHERLINK,
580
+ hooks: [],
581
+ poolAddress: "0x508060A01f11d6a2Eb774B55aEba95931265E0cc",
582
+ whitelist: [],
583
+ blacklist: [],
584
+ url: "https://www.iguanadex.com/info/v3/pairs/0x508060A01f11d6a2Eb774B55aEba95931265E0cc?chain=etherlink",
585
+ forwarders: [],
586
+ isOutOfRangeIncentivized: false,
587
+ weightFees: 2000,
588
+ weightToken0: 4000,
589
+ weightToken1: 4000,
590
+ },
572
591
  [etherlinkCampaigns.referral_test]: {
573
592
  campaignType: Campaign.ERC20,
574
593
  computeChainId: ChainId.ETHERLINK,
@@ -595,6 +614,132 @@ const EtherlinkInterfaceCampaigns = {
595
614
  url: "",
596
615
  forwarders: [],
597
616
  },
617
+ [etherlinkCampaigns.Hanji_XTZ_USDC]: {
618
+ campaignType: Campaign.EVENT_BASED,
619
+ contract: "0xd0bc067cf877f7b76ceb331891331d9e6acda1a7",
620
+ eventID: id("OrderPlaced(address,uint64,bool,uint128,uint72,uint128,uint128,uint128,uint128,uint128,bool,bool)"),
621
+ topicToData: [
622
+ { topicIndex: 1, decodeKeyTopic: "address", dataIndex: 1, multiplier: (3n * 10n ** (7n + 12n)).toString() },
623
+ ],
624
+ computeScoreParameters: {
625
+ computeMethod: ComputeScoreMethod.cappedScorePercentageHistorical,
626
+ computeSettings: {
627
+ maxRewards: (10n ** 8n).toString(),
628
+ },
629
+ },
630
+ decodeDataValue: [
631
+ "uint64",
632
+ "uint128",
633
+ "uint72",
634
+ "uint128",
635
+ "uint128",
636
+ "uint128",
637
+ "uint128",
638
+ "uint128",
639
+ "bool",
640
+ "bool",
641
+ ],
642
+ expectedChecks: [
643
+ {
644
+ index: 8,
645
+ key: "data",
646
+ expectedValue: "true",
647
+ },
648
+ {
649
+ index: 9,
650
+ key: "data",
651
+ expectedValue: "false",
652
+ },
653
+ ],
654
+ whitelist: [],
655
+ blacklist: [],
656
+ forwarders: [],
657
+ hooks: [],
658
+ },
659
+ [etherlinkCampaigns.Hanji_WETH_USDC]: {
660
+ campaignType: Campaign.EVENT_BASED,
661
+ contract: "0x65ea4dd7f789c71c0f57ed84b3bdc3062898d3cb",
662
+ eventID: id("OrderPlaced(address,uint64,bool,uint128,uint72,uint128,uint128,uint128,uint128,uint128,bool,bool)"),
663
+ topicToData: [
664
+ { topicIndex: 1, decodeKeyTopic: "address", dataIndex: 1, multiplier: (3n * 10n ** (7n + 12n)).toString() },
665
+ ],
666
+ computeScoreParameters: {
667
+ computeMethod: ComputeScoreMethod.cappedScorePercentageHistorical,
668
+ computeSettings: {
669
+ maxRewards: (10n ** 8n).toString(),
670
+ },
671
+ },
672
+ decodeDataValue: [
673
+ "uint64",
674
+ "uint128",
675
+ "uint72",
676
+ "uint128",
677
+ "uint128",
678
+ "uint128",
679
+ "uint128",
680
+ "uint128",
681
+ "bool",
682
+ "bool",
683
+ ],
684
+ expectedChecks: [
685
+ {
686
+ index: 8,
687
+ key: "data",
688
+ expectedValue: "true",
689
+ },
690
+ {
691
+ index: 9,
692
+ key: "data",
693
+ expectedValue: "false",
694
+ },
695
+ ],
696
+ whitelist: [],
697
+ blacklist: [],
698
+ forwarders: [],
699
+ hooks: [],
700
+ },
701
+ [etherlinkCampaigns.Hanji_WBTC_USDC]: {
702
+ campaignType: Campaign.EVENT_BASED,
703
+ contract: "0xbb6b01d94e3f6ebae8647cb56d544f57928ab758",
704
+ eventID: id("OrderPlaced(address,uint64,bool,uint128,uint72,uint128,uint128,uint128,uint128,uint128,bool,bool)"),
705
+ topicToData: [
706
+ { topicIndex: 1, decodeKeyTopic: "address", dataIndex: 1, multiplier: (3n * 10n ** (7n + 12n)).toString() },
707
+ ],
708
+ computeScoreParameters: {
709
+ computeMethod: ComputeScoreMethod.cappedScorePercentageHistorical,
710
+ computeSettings: {
711
+ maxRewards: (10n ** 8n).toString(),
712
+ },
713
+ },
714
+ decodeDataValue: [
715
+ "uint64",
716
+ "uint128",
717
+ "uint72",
718
+ "uint128",
719
+ "uint128",
720
+ "uint128",
721
+ "uint128",
722
+ "uint128",
723
+ "bool",
724
+ "bool",
725
+ ],
726
+ expectedChecks: [
727
+ {
728
+ index: 8,
729
+ key: "data",
730
+ expectedValue: "true",
731
+ },
732
+ {
733
+ index: 9,
734
+ key: "data",
735
+ expectedValue: "false",
736
+ },
737
+ ],
738
+ whitelist: [],
739
+ blacklist: [],
740
+ forwarders: [],
741
+ hooks: [],
742
+ },
598
743
  };
599
744
  const SwapxInterfaceCampaigns = {
600
745
  [swapxCampaigns.Swapx_SWPx_USDCe_Swapx]: {
@@ -41,6 +41,7 @@ export declare abstract class ProtocolRepository {
41
41
  amount: string;
42
42
  opportunityId: string;
43
43
  creatorAddress: string;
44
+ manualOverrides: import("../../../../database/api/.generated").$Enums.CampaignManualOverride[];
44
45
  }[];
45
46
  } & {
46
47
  name: string;
@@ -241,6 +241,7 @@ export declare const v4: Elysia<"/v4", false, {
241
241
  rewardTokenId: string;
242
242
  amount: string;
243
243
  opportunityId: string;
244
+ manualOverrides: import("../../../database/api/.generated").$Enums.CampaignManualOverride[];
244
245
  }[] | undefined;
245
246
  id: string;
246
247
  depositUrl: string | undefined;
@@ -960,6 +961,7 @@ export declare const v4: Elysia<"/v4", false, {
960
961
  amount: string;
961
962
  opportunityId: string;
962
963
  creatorAddress: string;
964
+ manualOverrides: import("../../../database/api/.generated").$Enums.CampaignManualOverride[];
963
965
  } | undefined;
964
966
  };
965
967
  };
@@ -968,7 +970,6 @@ export declare const v4: Elysia<"/v4", false, {
968
970
  opportunity: {
969
971
  patch: {
970
972
  body: {
971
- tags?: string[] | undefined;
972
973
  opportunityIdentifier?: string | undefined;
973
974
  campaignId: string;
974
975
  distributionChain: number;
@@ -983,6 +984,42 @@ export declare const v4: Elysia<"/v4", false, {
983
984
  };
984
985
  };
985
986
  };
987
+ } & {
988
+ creator: {
989
+ patch: {
990
+ body: {
991
+ campaignId: string;
992
+ creatorAddress: string;
993
+ distributionChain: number;
994
+ };
995
+ params: {};
996
+ query: unknown;
997
+ headers: {
998
+ authorization: string;
999
+ };
1000
+ response: {
1001
+ 200: void;
1002
+ };
1003
+ };
1004
+ };
1005
+ } & {
1006
+ "remove-override": {
1007
+ patch: {
1008
+ body: {
1009
+ campaignId: string;
1010
+ field: "opportunityId" | "creatorAddress";
1011
+ distributionChain: number;
1012
+ };
1013
+ params: {};
1014
+ query: unknown;
1015
+ headers: {
1016
+ authorization: string;
1017
+ };
1018
+ response: {
1019
+ 200: void;
1020
+ };
1021
+ };
1022
+ };
986
1023
  } & {
987
1024
  metadata: {
988
1025
  patch: {
@@ -1011,6 +1048,7 @@ export declare const v4: Elysia<"/v4", false, {
1011
1048
  amount: string;
1012
1049
  opportunityId: string;
1013
1050
  creatorAddress: string;
1051
+ manualOverrides: import("../../../database/api/.generated").$Enums.CampaignManualOverride[];
1014
1052
  };
1015
1053
  };
1016
1054
  };
@@ -1108,6 +1146,7 @@ export declare const v4: Elysia<"/v4", false, {
1108
1146
  rewardTokenId: string;
1109
1147
  amount: string;
1110
1148
  opportunityId: string;
1149
+ manualOverrides: import("../../../database/api/.generated").$Enums.CampaignManualOverride[];
1111
1150
  }[];
1112
1151
  };
1113
1152
  };
@@ -1172,6 +1211,7 @@ export declare const v4: Elysia<"/v4", false, {
1172
1211
  rewardTokenId: string;
1173
1212
  amount: string;
1174
1213
  opportunityId: string;
1214
+ manualOverrides: import("../../../database/api/.generated").$Enums.CampaignManualOverride[];
1175
1215
  };
1176
1216
  };
1177
1217
  };
@@ -1637,7 +1677,18 @@ export declare const v4: Elysia<"/v4", false, {
1637
1677
  authorization: string;
1638
1678
  };
1639
1679
  response: {
1640
- 200: void;
1680
+ 200: {
1681
+ symbol: string;
1682
+ name: string | null;
1683
+ id: string;
1684
+ icon: string;
1685
+ chainId: number;
1686
+ address: string;
1687
+ decimals: number;
1688
+ verified: boolean;
1689
+ isTest: boolean;
1690
+ price?: number | null | undefined;
1691
+ } | undefined;
1641
1692
  };
1642
1693
  };
1643
1694
  };
@@ -78,7 +78,7 @@ export class StatusService {
78
78
  static async findUpdatesAndDelays() {
79
79
  const merklRoots = await MerklRootService.fetchAll();
80
80
  const delayedCampaignPromises = Promise.allSettled(Object.keys(merklRoots).map(chainId => StatusService.findManyDelay({ chainId: Number.parseInt(chainId), delayLowerBound: 9 * HOUR })));
81
- const liveCampaignPromises = await Promise.allSettled(Object.keys(merklRoots).map(chainId => CampaignService.countLives(Number.parseInt(chainId))));
81
+ const liveCampaignPromises = await Promise.allSettled(Object.keys(merklRoots).map(chainId => CampaignService.countLives({ distributionChainId: Number.parseInt(chainId) })));
82
82
  const delayedCampaignArray = await delayedCampaignPromises;
83
83
  const liveCampaignArray = await liveCampaignPromises;
84
84
  const res = {};
@@ -202,7 +202,18 @@ export declare const TokenController: Elysia<"/tokens", false, {
202
202
  authorization: string;
203
203
  };
204
204
  response: {
205
- 200: void;
205
+ 200: {
206
+ symbol: string;
207
+ name: string | null;
208
+ id: string;
209
+ icon: string;
210
+ chainId: number;
211
+ address: string;
212
+ decimals: number;
213
+ verified: boolean;
214
+ isTest: boolean;
215
+ price?: number | null | undefined;
216
+ } | undefined;
206
217
  };
207
218
  };
208
219
  };
@@ -74,7 +74,7 @@ export const TokenController = new Elysia({ prefix: "/tokens", detail: { tags: [
74
74
  hide: true,
75
75
  },
76
76
  })
77
- // ─── Update IsTest Status ────────────────────────────────────────────
77
+ // ─── Create a new Token entity ────────────────────────────────────────────
78
78
  .post("/", async ({ body }) => await TokenService.fillAndCreate(body), {
79
79
  body: CreateTokenDto,
80
80
  headers: AuthorizationHeadersDto,
@@ -85,7 +85,7 @@ export const TokenController = new Elysia({ prefix: "/tokens", detail: { tags: [
85
85
  },
86
86
  detail: { hide: true },
87
87
  })
88
- // ─── Update IsTest Status ────────────────────────────────────────────
88
+ // ─── Update token fields Status ────────────────────────────────────────────
89
89
  .patch("/:id", async ({ params, body }) => await TokenService.update(params.id, body), {
90
90
  params: TokenIdDto,
91
91
  body: UpdateTokenDto,
@@ -115,7 +115,19 @@ export declare abstract class TokenService {
115
115
  * @param chainId
116
116
  * @param address
117
117
  */
118
- static fillAndCreate(token: CreateTokenModel): Promise<void>;
118
+ static fillAndCreate(token: CreateTokenModel): Promise<({
119
+ symbol: string;
120
+ name: string | null;
121
+ id: string;
122
+ icon: string;
123
+ chainId: number;
124
+ address: string;
125
+ decimals: number;
126
+ verified: boolean;
127
+ isTest: boolean;
128
+ } & {
129
+ price?: number | null | undefined;
130
+ }) | undefined>;
119
131
  /**
120
132
  * Read token from database
121
133
  * @param chainId
@@ -202,13 +202,11 @@ export class TokenService {
202
202
  try {
203
203
  const id = TokenService.hashId(token);
204
204
  const filledData = await TokenService.fetchOnChain({ address: token.address, chainId: token.chainId });
205
- console.log(filledData);
206
- await TokenRepository.upsert({ ...filledData, ...token, id });
205
+ return await TokenRepository.upsert({ ...filledData, ...token, id });
207
206
  }
208
207
  catch (e) {
209
208
  console.error(e);
210
209
  }
211
- return;
212
210
  }
213
211
  /**
214
212
  * Read token from database
@@ -15,6 +15,12 @@ export declare class OpportunityNotFound extends Error {
15
15
  chainId: ChainId;
16
16
  constructor(mainParameter: string, chainId: ChainId);
17
17
  }
18
+ export declare class CannotParseOpportunity extends Error {
19
+ campaignId: string;
20
+ chainId: ChainId;
21
+ type: number;
22
+ constructor(campaignId: string, chainId: ChainId, type: number);
23
+ }
18
24
  export declare class MerkleRootNotFound extends Error {
19
25
  chainId: ChainId;
20
26
  constructor(chainId: ChainId);
@@ -27,6 +27,18 @@ export class OpportunityNotFound extends Error {
27
27
  this.name = "OPPORTUNITY_NOT_FOUND";
28
28
  }
29
29
  }
30
+ export class CannotParseOpportunity extends Error {
31
+ campaignId;
32
+ chainId;
33
+ type;
34
+ constructor(campaignId, chainId, type) {
35
+ super(`Cannot parse opportunity from campaign ${campaignId} of type ${type} on chain ${NETWORK_LABELS[chainId]}`);
36
+ this.campaignId = campaignId;
37
+ this.chainId = chainId;
38
+ this.type = type;
39
+ this.name = "OPPORTUNITY_CANNOT_BE_PARSED";
40
+ }
41
+ }
30
42
  export class MerkleRootNotFound extends Error {
31
43
  chainId;
32
44
  constructor(chainId) {