Skip to content

Commit 4fc8591

Browse files
2 parents 51479e2 + a5bde46 commit 4fc8591

File tree

5 files changed

+97
-72
lines changed

5 files changed

+97
-72
lines changed

src/adaptors/cetus-amm/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const apy = async (chain) => {
3333
tvlUsd: Number(p.pure_tvl_in_usd),
3434
apyBase: Number(p?.apr.fee_apr_24h.replace('%','')),
3535
apyReward: apyRewardSui > 0 ? apyRewardSui : 0,
36-
volumeUsd1d: p?.vol_in_usd_24h,
36+
volumeUsd1d: Number(p?.vol_in_usd_24h),
3737
poolMeta: `${Number(p.fee) * 100}%`,
3838
url: `https://app.cetus.zone/liquidity/deposit?poolAddress=${p.swap_account}`,
3939
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ const main = async () => {
7070
...p,
7171
symbol,
7272
poolMeta,
73-
project: 'cian-vaults',
73+
project: 'cian-yield-layer',
7474
};
7575
});
7676
};

src/adaptors/gains-network/index.js

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const axios = require('axios');
22
const sdk = require('@defillama/sdk');
3-
43
const utils = require('../utils');
54

65
const chains = {
@@ -60,65 +59,70 @@ const chains = {
6059
};
6160

6261
const getApy = async () => {
63-
const pools = await Promise.all(
62+
const results = await Promise.all(
6463
Object.keys(chains).map(async (chain) => {
65-
const y = chains[chain];
66-
67-
const data = (await axios.get(`https://backend-${chain}.gains.trade/apr`))
68-
.data;
69-
70-
const priceKeys = [y.gns, ...y.vaults.map((i) => i.underlying)].map(
71-
(i) => `${chain}:${i}`
72-
);
73-
74-
const prices = (
75-
await axios.get(`https://coins.llama.fi/prices/current/${priceKeys}`)
76-
).data.coins;
77-
78-
// gns staking pool
79-
const balance =
80-
(
81-
await sdk.api.abi.call({
82-
target: y.gns,
83-
abi: 'erc20:balanceOf',
84-
params: [y.staking],
85-
chain,
86-
})
87-
).output / 1e18;
64+
try {
65+
const y = chains[chain];
66+
const data = (
67+
await axios.get(`https://backend-${chain}.gains.trade/apr`)
68+
).data;
69+
const priceKeys = [y.gns, ...y.vaults.map((i) => i.underlying)].map(
70+
(i) => `${chain}:${i}`
71+
);
72+
const prices = (
73+
await axios.get(`https://coins.llama.fi/prices/current/${priceKeys}`)
74+
).data.coins;
8875

89-
const gnsStaking = {
90-
chain,
91-
project: 'gains-network',
92-
pool: y.staking,
93-
symbol: 'GNS',
94-
tvlUsd: balance * prices[`${chain}:${y.gns}`].price,
95-
apyBase: utils.aprToApy(data.sssApr),
96-
underlyingTokens: [y.gns],
97-
};
76+
const balance =
77+
(
78+
await sdk.api.abi.call({
79+
target: y.gns,
80+
abi: 'erc20:balanceOf',
81+
params: [y.staking],
82+
chain,
83+
})
84+
).output / 1e18;
9885

99-
// vaults
100-
const vaults = data.collateralRewards.map((i) => {
101-
const addresses = y.vaults.find((v) => v.symbol === i.symbol);
102-
const priceData = prices[`${chain}:${addresses.underlying}`];
103-
const tvlUsd =
104-
Number(i.vaultTvl / 10 ** priceData.decimals) * priceData.price;
105-
106-
return {
86+
const gnsStaking = {
10787
chain,
10888
project: 'gains-network',
109-
pool: addresses.pool,
110-
symbol: i.symbol,
111-
tvlUsd,
112-
apyBase: utils.aprToApy(i.vaultApr),
113-
underlyingTokens: [addresses.underlying],
89+
pool: y.staking,
90+
symbol: 'GNS',
91+
tvlUsd: balance * prices[`${chain}:${y.gns}`].price,
92+
apyBase: utils.aprToApy(data.sssApr),
93+
underlyingTokens: [y.gns],
11494
};
115-
});
11695

117-
return [gnsStaking, ...vaults];
96+
const vaults = data.collateralRewards.flatMap((i) => {
97+
const addresses = y.vaults.find((v) => v.symbol === i.symbol);
98+
if (!addresses) return [];
99+
100+
const priceData = prices[`${chain}:${addresses.underlying}`];
101+
const tvlUsd =
102+
Number(i.vaultTvl / 10 ** priceData.decimals) * priceData.price;
103+
104+
return [
105+
{
106+
chain,
107+
project: 'gains-network',
108+
pool: addresses.pool,
109+
symbol: i.symbol,
110+
tvlUsd,
111+
apyBase: utils.aprToApy(i.vaultApr),
112+
underlyingTokens: [addresses.underlying],
113+
},
114+
];
115+
});
116+
117+
return [gnsStaking, ...vaults];
118+
} catch (error) {
119+
console.error(`Error fetching APY data for ${chain}:`, error);
120+
return [];
121+
}
118122
})
119123
);
120124

121-
return pools.flat();
125+
return results.flat();
122126
};
123127

124128
module.exports = {

src/adaptors/kinetic/index.js

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ const { comptrollerAbi, cToken, flrETH } = require('./abi');
88
const { symbol } = require('@defillama/sdk/build/erc20');
99

1010
const COMPTROLLER_ADDRESS = '0x8041680Fb73E1Fe5F851e76233DCDfA0f2D2D7c8';
11+
const ISO_COMPTROLLER_ADDRESS = '0xDcce91d46Ecb209645A26B5885500127819BeAdd';
1112
const FLR_ETH = '0x26a1fab310bd080542dc864647d05985360b16a5';
1213
const WETH = '0x1502fa4be69d526124d453619276faccab275d3d';
14+
const C_ETH_MARKET = '0xd7291D5001693d15b6e4d56d73B5d2cD7eCfE5c6';
1315
const FLARE_CHAIN = 'flare';
1416

1517
const JOULE = {
@@ -76,12 +78,12 @@ const calculateApy = (ratePerTimestamps) => {
7678
);
7779
};
7880

79-
const getRewards = async (rewardType, markets, isBorrow = false) => {
81+
const getRewards = async (rewardType, markets, comptroller, isBorrow = false) => {
8082
return (
8183
await sdk.api.abi.multiCall({
8284
chain: FLARE_CHAIN,
8385
calls: markets.map((market) => ({
84-
target: COMPTROLLER_ADDRESS,
86+
target: comptroller,
8587
params: [rewardType, market],
8688
})),
8789
abi: comptrollerAbi.find(
@@ -103,10 +105,10 @@ const multiCallMarkets = async (markets, method, abi) => {
103105
).output.map(({ output }) => output);
104106
};
105107

106-
const getApy = async () => {
108+
const getApy = async (comptroller) => {
107109
const allMarketsRes = (
108110
await sdk.api.abi.call({
109-
target: COMPTROLLER_ADDRESS,
111+
target: comptroller,
110112
chain: FLARE_CHAIN,
111113
abi: comptrollerAbi.find(({ name }) => name === 'getAllMarkets'),
112114
permitFailure: true,
@@ -119,23 +121,23 @@ const getApy = async () => {
119121
await sdk.api.abi.multiCall({
120122
chain: FLARE_CHAIN,
121123
calls: allMarkets.map((market) => ({
122-
target: COMPTROLLER_ADDRESS,
124+
target: comptroller,
123125
params: market,
124126
})),
125127
abi: comptrollerAbi.find(({ name }) => name === 'markets'),
126128
permitFailure: true,
127129
})
128130
).output.map(({ output }) => output);
129131

130-
const jouleRewards = await getRewards(REWARD_TYPES.JOULE, allMarkets);
131-
const flrRewards = await getRewards(REWARD_TYPES.FLR, allMarkets);
132-
const kiiRewards = await getRewards(REWARD_TYPES.KII, allMarkets);
133-
const rFLRRewards = await getRewards(REWARD_TYPES.RFLR, allMarkets);
132+
const jouleRewards = await getRewards(REWARD_TYPES.JOULE, allMarkets, comptroller);
133+
const flrRewards = await getRewards(REWARD_TYPES.FLR, allMarkets, comptroller);
134+
const kiiRewards = await getRewards(REWARD_TYPES.KII, allMarkets, comptroller);
135+
const rFLRRewards = await getRewards(REWARD_TYPES.RFLR, allMarkets, comptroller);
134136

135-
const jouleBorrowRewards = await getRewards(REWARD_TYPES.JOULE, allMarkets, true);
136-
const flrBorrowRewards = await getRewards(REWARD_TYPES.FLR, allMarkets, true);
137-
const kiiBorrowRewards = await getRewards(REWARD_TYPES.KII, allMarkets, true);
138-
const rflrBorrowRewards = await getRewards(REWARD_TYPES.RFLR, allMarkets, true);
137+
const jouleBorrowRewards = await getRewards(REWARD_TYPES.JOULE, allMarkets, comptroller, true);
138+
const flrBorrowRewards = await getRewards(REWARD_TYPES.FLR, allMarkets, comptroller, true);
139+
const kiiBorrowRewards = await getRewards(REWARD_TYPES.KII, allMarkets, comptroller, true);
140+
const rflrBorrowRewards = await getRewards(REWARD_TYPES.RFLR, allMarkets, comptroller, true);
139141

140142
const supplyRatePerTimestamp = await multiCallMarkets(
141143
allMarkets,
@@ -161,22 +163,32 @@ const getApy = async () => {
161163
cToken
162164
);
163165

164-
const underlyingTokens = await multiCallMarkets(
165-
allMarkets,
166+
const tempMarkets = allMarkets.filter(m => m.toLocaleLowerCase() != C_ETH_MARKET.toLocaleLowerCase())
167+
168+
let underlyingTokens = await multiCallMarkets(
169+
tempMarkets,
166170
'underlying',
167171
cToken
168172
);
169-
const underlyingSymbols = await multiCallMarkets(
173+
174+
let underlyingSymbols = await multiCallMarkets(
170175
underlyingTokens,
171176
'symbol',
172177
cToken
173178
);
174-
const underlyingDecimals = await multiCallMarkets(
179+
180+
let underlyingDecimals = await multiCallMarkets(
175181
underlyingTokens,
176182
'decimals',
177183
cToken
178184
);
179185

186+
if(underlyingTokens.length != allMarkets.length){
187+
underlyingTokens = underlyingTokens.concat([FLR.address]);
188+
underlyingSymbols = underlyingSymbols.concat('FLR');
189+
underlyingDecimals = underlyingDecimals.concat(18);
190+
}
191+
180192
const prices = await getPrices(
181193
underlyingTokens.concat([FLR.address, JOULE.address]).map((token) => 'flare:' + token)
182194
);
@@ -311,8 +323,13 @@ const getApy = async () => {
311323
return pools;
312324
};
313325

326+
const getAPys = async() => {
327+
const pools = await getApy(COMPTROLLER_ADDRESS);
328+
return pools.concat(await getApy(ISO_COMPTROLLER_ADDRESS))
329+
}
330+
314331
module.exports = {
315332
timetravel: false,
316-
apy: getApy,
333+
apy: getAPys,
317334
url: 'https://app.kinetic.market/dashboard',
318335
};

src/handlers/triggerAdaptor.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -363,9 +363,13 @@ const main = async (body) => {
363363
? +p.apyRewardBorrowFake.toFixed(precision)
364364
: p.apyRewardBorrowFake,
365365
volumeUsd1d:
366-
p.volumeUsd1d >= 0 ? +p.volumeUsd1d.toFixed(precision) : null,
366+
p.volumeUsd1d >= 0
367+
? +parseFloat(p.volumeUsd1d).toFixed(precision)
368+
: null,
367369
volumeUsd7d:
368-
p.volumeUsd7d >= 0 ? +p.volumeUsd7d.toFixed(precision) : null,
370+
p.volumeUsd7d >= 0
371+
? +parseFloat(p.volumeUsd7d).toFixed(precision)
372+
: null,
369373
apyBaseInception: p.apyBaseInception
370374
? +p.apyBaseInception.toFixed(precision)
371375
: null,

0 commit comments

Comments
 (0)