From a61e2452eb60f183830c8bcf93aec90083bfe1e5 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 16 Jan 2025 19:21:34 +0800 Subject: [PATCH 1/4] add lnexchange --- dexs/lnexchange-perp/index.ts | 35 ++++++++++++++++++++++++++ dexs/lnexchange-spot/index.ts | 35 ++++++++++++++++++++++++++ fees/lnexchange.ts | 47 +++++++++++++++++++++++++++++++++++ helpers/chains.ts | 1 + 4 files changed, 118 insertions(+) create mode 100644 dexs/lnexchange-perp/index.ts create mode 100644 dexs/lnexchange-spot/index.ts create mode 100644 fees/lnexchange.ts diff --git a/dexs/lnexchange-perp/index.ts b/dexs/lnexchange-perp/index.ts new file mode 100644 index 0000000000..60eede0c32 --- /dev/null +++ b/dexs/lnexchange-perp/index.ts @@ -0,0 +1,35 @@ +import type { SimpleAdapter } from "../../adapters/types"; +import { getUniqStartOfTodayTimestamp } from "../../helpers/getUniSubgraphVolume"; +import { httpPost } from "../../utils/fetchURL"; +import BigNumber from "bignumber.js"; + +const URL = + "https://test-futures-api.ln.exchange/napi/common/getDayTradeAmount"; + +interface Response { + dayNtlVlm: number; +} +const fetch = async (timestamp: number) => { + const respose: Response[] = ( + await httpPost(URL, { dayTimestamp: timestamp * 1000 }) + ).data; + const dayTimestamp = getUniqStartOfTodayTimestamp(new Date(timestamp * 1000)); + const dailyVolume = respose.reduce((acc, item) => { + return acc.plus(item.dayNtlVlm); + }, new BigNumber(0)); + return { + dailyVolume: dailyVolume?.toString(), + timestamp: dayTimestamp, + }; +}; + +const adapter: SimpleAdapter = { + adapter: { + lnexchange: { + fetch, + start: "2024-10-20", + }, + }, +}; + +export default adapter; diff --git a/dexs/lnexchange-spot/index.ts b/dexs/lnexchange-spot/index.ts new file mode 100644 index 0000000000..235cf44fe3 --- /dev/null +++ b/dexs/lnexchange-spot/index.ts @@ -0,0 +1,35 @@ +import type { SimpleAdapter } from "../../adapters/types"; +import { getUniqStartOfTodayTimestamp } from "../../helpers/getUniSubgraphVolume"; +import { httpPost } from "../../utils/fetchURL"; +import BigNumber from "bignumber.js"; + +const URL = + "https://test-spots-api.ln.exchange/napi/common/getDayTradeAmount"; + +interface Response { + dayNtlVlm: number; +} +const fetch = async (timestamp: number) => { + const respose: Response[] = ( + await httpPost(URL, { dayTimestamp: timestamp * 1000 }) + ).data; + const dayTimestamp = getUniqStartOfTodayTimestamp(new Date(timestamp * 1000)); + const dailyVolume = respose.reduce((acc, item) => { + return acc.plus(item.dayNtlVlm); + }, new BigNumber(0)); + return { + dailyVolume: dailyVolume?.toString(), + timestamp: dayTimestamp, + }; +}; + +const adapter: SimpleAdapter = { + adapter: { + lnexchange: { + fetch, + start: "2024-08-30", + }, + }, +}; + +export default adapter; diff --git a/fees/lnexchange.ts b/fees/lnexchange.ts new file mode 100644 index 0000000000..52b3cd013b --- /dev/null +++ b/fees/lnexchange.ts @@ -0,0 +1,47 @@ +import { CHAIN } from "../helpers/chains"; +import { Adapter, FetchOptions } from "../adapters/types"; +import BigNumber from "bignumber.js"; +import { httpPost } from "../utils/fetchURL"; +const fetchFees = async (options: FetchOptions) => { + + const resposePerp = await httpPost( + `https://test-futures-api.ln.exchange/napi/common/getTradeFee`, + { + startTimestamp: options.startTimestamp * 1000, + endTimestamp: options.endTimestamp * 1000, + } + ); + + const resposeSpot = await httpPost( + `https://test-spots-api.ln.exchange/napi/common/getTradeFee`, + { + startTimestamp: options.startTimestamp * 1000, + endTimestamp: options.endTimestamp * 1000, + } + ); + + const dailyFees = new BigNumber(resposePerp.data.dailyFees) + .plus(resposeSpot.data.dailyFees) + .toString(); + const totalFees = new BigNumber(resposePerp.data.totalFees) + .plus(resposeSpot.data.totalFees) + .toString(); + + return { + dailyFees, + dailyRevenue: dailyFees, + totalFees, + totalRevenue: totalFees, + }; +}; + +const adapter: Adapter = { + version: 2, + adapter: { + [CHAIN.LNEXCHANGE]: { + fetch: fetchFees, + start: "2024-10-20", + }, + }, +}; +export default adapter; diff --git a/helpers/chains.ts b/helpers/chains.ts index 2f8d74f945..13275758e1 100644 --- a/helpers/chains.ts +++ b/helpers/chains.ts @@ -204,6 +204,7 @@ export enum CHAIN { HYPERLIQUID = "hyperliquid", SONEIUM = "soneium", INK = "ink", + LNEXCHANGE = "lnexchange", } // Don´t use From 9ff3f45ee35df764a65de73c0304270de18e7f83 Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 17 Jan 2025 10:34:59 +0800 Subject: [PATCH 2/4] update lnexchange fees --- fees/lnexchange.ts | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/fees/lnexchange.ts b/fees/lnexchange.ts index 52b3cd013b..c1c6dc8c51 100644 --- a/fees/lnexchange.ts +++ b/fees/lnexchange.ts @@ -3,8 +3,7 @@ import { Adapter, FetchOptions } from "../adapters/types"; import BigNumber from "bignumber.js"; import { httpPost } from "../utils/fetchURL"; const fetchFees = async (options: FetchOptions) => { - - const resposePerp = await httpPost( + const respose = await httpPost( `https://test-futures-api.ln.exchange/napi/common/getTradeFee`, { startTimestamp: options.startTimestamp * 1000, @@ -12,20 +11,8 @@ const fetchFees = async (options: FetchOptions) => { } ); - const resposeSpot = await httpPost( - `https://test-spots-api.ln.exchange/napi/common/getTradeFee`, - { - startTimestamp: options.startTimestamp * 1000, - endTimestamp: options.endTimestamp * 1000, - } - ); - - const dailyFees = new BigNumber(resposePerp.data.dailyFees) - .plus(resposeSpot.data.dailyFees) - .toString(); - const totalFees = new BigNumber(resposePerp.data.totalFees) - .plus(resposeSpot.data.totalFees) - .toString(); + const dailyFees = new BigNumber(respose.data.dailyFees).toString(); + const totalFees = new BigNumber(respose.data.totalFees).toString(); return { dailyFees, From bfbfe40f6e8bf786a565faedd67c4654a4efbb3d Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 17 Jan 2025 16:30:55 +0800 Subject: [PATCH 3/4] update edit chain --- dexs/lnexchange-perp/index.ts | 3 ++- dexs/lnexchange-spot/index.ts | 3 ++- fees/lnexchange.ts | 3 ++- helpers/chains.ts | 1 - 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dexs/lnexchange-perp/index.ts b/dexs/lnexchange-perp/index.ts index 60eede0c32..c6913f25ed 100644 --- a/dexs/lnexchange-perp/index.ts +++ b/dexs/lnexchange-perp/index.ts @@ -2,6 +2,7 @@ import type { SimpleAdapter } from "../../adapters/types"; import { getUniqStartOfTodayTimestamp } from "../../helpers/getUniSubgraphVolume"; import { httpPost } from "../../utils/fetchURL"; import BigNumber from "bignumber.js"; +import { CHAIN } from "../../helpers/chains"; const URL = "https://test-futures-api.ln.exchange/napi/common/getDayTradeAmount"; @@ -25,7 +26,7 @@ const fetch = async (timestamp: number) => { const adapter: SimpleAdapter = { adapter: { - lnexchange: { + [CHAIN.BITCOIN]: { fetch, start: "2024-10-20", }, diff --git a/dexs/lnexchange-spot/index.ts b/dexs/lnexchange-spot/index.ts index 235cf44fe3..49d2ffe9ed 100644 --- a/dexs/lnexchange-spot/index.ts +++ b/dexs/lnexchange-spot/index.ts @@ -2,6 +2,7 @@ import type { SimpleAdapter } from "../../adapters/types"; import { getUniqStartOfTodayTimestamp } from "../../helpers/getUniSubgraphVolume"; import { httpPost } from "../../utils/fetchURL"; import BigNumber from "bignumber.js"; +import { CHAIN } from "../../helpers/chains"; const URL = "https://test-spots-api.ln.exchange/napi/common/getDayTradeAmount"; @@ -25,7 +26,7 @@ const fetch = async (timestamp: number) => { const adapter: SimpleAdapter = { adapter: { - lnexchange: { + [CHAIN.BITCOIN]: { fetch, start: "2024-08-30", }, diff --git a/fees/lnexchange.ts b/fees/lnexchange.ts index c1c6dc8c51..635506d071 100644 --- a/fees/lnexchange.ts +++ b/fees/lnexchange.ts @@ -2,6 +2,7 @@ import { CHAIN } from "../helpers/chains"; import { Adapter, FetchOptions } from "../adapters/types"; import BigNumber from "bignumber.js"; import { httpPost } from "../utils/fetchURL"; + const fetchFees = async (options: FetchOptions) => { const respose = await httpPost( `https://test-futures-api.ln.exchange/napi/common/getTradeFee`, @@ -25,7 +26,7 @@ const fetchFees = async (options: FetchOptions) => { const adapter: Adapter = { version: 2, adapter: { - [CHAIN.LNEXCHANGE]: { + [CHAIN.BITCOIN]: { fetch: fetchFees, start: "2024-10-20", }, diff --git a/helpers/chains.ts b/helpers/chains.ts index 13275758e1..2f8d74f945 100644 --- a/helpers/chains.ts +++ b/helpers/chains.ts @@ -204,7 +204,6 @@ export enum CHAIN { HYPERLIQUID = "hyperliquid", SONEIUM = "soneium", INK = "ink", - LNEXCHANGE = "lnexchange", } // Don´t use From 13c14a5dd3cb8c761d401cff76854ecccab78c7e Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 17 Jan 2025 16:40:35 +0800 Subject: [PATCH 4/4] fix lnexchange fees --- fees/lnexchange.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fees/lnexchange.ts b/fees/lnexchange.ts index 635506d071..0337e141e3 100644 --- a/fees/lnexchange.ts +++ b/fees/lnexchange.ts @@ -1,6 +1,5 @@ import { CHAIN } from "../helpers/chains"; import { Adapter, FetchOptions } from "../adapters/types"; -import BigNumber from "bignumber.js"; import { httpPost } from "../utils/fetchURL"; const fetchFees = async (options: FetchOptions) => { @@ -12,8 +11,8 @@ const fetchFees = async (options: FetchOptions) => { } ); - const dailyFees = new BigNumber(respose.data.dailyFees).toString(); - const totalFees = new BigNumber(respose.data.totalFees).toString(); + const dailyFees = respose.data.dailyFees; + const totalFees = respose.data.totalFees; return { dailyFees,