From eebd6502e7a5f0e56539c45559a8899346e65393 Mon Sep 17 00:00:00 2001 From: Anirudha619 Date: Wed, 10 Jul 2024 18:38:55 +0530 Subject: [PATCH 1/2] add sharpe perp, sharpe bridge. sharpe-dex --- aggregator-derivatives/sharpe-perp/index.ts | 25 ++++++++++ bridge-aggregator/sharpe-bridge/index.ts | 54 +++++++++++++++++++++ dexs/sharpe-dex/index.ts | 28 +++++++++++ 3 files changed, 107 insertions(+) create mode 100644 aggregator-derivatives/sharpe-perp/index.ts create mode 100644 bridge-aggregator/sharpe-bridge/index.ts create mode 100644 dexs/sharpe-dex/index.ts diff --git a/aggregator-derivatives/sharpe-perp/index.ts b/aggregator-derivatives/sharpe-perp/index.ts new file mode 100644 index 0000000000..0a6f8ab7ef --- /dev/null +++ b/aggregator-derivatives/sharpe-perp/index.ts @@ -0,0 +1,25 @@ +import fetchURL from "../../utils/fetchURL"; +import { FetchResultV2 } from "../../adapters/types"; +import { CHAIN } from "../../helpers/chains"; + +const fetch = async (options: any): Promise => { + let timestamp = options.toTimestamp + + const fetchOptions:any = {method: 'GET'}; + + const data:any = await fetchURL('https://api-evm.orderly.network/v1/public/volume/stats?broker_id=sharpe_ai') + + return { + totalVolume: data?.data?.perp_volume_ltd + }; +}; +// CHAIN.ARBITRUM, CHAIN.MANTLE, CHAIN.OPTIMISM, CHAIN.BASE, +export default { + adapter: { + [CHAIN.ETHEREUM]: { + fetch: fetch, + start: 1711963031 + }, + }, + version: 2 +} diff --git a/bridge-aggregator/sharpe-bridge/index.ts b/bridge-aggregator/sharpe-bridge/index.ts new file mode 100644 index 0000000000..6594796693 --- /dev/null +++ b/bridge-aggregator/sharpe-bridge/index.ts @@ -0,0 +1,54 @@ +import { Chain } from "@defillama/sdk/build/general"; +import { FetchOptions, FetchResultVolume, SimpleAdapter } from "../../adapters/types"; +import { CHAIN } from "../../helpers/chains"; + +type IContract = { + [c: string | Chain]: string; +} + +const contract: IContract = { + [CHAIN.AURORA]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.ARBITRUM]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.OPTIMISM]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.BASE]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.ETHEREUM]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.AVAX]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.BSC]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.LINEA]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.MANTA]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.POLYGON]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.POLYGON_ZKEVM]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.FANTOM]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.MODE]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.SCROLL]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.ZKSYNC]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.METIS]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', + [CHAIN.XDAI]: '0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae', +} + +const fetch: any = async (timestamp: number, _, { chain, getLogs, createBalances, }: FetchOptions): Promise => { + const dailyVolume = createBalances(); + const data: any[] = await getLogs({ + target: contract[chain], + eventAbi: 'event LiFiTransferStarted(bytes32 indexed transactionId, string bridge, string integrator, address referrer, address sendingAssetId, address receiver, uint256 minAmount, uint256 destinationChainId,bool hasSourceSwaps,bool hasDestinationCall )' + }); + data.forEach((e: any) => { + if (e.integrator === 'sharpe.ai') { + dailyVolume.add(e.sendingAssetId, e.minAmount); + } + }); + + return { dailyBridgeVolume: dailyVolume, timestamp, } as any; +}; + +const adapter: SimpleAdapter = { + version: 2, + adapter: Object.keys(contract).reduce((acc, chain) => { + return { + ...acc, + [chain]: { fetch, start: 1711963031, } + } + }, {}) +}; + +export default adapter; diff --git a/dexs/sharpe-dex/index.ts b/dexs/sharpe-dex/index.ts new file mode 100644 index 0000000000..acb6221f91 --- /dev/null +++ b/dexs/sharpe-dex/index.ts @@ -0,0 +1,28 @@ +import { ChainBlocks, FetchOptions, SimpleAdapter } from "../../adapters/types"; +import { CHAIN } from "../../helpers/chains"; +import { getUniqStartOfTodayTimestamp } from "../../helpers/getUniSubgraphVolume"; +import { getPrices } from "../../utils/prices"; +import fetchURL from "../../utils/fetchURL"; + + +const fetch = async () => { + + const data:any = await fetchURL('https://base-api.sharpe.ai/api/dexVolume') + + return { + totalVolume: data?.totalVolume + }; +}; + + +const adapter: SimpleAdapter = { + version: 2, + adapter: { + [CHAIN.ETHEREUM]: { + fetch, + start: 1711963031, + }, + }, +}; + +export default adapter; From 0dd41eed29daaa90160c6d5618046feeaea9c13f Mon Sep 17 00:00:00 2001 From: Anirudha619 Date: Fri, 26 Jul 2024 23:53:09 +0530 Subject: [PATCH 2/2] add daily volume --- aggregator-derivatives/sharpe-perp/index.ts | 6 ++++-- dexs/sharpe-dex/index.ts | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/aggregator-derivatives/sharpe-perp/index.ts b/aggregator-derivatives/sharpe-perp/index.ts index 0a6f8ab7ef..fa4e03cf79 100644 --- a/aggregator-derivatives/sharpe-perp/index.ts +++ b/aggregator-derivatives/sharpe-perp/index.ts @@ -8,9 +8,11 @@ const fetch = async (options: any): Promise => { const fetchOptions:any = {method: 'GET'}; const data:any = await fetchURL('https://api-evm.orderly.network/v1/public/volume/stats?broker_id=sharpe_ai') - + const dailyData:any = await fetchURL('https://base-api.sharpe.ai/api/dailySharpePerpVolume') + return { - totalVolume: data?.data?.perp_volume_ltd + totalVolume: data?.data?.perp_volume_ltd, + dailyVolume: dailyData?.dailyVolume }; }; // CHAIN.ARBITRUM, CHAIN.MANTLE, CHAIN.OPTIMISM, CHAIN.BASE, diff --git a/dexs/sharpe-dex/index.ts b/dexs/sharpe-dex/index.ts index acb6221f91..c0e9affed9 100644 --- a/dexs/sharpe-dex/index.ts +++ b/dexs/sharpe-dex/index.ts @@ -8,9 +8,11 @@ import fetchURL from "../../utils/fetchURL"; const fetch = async () => { const data:any = await fetchURL('https://base-api.sharpe.ai/api/dexVolume') + const dailyData:any = await fetchURL('https://base-api.sharpe.ai/api/dailySharpeDexVolume') return { - totalVolume: data?.totalVolume + totalVolume: data?.totalVolume, + dailyVolume: dailyData?.dailyVolume }; };