@merkl/api 0.10.169 → 0.10.171

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 (61) hide show
  1. package/dist/database/api/.generated/edge.js +6 -3
  2. package/dist/database/api/.generated/index-browser.js +3 -0
  3. package/dist/database/api/.generated/index.d.ts +113 -0
  4. package/dist/database/api/.generated/index.js +6 -3
  5. package/dist/database/api/.generated/package.json +1 -1
  6. package/dist/database/api/.generated/schema.prisma +17 -15
  7. package/dist/database/api/.generated/wasm.js +3 -0
  8. package/dist/src/eden/index.d.ts +147 -45
  9. package/dist/src/index.d.ts +49 -15
  10. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/factoryFinder.js +2 -0
  11. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +3 -1
  12. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +8 -0
  13. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.d.ts +29 -0
  14. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/PendleYTProcessor.js +31 -0
  15. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TempestVaultProcessor.d.ts +3 -1
  16. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/TempestVaultProcessor.js +36 -7
  17. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +3 -0
  18. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1RefactoFinal.js +1 -1
  19. package/dist/src/modules/v4/campaign/campaign.controller.d.ts +5 -1
  20. package/dist/src/modules/v4/campaign/campaign.model.d.ts +1 -0
  21. package/dist/src/modules/v4/campaign/campaign.model.js +1 -0
  22. package/dist/src/modules/v4/campaign/campaign.repository.d.ts +2 -0
  23. package/dist/src/modules/v4/campaign/campaign.repository.js +3 -1
  24. package/dist/src/modules/v4/campaign/campaign.service.d.ts +6 -2
  25. package/dist/src/modules/v4/campaign/campaign.service.js +2 -1
  26. package/dist/src/modules/v4/opportunity/opportunity.controller.d.ts +27 -10
  27. package/dist/src/modules/v4/opportunity/opportunity.model.d.ts +2 -1
  28. package/dist/src/modules/v4/opportunity/opportunity.model.js +1 -0
  29. package/dist/src/modules/v4/opportunity/opportunity.repository.d.ts +26 -4
  30. package/dist/src/modules/v4/opportunity/opportunity.repository.js +2 -0
  31. package/dist/src/modules/v4/opportunity/opportunity.service.d.ts +50 -24
  32. package/dist/src/modules/v4/opportunity/opportunity.service.js +2 -1
  33. package/dist/src/modules/v4/price/price.controller.js +1 -1
  34. package/dist/src/modules/v4/price/price.service.d.ts +1 -1
  35. package/dist/src/modules/v4/price/price.service.js +3 -3
  36. package/dist/src/modules/v4/reward/reward.repository.d.ts +4 -0
  37. package/dist/src/modules/v4/reward/reward.service.d.ts +22 -0
  38. package/dist/src/modules/v4/router.d.ts +49 -15
  39. package/dist/src/modules/v4/token/token.controller.d.ts +9 -4
  40. package/dist/src/modules/v4/token/token.model.d.ts +2 -1
  41. package/dist/src/modules/v4/token/token.model.js +1 -0
  42. package/dist/src/modules/v4/token/token.repository.d.ts +13 -1
  43. package/dist/src/modules/v4/token/token.repository.js +2 -0
  44. package/dist/src/modules/v4/token/token.service.d.ts +12 -4
  45. package/dist/src/modules/v4/token/token.service.js +11 -2
  46. package/dist/src/modules/v4/user/user.controller.d.ts +8 -0
  47. package/dist/src/routes/v3/blacklist.d.ts +49 -15
  48. package/dist/src/routes/v3/campaigns.d.ts +49 -15
  49. package/dist/src/routes/v3/campaignsInfo.d.ts +49 -15
  50. package/dist/src/routes/v3/multiChainPositions.d.ts +49 -15
  51. package/dist/src/routes/v3/opportunity.d.ts +49 -15
  52. package/dist/src/routes/v3/positions.d.ts +49 -15
  53. package/dist/src/routes/v3/rewards.d.ts +49 -15
  54. package/dist/src/routes/v3/updates.d.ts +49 -15
  55. package/dist/src/routes/v3/userRewards.d.ts +49 -15
  56. package/dist/src/utils/decodeCalls.js +4 -1
  57. package/dist/src/utils/encodeCalls.js +4 -1
  58. package/dist/src/utils/generateCardName.js +2 -0
  59. package/dist/src/utils/prices/services/erc4626Service.js +7 -1
  60. package/dist/tsconfig.package.tsbuildinfo +1 -1
  61. package/package.json +1 -1
