From d9fdd7c484ca40ab778ea0ca3f98a87fe30eb09b Mon Sep 17 00:00:00 2001 From: "jack.squirrel" Date: Mon, 22 Sep 2025 14:02:01 +0200 Subject: [PATCH 1/2] Hanji: volume and fees --- dexs/hanji/index.ts | 80 +++++++++++++++++++++++++++++++++++++++++++++ fees/hanji/index.ts | 13 ++++++++ 2 files changed, 93 insertions(+) create mode 100644 dexs/hanji/index.ts create mode 100644 fees/hanji/index.ts diff --git a/dexs/hanji/index.ts b/dexs/hanji/index.ts new file mode 100644 index 0000000000..38d67dcbb9 --- /dev/null +++ b/dexs/hanji/index.ts @@ -0,0 +1,80 @@ +import request, { gql } from "graphql-request"; +import type { FetchOptions, SimpleAdapter } from "../../adapters/types"; +import { CHAIN } from "../../helpers/chains"; +import { getTimestampAtStartOfDayUTC } from "../../utils/date"; + +const ENDPOINTS = { + [CHAIN.ETHERLINK]: "https://api.studio.thegraph.com/query/61208/onchain-clob-etherlink/version/latest" +} + +interface IGraph { + dailyVolume: { + volumeUsd: string; + }; + dailyFees: { + feesUsd: string; + userFeesUsd: string; + revenueUsd: string; + }; +} + +const getData = async (chain: string, timestamp: number) => { + const dateId = Math.floor(getTimestampAtStartOfDayUTC(timestamp) / 86400) * 86400; + + const query = gql`{ + dailyVolume(id: ${dateId}) { + volumeUsd + } + dailyFees(id: ${dateId}) { + feesUsd + userFeesUsd + revenueUsd + } + } + `; + + const data: IGraph = await request(ENDPOINTS[chain], query); + + const dailyVolume = Number(data.dailyVolume?.volumeUsd ?? "0"); + const dailyFees = Number(data.dailyFees?.feesUsd ?? "0"); + const dailyUserFees = Number(data.dailyFees?.userFeesUsd ?? "0"); + const dailyRevenue = Number(data.dailyFees?.revenueUsd ?? "0"); + + return { + dailyFees: `${dailyFees}`, + dailyUserFees: `${dailyUserFees}`, + dailyRevenue: `${dailyRevenue}`, + dailyVolume: `${dailyVolume}`, + timestamp: timestamp, + }; +}; + +export const fetchVolume = async (options: FetchOptions) => { + const data = await getData(options.chain, options.startOfDay); + return { + dailyVolume: data.dailyVolume + }; +}; + +export const fetchFee = (chain: string) => { + return async (timestamp: number) => { + const data = await getData(chain, timestamp); + return { + timestamp: data.timestamp, + dailyFees: data.dailyFees, + dailyUserFees: data.dailyUserFees, + dailyRevenue: data.dailyRevenue + }; + }; +}; + +const adapters: SimpleAdapter = { + version: 2, + adapter: { + [CHAIN.ETHERLINK]: { + fetch: fetchVolume, + }, + }, +}; + +export default adapters; diff --git a/fees/hanji/index.ts b/fees/hanji/index.ts new file mode 100644 index 0000000000..e7d2e87523 --- /dev/null +++ b/fees/hanji/index.ts @@ -0,0 +1,13 @@ +import { SimpleAdapter } from "../../adapters/types"; +import { CHAIN } from "../../helpers/chains"; +import { fetchFee } from "../../dexs/hanji"; + +const adapter: SimpleAdapter = { + adapter: { + [CHAIN.ETHERLINK]: { + fetch: fetchFee(CHAIN.ETHERLINK), + }, + }, +}; + +export default adapter; From 67f0e98aa8a201392097f8b688d24ba07c08430a Mon Sep 17 00:00:00 2001 From: "jack.squirrel" Date: Wed, 24 Sep 2025 10:23:56 +0200 Subject: [PATCH 2/2] fix: revenue = fees --- dexs/hanji/index.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/dexs/hanji/index.ts b/dexs/hanji/index.ts index 38d67dcbb9..1dfefad448 100644 --- a/dexs/hanji/index.ts +++ b/dexs/hanji/index.ts @@ -13,8 +13,6 @@ interface IGraph { }; dailyFees: { feesUsd: string; - userFeesUsd: string; - revenueUsd: string; }; } @@ -27,8 +25,6 @@ const getData = async (chain: string, timestamp: number) => { } dailyFees(id: ${dateId}) { feesUsd - userFeesUsd - revenueUsd } } `; @@ -37,8 +33,8 @@ const getData = async (chain: string, timestamp: number) => { const dailyVolume = Number(data.dailyVolume?.volumeUsd ?? "0"); const dailyFees = Number(data.dailyFees?.feesUsd ?? "0"); - const dailyUserFees = Number(data.dailyFees?.userFeesUsd ?? "0"); - const dailyRevenue = Number(data.dailyFees?.revenueUsd ?? "0"); + const dailyUserFees = dailyFees * 0; + const dailyRevenue = dailyFees * 1; return { dailyFees: `${dailyFees}`,