@merkl/api 0.20.90 → 0.20.92

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.
@@ -86,33 +86,38 @@ export class DynamicDataService {
86
86
  }
87
87
  const campaignDailyValue = await TokenService.getValueByTokenId(TokenService.hashId({ address: rewardToken, chainId }), dailyAmount);
88
88
  dailyRewards.total += campaignDailyValue;
89
- dailyRewards.breakdowns.push({
90
- campaignId: CampaignService.hashId({
91
- campaignId: record.campaign.campaignId,
92
- distributionChain: record.campaign.chainId,
93
- }),
94
- value: campaignDailyValue,
95
- amount: dailyAmount,
96
- token,
97
- });
89
+ if (campaignDailyValue > 0) {
90
+ dailyRewards.breakdowns.push({
91
+ campaignId: CampaignService.hashId({
92
+ campaignId: record.campaign.campaignId,
93
+ distributionChain: record.campaign.chainId,
94
+ }),
95
+ value: campaignDailyValue,
96
+ amount: dailyAmount,
97
+ token,
98
+ });
99
+ }
98
100
  // 2.b.3 APR is obtained from daily rewards and tvl following the distribution type
99
101
  // TODO: switch on distribution type - dailyRewards can be in token amount
100
- apr.cumulated += campaignDailyValue / record.tvl;
101
- apr.breakdowns.push({
102
- identifier: record.campaign.campaignId,
103
- type: AprType.CAMPAIGN,
104
- value: campaignDailyValue / record.tvl,
105
- });
102
+ let aprCampaignValue;
103
+ if (token.isPoint) {
104
+ aprCampaignValue = campaignDailyValue / record.tvl;
105
+ }
106
+ else {
107
+ aprCampaignValue = (campaignDailyValue * 365 * 100) / record.tvl;
108
+ }
109
+ if (aprCampaignValue > 0) {
110
+ apr.cumulated += aprCampaignValue;
111
+ apr.breakdowns.push({
112
+ identifier: record.campaign.campaignId,
113
+ type: AprType.CAMPAIGN,
114
+ value: aprCampaignValue,
115
+ });
116
+ }
106
117
  }
107
118
  catch (_err) {
108
119
  log.warn(`token ${rewardToken} not found`);
109
120
  }
110
- updates.push({
111
- opportunityId,
112
- tvl,
113
- apr,
114
- dailyRewards,
115
- });
116
121
  }
117
122
  updates.push({
118
123
  opportunityId,
@@ -122,66 +127,67 @@ export class DynamicDataService {
122
127
  });
123
128
  }
124
129
  // 2.c - Update the records