@@ -119,14 +119,16 @@ declare const app: Elysia<"", false, {
119
119
  address: string;
120
120
  icon: string;
121
121
  decimals: number;
122
+ displaySymbol: string;
122
123
  verified: boolean;
124
+ isTest: boolean;
123
125
  price: number | null;
124
126
  };
125
127
  amount: bigint;
126
128
  }[];
127
129
  };
128
130
  id: string;
129
- tokens: {
131
+ tokens: ({
130
132
  symbol: string;
131
133
  name: string | null;
132
134
  id: string;
@@ -135,8 +137,10 @@ declare const app: Elysia<"", false, {
135
137
  icon: string;
136
138
  decimals: number;
137
139
  verified: boolean;
138
- price: number | null;
139
- }[];
140
+ isTest: boolean;
141
+ } & {
142
+ price?: number | null | undefined;
143
+ })[];
140
144
  chain: {
141
145
  name: string;
142
146
  id: number;
@@ -218,14 +222,16 @@ declare const app: Elysia<"", false, {
218
222
  address: string;
219
223
  icon: string;
220
224
  decimals: number;
225
+ displaySymbol: string;
221
226
  verified: boolean;
227
+ isTest: boolean;
222
228
  price: number | null;
223
229
  };
224
230
  amount: bigint;
225
231
  }[];
226
232
  };
227
233
  id: string;
228
- tokens: {
234
+ tokens: ({
229
235
  symbol: string;
230
236
  name: string | null;
231
237
  id: string;
@@ -234,8 +240,10 @@ declare const app: Elysia<"", false, {
234
240
  icon: string;
235
241
  decimals: number;
236
242
  verified: boolean;
237
- price: number | null;
238
- }[];
243
+ isTest: boolean;
244
+ } & {
245
+ price?: number | null | undefined;
246
+ })[];
239
247
  chain: {
240
248
  name: string;
241
249
  id: number;
@@ -275,7 +283,9 @@ declare const app: Elysia<"", false, {
275
283
  icon: string;
276
284
  decimals: number;
277
285
  verified: boolean;
278
- price: number | null;
286
+ isTest: boolean;
287
+ } & {
288
+ price?: number | null | undefined;
279
289
  };
280
290
  distributionChain: {
281
291
  name: string;
@@ -327,6 +337,7 @@ declare const app: Elysia<"", false, {
327
337
  action?: string | undefined;
328
338
  mainProtocolId?: string | undefined;
329
339
  order?: undefined;
340
+ test?: boolean | undefined;
330
341
  minimumTvl?: number | undefined;
331
342
  };
332
343
  headers: unknown;
@@ -372,14 +383,16 @@ declare const app: Elysia<"", false, {
372
383
  address: string;
373
384
  icon: string;
374
385
  decimals: number;
386
+ displaySymbol: string;
375
387
  verified: boolean;
388
+ isTest: boolean;
376
389
  price: number | null;
377
390
  };
378
391
  amount: bigint;
379
392
  }[];
380
393
  };
381
394
  id: string;
382
- tokens: {
395
+ tokens: ({
383
396
  symbol: string;
384
397
  name: string | null;
385
398
  id: string;
@@ -388,8 +401,10 @@ declare const app: Elysia<"", false, {
388
401
  icon: string;
389
402
  decimals: number;
390
403
  verified: boolean;
391
- price: number | null;
392
- }[];
404
+ isTest: boolean;
405
+ } & {
406
+ price?: number | null | undefined;
407
+ })[];
393
408
  chain: {
394
409
  name: string;
395
410
  id: number;
@@ -436,6 +451,7 @@ declare const app: Elysia<"", false, {
436
451
  action?: string | undefined;
437
452
  mainProtocolId?: string | undefined;
438
453
  order?: undefined;
454
+ test?: boolean | undefined;
439
455
  minimumTvl?: number | undefined;
440
456
  };
441
457
  headers: unknown;
@@ -466,6 +482,7 @@ declare const app: Elysia<"", false, {
466
482
  action?: string | undefined;
467
483
  mainProtocolId?: string | undefined;
468
484
  order?: undefined;
485
+ test?: boolean | undefined;
469
486
  minimumTvl?: number | undefined;
470
487
  };
471
488
  headers: unknown;
@@ -540,6 +557,7 @@ declare const app: Elysia<"", false, {
540
557
  mainParameter?: string | undefined;
541
558
  campaignId?: string | undefined;
542
559
  opportunityId?: string | undefined;
560
+ test?: boolean | undefined;
543
561
  tokenSymbol?: string | undefined;
544
562
  };
545
563
  headers: unknown;
@@ -560,7 +578,9 @@ declare const app: Elysia<"", false, {
560
578
  icon: string;
561
579
  decimals: number;
562
580
  verified: boolean;
563
- price: number | null;
581
+ isTest: boolean;
582
+ } & {
583
+ price?: number | null | undefined;
564
584
  };
565
585
  distributionChain: {
566
586
  name: string;
@@ -608,6 +628,7 @@ declare const app: Elysia<"", false, {
608
628
  mainParameter?: string | undefined;
609
629
  campaignId?: string | undefined;
610
630
  opportunityId?: string | undefined;
631
+ test?: boolean | undefined;
611
632
  tokenSymbol?: string | undefined;
612
633
  };
613
634
  headers: unknown;
@@ -763,6 +784,7 @@ declare const app: Elysia<"", false, {
763
784
  icon: string;
764
785
  decimals: number;
765
786
  verified: boolean;
787
+ isTest: boolean;
766
788
  price?: number | null | undefined;
767
789
  } | undefined;
768
790
  };
@@ -792,6 +814,7 @@ declare const app: Elysia<"", false, {
792
814
  icon: string;
793
815
  decimals: number;
794
816
  verified: boolean;
817
+ isTest: boolean;
795
818
  } & {
796
819
  price?: number | null | undefined;
797
820
  } & {
@@ -813,10 +836,11 @@ declare const app: Elysia<"", false, {
813
836
  chainId?: any;
814
837
  address?: string | undefined;
815
838
  verified?: boolean | undefined;
839
+ test?: boolean | undefined;
816
840
  };
817
841
  headers: unknown;
818
842
  response: {
819
- 200: ({
843
+ 200: {
820
844
  symbol: string;
821
845
  name: string | null;
822
846
  id: string;
@@ -824,10 +848,11 @@ declare const app: Elysia<"", false, {
824
848
  address: string;
825
849
  icon: string;
826
850
  decimals: number;
851
+ displaySymbol: string;
827
852
  verified: boolean;
828
- } & {
829
- price?: number | null | undefined;
830
- })[];
853
+ isTest: boolean;
854
+ price: number | null;
855
+ }[];
831
856
  };
832
857
  };
833
858
  };
@@ -844,6 +869,7 @@ declare const app: Elysia<"", false, {
844
869
  chainId?: any;
845
870
  address?: string | undefined;
846
871
  verified?: boolean | undefined;
872
+ test?: boolean | undefined;
847
873
  };
848
874
  headers: unknown;
849
875
  response: {
@@ -1487,7 +1513,9 @@ declare const app: Elysia<"", false, {
1487
1513
  address: string;
1488
1514
  icon: string;
1489
1515
  decimals: number;
1516
+ displaySymbol: string;
1490
1517
  verified: boolean;
1518
+ isTest: boolean;
1491
1519
  price: number | null;
1492
1520
  };
1493
1521
  breakdowns: {
@@ -1506,7 +1534,9 @@ declare const app: Elysia<"", false, {
1506
1534
  address: string;
1507
1535
  icon: string;
1508
1536
  decimals: number;
1537
+ displaySymbol: string;
1509
1538
  verified: boolean;
1539
+ isTest: boolean;
1510
1540
  price: number | null;
1511
1541
  }[];
1512
1542
  Protocols: {
@@ -1597,7 +1627,9 @@ declare const app: Elysia<"", false, {
1597
1627
  address: string;
1598
1628
  icon: string;
1599
1629
  decimals: number;
1630
+ displaySymbol: string;
1600
1631
  verified: boolean;
1632
+ isTest: boolean;
1601
1633
  price: number | null;
1602
1634
  };
1603
1635
  breakdowns: {
@@ -1616,7 +1648,9 @@ declare const app: Elysia<"", false, {
1616
1648
  address: string;
1617
1649
  icon: string;
1618
1650
  decimals: number;
1651
+ displaySymbol: string;
1619
1652
  verified: boolean;
1653
+ isTest: boolean;
1620
1654
  price: number | null;
1621
1655
  }[];
1622
1656
  Protocols: {
@@ -15,6 +15,8 @@ const factoryAddresses = {
15
15
  "0xa19C51D91891D3DF7C13Ed22a2f89d328A82950f": tokenType.fenix, // Fenix Factory
16
16
  "0x3a76e377ED58c8731F9DF3A36155942438744Ce3": tokenType.zkswap, // ZKSwap Factory
17
17
  "0x6fcf753f2C67b83f7B09746Bbc4FA0047b35D050": tokenType.pendle, // Pendle Factory
18
+ "0x35A338522a435D46f77Be32C70E215B813D0e3aC": tokenType.pendleYT, // Pendle YT Factory
19
+ "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73": tokenType.pancakeswap, // PancakeSwap Factory BNB
18
20
  };
19
21
  export function getTypeFromFactoryAddress(address) {
20
22
  if (factoryAddresses[address]) {
@@ -53,7 +53,9 @@ export declare enum tokenType {
53
53
  maverickBoostedPosition = "maverickBoostedPosition",
54
54
  zkSwapThreePool = "zkSwapThreePool",
55
55
  maha = "maha",
56
- tempest = "tempest"
56
+ tempest = "tempest",
57
+ pendleYT = "pendleYT",
58
+ pancakeswap = "pancakeswap"
57
59
  }
58
60
  export declare const tokenTypeToProtocol: {
59
61
  [key in tokenType]: {
@@ -55,6 +55,8 @@ export var tokenType;
55
55
  tokenType["zkSwapThreePool"] = "zkSwapThreePool";
56
56
  tokenType["maha"] = "maha";
57
57
  tokenType["tempest"] = "tempest";
58
+ tokenType["pendleYT"] = "pendleYT";
59
+ tokenType["pancakeswap"] = "pancakeswap";
58
60
  })(tokenType || (tokenType = {}));
59
61
  export const tokenTypeToProtocol = {
60
62
  [tokenType.aave_borrowing]: { protocol: "Aave" },
@@ -123,4 +125,10 @@ export const tokenTypeToProtocol = {
123
125
  [tokenType.tempest]: {
124
126
  protocol: "Tempest",
125
127
  },
128
+ [tokenType.pendleYT]: {
129
+ protocol: "Pendle",
130
+ },
131
+ [tokenType.pancakeswap]: {
132
+ protocol: "PancakeSwap V2",
133
+ },
126
134
  };
@@ -0,0 +1,29 @@
1
+ import type { Pricer } from "../../../../../utils/pricer";
2
+ import { type Campaign, type CampaignParameters } from "@sdk";
3
+ import type { tokenType } from "../helpers/tokenType";
4
+ import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
5
+ type callType = {
6
+ key: keyof dataRawPendleYT;
7
+ call: string;
8
+ target: keyof callKeysPendleYT;
9
+ metaData?: keyof callKeysPendleYT;
10
+ };
11
+ type callKeysPendleYT = mandatoryCallKeys & {
12
+ SYToken: string;
13
+ underlying: string;
14
+ symbolUnderlyingToken: string;
15
+ };
16
+ type dataRawPendleYT = callKeysPendleYT & {
17
+ readTokensRaw: string[];
18
+ };
19
+ type dataTypePendleYT = dataType & {};
20
+ export declare class PendleYTProcessor extends GenericProcessor<callKeysPendleYT, dataRawPendleYT, dataTypePendleYT> {
21
+ rounds: {
22
+ round1: callType[];
23
+ round2: callType[];
24
+ round3: callType[];
25
+ round4: callType[];
26
+ };
27
+ processingRound5(_index: number, type: tokenType, typeInfo: dataRawPendleYT, _calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypePendleYT>;
28
+ }
29
+ export {};
@@ -0,0 +1,31 @@
1
+ import { generateCardName } from "../../../../../utils/generateCardName";
2
+ import { ChainId } from "@sdk";
3
+ import { GenericProcessor } from "./GenericProcessor";
4
+ export class PendleYTProcessor extends GenericProcessor {
5
+ rounds = {
6
+ round1: [
7
+ { key: "SYToken", call: "SY", target: "tokenAddress" },
8
+ { key: "totalSupply", call: "totalSupply", target: "tokenAddress" },
9
+ ],
10
+ round2: [{ key: "underlying", call: "underlying", target: "SYToken" }],
11
+ round3: [{ key: "symbolUnderlyingToken", call: "symbol", target: "underlying" }],
12
+ round4: [],
13
+ };
14
+ async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
15
+ const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
16
+ const priceTargetToken = (await pricer.get({
17
+ address: typeInfo.tokenAddress,
18
+ chainId: ChainId.MAINNET,
19
+ })) ?? 0;
20
+ const tvl = priceTargetToken * totalSupply;
21
+ return {
22
+ ...typeInfo,
23
+ totalSupply,
24
+ tvl,
25
+ whitelistedSupplyTargetToken,
26
+ priceTargetToken: priceTargetToken,
27
+ cardName: generateCardName(type, typeInfo, campaign),
28
+ blacklistedSupply,
29
+ };
30
+ }
31
+ }
@@ -1,6 +1,6 @@
1
1
  import type { Pricer } from "../../../../../utils/pricer";
2
2
  import { type Campaign, type CampaignParameters } from "@sdk";
3
- import type { tokenType } from "../helpers/tokenType";
3
+ import type { tokenType, tokenTypeStruct } from "../helpers/tokenType";
4
4
  import { GenericProcessor, type dataType, type mandatoryCallKeys } from "./GenericProcessor";
5
5
  type callType = {
6
6
  key: keyof dataRawTempest;
@@ -23,6 +23,7 @@ type dataRawTempest = callKeysTempest & {
23
23
  amount0Invested: string;
24
24
  amount1Idle: string;
25
25
  amount1Invested: string;
26
+ amountInQueue?: string;
26
27
  decimalsToken0: string;
27
28
  decimalsToken1: string;
28
29
  positionsReturnData: {
@@ -45,6 +46,7 @@ export declare class TempestVaultProcessor extends GenericProcessor<callKeysTemp
45
46
  round4: callType[];
46
47
  };
47
48
  processingRound2(typeInfo: dataRawTempest): void;
49
+ computeRound3(index: number, type: tokenType, typeInfo: dataRawTempest, calls: string[]): tokenTypeStruct;
48
50
  processingRound5(_index: number, type: tokenType, typeInfo: dataRawTempest, _calls: string[], campaign: CampaignParameters<Campaign.ERC20> | CampaignParameters<Campaign.EULER>, pricer: Pricer): Promise<dataTypeTempest>;
49
51
  }
50
52
  export {};
@@ -1,5 +1,5 @@
1
1
  import { generateCardName } from "../../../../../utils/generateCardName";
2
- import { BN2Number } from "@sdk";
2
+ import { BN2Number, NULL_ADDRESS } from "@sdk";
3
3
  import { GenericProcessor } from "./GenericProcessor";
4
4
  export class TempestVaultProcessor extends GenericProcessor {
5
5
  rounds = {
@@ -9,8 +9,8 @@ export class TempestVaultProcessor extends GenericProcessor {
9
9
  ],
10
10
  round2: [
11
11
  { key: "symbolToken0", call: "symbol", target: "addressToken0" },
12
- { key: "symbolToken1", call: "symbol", target: "addressToken1" },
13
12
  { key: "decimalsToken0", call: "decimals", target: "addressToken0" },
13
+ { key: "symbolToken1", call: "symbol", target: "addressToken1" },
14
14
  { key: "decimalsToken1", call: "decimals", target: "addressToken1" },
15
15
  ],
16
16
  round3: [],
@@ -19,17 +19,46 @@ export class TempestVaultProcessor extends GenericProcessor {
19
19
  processingRound2(typeInfo) {
20
20
  typeInfo.addressToken0 = typeInfo.addressesReturnData[0];
21
21
  typeInfo.addressToken1 = typeInfo.addressesReturnData[1];
22
- typeInfo.amount0Invested = typeInfo.positionsReturnData[0];
23
- typeInfo.amount1Invested = typeInfo.positionsReturnData[1];
24
- typeInfo.amount0Idle = typeInfo.positionsReturnData[2];
25
- typeInfo.amount1Idle = typeInfo.positionsReturnData[3];
22
+ typeInfo.amount0Invested = typeInfo.positionsReturnData[0].toString();
23
+ typeInfo.amount1Invested = typeInfo.positionsReturnData[1].toString();
24
+ typeInfo.amount0Idle = typeInfo.positionsReturnData[2].toString();
25
+ typeInfo.amount1Idle = typeInfo.positionsReturnData[3].toString();
26
+ try {
27
+ typeInfo.amountInQueue = typeInfo.positionsReturnData[4].toString();
28
+ }
29
+ catch { }
30
+ if (typeInfo.addressToken0 === NULL_ADDRESS) {
31
+ this.rounds.round2 = this.rounds.round2.filter(call => call.target !== "addressToken0");
32
+ typeInfo.symbolToken0 = "ETH";
33
+ typeInfo.decimalsToken0 = "18";
34
+ }
35
+ if (typeInfo.addressToken1 === NULL_ADDRESS) {
36
+ this.rounds.round2 = this.rounds.round2.filter(call => call.target !== "addressToken1");
37
+ typeInfo.symbolToken1 = "ETH";
38
+ typeInfo.decimalsToken1 = "18";
39
+ }
40
+ }
41
+ computeRound3(index, type, typeInfo, calls) {
42
+ if (typeInfo.addressToken0 === NULL_ADDRESS) {
43
+ this.rounds.round2 = this.rounds.round2.filter(call => call.target !== "addressToken0");
44
+ typeInfo.symbolToken0 = "ETH";
45
+ typeInfo.decimalsToken0 = "18";
46
+ }
47
+ if (typeInfo.addressToken1 === NULL_ADDRESS) {
48
+ this.rounds.round2 = this.rounds.round2.filter(call => call.target !== "addressToken1");
49
+ typeInfo.symbolToken1 = "ETH";
50
+ typeInfo.decimalsToken1 = "18";
51
+ }
52
+ return super.computeRound3(index, type, typeInfo, calls);
26
53
  }
27
54
  async processingRound5(_index, type, typeInfo, _calls, campaign, pricer) {
28
55
  const { whitelistedSupplyTargetToken, totalSupply, blacklistedSupply } = this.handleWhiteListBlacklistRound5(typeInfo, campaign);
29
56
  const decimalsToken0 = Number(typeInfo.decimalsToken0);
30
57
  const decimalsToken1 = Number(typeInfo.decimalsToken1);
31
58
  const amount0 = BN2Number(typeInfo.amount0Idle, decimalsToken0) + BN2Number(typeInfo.amount0Invested, decimalsToken0);
32
- const amount1 = BN2Number(typeInfo.amount1Idle, decimalsToken1) + BN2Number(typeInfo.amount1Invested, decimalsToken1);
59
+ const amount1 = BN2Number(typeInfo.amount1Idle, decimalsToken1) +
60
+ BN2Number(typeInfo.amount1Invested, decimalsToken1) +
61
+ (!!typeInfo.amountInQueue ? BN2Number(typeInfo.amountInQueue, decimalsToken1) : 0);
33
62
  const tokenAPRice = (await pricer.get({ symbol: typeInfo.symbolToken0 })) ?? 0;
34
63
  const tokenBPrice = (await pricer.get({ symbol: typeInfo.symbolToken1 })) ?? 0;
35
64
  const tvl = tokenAPRice * amount0 + tokenBPrice * amount1;
@@ -16,6 +16,7 @@ import { GenericProcessor } from "./GenericProcessor";
16
16
  import { MaverickBPProcessor } from "./MaverickBPProcessor";
17
17
  import { MetamorphoProcessor } from "./MetamorphoProcessor";
18
18
  import { PendleProcessor } from "./PendleProcessor";
19
+ import { PendleYTProcessor } from "./PendleYTProcessor";
19
20
  import { RadiantProcessor } from "./RadiantProcessor";
20
21
  import { RfxProcessor } from "./RfxProcessor";
21
22
  import { SpliceProcessor } from "./SpliceProcessor";
@@ -82,4 +83,6 @@ export const processorMapping = {
82
83
  [tokenType.zkSwapThreePool]: ZkSwapThreePoolProcessor,
83
84
  [tokenType.maha]: StakedCurveProcessor,
84
85
  [tokenType.tempest]: TempestVaultProcessor,
86
+ [tokenType.pendleYT]: PendleYTProcessor,
87
+ [tokenType.pancakeswap]: UniswapProcessor,
85
88
  };
@@ -91,7 +91,7 @@ function satisfiesNameConditions(name, type) {
91
91
  case tokenType.maha:
92
92
  return lowerCaseName.includes("staked") && lowerCaseName.includes("maha");
93
93
  case tokenType.tempest:
94
- return lowerCaseName.startsWith("ts");
94
+ return lowerCaseName.startsWith("ts") || lowerCaseName.startsWith("tempest");
95
95
  default:
96
96
  return false;
97
97
  }
@@ -71,6 +71,7 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
71
71
  mainParameter?: string | undefined;
72
72
  campaignId?: string | undefined;
73
73
  opportunityId?: string | undefined;
74
+ test?: boolean | undefined;
74
75
  tokenSymbol?: string | undefined;
75
76
  };
76
77
  headers: unknown;
@@ -91,7 +92,9 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
91
92
  icon: string;
92
93
  decimals: number;
93
94
  verified: boolean;
94
- price: number | null;
95
+ isTest: boolean;
96
+ } & {
97
+ price?: number | null | undefined;
95
98
  };
96
99
  distributionChain: {
97
100
  name: string;
@@ -139,6 +142,7 @@ export declare const CampaignController: Elysia<"/campaigns", false, {
139
142
  mainParameter?: string | undefined;
140
143
  campaignId?: string | undefined;
141
144
  opportunityId?: string | undefined;
145
+ test?: boolean | undefined;
142
146
  tokenSymbol?: string | undefined;
143
147
  };
144
148
  headers: unknown;
@@ -77,6 +77,7 @@ export declare const GetCampaignQueryDto: import("@sinclair/typebox").TObject<{
77
77
  mainParameter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
78
78
  tokenSymbol: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
79
79
  tokenAddress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
80
+ test: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
80
81
  opportunityId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
81
82
  startTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
82
83
  endTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -48,6 +48,7 @@ export const GetCampaignQueryDto = t.Object({
48
48
  mainParameter: t.Optional(t.String()),
49
49
  tokenSymbol: t.Optional(t.String()),
50
50
  tokenAddress: t.Optional(t.String()),
51
+ test: t.Optional(t.Boolean()),
51
52
  opportunityId: t.Optional(t.String()),
52
53
  startTimestamp: t.Optional(t.String({ pattern: "[0-9].*" })),
53
54
  endTimestamp: t.Optional(t.String({ pattern: "[0-9].*" })),
@@ -102,7 +102,9 @@ export declare abstract class CampaignRepository {
102
102
  address: string;
103
103
  icon: string;
104
104
  decimals: number;
105
+ displaySymbol: string;
105
106
  verified: boolean;
107
+ isTest: boolean;
106
108
  price: number | null;
107
109
  };
108
110
  CampaignStatus: {
@@ -10,7 +10,7 @@ import { TokenService } from "../token";
10
10
  export class CampaignRepository {
11
11
  // ─── Private Methods ─────────────────────────────────────────────────
12
12
  static #transformQueryToPrismaFilters(query) {
13
- const { chainId, endTimestamp, opportunityId, mainParameter, campaignId, startTimestamp, subType, type, tokenAddress, tokenSymbol, } = query;
13
+ const { chainId, endTimestamp, opportunityId, mainParameter, campaignId, startTimestamp, subType, type, tokenAddress, tokenSymbol, test, } = query;
14
14
  return {
15
15
  where: {
16
16
  computeChainId: chainId,
@@ -26,6 +26,8 @@ export class CampaignRepository {
26
26
  RewardToken: {
27
27
  address: tokenAddress ? tokenAddress : undefined,
28
28
  symbol: tokenSymbol ? tokenSymbol : undefined,
29
+ displaySymbol: tokenSymbol ? tokenSymbol : undefined,
30
+ isTest: !test ? false : undefined,
29
31
  },
30
32
  },
31
33
  };
@@ -44,7 +44,9 @@ export declare abstract class CampaignService {
44
44
  icon: string;
45
45
  decimals: number;
46
46
  verified: boolean;
47
- price: number | null;
47
+ isTest: boolean;
48
+ } & {
49
+ price?: number | null | undefined;
48
50
  };
49
51
  distributionChain: {
50
52
  name: string;
@@ -176,7 +178,9 @@ export declare abstract class CampaignService {
176
178
  icon: string;
177
179
  decimals: number;
178
180
  verified: boolean;
179
- price: number | null;
181
+ isTest: boolean;
182
+ } & {
183
+ price?: number | null | undefined;
180
184
  };
181
185
  distributionChain: {
182
186
  name: string;
@@ -8,6 +8,7 @@ import { log } from "../../../utils/logger";
8
8
  import { NETWORK_LABELS } from "@sdk";
9
9
  import moment from "moment";
10
10
  import { StatusService } from "../status";
11
+ import { TokenService } from "../token";
11
12
  export class CampaignService {
12
13
  static hashId(campaign) {
13
14
  return Bun.hash(`${campaign.distributionChain}${campaign.campaignId}`).toString();
@@ -169,7 +170,7 @@ export class CampaignService {
169
170
  ...c,
170
171
  params: params,
171
172
  chain: ComputeChain,
172
- rewardToken: RewardToken,
173
+ rewardToken: TokenService.format(RewardToken),
173
174
  distributionChain: DistributionChain === null ? undefined : DistributionChain,
174
175
  // Todo: need to be change to single 1 to 1 with campaign
175
176
  campaignStatus: CampaignStatus?.[0],