From 0ca1a1452cad489e539158f898b3b4fb81a33392 Mon Sep 17 00:00:00 2001 From: ArmandLobster Date: Tue, 20 Aug 2024 13:38:05 +0200 Subject: [PATCH] Lobster Protocol Adapter (#11349) * Create index.js * Create config.js * Delete projects/lobster-protocol/config.js * Create config.js * Create abis.js * code refactor --------- Co-authored-by: g1nt0ki <99907941+g1nt0ki@users.noreply.github.com> --- projects/lobster-protocol/index.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 projects/lobster-protocol/index.js diff --git a/projects/lobster-protocol/index.js b/projects/lobster-protocol/index.js new file mode 100644 index 000000000000..f136ccff46ab --- /dev/null +++ b/projects/lobster-protocol/index.js @@ -0,0 +1,30 @@ +const DHEDGE_FACTORY_ABI = "function getManagedPools(address manager) view returns (address[] managedPools)"; +const LOBSTER_POOL_ABI = "function getFundSummary() view returns (tuple(string name, uint256 totalSupply, uint256 totalFundValue))"; + +const CONFIG_DATA = { + arbitrum: { + dhedgeFactory: "0xffFb5fB14606EB3a548C113026355020dDF27535", + lobsterManager: "0x6EBb1B5Be9bc93858f71714eD03f67BF237473cB", + } +} + +async function tvl(api) { + const { dhedgeFactory, lobsterManager } = CONFIG_DATA[api.chain]; + + const pools = await api.call({ abi: DHEDGE_FACTORY_ABI, target: dhedgeFactory, params: lobsterManager, }); + const poolSummaries = await api.multiCall({ abi: LOBSTER_POOL_ABI, calls: pools, }) + api.addCGToken('tether', poolSummaries.reduce((acc, p) => acc + +p.totalFundValue/1e18, 0)) +} + +module.exports = { + misrepresentedTokens: true, + start: 1704067199, // Sunday 31 December 2023 23:59:59 + methodology: + "Aggregates total value of Lobster protocol vaults on Arbitrum", + arbitrum: { + tvl, + }, + hallmarks: [ + [1710971510, "First Arbitrum Vault Release"], + ], +} \ No newline at end of file