From e102809842d87426f05304958e7a33a35cc2d558 Mon Sep 17 00:00:00 2001 From: Zen-Maxi <85650601+Zen-Maxi@users.noreply.github.com> Date: Fri, 2 Aug 2024 15:08:02 -0400 Subject: [PATCH] Maple syrup apr (#696) * mapleSyrupAPR Adding syrupUSDC apr handler to backend. Pool: https://balancer.fi/pools/ethereum/v2/0xd7f6a3c844d431f083e576a9972e56192a6635f30000000000000000000006b4 Token: https://etherscan.io/token/0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b * stakewise APRs * syrup USDC APR * changeset --------- Co-authored-by: gmbronco <83549293+gmbronco@users.noreply.github.com> --- .changeset/cyan-adults-exercise.md | 5 +++ config/arbitrum.ts | 5 ++- config/gnosis.ts | 4 ++ config/mainnet.ts | 10 ++++- modules/network/apr-config-types.ts | 9 +++- .../sources/maple-apr-handler.ts | 45 +++++++++++++++++++ .../sources/stakewise-apr-handler.ts | 13 +++--- 7 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 .changeset/cyan-adults-exercise.md create mode 100644 modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/maple-apr-handler.ts diff --git a/.changeset/cyan-adults-exercise.md b/.changeset/cyan-adults-exercise.md new file mode 100644 index 000000000..f58e99d05 --- /dev/null +++ b/.changeset/cyan-adults-exercise.md @@ -0,0 +1,5 @@ +--- +'backend': patch +--- + +stakewise gnosis and maple syrup APRs diff --git a/config/arbitrum.ts b/config/arbitrum.ts index 562704585..711ea13d6 100644 --- a/config/arbitrum.ts +++ b/config/arbitrum.ts @@ -126,7 +126,10 @@ export default { }, }, }, - stakewise: '0xf7d4e7273e5015c96728a6b02f31c505ee184603', + stakewise: { + url: 'https://mainnet-graph.stakewise.io/subgraphs/name/stakewise/stakewise', + token: '0xf7d4e7273e5015c96728a6b02f31c505ee184603', + }, etherfi: '0x35751007a407ca6feffe80b3cb397736d2cf4dbe', defaultHandlers: { wstETH: { diff --git a/config/gnosis.ts b/config/gnosis.ts index cea62830b..b04858495 100644 --- a/config/gnosis.ts +++ b/config/gnosis.ts @@ -65,6 +65,10 @@ export default { multicall3: '0xca11bde05977b3631167028862be2a173976ca11', avgBlockSpeed: 1, ybAprConfig: { + stakewise: { + url: 'https://gnosis-graph.stakewise.io/subgraphs/name/stakewise/stakewise', + token: '0xf490c80aae5f2616d3e3bda2483e30c4cb21d1a0', + }, defaultHandlers: { wstETH: { tokenAddress: '0x6c76971f98945ae98dd7d4dfca8711ebea946ea6', diff --git a/config/mainnet.ts b/config/mainnet.ts index 59791c4b6..4cfa86587 100644 --- a/config/mainnet.ts +++ b/config/mainnet.ts @@ -1,5 +1,6 @@ import { BigNumber } from 'ethers'; import { env } from '../app/env'; +import { syncReliquaryStakingForPools } from '../modules/actions/pool/staking'; import { DeploymentEnv, NetworkData } from '../modules/network/network-config-types'; const underlyingTokens = { @@ -236,8 +237,15 @@ export default { }, }, }, - stakewise: '0xf1c9acdc66974dfb6decb12aa385b9cd01190e38', + stakewise: { + url: 'https://mainnet-graph.stakewise.io/subgraphs/name/stakewise/stakewise', + token: '0xf1c9acdc66974dfb6decb12aa385b9cd01190e38', + }, etherfi: '0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee', + maple: { + url: 'https://api.maple.finance/v2/graphql', + token: '0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b', + }, sveth: true, defaultHandlers: { uniETH: { diff --git a/modules/network/apr-config-types.ts b/modules/network/apr-config-types.ts index fbe565e47..7e8e1ec77 100644 --- a/modules/network/apr-config-types.ts +++ b/modules/network/apr-config-types.ts @@ -13,7 +13,14 @@ export interface YbAprConfig { tetu?: TetuAprConfig; tranchess?: TranchessAprConfig; yearn?: YearnAprConfig; - stakewise?: string; + stakewise?: { + url: string; + token: string; + }; + maple?: { + url: string; + token: string; + }; etherfi?: string; sveth?: boolean; defaultHandlers?: DefaultHandlerAprConfig; diff --git a/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/maple-apr-handler.ts b/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/maple-apr-handler.ts new file mode 100644 index 000000000..ab236ae25 --- /dev/null +++ b/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/maple-apr-handler.ts @@ -0,0 +1,45 @@ +import { YbAprConfig } from '../../../../../network/apr-config-types'; + +const query = `{ + syrupGlobals { + apy + } +}`; + +const requestQuery = { + query, +}; + +interface Response { + data: { + syrupGlobals: { + apy: string; + }; + }; +} + +export class Maple { + constructor(private config: YbAprConfig['maple']) {} + + async getAprs() { + const response = await fetch(this.config!.url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(requestQuery), + }); + + const { + data: { + syrupGlobals: { apy }, + }, + } = (await response.json()) as Response; + + const apr = parseFloat(apy) / 1e28; + + return { + [this.config!.token]: { apr, isIbYield: true }, + }; + } +} diff --git a/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/stakewise-apr-handler.ts b/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/stakewise-apr-handler.ts index ed87a7266..7be796735 100644 --- a/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/stakewise-apr-handler.ts +++ b/modules/pool/lib/apr-data-sources/yb-apr-handlers/sources/stakewise-apr-handler.ts @@ -1,4 +1,4 @@ -const url = 'https://mainnet-graph.stakewise.io/subgraphs/name/stakewise/stakewise'; +import { YbAprConfig } from '../../../../../network/apr-config-types'; const query = ` { @@ -21,10 +21,10 @@ interface Response { } export class Stakewise { - constructor(private tokenAddress: string) {} + constructor(private config: YbAprConfig['stakewise']) {} async getAprs() { - const response = await fetch(url, { + const response = await fetch(this.config!.url, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -38,11 +38,10 @@ export class Stakewise { }, } = (await response.json()) as Response; + const apr = Number(apy) / 100; + return { - [this.tokenAddress]: { - apr: Number(apy) / 100, - isIbYield: true, - }, + [this.config!.token]: { apr, isIbYield: true }, }; } }