@merkl/api 0.15.23 → 0.15.25

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 (23) hide show
  1. package/dist/src/backgroundJobs/jobs/campaignsCacheUpdater.js +14 -9
  2. package/dist/src/eden/index.d.ts +5 -15
  3. package/dist/src/index.d.ts +1 -3
  4. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.d.ts +1 -0
  5. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/helpers/tokenType.js +2 -0
  6. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/processor/processorMapping.js +1 -0
  7. package/dist/src/libs/campaigns/campaignTypes/ERC20SubTypes/subtypesRound1.js +2 -0
  8. package/dist/src/libs/campaigns/campaignTypes/HyperdriveDynamicData.js +51 -38
  9. package/dist/src/modules/v4/dynamicData/dynamicData.service.js +10 -3
  10. package/dist/src/modules/v4/opportunity/opportunity.service.js +1 -1
  11. package/dist/src/modules/v4/programPayload/programPayload.controller.d.ts +1 -3
  12. package/dist/src/modules/v4/programPayload/programPayload.model.d.ts +1 -3
  13. package/dist/src/modules/v4/programPayload/programPayload.model.js +1 -3
  14. package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +3 -1
  15. package/dist/src/modules/v4/programPayload/programPayload.repository.js +28 -0
  16. package/dist/src/modules/v4/programPayload/programPayload.service.js +6 -11
  17. package/dist/src/modules/v4/reward/subservices/converter.js +0 -5
  18. package/dist/src/modules/v4/router.d.ts +1 -3
  19. package/dist/src/utils/decodeCalls.js +1 -0
  20. package/dist/src/utils/encodeCalls.js +1 -0
  21. package/dist/src/utils/generateCardName.js +2 -0
  22. package/dist/tsconfig.package.tsbuildinfo +1 -1
  23. 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;
