@merkl/api 0.15.24 → 0.15.26

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 (28) hide show
  1. package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +14 -9
  2. package/dist/src/eden/index.d.ts +152 -15
  3. package/dist/src/entities/opportunity.js +3 -1
  4. package/dist/src/index.d.ts +40 -3
  5. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +1 -0
  6. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +2 -0
  7. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +1 -0
  8. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.js +2 -0
  9. package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.js +51 -38
  10. package/dist/src/modules/v4/boost/boost.controller.d.ts +39 -0
  11. package/dist/src/modules/v4/boost/boost.controller.js +6 -1
  12. package/dist/src/modules/v4/boost/boost.service.d.ts +4 -0
  13. package/dist/src/modules/v4/boost/boost.service.js +23 -0
  14. package/dist/src/modules/v4/dynamicData/dynamicData.service.js +10 -3
  15. package/dist/src/modules/v4/opportunity/opportunity.service.js +1 -1
  16. package/dist/src/modules/v4/programPayload/programPayload.controller.d.ts +1 -3
  17. package/dist/src/modules/v4/programPayload/programPayload.model.d.ts +1 -3
  18. package/dist/src/modules/v4/programPayload/programPayload.model.js +1 -3
  19. package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +4 -1
  20. package/dist/src/modules/v4/programPayload/programPayload.repository.js +39 -0
  21. package/dist/src/modules/v4/programPayload/programPayload.service.js +6 -11
  22. package/dist/src/modules/v4/router.d.ts +40 -3
  23. package/dist/src/modules/v4/user/user.controller.js +5 -3
  24. package/dist/src/utils/decodeCalls.js +1 -0
  25. package/dist/src/utils/encodeCalls.js +1 -0
  26. package/dist/src/utils/generateCardName.js +4 -2
  27. package/dist/tsconfig.package.tsbuildinfo +1 -1
  28. package/package.json +1 -1
@@ -113,15 +113,20 @@ export const campaignsCacheUpdater = new Elysia().get("/v3/update", async ({ que
113
113
  distributionChain: chainId,
114
114
  })));
115
115
  const [type, mainParameter] = entry[0].split("_");
116
- const apr = AprService.extractFromDynamicData(+type, Object.values(entry[1]));
117
- const tvl = TvlService.extractFromDynamicData(+type, Object.values(entry[1]));
118
- const dailyRewards = await RewardService.extractDailyRewardsRecordFromDynamicData(+type, Object.values(entry[1]));
119
- const opportunityId = OpportunityService.hashId({
120
- chainId,
121
- identifier: mainParameter,
122
- type: CampaignService.getTypeFromV3(+type),
123
- });
124
- await OpportunityRepository.updateRecords(opportunityId, apr, tvl, dailyRewards);
116
+ try {
117
+ const apr = AprService.extractFromDynamicData(+type, Object.values(entry[1]));
118
+ const tvl = TvlService.extractFromDynamicData(+type, Object.values(entry[1]));
119
+ const dailyRewards = await RewardService.extractDailyRewardsRecordFromDynamicData(+type, Object.values(entry[1]));
120
+ const opportunityId = OpportunityService.hashId({
121
+ chainId,
122
+ identifier: mainParameter,
123
+ type: CampaignService.getTypeFromV3(+type),
124
+ });
125
+ await OpportunityRepository.updateRecords(opportunityId, apr, tvl, dailyRewards);
126
+ }
127
+ catch (error) {
128
+ // console.log(mainParameter);
129
+ }
125
130
  }
126
131
  await OpportunityService.updateMetadata(chainId);
127
132
  // ─── Refresh Cache For GET /opportunities ────
