Skip to content

Commit ffafb08

Browse files
g1nt0kicosullivan
andauthored
* adding Ambit Finance adapter * code refactor --------- Co-authored-by: cosullivan <[email protected]>
1 parent 23d464a commit ffafb08

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

projects/ambit-finance/index.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
const ADDRESSES = require('../helper/coreAssets.json');
2+
const { sumTokens2 } = require('../helper/unwrapLPs');
3+
4+
const REGISTRY = "0x5b1eFC3057E941439C487E67761F348D19Dd4100";
5+
6+
const REGISTRY_KEYS = {
7+
"ambit.asset.storage":
8+
"0x7267fae8044d9c0f406ec1d6bfdfdb3a4afea229fceedb3c88cc26df2ac97809",
9+
"ambit.depositorVault":
10+
"0x970bffd07196f826592058a2977d8df91d0b38816ca31aaaa6a628eda0328dbe",
11+
"ambit.depositorVault.token":
12+
"0x8e9a5206de4051330868a4fdef94140eaddce6206903c36de600007efb237b8d",
13+
"ambit.market":
14+
"0xcc0fa1d8c6527b2fc2cd5cbed9e80e1843330af5cd1d34a45c3f125a60dc07aa",
15+
};
16+
17+
const ABI = {
18+
IAddressRegistry: {
19+
getAddresses:
20+
"function getAddresses(bytes32[] calldata keys) view returns (address[] memory)",
21+
},
22+
IAssetStorage: {
23+
getAssets:
24+
"function getAssets() view returns ((address,address,address,address,uint16,uint16,uint256,(address,uint16))[])",
25+
},
26+
ICustodian: {
27+
getTotalAssets: "function getTotalAssets() view returns (uint256)",
28+
},
29+
IDepositorVault: {
30+
getTotalAssets: "function getTotalAssets() view returns (uint256)",
31+
getLiabilities:
32+
"function getLiabilities(address account) view returns (uint256)",
33+
},
34+
};
35+
36+
const AUSD = "0xf328ed974e586b6eea7997a87ea2ab1de149b186";
37+
38+
async function tvl(_, _1, _2, { api }) {
39+
const tokensAndOwners = []
40+
const [storage, depositorVault] = await api.call({
41+
abi: ABI["IAddressRegistry"]["getAddresses"],
42+
target: REGISTRY,
43+
params: [
44+
[
45+
REGISTRY_KEYS["ambit.asset.storage"],
46+
REGISTRY_KEYS["ambit.depositorVault"],
47+
],
48+
],
49+
});
50+
tokensAndOwners.push([ADDRESSES.bsc.USDT, depositorVault]);
51+
// supply side
52+
const assets = await api.call({ abi: ABI["IAssetStorage"]["getAssets"], target: storage, });
53+
assets.forEach(i => tokensAndOwners.push([i[0], i[1]]))
54+
return sumTokens2({ api, tokensAndOwners, blacklistedTokens: [AUSD] });
55+
}
56+
57+
async function borrowed(_, _1, _2, { api }) {
58+
const [depositorVault, market] = await api.call({
59+
abi: ABI["IAddressRegistry"]["getAddresses"],
60+
target: REGISTRY,
61+
params: [
62+
[REGISTRY_KEYS["ambit.depositorVault"], REGISTRY_KEYS["ambit.market"]],
63+
],
64+
});
65+
66+
const liabilities = await api.call({ abi: ABI["IDepositorVault"]["getLiabilities"], target: depositorVault, params: market });
67+
api.add(ADDRESSES.bsc.USDT, liabilities);
68+
return api.getBalances()
69+
}
70+
71+
module.exports = {
72+
bsc: {
73+
tvl,
74+
borrowed,
75+
},
76+
methodology: "Gets the TVL for the protocol",
77+
};

0 commit comments

Comments
 (0)