125
- for (const update of updates) {
126
- try {
127
- if (!dryRun)
130
+ if (!dryRun) {
131
+ for (const update of updates) {
132
+ try {
128
133
  await OpportunityRepository.updateDynamicData(update.opportunityId, update.apr, update.tvl, update.dailyRewards);
134
+ }
135
+ catch (err) {
136
+ throw new HttpError("Failed to update dynamic data", 500, {
137
+ err,
138
+ chainId,
139
+ type,
140
+ });
141
+ }
129
142
  }
130
- catch (err) {
131
- throw new HttpError("Failed to update dynamic data", 500, {
132
- err,
133
- chainId,
134
- type,
135
- });
136
- }
143
+ log.info(`[${NETWORK_LABELS[chainId]}][${CampaignEnum[type]}] updated ${updates.length}/${campaigns.length} campaigns using campaignTVLBuilder`);
137
144
  }
145
+ return updates;
138
146
  }
139
- else {
140
- const dynamicDataArray = [];
141
- const dynamicData = await DynamicDataService.fetchWithRecursiveErrorHandling(dynamicDataBuilderFactory(type).build, campaigns, chainId);
142
- const oppMap = {};
143
- for (const data of dynamicData) {
144
- if (!!data) {
145
- // Main Parameter OVERRIDING
146
- if (data.campaignType === CampaignEnum.SILO && data.campaignParameters.whitelist?.length === 1)
147
- data.mainParameter = `${data.mainParameter}-${data.campaignParameters.whitelist[0]}`;
148
- if (!oppMap[`${data.campaignType}_${data.mainParameter}`])
149
- oppMap[`${data.campaignType}_${data.mainParameter}`] = {};
150
- oppMap[`${data.campaignType}_${data.mainParameter}`][data.campaignId] = data;
151
- }
147
+ const dynamicDataArray = [];
148
+ const dynamicData = await DynamicDataService.fetchWithRecursiveErrorHandling(dynamicDataBuilderFactory(type).build, campaigns, chainId);
149
+ const oppMap = {};
150
+ for (const data of dynamicData) {
151
+ if (!!data) {
152
+ // Main Parameter OVERRIDING
153
+ if (data.campaignType === CampaignEnum.SILO && data.campaignParameters.whitelist?.length === 1)
154
+ data.mainParameter = `${data.mainParameter}-${data.campaignParameters.whitelist[0]}`;
155
+ if (!oppMap[`${data.campaignType}_${data.mainParameter}`])
156
+ oppMap[`${data.campaignType}_${data.mainParameter}`] = {};
157
+ oppMap[`${data.campaignType}_${data.mainParameter}`][data.campaignId] = data;
152
158
  }
153
- for (const entry of Object.entries(oppMap)) {
154
- const [type, mainParameter] = entry[0].split("_");
155
- const apr = AprService.extractFromDynamicData(+type, Object.values(entry[1]));
156
- const tvl = TvlService.extractFromDynamicData(+type, Object.values(entry[1]));
157
- const dailyRewards = await RewardService.extractDailyRewardsRecordFromDynamicData(+type, Object.values(entry[1]));
158
- const opportunityId = OpportunityService.hashId({
159
- chainId,
160
- identifier: mainParameter,
161
- type: CampaignEnum[+type],
159
+ }
160
+ for (const entry of Object.entries(oppMap)) {
161
+ const [type, mainParameter] = entry[0].split("_");
162
+ const apr = AprService.extractFromDynamicData(+type, Object.values(entry[1]));
163
+ const tvl = TvlService.extractFromDynamicData(+type, Object.values(entry[1]));
164
+ const dailyRewards = await RewardService.extractDailyRewardsRecordFromDynamicData(+type, Object.values(entry[1]));
165
+ const opportunityId = OpportunityService.hashId({
166
+ chainId,
167
+ identifier: mainParameter,
168
+ type: CampaignEnum[+type],
169
+ });
170
+ try {
171
+ if (!dryRun)
172
+ await OpportunityRepository.updateDynamicData(opportunityId, apr, tvl, dailyRewards);
173
+ }
174
+ catch (err) {
175
+ throw new HttpError("Failed to update dynamic data", 500, {
176
+ err,
177
+ opportunityId,
178
+ campaigns: Object.values(entry[1]),
179
+ dynamicData: bigintToString({
180
+ campaignId: Object.values(entry[1])[0].campaignId,
181
+ apr,
182
+ tvl,
183
+ dailyRewards,
184
+ }),
162
185
  });
163
- try {
164
- if (!dryRun)
165
- await OpportunityRepository.updateDynamicData(opportunityId, apr, tvl, dailyRewards);
166
- }
167
- catch (err) {
168
- throw new HttpError("Failed to update dynamic data", 500, {
169
- err,
170
- opportunityId,
171
- campaigns: Object.values(entry[1]),
172
- dynamicData: bigintToString({
173
- campaignId: Object.values(entry[1])[0].campaignId,
174
- apr,
175
- tvl,
176
- dailyRewards,
177
- }),
178
- });
179
- }
180
- dynamicDataArray.push(bigintToString({ campaignId: Object.values(entry[1])[0].campaignId, apr, tvl, dailyRewards }));
181
186
  }
182
- log.info(`[${NETWORK_LABELS[chainId]}][${CampaignEnum[type]}] updated ${dynamicData.length}/${campaigns.length} campaigns`);
183
- return dynamicDataArray;
187
+ dynamicDataArray.push(bigintToString({ campaignId: Object.values(entry[1])[0].campaignId, apr, tvl, dailyRewards }));
184
188
  }
189
+ log.info(`[${NETWORK_LABELS[chainId]}][${CampaignEnum[type]}] updated ${dynamicData.length}/${campaigns.length} campaigns`);
190
+ return dynamicDataArray;
185
191
  }
186
192
  /**
187
193
  * @dev Test function used to create mock ERC20 static campaigns and check tvl and metadata
@@ -1197,7 +1197,7 @@ export declare const v4: Elysia<"/v4", false, {
1197
1197
  authorization: string;
1198
1198
  };
1199
1199
  response: {
1200
- 200: unknown[] | undefined;
1200
+ 200: unknown[];
1201
1201
  };
1202
1202
  };
1203
1203
  };
@@ -1764,7 +1764,7 @@ export declare const v4: Elysia<"/v4", false, {
1764
1764
  authorization: string;
1765
1765
  };
1766
1766
  response: {
1767
- 200: unknown[] | undefined;
1767
+ 200: unknown[];
1768
1768
  };
1769
1769
  };
1770
1770
  };
@@ -1782,7 +1782,7 @@ export declare const v4: Elysia<"/v4", false, {
1782
1782
  authorization: string;
1783
1783
  };
1784
1784
  response: {
1785
- 200: unknown[] | undefined;
1785
+ 200: unknown[];
1786
1786
  };
1787
1787
  };
1788
1788
  };
@@ -1812,7 +1812,7 @@ export declare const v4: Elysia<"/v4", false, {
1812
1812
  authorization: string;
1813
1813
  };
1814
1814
  response: {
1815
- 200: unknown[] | undefined;
1815
+ 200: unknown[];
1816
1816
  };
1817
1817
  };
1818
1818
  };