@@ -2948,14 +2948,12 @@ declare const eden: {
2948
2948
  post: (body: {
2949
2949
  chainId: number;
2950
2950
  startTimestamp: number;
2951
- endTimestamp: number;
2952
2951
  computeChainId: number;
2953
2952
  amount: string;
2954
2953
  rewardToken: string;
2955
2954
  campaignType: number;
2955
+ duration: number;
2956
2956
  campaignData: string;
2957
- symbolRewardToken: string;
2958
- decimalsRewardToken: number;
2959
2957
  }, options: {
2960
2958
  headers: {
2961
2959
  authorization: string;
@@ -2997,6 +2995,33 @@ declare const eden: {
2997
2995
  }[];
2998
2996
  }>>;
2999
2997
  };
2998
+ openBlock: {
2999
+ post: (body: {
3000
+ address: string;
3001
+ score: string;
3002
+ }[] | {
3003
+ addresses: string[];
3004
+ }, options?: {
3005
+ headers?: Record<string, unknown> | undefined;
3006
+ query?: Record<string, unknown> | undefined;
3007
+ fetch?: RequestInit | undefined;
3008
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
3009
+ 200: {
3010
+ address: string;
3011
+ boost: string;
3012
+ }[];
3013
+ }>>;
3014
+ get: (options?: {
3015
+ headers?: Record<string, unknown> | undefined;
3016
+ query?: Record<string, unknown> | undefined;
3017
+ fetch?: RequestInit | undefined;
3018
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
3019
+ 200: {
3020
+ address: string;
3021
+ boost: string;
3022
+ }[];
3023
+ }>>;
3024
+ };
3000
3025
  };
3001
3026
  value: {
3002
3027
  campaign: ((params: {
@@ -5995,14 +6020,12 @@ declare const eden: {
5995
6020
  post: (body: {
5996
6021
  chainId: number;
5997
6022
  startTimestamp: number;
5998
- endTimestamp: number;
5999
6023
  computeChainId: number;
6000
6024
  amount: string;
6001
6025
  rewardToken: string;
6002
6026
  campaignType: number;
6027
+ duration: number;
6003
6028
  campaignData: string;
6004
- symbolRewardToken: string;
6005
- decimalsRewardToken: number;
6006
6029
  }, options: {
6007
6030
  headers: {
6008
6031
  authorization: string;
@@ -6044,6 +6067,33 @@ declare const eden: {
6044
6067
  }[];
6045
6068
  }>>;
6046
6069
  };
6070
+ openBlock: {
6071
+ post: (body: {
6072
+ address: string;
6073
+ score: string;
6074
+ }[] | {
6075
+ addresses: string[];
6076
+ }, options?: {
6077
+ headers?: Record<string, unknown> | undefined;
6078
+ query?: Record<string, unknown> | undefined;
6079
+ fetch?: RequestInit | undefined;
6080
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
6081
+ 200: {
6082
+ address: string;
6083
+ boost: string;
6084
+ }[];
6085
+ }>>;
6086
+ get: (options?: {
6087
+ headers?: Record<string, unknown> | undefined;
6088
+ query?: Record<string, unknown> | undefined;
6089
+ fetch?: RequestInit | undefined;
6090
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
6091
+ 200: {
6092
+ address: string;
6093
+ boost: string;
6094
+ }[];
6095
+ }>>;
6096
+ };
6047
6097
  };
6048
6098
  value: {
6049
6099
  campaign: ((params: {
@@ -10427,14 +10477,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
10427
10477
  body: {
10428
10478
  chainId: number;
10429
10479
  startTimestamp: number;
10430
- endTimestamp: number;
10431
10480
  computeChainId: number;
10432
10481
  amount: string;
10433
10482
  rewardToken: string;
10434
10483
  campaignType: number;
10484
+ duration: number;
10435
10485
  campaignData: string;
10436
- symbolRewardToken: string;
10437
- decimalsRewardToken: number;
10438
10486
  };
10439
10487
  params: {};
10440
10488
  query: unknown;
@@ -10490,6 +10538,45 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
10490
10538
  };
10491
10539
  };
10492
10540
  };
10541
+ } & {
10542
+ boosts: {
10543
+ openBlock: {
10544
+ post: {
10545
+ body: {
10546
+ addresses: string[];
10547
+ } | {
10548
+ address: string;
10549
+ score: string;
10550
+ }[];
10551
+ params: {};
10552
+ query: unknown;
10553
+ headers: unknown;
10554
+ response: {
10555
+ 200: {
10556
+ address: string;
10557
+ boost: string;
10558
+ }[];
10559
+ };
10560
+ };
10561
+ };
10562
+ };
10563
+ } & {
10564
+ boosts: {
10565
+ openBlock: {
10566
+ get: {
10567
+ body: unknown;
10568
+ params: {};
10569
+ query: unknown;
10570
+ headers: unknown;
10571
+ response: {
10572
+ 200: {
10573
+ address: string;
10574
+ boost: string;
10575
+ }[];
10576
+ };
10577
+ };
10578
+ };
10579
+ };
10493
10580
  };
10494
10581
  } & {
10495
10582
  v4: {
@@ -14424,14 +14511,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
14424
14511
  post: (body: {
14425
14512
  chainId: number;
14426
14513
  startTimestamp: number;
14427
- endTimestamp: number;
14428
14514
  computeChainId: number;
14429
14515
  amount: string;
14430
14516
  rewardToken: string;
14431
14517
  campaignType: number;
14518
+ duration: number;
14432
14519
  campaignData: string;
14433
- symbolRewardToken: string;
14434
- decimalsRewardToken: number;
14435
14520
  }, options: {
14436
14521
  headers: {
14437
14522
  authorization: string;
@@ -14473,6 +14558,33 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
14473
14558
  }[];
14474
14559
  }>>;
14475
14560
  };
14561
+ openBlock: {
14562
+ post: (body: {
14563
+ address: string;
14564
+ score: string;
14565
+ }[] | {
14566
+ addresses: string[];
14567
+ }, options?: {
14568
+ headers?: Record<string, unknown> | undefined;
14569
+ query?: Record<string, unknown> | undefined;
14570
+ fetch?: RequestInit | undefined;
14571
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
14572
+ 200: {
14573
+ address: string;
14574
+ boost: string;
14575
+ }[];
14576
+ }>>;
14577
+ get: (options?: {
14578
+ headers?: Record<string, unknown> | undefined;
14579
+ query?: Record<string, unknown> | undefined;
14580
+ fetch?: RequestInit | undefined;
14581
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
14582
+ 200: {
14583
+ address: string;
14584
+ boost: string;
14585
+ }[];
14586
+ }>>;
14587
+ };
14476
14588
  };
14477
14589
  value: {
14478
14590
  campaign: ((params: {
@@ -17471,14 +17583,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
17471
17583
  post: (body: {
17472
17584
  chainId: number;
17473
17585
  startTimestamp: number;
17474
- endTimestamp: number;
17475
17586
  computeChainId: number;
17476
17587
  amount: string;
17477
17588
  rewardToken: string;
17478
17589
  campaignType: number;
17590
+ duration: number;
17479
17591
  campaignData: string;
17480
- symbolRewardToken: string;
17481
- decimalsRewardToken: number;
17482
17592
  }, options: {
17483
17593
  headers: {
17484
17594
  authorization: string;
@@ -17520,6 +17630,33 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
17520
17630
  }[];
17521
17631
  }>>;
17522
17632
  };
17633
+ openBlock: {
17634
+ post: (body: {
17635
+ address: string;
17636
+ score: string;
17637
+ }[] | {
17638
+ addresses: string[];
17639
+ }, options?: {
17640
+ headers?: Record<string, unknown> | undefined;
17641
+ query?: Record<string, unknown> | undefined;
17642
+ fetch?: RequestInit | undefined;
17643
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
17644
+ 200: {
17645
+ address: string;
17646
+ boost: string;
17647
+ }[];
17648
+ }>>;
17649
+ get: (options?: {
17650
+ headers?: Record<string, unknown> | undefined;
17651
+ query?: Record<string, unknown> | undefined;
17652
+ fetch?: RequestInit | undefined;
17653
+ } | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
17654
+ 200: {
17655
+ address: string;
17656
+ boost: string;
17657
+ }[];
17658
+ }>>;
17659
+ };
17523
17660
  };
17524
17661
  value: {
17525
17662
  campaign: ((params: {
@@ -73,7 +73,9 @@ export const extractOpportunities = {
73
73
  const opportunity = {
74
74
  id: `${Campaign.CLAMM}_${mainParameter}`,
75
75
  platform: platform,
76
- name: [platform, pair, params.poolFee && `${params.poolFee} %`, subCampaignTag].join(" "),
76
+ name: [platform, pair, params.poolFee && `${params.poolFee} %`, subCampaignTag]
77
+ .join(" ")
78
+ .replace("AlgebraV1_2", ""),
77
79
  chainId: !computeChainId ? chainId : computeChainId,
78
80
  distributionChainId: chainId,
79
81
  action: "pool",
@@ -3635,14 +3635,12 @@ declare const app: Elysia<"", false, {
3635
3635
  body: {
3636
3636
  chainId: number;
3637
3637
  startTimestamp: number;
3638
- endTimestamp: number;
3639
3638
  computeChainId: number;
3640
3639
  amount: string;
3641
3640
  rewardToken: string;
3642
3641
  campaignType: number;
3642
+ duration: number;
3643
3643
  campaignData: string;
3644
- symbolRewardToken: string;
3645
- decimalsRewardToken: number;
3646
3644
  };
3647
3645
  params: {};
3648
3646
  query: unknown;
@@ -3698,6 +3696,45 @@ declare const app: Elysia<"", false, {
3698
3696
  };
3699
3697
  };
3700
3698
  };
3699
+ } & {
3700
+ boosts: {
3701
+ openBlock: {
3702
+ post: {
3703
+ body: {
3704
+ addresses: string[];
3705
+ } | {
3706
+ address: string;
3707
+ score: string;
3708
+ }[];
3709
+ params: {};
3710
+ query: unknown;
3711
+ headers: unknown;
3712
+ response: {
3713
+ 200: {
3714
+ address: string;
3715
+ boost: string;
3716
+ }[];
3717
+ };
3718
+ };
3719
+ };
3720
+ };
3721
+ } & {
3722
+ boosts: {
3723
+ openBlock: {
3724
+ get: {
3725
+ body: unknown;
3726
+ params: {};
3727
+ query: unknown;
3728
+ headers: unknown;
3729
+ response: {
3730
+ 200: {
3731
+ address: string;
3732
+ boost: string;
3733
+ }[];
3734
+ };
3735
+ };
3736
+ };
3737
+ };
3701
3738
  };
3702
3739
  } & {
3703
3740
  v4: {
@@ -49,6 +49,7 @@ export declare enum tokenType {
49
49
  baseswap = "baseswap",
50
50
  zkswap = "zkswap",
51
51
  ironcladStaking = "ironcladStaking",
52
+ rfx_slv = "rfx_slv",
52
53
  rfx = "rfx",
53
54
  woofi = "woofi",
54
55
  pendle = "pendle",
@@ -50,6 +50,7 @@ export var tokenType;
50
50
  tokenType["baseswap"] = "baseswap";
51
51
  tokenType["zkswap"] = "zkswap";
52
52
  tokenType["ironcladStaking"] = "ironcladStaking";
53
+ tokenType["rfx_slv"] = "rfx_slv";
53
54
  tokenType["rfx"] = "rfx";
54
55
  tokenType["woofi"] = "woofi";
55
56
  tokenType["pendle"] = "pendle";
@@ -174,4 +175,5 @@ export const tokenTypeToProtocol = {
174
175
  [tokenType.vicuna_borrowing]: { protocol: "Vicuna", action: OpportunityAction.BORROW },
175
176
  [tokenType.spectra_lpt]: { protocol: "Spectra", action: OpportunityAction.POOL },
176
177
  [tokenType.spectra_yt]: { protocol: "Spectra", action: OpportunityAction.POOL },
178
+ [tokenType.rfx_slv]: { protocol: "RFX", action: OpportunityAction.POOL },
177
179
  };
@@ -126,4 +126,5 @@ export const processorMapping = {
126
126
  [tokenType.anglesLiquid]: AnglesLiquidProcessor,
127
127
  [tokenType.spectra_lpt]: SpectraProcessor,
128
128
  [tokenType.spectra_yt]: SpectraYTProcessor,
129
+ [tokenType.rfx_slv]: ERC4626Processor,
129
130
  };
@@ -46,6 +46,8 @@ function satisfiesNameConditions(name, type) {
46
46
  return lowerCaseName.startsWith("reactorfusion");
47
47
  case tokenType.rfx:
48
48
  return lowerCaseName.includes("rfx");
49
+ case tokenType.rfx_slv:
50
+ return lowerCaseName.includes("rfx") && lowerCaseName.includes("shared liquidity vault");
49
51
  case tokenType.layerbank:
50
52
  return lowerCaseName.includes("layerbank");
51
53
  case tokenType.moonwell:
@@ -23,46 +23,59 @@ export async function HyperdriveDynamicData(chainId, campaigns) {
23
23
  let i = 0;
24
24
  const dynamicData = [];
25
25
  for (const campaign of campaigns) {
26
- const poolInfo = HyperdriveTargetInterface.decodeFunctionResult("getPoolInfo", result[i++])[0];
27
- const poolConfig = HyperdriveTargetInterface.decodeFunctionResult("getPoolConfig", result[i++])[0];
28
- const priceRewardToken = (await pricer.get({
29
- address: campaign.rewardToken,
30
- chainId,
31
- symbol: campaign.campaignParameters.symbolRewardToken,
32
- })) ?? 0;
33
- const lpSupply = BN2Number(poolInfo.lpTotalSupply, 18);
34
- const longSupply = BN2Number(poolInfo.longsOutstanding, 18);
35
- const shortSupply = BN2Number(poolInfo.shortsOutstanding, 18);
36
- const marketSupply = lpSupply * BN2Number(poolInfo.lpSharePrice, 18);
37
- const priceBaseToken = (poolConfig.baseToken === ETH_ADDRESS
38
- ? await pricer.get({
26
+ try {
27
+ const poolInfo = HyperdriveTargetInterface.decodeFunctionResult("getPoolInfo", result[i])[0];
28
+ const poolConfig = HyperdriveTargetInterface.decodeFunctionResult("getPoolConfig", result[i + 1])[0];
29
+ const priceRewardToken = (await pricer.get({
30
+ address: campaign.rewardToken,
39
31
  chainId,
40
- symbol: "ETH",
41
- })
42
- : await pricer.get({
43
- address: campaign.campaignParameters.baseToken,
44
- chainId,
45
- symbol: campaign.campaignParameters.baseTokenSymbol,
32
+ symbol: campaign.campaignParameters.symbolRewardToken,
46
33
  })) ?? 0;
47
- const tvl = campaign.campaignSubType === HyperDriveSubCampaignType.LP
48
- ? priceBaseToken * marketSupply
49
- : campaign.campaignSubType === HyperDriveSubCampaignType.LONG
50
- ? priceBaseToken * longSupply
51
- : priceBaseToken * shortSupply;
52
- dynamicData.push({
53
- ...campaign,
54
- totalSupplyTargetToken: marketSupply,
55
- tvl: tvl,
56
- apr: priceRewardToken !== 0
57
- ? (priceRewardToken *
58
- BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
59
- YEAR *
60
- 100) /
61
- campaign.campaignParameters.duration /
62
- tvl
63
- : 0,
64
- priceRewardToken: priceRewardToken,
65
- });
34
+ const lpSupply = BN2Number(poolInfo.lpTotalSupply, 18);
35
+ const longSupply = BN2Number(poolInfo.longsOutstanding, 18);
36
+ const shortSupply = BN2Number(poolInfo.shortsOutstanding, 18);
37
+ const marketSupply = lpSupply * BN2Number(poolInfo.lpSharePrice, 18);
38
+ const priceBaseToken = (poolConfig.baseToken === ETH_ADDRESS
39
+ ? await pricer.get({
40
+ chainId,
41
+ symbol: "ETH",
42
+ })
43
+ : await pricer.get({
44
+ address: campaign.campaignParameters.baseToken,
45
+ chainId,
46
+ symbol: campaign.campaignParameters.baseTokenSymbol,
47
+ })) ?? 0;
48
+ const tvl = campaign.campaignSubType === HyperDriveSubCampaignType.LP
49
+ ? priceBaseToken * marketSupply
50
+ : campaign.campaignSubType === HyperDriveSubCampaignType.LONG
51
+ ? priceBaseToken * longSupply
52
+ : priceBaseToken * shortSupply;
53
+ dynamicData.push({
54
+ ...campaign,
55
+ totalSupplyTargetToken: marketSupply,
56
+ tvl: tvl,
57
+ apr: priceRewardToken !== 0
58
+ ? (priceRewardToken *
59
+ BN2Number(campaign.amount, campaign.campaignParameters.decimalsRewardToken) *
60
+ YEAR *
61
+ 100) /
62
+ campaign.campaignParameters.duration /
63
+ tvl
64
+ : 0,
65
+ priceRewardToken: priceRewardToken,
66
+ });
67
+ }
68
+ catch (e) {
69
+ dynamicData.push({
70
+ ...campaign,
71
+ totalSupplyTargetToken: 0,
72
+ tvl: 0,
73
+ apr: 0,
74
+ priceRewardToken: 0,
75
+ });
76
+ console.error(e);
77
+ }
78
+ i += 2;
66
79
  }
67
80
  return dynamicData;
68
81
  },
@@ -50,6 +50,45 @@ export declare const BoostController: Elysia<"/boosts", false, {
50
50
  };
51
51
  };
52
52
  };
53
+ } & {
54
+ boosts: {
55
+ openBlock: {
56
+ post: {
57
+ body: {
58
+ addresses: string[];
59
+ } | {
60
+ address: string;
61
+ score: string;
62
+ }[];
63
+ params: {};
64
+ query: unknown;
65
+ headers: unknown;
66
+ response: {
67
+ 200: {
68
+ address: string;
69
+ boost: string;
70
+ }[];
71
+ };
72
+ };
73
+ };
74
+ };
75
+ } & {
76
+ boosts: {
77
+ openBlock: {
78
+ get: {
79
+ body: unknown;
80
+ params: {};
81
+ query: unknown;
82
+ headers: unknown;
83
+ response: {
84
+ 200: {
85
+ address: string;
86
+ boost: string;
87
+ }[];
88
+ };
89
+ };
90
+ };
91
+ };
53
92
  }, {
54
93
  derive: {};
55
94
  resolve: {};
@@ -7,4 +7,9 @@ export const BoostController = new Elysia({ prefix: "/boosts", detail: { tags: [
7
7
  body: getEulerBoostBody,
8
8
  detail: { hide: true },
9
9
  })
10
- .get("/euler", async () => BoostService.getEulerBoost());
10
+ .get("/euler", async () => BoostService.getEulerBoost())
11
+ .post("/openBlock", async ({ body }) => BoostService.getOpenBlockBoost(), {
12
+ body: getEulerBoostBody,
13
+ detail: { hide: true },
14
+ })
15
+ .get("/openBlock", async () => BoostService.getOpenBlockBoost());
@@ -3,4 +3,8 @@ export declare class BoostService {
3
3
  address: string;
4
4
  boost: string;
5
5
  }[]>;
6
+ static getOpenBlockBoost(): Promise<{
7
+ address: string;
8
+ boost: string;
9
+ }[]>;
6
10
  }
@@ -3,4 +3,27 @@ export class BoostService {
3
3
  static async getEulerBoost() {
4
4
  return (await axios.get("https://points.euler.finance/integrations/merkl/usd0multipliers")).data.map(({ address, score }) => ({ address, boost: score }));
5
5
  }
6
+ static async getOpenBlockBoost() {
7
+ return [
8
+ { address: "0x684566c9ffcac7f6a04c3a9997000d2d58c00824", boost: "0" },
9
+ { address: "0x29dfdd80d6acc0f9028d8a6fa7d7d448342e25c1", boost: "0" },
10
+ { address: "0x5b9effdcbd65946f2b143725dc244563248aa4ee", boost: "0" },
11
+ { address: "0xd2262a05e225ce0c61fb699fdcf14068132dd362", boost: "0" },
12
+ { address: "0x7da8481e24303d55f29f0c06174f18b30b81c9ac", boost: "0" },
13
+ { address: "0x1d098a8d7fa63a39e0884b720f86f9ba8cbbeef1", boost: "0" },
14
+ { address: "0x7f3e3d663a5f29274d0809020c675f5cc3d1429a", boost: "0" },
15
+ { address: "0x7f04f7fdad3272b806e3d57bec445e0ece82f2ad", boost: "0" },
16
+ { address: "0xfe769b6f39a000ff508b5baf8fbe3a1f516f258c", boost: "0" },
17
+ { address: "0xd635736f8ac2241cdfcc3ee02d3f3bac1f78431f", boost: "0" },
18
+ { address: "0xb38c7e2b4ba3cdc4eaea863cbb01470353c5ea16", boost: "0" },
19
+ { address: "0xe37885b5e1187f7f618407fb0c14a3383998348e", boost: "0" },
20
+ { address: "0xe01f660b304be815627628c38c2dcdf37f68245e", boost: "0" },
21
+ { address: "0xe746db07d2b4babf5f2051d40987b7278414192f", boost: "0" },
22
+ { address: "0xa0265ed27561b25c0e7ad3ed1fed74c2ee5f8cdf", boost: "0" },
23
+ { address: "0xdf5ad5a87fceaacb1ecef40e8e61c42c92339a10", boost: "0" },
24
+ { address: "0xc91fc9dd7f1bb6ec429eddb577b9ace6236b2147", boost: "0" },
25
+ { address: "0x8b81420441ac3933c58d1190c8499c2f89eb1263", boost: "0" },
26
+ { address: "0x0000000000000000000000000000000000000000", boost: "1" },
27
+ ];
28
+ }
6
29
  }
@@ -88,13 +88,20 @@ export class DynamicDataService {
88
88
  parsedParams = campaign.params;
89
89
  targetToken = parsedParams.poolId;
90
90
  }
91
+ else if (campaign.type === Campaign[Campaign.UNISWAP_V4]) {
92
+ parsedParams = campaign.params;
93
+ targetToken = `0x${parsedParams.poolId.slice(-40)}`;
94
+ }
91
95
  else {
92
96
  parsedParams = campaign.params;
93
97
  targetToken = parsedParams.targetToken;
94
98
  }
95
- return utils
96
- .keccak256(utils.defaultAbiCoder.encode(["string", "address[]"], [targetToken, parsedParams.whitelist.sort()]))
97
- .slice(0, 42);
99
+ if (parsedParams.whitelist.length > 0) {
100
+ return utils
101
+ .keccak256(utils.defaultAbiCoder.encode(["string", "address[]"], [targetToken, parsedParams.whitelist.sort()]))
102
+ .slice(0, 42);
103
+ }
104
+ return targetToken;
98
105
  }
99
106
  static async queryDynamicData(campaign) {
100
107
  const campaignParameters = DynamicDataService.generateDummyData(campaign);
@@ -90,7 +90,7 @@ export class OpportunityService {
90
90
  return getEulerMetadata(chainId, campaign.campaignId, campaign.subType, campaign.rewardTokenAddress, campaign.amount, campaignParams);
91
91
  case "HYPERDRIVELOGPROCESSOR":
92
92
  case "HYPERDRIVELOGFIXPROCESSOR":
93
- return getHyperdriveMetadata(chainId, campaignParams.subCampaignType, campaignParams);
93
+ return getHyperdriveMetadata(chainId, campaign.subType, campaignParams);
94
94
  case "AMBIENTPROCESSOR":
95
95
  return getAmbientMetadata(chainId, campaignParams);
96
96
  case "UNISWAP_V4":
@@ -250,14 +250,12 @@ export declare const ProgramPayloadController: Elysia<"/program-payload", false,
250
250
  body: {
251
251
  chainId: number;
252
252
  startTimestamp: number;
253
- endTimestamp: number;
254
253
  computeChainId: number;
255
254
  amount: string;
256
255
  rewardToken: string;
257
256
  campaignType: number;
257
+ duration: number;
258
258
  campaignData: string;
259
- symbolRewardToken: string;
260
- decimalsRewardToken: number;
261
259
  };
262
260
  params: {};
263
261
  query: unknown;