From 0790597c6c01dcfb3ed4e8ece7d7d10a2552a154 Mon Sep 17 00:00:00 2001 From: Daniel <16984675+DanielRX@users.noreply.github.com> Date: Mon, 6 May 2024 14:29:37 +0100 Subject: [PATCH] Add mangrove adapter --- dexs/mangrove/index.ts | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 dexs/mangrove/index.ts diff --git a/dexs/mangrove/index.ts b/dexs/mangrove/index.ts new file mode 100644 index 0000000000..621eb654ca --- /dev/null +++ b/dexs/mangrove/index.ts @@ -0,0 +1,50 @@ +import { Balances } from "@defillama/sdk"; +import { Adapter, FetchOptions, FetchResultV2, FetchResultVolume } from "../../adapters/types"; + +const api = "https://data.mangrove.exchange/volumes-per-pair/total/all"; + +const adapter: Adapter = { + version: 2, + + adapter: { + blast: { + meta: { + methodology: { + dailyVolume: "Sum of all offers taken in the last 24hrs", + }, + }, + fetch: async (options: FetchOptions): Promise => { + const startBlock = await options.getStartBlock(); + const endBlock = await options.getEndBlock(); + + const url = `${api}/${startBlock}/${endBlock}`; + + const dailyVolume = options.createBalances() as Balances; + + const data = await fetch(url).then((res) => res.json()); + + const markets = Object.keys(data).map((key) => { + const [base, quote] = key.split("-"); + const { totalValueInBase, totalValueInQuote } = data[key][0]; + return { + base, + quote, + totalValueInBase, + totalValueInQuote, + }; + }); + + for (const market of markets) { + const { base, quote, totalValueInBase, totalValueInQuote } = market; + dailyVolume.add(base, totalValueInBase); + dailyVolume.add(quote, totalValueInQuote); + } + + return { dailyVolume }; + }, + start: 1708992000, + }, + }, +}; + +export default adapter;