@@ -5995,14 +5993,12 @@ declare const eden: {
5995
5993
  post: (body: {
5996
5994
  chainId: number;
5997
5995
  startTimestamp: number;
5998
- endTimestamp: number;
5999
5996
  computeChainId: number;
6000
5997
  amount: string;
6001
5998
  rewardToken: string;
6002
5999
  campaignType: number;
6000
+ duration: number;
6003
6001
  campaignData: string;
6004
- symbolRewardToken: string;
6005
- decimalsRewardToken: number;
6006
6002
  }, options: {
6007
6003
  headers: {
6008
6004
  authorization: string;
@@ -10427,14 +10423,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
10427
10423
  body: {
10428
10424
  chainId: number;
10429
10425
  startTimestamp: number;
10430
- endTimestamp: number;
10431
10426
  computeChainId: number;
10432
10427
  amount: string;
10433
10428
  rewardToken: string;
10434
10429
  campaignType: number;
10430
+ duration: number;
10435
10431
  campaignData: string;
10436
- symbolRewardToken: string;
10437
- decimalsRewardToken: number;
10438
10432
  };
10439
10433
  params: {};
10440
10434
  query: unknown;
@@ -14424,14 +14418,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
14424
14418
  post: (body: {
14425
14419
  chainId: number;
14426
14420
  startTimestamp: number;
14427
- endTimestamp: number;
14428
14421
  computeChainId: number;
14429
14422
  amount: string;
14430
14423
  rewardToken: string;
14431
14424
  campaignType: number;
14425
+ duration: number;
14432
14426
  campaignData: string;
14433
- symbolRewardToken: string;
14434
- decimalsRewardToken: number;
14435
14427
  }, options: {
14436
14428
  headers: {
14437
14429
  authorization: string;
@@ -17471,14 +17463,12 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
17471
17463
  post: (body: {
17472
17464
  chainId: number;
17473
17465
  startTimestamp: number;
17474
- endTimestamp: number;
17475
17466
  computeChainId: number;
17476
17467
  amount: string;
17477
17468
  rewardToken: string;
17478
17469
  campaignType: number;
17470
+ duration: number;
17479
17471
  campaignData: string;
17480
- symbolRewardToken: string;
17481
- decimalsRewardToken: number;
17482
17472
  }, options: {
17483
17473
  headers: {
17484
17474
  authorization: string;
@@ -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;
@@ -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
  },
@@ -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;
@@ -15,11 +15,9 @@ export declare const CampaignDataDto: import("@sinclair/typebox").TObject<{
15
15
  amount: import("@sinclair/typebox").TString;
16
16
  chainId: import("@sinclair/typebox").TNumber;
17
17
  computeChainId: import("@sinclair/typebox").TNumber;
18
- endTimestamp: import("@sinclair/typebox").TNumber;
18
+ duration: import("@sinclair/typebox").TNumber;
19
19
  rewardToken: import("@sinclair/typebox").TString;
20
20
  startTimestamp: import("@sinclair/typebox").TNumber;
21
- symbolRewardToken: import("@sinclair/typebox").TString;
22
- decimalsRewardToken: import("@sinclair/typebox").TNumber;
23
21
  }>;
24
22
  export declare const SinglePayloadInputDto: import("@sinclair/typebox").TObject<{
25
23
  distributionChainId: import("@sinclair/typebox").TNumber;
@@ -16,11 +16,9 @@ export const CampaignDataDto = t.Object({
16
16
  amount: t.String({ description: "Amount of the reward token to be distributed" }),
17
17
  chainId: t.Numeric({ description: "Chain ID where the reward tokens will be distributed" }),
18
18
  computeChainId: t.Numeric({ description: "Chain ID used for computation" }),
19
- endTimestamp: t.Numeric({ description: "End timestamp for the campaign" }),
19
+ duration: t.Numeric({ description: "Duration for the campaign" }),
20
20
  rewardToken: t.String({ description: "Address of the reward token to be distributed" }),
21
21
  startTimestamp: t.Numeric({ description: "Start timestamp for the campaign" }),
22
- symbolRewardToken: t.String({ description: "Symbol of the reward token" }),
23
- decimalsRewardToken: t.Numeric({ description: "Decimals of the reward token" }),
24
22
  });
25
23
  export const SinglePayloadInputDto = t.Object({
26
24
  distributionChainId: t.Numeric({ description: "Chain ID where the reward tokens will be distributed" }),
@@ -90,7 +90,9 @@ export declare enum pufferCampaigns {
90
90
  venus_pufeth = "0xE0ee5dDeBFe0abe0a4Af50299D68b74Cec31668e",
91
91
  unifiBTC = "0x170D847A8320F3B6A77eE15B0CAE430e3eC933a0",
92
92
  unifiUSD = "0x82c40e07277eBb92935f79cE92268F80dDc7caB4",
93
- CARROT_USDC = "0xf00032d0F95e8f43E750C51d0188DCa33cC5a8eA"
93
+ CARROT_USDC = "0xf00032d0F95e8f43E750C51d0188DCa33cC5a8eA",
94
+ sonex_pufETH_USDCe_1 = "0x4A0e0E8d5DF4AEC0a08359e599720628b179F7eD",
95
+ sonex_pufETH_USDCe_5 = "0x2646FAD13ef9BD063790d2719De1da290865D58f"
94
96
  }
95
97
  export declare enum zkSyncCampaigns {
96
98
  Izumi_Finance_Zk_Weth = "Izumi Finance ZK/WETH 0xd62bc9f19bd94fde9c41df4b6eb6419ea6b8e25c",
@@ -95,6 +95,8 @@ export var pufferCampaigns;
95
95
  pufferCampaigns["unifiBTC"] = "0x170D847A8320F3B6A77eE15B0CAE430e3eC933a0";
96
96
  pufferCampaigns["unifiUSD"] = "0x82c40e07277eBb92935f79cE92268F80dDc7caB4";
97
97
  pufferCampaigns["CARROT_USDC"] = "0xf00032d0F95e8f43E750C51d0188DCa33cC5a8eA";
98
+ pufferCampaigns["sonex_pufETH_USDCe_1"] = "0x4A0e0E8d5DF4AEC0a08359e599720628b179F7eD";
99
+ pufferCampaigns["sonex_pufETH_USDCe_5"] = "0x2646FAD13ef9BD063790d2719De1da290865D58f";
98
100
  })(pufferCampaigns || (pufferCampaigns = {}));
99
101
  export var zkSyncCampaigns;
100
102
  (function (zkSyncCampaigns) {
@@ -3337,6 +3339,32 @@ const PufferInterfaceCampaigns = {
3337
3339
  weightToken0: 5000,
3338
3340
  weightToken1: 5000,
3339
3341
  },
3342
+ [pufferCampaigns.sonex_pufETH_USDCe_1]: {
3343
+ campaignType: Campaign.CLAMM,
3344
+ computeChainId: ChainId.SONEIUM,
3345
+ poolAddress: "0x4A0e0E8d5DF4AEC0a08359e599720628b179F7eD",
3346
+ hooks: [],
3347
+ whitelist: [],
3348
+ blacklist: [],
3349
+ url: "https://app.sonex.so/explore/pools/0x4A0e0E8d5DF4AEC0a08359e599720628b179F7eD",
3350
+ isOutOfRangeIncentivized: false,
3351
+ weightFees: 0,
3352
+ weightToken0: 5000,
3353
+ weightToken1: 5000,
3354
+ },
3355
+ [pufferCampaigns.sonex_pufETH_USDCe_5]: {
3356
+ campaignType: Campaign.CLAMM,
3357
+ computeChainId: ChainId.SONEIUM,
3358
+ poolAddress: "0x2646FAD13ef9BD063790d2719De1da290865D58f",
3359
+ hooks: [],
3360
+ whitelist: [],
3361
+ blacklist: [],
3362
+ url: "https://app.sonex.so/explore/pools/0x2646FAD13ef9BD063790d2719De1da290865D58f",
3363
+ isOutOfRangeIncentivized: false,
3364
+ weightFees: 0,
3365
+ weightToken0: 5000,
3366
+ weightToken1: 5000,
3367
+ },
3340
3368
  [pufferCampaigns.uniswapv3_weth_PUFFER]: {
3341
3369
  campaignType: Campaign.CLAMM,
3342
3370
  computeChainId: ChainId.MAINNET,
@@ -1,4 +1,4 @@
1
- import { CampaignTypeConfigResourceMapping, ChainId, NULL_ADDRESS, NULL_ROOT, ParserService, buildCampaignPayload, encodeForwarderData, registry, } from "@sdk";
1
+ import { CampaignTypeConfigResourceMapping, ChainId, NULL_ADDRESS, NULL_ROOT, buildCampaignPayload, encodeForwarderData, parseCampaign, registry, } from "@sdk";
2
2
  import _ from "lodash";
3
3
  import { safeTemplate, } from "./programPayload.model";
4
4
  import { MerklInterfaceCampaigns } from "./programPayload.repository";
@@ -176,24 +176,19 @@ export class ProgramPayloadService {
176
176
  return campaignPayloads;
177
177
  }
178
178
  static async buildConfigFromCampaignData(body) {
179
- const parser = ParserService(body.campaignType);
180
179
  const base = {
181
- amount: body.amount,
182
180
  campaignId: "0xdefaultId",
183
- campaignSubType: 0,
184
- campaignType: body.campaignType,
185
- chainId: body.chainId,
186
- computeChainId: body.computeChainId,
187
181
  creator: "Oxcreator",
188
- endTimestamp: body.endTimestamp,
189
- index: 0,
190
- mainParameter: " ".repeat(42),
191
182
  rewardToken: body.rewardToken,
183
+ amount: body.amount,
184
+ campaignType: body.campaignType,
192
185
  startTimestamp: body.startTimestamp,
186
+ duration: body.duration,
187
+ campaignData: body.campaignData,
193
188
  };
194
189
  try {
195
190
  console.log("Parsing campaign data");
196
- const res = await parser.parse(body.chainId, body.symbolRewardToken, body.decimalsRewardToken, base, body.campaignData);
191
+ const res = await parseCampaign(body.chainId, base, 0);
197
192
  if (res.success) {
198
193
  return res;
199
194
  }
@@ -34,11 +34,6 @@ export class RewardConvertorService {
34
34
  BigInt(claimed)).toString();
35
35
  res[rewardToken].reasons[reason].pending = (BigInt(res[rewardToken].reasons[reason].pending ?? "0") + BigInt(pending)).toString();
36
36
  }
37
- res[rewardToken].accumulated = (BigInt(res[rewardToken].accumulated) + BigInt(amount)).toString();
38
- res[rewardToken].unclaimed = (BigInt(res[rewardToken].unclaimed) +
39
- BigInt(amount) -
40
- BigInt(claimed)).toString();
41
- res[rewardToken].pending = (BigInt(res[rewardToken].pending ?? "0") + BigInt(pending)).toString();
42
37
  }
43
38
  }
44
39
  }
@@ -3505,14 +3505,12 @@ export declare const v4: Elysia<"/v4", false, {
3505
3505
  body: {
3506
3506
  chainId: number;
3507
3507
  startTimestamp: number;
3508
- endTimestamp: number;
3509
3508
  computeChainId: number;
3510
3509
  amount: string;
3511
3510
  rewardToken: string;
3512
3511
  campaignType: number;
3512
+ duration: number;
3513
3513
  campaignData: string;
3514
- symbolRewardToken: string;
3515
- decimalsRewardToken: number;
3516
3514
  };
3517
3515
  params: {};
3518
3516
  query: unknown;
@@ -191,6 +191,7 @@ export function decodeReturnValue(returnData, key, type) {
191
191
  switch (type) {
192
192
  case tokenType.anglesLiquid:
193
193
  case tokenType.cian:
194
+ case tokenType.rfx_slv:
194
195
  return ERC4626Interface.decodeFunctionResult("totalAssets", returnData)[0];
195
196
  case tokenType.concrete:
196
197
  return ERC4626Interface.decodeFunctionResult("totalAssets", returnData)[0];
@@ -247,6 +247,7 @@ export function createCall(target, key, type, metaData) {
247
247
  switch (type) {
248
248
  case tokenType.anglesLiquid:
249
249
  case tokenType.cian:
250
+ case tokenType.rfx_slv:
250
251
  return {
251
252
  allowFailure: true,
252
253
  callData: ERC4626Interface.encodeFunctionData("totalAssets"),
@@ -134,6 +134,8 @@ export function generateCardName(type, typeInfo, campaign, symbols = [""], displ
134
134
  case tokenType.concrete:
135
135
  case tokenType.cian:
136
136
  return `Deposit ${typeInfo.symbolAsset} into ${typeInfo.name.replace("Ether.Fi", "Veda")}`;
137
+ case tokenType.rfx_slv:
138
+ return `Deposit ${typeInfo.symbolAsset} into ${typeInfo.name}`;
137
139
  case tokenType.equalizer_gauge:
138
140
  return `${displayName}`;
139
141
  case tokenType.anglesLiquid: