From 057326d5bcc6fe6dddf91a8a4431cfc28c0dd7cd Mon Sep 17 00:00:00 2001 From: skords Date: Tue, 5 Mar 2024 23:56:50 +0530 Subject: [PATCH] avantis --- dexs/avantis/index.ts | 58 ++++++++++++++++++++++++++++++++++++++++++ fees/avantis/index.ts | 59 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 dexs/avantis/index.ts create mode 100644 fees/avantis/index.ts diff --git a/dexs/avantis/index.ts b/dexs/avantis/index.ts new file mode 100644 index 0000000000..adfd6c0346 --- /dev/null +++ b/dexs/avantis/index.ts @@ -0,0 +1,58 @@ +import { Chain } from "@defillama/sdk/build/general"; +import { CHAIN } from "../../helpers/chains"; +import { SimpleAdapter } from "../../adapters/types"; +import fetchURL from "../../utils/fetchURL"; +import { getTimestampAtStartOfDayUTC } from "../../utils/date"; +import { FetchResultVolume } from "../../adapters/types"; + +interface IData { + success: boolean; + cumulativeVolume: number; + history: { + date: string; + volume: number; + buyVolume: number; + sellVolume: number; + cumulativeVolume: number; + }[]; +} + +const API_URL = "https://api.avantisfi.com/v1"; + +const fetchData = (_: Chain) => { + return async (timestamp: number): Promise => { + const todaysTimestamp = getTimestampAtStartOfDayUTC(timestamp); + + // Convert timestamp to Date object and format to YYYY-MM-DD in UTC + const date = new Date(todaysTimestamp * 1000); + const dateStr = date.toISOString().split("T")[0]; + + // Find difference in days between today and the timestamp + const today = new Date(); + const diffTime = Math.abs(today.getTime() - date.getTime()); + const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); + + const url = `${API_URL}/history/analytics/daily-volumes/${diffDays}`; + const value: IData = await fetchURL(url); + if (!value.success) throw new Error("Failed to fetch data"); + + const dailyVolume = value.history.find((d) => d.date === dateStr)?.volume; + const totalVolume = value.history[value.history.length - 1]?.cumulativeVolume; + return { + dailyVolume: dailyVolume ? `${dailyVolume}` : undefined, + totalVolume: totalVolume ? `${totalVolume}` : undefined, + timestamp: todaysTimestamp, + }; + }; +}; + +const adapter: SimpleAdapter = { + adapter: { + [CHAIN.BASE]: { + fetch: fetchData(CHAIN.BASE), + start: 1706313600, + }, + }, +}; + +export default adapter; diff --git a/fees/avantis/index.ts b/fees/avantis/index.ts new file mode 100644 index 0000000000..3fcaa4d937 --- /dev/null +++ b/fees/avantis/index.ts @@ -0,0 +1,59 @@ +import { Chain } from "@defillama/sdk/build/general"; +import { CHAIN } from "../../helpers/chains"; +import { SimpleAdapter } from "../../adapters/types"; +import fetchURL from "../../utils/fetchURL"; +import { getTimestampAtStartOfDayUTC } from "../../utils/date"; +import { FetchResultFees } from "../../adapters/types"; + +interface IData { + success: boolean; + cumulativeFee: number; + history: { + date: string; + totalFees: number; + cumulativeFee: number; + totalClosingFee: number; + totalOpeningFee: number; + totalRolloverFee: number; + }[]; +} + +const API_URL = "https://api.avantisfi.com/v1"; + +const fetchData = (_: Chain) => { + return async (timestamp: number): Promise => { + const todaysTimestamp = getTimestampAtStartOfDayUTC(timestamp); + + // Convert timestamp to Date object and format to YYYY-MM-DD in UTC + const date = new Date(todaysTimestamp * 1000); + const dateStr = date.toISOString().split("T")[0]; + + // Find difference in days between today and the timestamp + const today = new Date(); + const diffTime = Math.abs(today.getTime() - date.getTime()); + const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); + + const url = `${API_URL}/history/analytics/total-fees/${diffDays}`; + const value: IData = await fetchURL(url); + if (!value.success) throw new Error("Failed to fetch data"); + + const dailyFee = value.history.find((d) => d.date === dateStr)?.totalFees; + const totalFees = value.history[value.history.length - 1]?.cumulativeFee; + return { + dailyUserFees: dailyFee ? `${dailyFee}` : undefined, + totalUserFees: totalFees ? `${totalFees}` : undefined, + timestamp: todaysTimestamp, + }; + }; +}; + +const adapter: SimpleAdapter = { + adapter: { + [CHAIN.BASE]: { + fetch: fetchData(CHAIN.BASE), + start: 1706313600, + }, + }, +}; + +export default adapter;