Skip to content

Commit 21d126a

Browse files
authored
Osmosis fix (#1623)
* osmosis-fix * superfluid = staking apr * remove superfluid which requires lockups * drop dupes * add env var
1 parent 36b29d0 commit 21d126a

File tree

4 files changed

+27
-44
lines changed

4 files changed

+27
-44
lines changed

.github/workflows/master.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,4 @@ jobs:
4444
VENDOR_FINANCE: ${{ secrets.VENDOR_FINANCE }}
4545
TRADERJOE: ${{ secrets.TRADERJOE }}
4646
GRAPH_API_KEY: ${{ secrets.GRAPH_API_KEY }}
47+
OSMOSIS_API_KEY: ${{ secrets.OSMOSIS_API_KEY}}

env.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ module.exports = {
2626
GRAPH_API_KEY: process.env.GRAPH_API_KEY,
2727
// DB
2828
DATABASE_URL: process.env.DATABASE_URL,
29+
OSMOSIS_API_KEY: process.env.OSMOSIS_API_KEY,
2930
};

serverless.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ functions:
7979
SMARDEX_SUBGRAPH_API_KEY: ${file(./env.js):SMARDEX_SUBGRAPH_API_KEY}
8080
VENDOR_FINANCE: ${file(./env.js):VENDOR_FINANCE}
8181
TRADERJOE: ${file(./env.js):TRADERJOE}
82+
OSMOSIS_API_KEY: ${file(./env.js):OSMOSIS_API_KEY}
8283

8384
# --- data enrichment
8485
triggerEnrichment:

src/adaptors/osmosis-dex/index.js

Lines changed: 24 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,45 @@
11
const utils = require('../utils');
2+
const axios = require('axios');
23

3-
const uniquePools = new Set();
4-
const getApy = async () => {
4+
const apy = async () => {
55
const tvlData = await utils.getData(
6-
'https://api-osmosis.imperator.co/pools/v2/all?low_liquidity=false'
6+
'https://data.osmosis.zone/pairs/v2/summary'
77
);
8-
const aprData = await utils.getData(
9-
'https://api-osmosis.imperator.co/apr/v2/all'
10-
);
11-
12-
const data = Object.keys(tvlData).map((poolId) => {
13-
const tvl = tvlData[poolId];
14-
const x = tvl[0];
15-
16-
const poolSplit = x.denom.split('/');
17-
const pool = poolSplit.length > 1 ? poolSplit[1] : poolSplit[0];
188

19-
const tvlUsd = x.liquidity;
9+
const aprData = await axios.get('https://osmosis.numia.xyz/pools_apr_range', {
10+
headers: {
11+
Authorization: `Bearer ${process.env.OSMOSIS_API_KEY}`,
12+
'Content-Type': 'application/json',
13+
},
14+
});
2015

21-
const symbol = `${tvl[0]?.symbol}-${tvl[1]?.symbol}`;
16+
const data = tvlData.data.map((pool) => {
17+
const symbol = `${pool.base_symbol}-${pool.quote_symbol}`;
2218

2319
if (symbol.includes(undefined)) return null;
2420

25-
// base apr
26-
const feeTier = x.fees.replace('%', '') / 100;
27-
const fees24h = x.volume_24h * feeTier;
28-
const fees7d = x.volume_7d * feeTier;
29-
const aprBase = ((fees24h * 365) / tvlUsd) * 100;
30-
const aprBase7d = ((fees7d * 52) / tvlUsd) * 100;
31-
32-
// reward apr
33-
const aprs = aprData.find((a) => String(a.pool_id) === poolId)?.apr_list;
34-
35-
const aprReward = aprs?.reduce((acc, reward) => acc + reward.apr_14d, 0);
36-
const aprSuperfluid = aprs?.reduce(
37-
(acc, reward) => acc + reward.apr_superfluid,
38-
0
39-
);
40-
const apyReward = aprSuperfluid > 0 ? aprSuperfluid : aprReward;
21+
const apr = aprData.data.find((i) => i.pool_id === pool.pool_id);
22+
if (!apr) return null;
23+
const apyBase = apr.swap_fees.lower;
4124

4225
return {
43-
pool: `osmosis-${poolId}`,
26+
pool: `osmosis-${pool.pool_id}`,
4427
chain: 'Osmosis',
4528
project: 'osmosis-dex',
4629
symbol: utils.formatSymbol(symbol),
47-
poolMeta: `${tvl[0].fees}`,
48-
tvlUsd: x.liquidity,
49-
apyBase: aprBase,
50-
apyBase7d: aprBase7d,
51-
apyReward,
52-
rewardTokens: aprs?.map((a) => a?.symbol) ?? [],
53-
volumeUsd1d: x.volume_24h,
54-
volumeUsd7d: x.volume_7d,
30+
tvlUsd: pool.liquidity,
31+
apyBase,
32+
apyBase7d: apyBase,
33+
volumeUsd1d: pool.volume_24h,
34+
volumeUsd7d: pool.volume_7d,
35+
url: `https://app.osmosis.zone/pool/${pool.pool_id}`,
36+
poolMeta: `#${pool.pool_id}`,
5537
};
5638
});
5739

58-
return data.filter((p) => p && utils.keepFinite(p));
40+
return utils.removeDuplicates(data.filter((p) => p && utils.keepFinite(p)));
5941
};
6042

6143
module.exports = {
62-
timetravel: false,
63-
apy: getApy,
64-
url: 'https://app.osmosis.zone/pools',
44+
apy,
6545
};

0 commit comments

Comments
 (0)