diff --git a/dexs/fjord-foundry/index.ts b/dexs/fjord-foundry/index.ts index ba770d29c7..ba984fc71a 100644 --- a/dexs/fjord-foundry/index.ts +++ b/dexs/fjord-foundry/index.ts @@ -4,6 +4,7 @@ import fetchURL from "../../utils/fetchURL"; import { CHAIN } from "../../helpers/chains"; const feeEndpoint = "https://fjord-api.vercel.app/api/daily-stats?version=2"; +const feeEndpointV1 = "https://fjord-api.vercel.app/api/daily-stats?version=1"; const v2ChainIDs = { [CHAIN.ETHEREUM]: 1, @@ -15,6 +16,11 @@ const v2ChainIDs = { [CHAIN.BSC]: 56, }; +const v1ChainIDs = { + [CHAIN.ETHEREUM]: 1, + [CHAIN.POLYGON]: 137, + [CHAIN.ARBITRUM]: 42161, +}; const getV2Data = async (endTimestamp: number, chainId: number) => { const dayTimestamp = getTimestampAtStartOfDayUTC(endTimestamp) @@ -35,6 +41,25 @@ const getV2Data = async (endTimestamp: number, chainId: number) => { }; }; +const getV1Data = async (endTimestamp: number, chainId: number) => { + const dayTimestamp = getTimestampAtStartOfDayUTC(endTimestamp) + const historicalVolume = (await fetchURL(feeEndpointV1)) + + const chainData = historicalVolume.stats.find(cd => cd.chainId === chainId); + + const totalVolume = chainData.stats + .filter(item => item.timestamp <= dayTimestamp) + .reduce((acc, { volume }) => acc + volume, 0) + + const dailyVolume = chainData.stats + .find(dayItem => dayItem.timestamp === dayTimestamp)?.volume + + return { + totalVolume: `${totalVolume}`, + dailyVolume: dailyVolume ? `${dailyVolume}` : '0', + }; +}; + const adapter: BreakdownAdapter = { breakdown: { v2: Object.keys(v2ChainIDs).reduce((acc, chain) => { @@ -46,6 +71,15 @@ const adapter: BreakdownAdapter = { }, } }, {}), + v1: Object.keys(v1ChainIDs).reduce((acc, chain) => { + return { + ...acc, + [chain]: { + fetch: async (_ts: number, _chain: any, { startOfDay }: FetchOptions) => await getV1Data(startOfDay, v1ChainIDs[chain]), + start: 1631836800, + }, + } + }, {}), } } diff --git a/fees/fjord-foundry/index.ts b/fees/fjord-foundry/index.ts index 62a912db73..50a4c90113 100644 --- a/fees/fjord-foundry/index.ts +++ b/fees/fjord-foundry/index.ts @@ -4,6 +4,7 @@ import fetchURL from "../../utils/fetchURL"; import { CHAIN } from "../../helpers/chains"; const feeEndpoint = "https://fjord-api.vercel.app/api/daily-stats?version=2"; +const feeEndpointV1 = "https://fjord-api.vercel.app/api/daily-stats?version=1"; const v2ChainIDs = { [CHAIN.ETHEREUM]: 1, @@ -15,6 +16,12 @@ const v2ChainIDs = { [CHAIN.BSC]: 56, }; +const v1ChainIDs = { + [CHAIN.ETHEREUM]: 1, + [CHAIN.POLYGON]: 137, + [CHAIN.ARBITRUM]: 42161, +}; + const getV2Data = async (endTimestamp: number, chainId: number) => { const dayTimestamp = getTimestampAtStartOfDayUTC(endTimestamp) const historicalFees = (await fetchURL(feeEndpoint)) @@ -36,6 +43,27 @@ const getV2Data = async (endTimestamp: number, chainId: number) => { }; }; +const getV1Data = async (endTimestamp: number, chainId: number) => { + const dayTimestamp = getTimestampAtStartOfDayUTC(endTimestamp) + const historicalFees = (await fetchURL(feeEndpointV1)) + + const chainData = historicalFees.stats.find(cd => cd.chainId === chainId); + + const totalFee = chainData.stats + .filter(item => item.timestamp <= dayTimestamp) + .reduce((acc, { fees }) => acc + fees, 0) + + const dailyFee = chainData.stats + .find(dayItem => dayItem.timestamp === dayTimestamp)?.fees + + return { + totalFees: `${totalFee}`, + dailyFees: dailyFee ? `${dailyFee}` : '0', + totalRevenue: `${totalFee}`, + dailyRevenue: dailyFee ? `${dailyFee}` : '0', + }; +}; + const methodology = { Fees: "Fees collected from user trading fees", Revenue: "Revenue is 100% fee of each swap which goes to treasury", @@ -55,6 +83,18 @@ const adapter: BreakdownAdapter = { }, } }, {}), + v1: Object.keys(v1ChainIDs).reduce((acc, chain) => { + return { + ...acc, + [chain]: { + fetch: async (_ts: number, _chain: any, { startOfDay }: FetchOptions) => await getV1Data(startOfDay, v1ChainIDs[chain]), + start: 1631836800, + meta: { + methodology, + }, + }, + } + }, {}), } }