Skip to content

Commit

Permalink
retry kamino
Browse files Browse the repository at this point in the history
  • Loading branch information
vrtnd committed Sep 18, 2024
1 parent 7e730e8 commit add8600
Showing 1 changed file with 52 additions and 29 deletions.
81 changes: 52 additions & 29 deletions src/adaptors/kamino-liquidity/index.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,61 @@
const axios = require('axios');
const utils = require('../utils');

const retry = require('async-retry');
const getApy = async () => {
const responses = await Promise.all([
axios.get('https://api.kamino.finance/strategies/metrics?env=mainnet-beta&status=LIVE'),
axios.get('https://api.kamino.finance/strategies/metrics?env=mainnet-beta&status=IGNORED'),
axios.get('https://api.kamino.finance/v2/strategies/volume?env=mainnet-beta'),
]);
const strategies = [...responses[0].data, ...responses[1].data];
const volume = responses[2].data;
const responses = await retry(
async () =>
Promise.all([
axios.get(
'https://api.kamino.finance/strategies/metrics?env=mainnet-beta&status=LIVE'
),
axios.get(
'https://api.kamino.finance/strategies/metrics?env=mainnet-beta&status=IGNORED'
),
axios.get(
'https://api.kamino.finance/v2/strategies/volume?env=mainnet-beta'
),
]),
{
retries: 3,
onRetry: (err) => {
console.log(`Retrying chain ${name} due to error: ${err.message}`);
},
}
);
const strategies = [...responses[0].data, ...responses[1].data];
const volume = responses[2].data;

const apy = strategies.map((p) => {
const strategyVolume = volume.find(x => x.strategy === p.strategy);
return {
pool: p.strategy,
chain: 'Solana',
project: 'kamino-liquidity',
symbol: utils.formatSymbol(`${p.tokenA}-${p.tokenB}`),
underlyingTokens: [p.tokenAMint, p.tokenBMint],
rewardTokens: p.krewardMints,
tvlUsd: Number(p.totalValueLocked),
url: `https://app.kamino.finance/liquidity/${p.strategy}`,
apyBase: Number(p.kaminoApy.vault.apy24h) * 100,
apyBase7d: Number(p.kaminoApy.vault.apy7d) * 100,
apyReward: p.kaminoApy.kamino.reduce((partialSum, x) => partialSum + Number(x.apy), 0) * 100,
volumeUsd1d: Number(strategyVolume?.kaminoVolume.find(x => x.period === '24h')?.amount),
volumeUsd7d: Number(strategyVolume?.kaminoVolume.find(x => x.period === '7d')?.amount),
};
});
const apy = strategies.map((p) => {
const strategyVolume = volume.find((x) => x.strategy === p.strategy);
return {
pool: p.strategy,
chain: 'Solana',
project: 'kamino-liquidity',
symbol: utils.formatSymbol(`${p.tokenA}-${p.tokenB}`),
underlyingTokens: [p.tokenAMint, p.tokenBMint],
rewardTokens: p.krewardMints,
tvlUsd: Number(p.totalValueLocked),
url: `https://app.kamino.finance/liquidity/${p.strategy}`,
apyBase: Number(p.kaminoApy.vault.apy24h) * 100,
apyBase7d: Number(p.kaminoApy.vault.apy7d) * 100,
apyReward:
p.kaminoApy.kamino.reduce(
(partialSum, x) => partialSum + Number(x.apy),
0
) * 100,
volumeUsd1d: Number(
strategyVolume?.kaminoVolume.find((x) => x.period === '24h')?.amount
),
volumeUsd7d: Number(
strategyVolume?.kaminoVolume.find((x) => x.period === '7d')?.amount
),
};
});

return apy;
return apy;
};

module.exports = {
apy: getApy,
url: 'https://app.kamino.finance/',
apy: getApy,
url: 'https://app.kamino.finance/',
};

0 comments on commit add8600

Please sign in to comment.