Skip to content

Commit f893c92

Browse files
committed
feat: added reward apr for superlend yield adaptor
1 parent 6acfc4b commit f893c92

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

src/adaptors/superlend/constants.js

+19
Original file line numberDiff line numberDiff line change
@@ -981,10 +981,25 @@ const oracleAbi = [
981981
];
982982

983983
const CHAIN = 'etlk';
984+
const CHAIN_ID = 42793;
984985
const PROTOCOL_DATA_PROVIDER = '0x99e8269dDD5c7Af0F1B3973A591b47E8E001BCac';
985986
const UI_POOL_DATA_PROVIDER = '0x9F9384Ef6a1A76AE1a95dF483be4b0214fda0Ef9';
986987
const PROVIDER_ADDRESS = '0x5ccF60c7E10547c5389E9cBFf543E5D0Db9F4feC';
987988

989+
const CAMPAIGN_ID_MAP = {
990+
USDC: '0x1bd8c05ef0d7b581826288a6b28a33eee2d95caa68c7f4b23dc7c5f32704b8ad',
991+
MTBILL: '0xd8d0ad6579284bcb4dbc3fb1e40f4596c788e4508daf9cfd010459ce86832850',
992+
MBASIS: '0xb3509a79b1715bc7666666fc9c27eb77762436648de827a5c5817371593aefd0',
993+
WBTC: '0xc85b1c610c3ae5058cc69e04d87239c2af3cefb0c2fbdfcccffa5fb23d9f1cd7',
994+
USDT: '0x691135dbaf8ce8bcc7aace2468be9b499834308362e1194a4246014ff74163a1',
995+
WXTZ: '0x898a135c2bceffdae7618b1e2266108d154dfeab75a373b3eb3641ca31647e6a',
996+
};
997+
998+
const MERKLE_BASE_URL =
999+
'https://api.merkl.xyz/v4/campaigns/?chainId=CHAIN_ID&campaignId=CAMPAIGN_ID&withOpportunity=true';
1000+
1001+
const APPLE_REWARD_TOKEN = '0x6E9C1F88a960fE63387eb4b71BC525a9313d8461';
1002+
9881003
module.exports = {
9891004
poolAbi,
9901005
uiPoolDataProviderAbi,
@@ -993,4 +1008,8 @@ module.exports = {
9931008
PROTOCOL_DATA_PROVIDER,
9941009
UI_POOL_DATA_PROVIDER,
9951010
PROVIDER_ADDRESS,
1011+
CHAIN_ID,
1012+
MERKLE_BASE_URL,
1013+
CAMPAIGN_ID_MAP,
1014+
APPLE_REWARD_TOKEN,
9961015
};

src/adaptors/superlend/index.js

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
const sdk = require('@defillama/sdk');
2+
const utils = require('../utils');
3+
24
const {
35
poolAbi,
46
uiPoolDataProviderAbi,
@@ -7,6 +9,10 @@ const {
79
PROTOCOL_DATA_PROVIDER,
810
UI_POOL_DATA_PROVIDER,
911
PROVIDER_ADDRESS,
12+
CHAIN_ID,
13+
MERKLE_BASE_URL,
14+
CAMPAIGN_ID_MAP,
15+
APPLE_REWARD_TOKEN,
1016
} = require('./constants');
1117

1218
const getApy = async () => {
@@ -105,6 +111,18 @@ const getApy = async () => {
105111
) / 1e8;
106112
}
107113

114+
// reward data
115+
const rewardData = {};
116+
for (const pool of reserveTokens) {
117+
const campaignId = CAMPAIGN_ID_MAP[pool.symbol.toUpperCase()];
118+
const url = MERKLE_BASE_URL.replace('CHAIN_ID', CHAIN_ID).replace(
119+
'CAMPAIGN_ID',
120+
campaignId
121+
);
122+
const campaign = await utils.getData(url);
123+
rewardData[pool.symbol.toUpperCase()] = campaign[0]?.Opportunity?.apr ?? 0;
124+
}
125+
108126
return reserveTokens
109127
.map((pool, i) => {
110128
const frozen = poolsReservesConfigurationData[i].isFrozen;
@@ -123,14 +141,21 @@ const getApy = async () => {
123141

124142
const url = `https://markets.superlend.xyz/reserve-overview/?underlyingAsset=${pool.tokenAddress.toLowerCase()}&marketName=etherlink`;
125143

144+
const apyBase = (p.liquidityRate / 10 ** 27) * 100;
145+
const apyReward = rewardData[pool.symbol.toUpperCase()] ?? 0;
146+
const apy = apyBase + apyReward;
147+
126148
return {
127149
pool: `${aTokens[i].tokenAddress}-etlk`.toLowerCase(),
128150
chain: 'Etherlink',
129151
project: 'superlend',
130152
symbol: pool.symbol,
131153
tvlUsd,
132-
apyBase: (p.liquidityRate / 10 ** 27) * 100,
154+
apyBase,
155+
apyReward,
156+
apy,
133157
underlyingTokens: [pool.tokenAddress],
158+
rewardTokens: apyReward > 0 ? [APPLE_REWARD_TOKEN] : [],
134159
totalSupplyUsd,
135160
totalBorrowUsd,
136161
debtCeilingUsd: null,

0 commit comments

Comments
 (0)