From eefff16d952fd35b758036f821dcf35b7c728543 Mon Sep 17 00:00:00 2001 From: waynebruce0x Date: Wed, 11 Sep 2024 18:06:28 +0100 Subject: [PATCH] colony --- fees/ascent-v3.ts | 24 +------- fees/beamswap.ts | 2 +- fees/cleopatra-exchange.ts | 14 +---- fees/colony/airdrops.ts | 9 +-- fees/colony/dex.ts | 12 +--- fees/colony/earlystage.ts | 7 +-- fees/colony/masterChef.ts | 7 +-- fees/colony/staking.ts | 99 ++++++++++++++------------------- fees/colony/validatorProgram.ts | 9 +-- 9 files changed, 60 insertions(+), 123 deletions(-) diff --git a/fees/ascent-v3.ts b/fees/ascent-v3.ts index 1d26faf801..e180221f6a 100644 --- a/fees/ascent-v3.ts +++ b/fees/ascent-v3.ts @@ -1,18 +1,8 @@ import { Chain } from "@defillama/sdk/build/general"; - import { SimpleAdapter } from "../adapters/types"; import { CHAIN } from "../helpers/chains"; -import { - DEFAULT_DAILY_VOLUME_FACTORY, - DEFAULT_TOTAL_VOLUME_FIELD, -} from "../helpers/getUniSubgraphVolume"; - -import { getGraphDimensions } from "../helpers/getUniSubgraph"; - -interface IPoolData { - id: number; - feesUSD: string; -} +import { DEFAULT_TOTAL_VOLUME_FIELD } from "../helpers/getUniSubgraphVolume"; +import { getGraphDimensions2 } from "../helpers/getUniSubgraph"; type IURL = { [l: string | Chain]: string; @@ -23,20 +13,12 @@ const endpoints: IURL = { "https://eon-graph.horizenlabs.io/subgraphs/name/surfacing8671/v3AscentFull2", }; -const v3Graphs = getGraphDimensions({ +const v3Graphs = getGraphDimensions2({ graphUrls: endpoints, totalVolume: { factory: "factories", field: DEFAULT_TOTAL_VOLUME_FIELD, }, - dailyVolume: { - factory: "pancakeDayData", - field: "volumeUSD", - }, - dailyFees: { - factory: "pancakeDayData", - field: "feesUSD", - }, feesPercent: { type: "fees", ProtocolRevenue: 32, diff --git a/fees/beamswap.ts b/fees/beamswap.ts index 47d0f43f17..5a9df0a7d5 100644 --- a/fees/beamswap.ts +++ b/fees/beamswap.ts @@ -34,7 +34,7 @@ const feeAdapter = getDexChainFees({ }); const adapter: Adapter = { - version: 2, + version: 1, adapter: feeAdapter }; diff --git a/fees/cleopatra-exchange.ts b/fees/cleopatra-exchange.ts index de80206631..d1cc4bde89 100644 --- a/fees/cleopatra-exchange.ts +++ b/fees/cleopatra-exchange.ts @@ -1,10 +1,8 @@ -import { SimpleAdapter, FetchResultFees, BaseAdapter } from "../adapters/types"; +import { SimpleAdapter } from "../adapters/types"; import { MANTLE, CHAIN } from "../helpers/chains"; - import { - getGraphDimensions, - DEFAULT_DAILY_VOLUME_FACTORY, DEFAULT_TOTAL_VOLUME_FIELD, + getGraphDimensions2, } from "../helpers/getUniSubgraph"; type TStartTime = { @@ -19,18 +17,12 @@ const v2Endpoints = { "https://subgraph-api.mantle.xyz/subgraphs/name/cleoexchange/cl-subgraph", }; -const VOLUME_USD = "volumeUSD"; - -const v2Graphs = getGraphDimensions({ +const v2Graphs = getGraphDimensions2({ graphUrls: v2Endpoints, totalVolume: { factory: "factories", field: DEFAULT_TOTAL_VOLUME_FIELD, }, - dailyVolume: { - factory: DEFAULT_DAILY_VOLUME_FACTORY, - field: VOLUME_USD, - }, feesPercent: { type: "fees", HoldersRevenue: 72, diff --git a/fees/colony/airdrops.ts b/fees/colony/airdrops.ts index 38fad0a196..98c530d751 100644 --- a/fees/colony/airdrops.ts +++ b/fees/colony/airdrops.ts @@ -33,18 +33,15 @@ export async function airdrops( options: FetchOptions, stakingV3SubgraphEndpoint: string, ): Promise { - const { createBalances, startTimestamp } = options; + const { createBalances, startTimestamp, endTimestamp } = options; let dailyHoldersRevenue = createBalances() let totalHoldersRevenue = createBalances() - const day = Math.floor(startTimestamp / 86400) - const date = day * 86400 - try { const res: IGraphAirdropsResponse = await request(stakingV3SubgraphEndpoint, queryAirdrops, { - timestampFrom: date, - timestampTo: date + 86400 + timestampFrom: startTimestamp, + timestampTo: endTimestamp }); if (res.rewards.length > 0) { diff --git a/fees/colony/dex.ts b/fees/colony/dex.ts index f06d2dd472..4f2ad7c4ed 100644 --- a/fees/colony/dex.ts +++ b/fees/colony/dex.ts @@ -1,4 +1,4 @@ -import { getGraphDimensions } from "../../helpers/getUniSubgraph" +import { getGraphDimensions, getGraphDimensions2 } from "../../helpers/getUniSubgraph" import { FetchOptions } from "../../adapters/types"; import { Balances } from "@defillama/sdk"; import BigNumber from "bignumber.js"; @@ -32,7 +32,7 @@ export async function dexFees( const VOLUME_USD = "volumeUSD"; const FEES_USD = "feesUSD"; - const v2Graph = getGraphDimensions({ + const v2Graph = getGraphDimensions2({ graphUrls: { [options.chain]: dexSubgraphEndpoint, }, @@ -40,18 +40,10 @@ export async function dexFees( factory: "factories", field: VOLUME_USD, }, - dailyVolume: { - factory: "dayData", - field: VOLUME_USD, - }, totalFees: { factory: "factories", field: FEES_USD, }, - dailyFees: { - factory: "dayData", - field: FEES_USD, - } }); const results = await v2Graph(options.chain)(options) diff --git a/fees/colony/earlystage.ts b/fees/colony/earlystage.ts index 633aabbe1b..a918da627f 100644 --- a/fees/colony/earlystage.ts +++ b/fees/colony/earlystage.ts @@ -49,21 +49,18 @@ export async function earlyStageFees( options: FetchOptions, earlystageSubgraphEndpoint: string, ): Promise { - const { createBalances, startTimestamp } = options; + const { createBalances, startTimestamp, endTimestamp } = options; let dailyProtocolRevenue = createBalances() let totalProtocolRevenue = createBalances() let dailyHoldersRevenue = createBalances() let totalHoldersRevenue = createBalances() - const day = Math.floor(startTimestamp / 86400) - const date = day * 86400 - try { const res: IGraphEarlyStageFeesResponse = await request(earlystageSubgraphEndpoint, queryEarlyStageFees); if (res.projectDistributions && res.projectDistributions.length) { - const todayRes = res.projectDistributions.filter(x => x.timestamp >= date && x.timestamp < date + 86400) + const todayRes = res.projectDistributions.filter(x => x.timestamp >= startTimestamp && x.timestamp < endTimestamp) // --- Protocol Revenue dailyProtocolRevenue = todayRes.reduce((acc: Balances, x) => { diff --git a/fees/colony/masterChef.ts b/fees/colony/masterChef.ts index 76ea4bb1d6..2b40954584 100644 --- a/fees/colony/masterChef.ts +++ b/fees/colony/masterChef.ts @@ -84,14 +84,11 @@ export async function masterChef( masterChefSubgraphEndpoint: string, earlyStageSubgraphEndpoint: string, ): Promise { - const { createBalances, startTimestamp } = options; + const { createBalances, startTimestamp, endTimestamp } = options; let dailySupplySideRevenue = createBalances() let totalSupplySideRevenue = createBalances() - const day = Math.floor(startTimestamp / 86400) - const date = day * 86400 - try { const ceTokenRes: ICeTokensResponse = await request(earlyStageSubgraphEndpoint, ceTokensQuery); const priceMap = new Map() @@ -101,7 +98,7 @@ export async function masterChef( const rewardersRes: IGraphAirdropsResponse = await request(masterChefSubgraphEndpoint, rewardersQuery); for (const rewarder of rewardersRes.rewarders) { - if (rewarder.startTimestamp >= date && rewarder.startTimestamp < date + 86400) { + if (rewarder.startTimestamp >= startTimestamp && rewarder.startTimestamp < endTimestamp) { addTokenBalance( dailySupplySideRevenue, priceMap, diff --git a/fees/colony/staking.ts b/fees/colony/staking.ts index 8bbb8d587d..da9f04d81e 100644 --- a/fees/colony/staking.ts +++ b/fees/colony/staking.ts @@ -2,70 +2,53 @@ import { Balances } from "@defillama/sdk"; import { FetchOptions } from "../../adapters/types"; import { request, gql } from "graphql-request"; -export interface StakingFees { - dailyHoldersRevenue: Balances; - totalHoldersRevenue: Balances; -} - -interface ITotalStakeFees { - totalStakeFees: string; - totalUnstakeFees: string; -} - -interface IDailyStakeFees { - stakeFees: string; - unstakeFees: string; -} - -interface IGraphStakeResponse { - metrics: ITotalStakeFees[]; - dailyMetrics: IDailyStakeFees[]; -} - -const queryStakingFeesMetrics = gql -`query fees($date: Int!) { - metrics { - totalStakeFees - totalUnstakeFees - } - dailyMetrics(where: {date: $date}) { - unstakeFees - stakeFees +const queryStakingFeesMetrics = gql` + query fees($block: Int!) { + metrics(block: { number: $block }) { + totalStakeFees + totalUnstakeFees + } } -}`; +`; export async function stakingFees( options: FetchOptions, stakingSubgraphEndpoint: string, - ColonyGovernanceToken: string -): Promise { - const { createBalances, startTimestamp } = options; - - let dailyHoldersRevenue = createBalances() - let totalHoldersRevenue = createBalances() - - const day = Math.floor(startTimestamp / 86400) - const date = day * 86400 - - try { - const res: IGraphStakeResponse = await request(stakingSubgraphEndpoint, queryStakingFeesMetrics, { date }); - - if (res.dailyMetrics && res.dailyMetrics.length) { - dailyHoldersRevenue.add(ColonyGovernanceToken, res.dailyMetrics[0].stakeFees); - dailyHoldersRevenue.add(ColonyGovernanceToken, res.dailyMetrics[0].unstakeFees); - } - - if (res.metrics && res.metrics.length) { - totalHoldersRevenue.add(ColonyGovernanceToken, res.metrics[0].totalStakeFees); - totalHoldersRevenue.add(ColonyGovernanceToken, res.metrics[0].totalUnstakeFees); - } - - } catch (e) { - console.error(e); - } + ColonyGovernanceToken: string, +): Promise<{ + dailyHoldersRevenue: Balances; + totalHoldersRevenue: Balances; +}> { + const { createBalances, getStartBlock, getEndBlock } = options; + + const [startBlock, endBlock] = await Promise.all([ + getStartBlock(), + getEndBlock(), + ]); + let dailyHoldersRevenue = createBalances(); + let totalHoldersRevenue = createBalances(); + + const [beforeRes, afterRes] = await Promise.all([ + request(stakingSubgraphEndpoint, queryStakingFeesMetrics, { + block: startBlock, + }), + request(stakingSubgraphEndpoint, queryStakingFeesMetrics, { + block: endBlock, + }), + ]); + + const beforeFees: number = + Number(beforeRes.metrics[0].totalStakeFees) + + Number(beforeRes.metrics[0].totalUnstakeFees); + const afterFees: number = + Number(afterRes.metrics[0].totalStakeFees) + + Number(afterRes.metrics[0].totalUnstakeFees); + + dailyHoldersRevenue.add(ColonyGovernanceToken, afterFees - beforeFees); + totalHoldersRevenue.add(ColonyGovernanceToken, afterFees); return { dailyHoldersRevenue, - totalHoldersRevenue - } + totalHoldersRevenue, + }; } diff --git a/fees/colony/validatorProgram.ts b/fees/colony/validatorProgram.ts index 330904e2ab..9dcfea487b 100644 --- a/fees/colony/validatorProgram.ts +++ b/fees/colony/validatorProgram.ts @@ -40,20 +40,17 @@ export async function validatorProgramFees( options: FetchOptions, stakingV3SubgraphEndpoint: string, ): Promise { - const { createBalances, startTimestamp } = options; + const { createBalances, startTimestamp, endTimestamp } = options; let dailyProtocolRevenue = createBalances() let totalProtocolRevenue = createBalances() let dailyHoldersRevenue = createBalances() let totalHoldersRevenue = createBalances() - const day = Math.floor(startTimestamp / 86400) - const date = day * 86400 - try { const res: IGraphEarlyStageFeesResponse = await request(stakingV3SubgraphEndpoint, queryValidatorProgramFees, { - timestampFrom: date, - timestampTo: date + 86400 + timestampFrom: startTimestamp, + timestampTo: endTimestamp }); if (res.rewards[0] !== undefined) {