From 7864395cff15795841cf7d0058f5e43448a22565 Mon Sep 17 00:00:00 2001 From: de-snake Date: Wed, 10 Jun 2026 15:33:19 +0300 Subject: [PATCH 1/3] feat: model strategies as (collateral, debt) pairs Each entry is now a single (collateral, debt) pair: tokenOutAddress is the collateral, the new `debt` field is the borrowed underlying, and creditManagers lists the CMs servicing that pair. Collaterals whose credit managers spanned two different debts are split into separate pairs, with the `id` suffixed by the debt symbol (e.g. AUSDCT0-USDC / AUSDCT0-AUSD). 17 strategies -> 23 pairs (6 splits). Every debt was verified on-chain via creditManager.underlying(). Requires the `debt` field added in Gearbox-protocol/sdk#461. Co-Authored-By: Claude Opus 4.8 --- src/strategies/index.ts | 145 ++++++++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 22 deletions(-) diff --git a/src/strategies/index.ts b/src/strategies/index.ts index bdd7ddc..5b845e9 100644 --- a/src/strategies/index.ts +++ b/src/strategies/index.ts @@ -1,17 +1,45 @@ import type { StrategyConfigPayload } from "@gearbox-protocol/sdk/common-utils"; +// Each entry is a single (collateral, debt) pair. `tokenOutAddress` is the +// collateral; `debt` is the borrowed underlying. When a collateral can be +// opened against more than one debt, it is listed as separate pairs (the `id` +// is suffixed with the debt symbol). Credit managers that share the same debt +// are grouped under one entry. +// +// Debt tokens were verified on-chain via creditManager.underlying(): +// Mainnet USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +// Mainnet WBTC 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 +// Mainnet WETH 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 +// Mainnet wstETH 0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 +// Monad USDC 0x754704bc059f8c67012fed69bc8a327a5aafb603 +// Monad AUSD 0x00000000efe302beaa2b3e6e1b18d08d69a9012a +// Monad WMON 0x3bd359c1119da7da1d913d1c4d2b7c461115433a +// Etherlink USDC 0x796ea11fa2dd751ed01b53c372ffdb4aaa8f00f9 export const STRATEGIES_LIST: Array = [ { name: "Midas mEDGE", - id: "mEDGE", + id: "mEDGE-USDC", tokenOutAddress: "0x1c8ee940b654bfced403f2a44c1603d5be0f50fa", + debt: "0x754704bc059f8c67012fed69bc8a327a5aafb603", // USDC strategyType: ["stable"], chainId: 143, network: "Monad", - creditManagers: [ - "0xd9b000e3f14ea2dd27be07859ab3ab9e0ef62dfa", - "0x01b3b3c03269e2fdf654676f2e57a9e325a55e51", - ], + creditManagers: ["0xd9b000e3f14ea2dd27be07859ab3ab9e0ef62dfa"], + issuesOnClose: true, + zeroSlippage: { + // Edge + "0x6b343f7b797f1488aa48c49d540690f2b2c89751": true, + }, + }, + { + name: "Midas mEDGE", + id: "mEDGE-AUSD", + tokenOutAddress: "0x1c8ee940b654bfced403f2a44c1603d5be0f50fa", + debt: "0x00000000efe302beaa2b3e6e1b18d08d69a9012a", // AUSD + strategyType: ["stable"], + chainId: 143, + network: "Monad", + creditManagers: ["0x01b3b3c03269e2fdf654676f2e57a9e325a55e51"], issuesOnClose: true, zeroSlippage: { // Edge @@ -22,6 +50,7 @@ export const STRATEGIES_LIST: Array = [ name: "Beefy WBTC/cbBTC/hemiBTC", id: "wmooStakeDaoWBTC-cbBTC-hemiBTC", tokenOutAddress: "0x924d24c238db7ecae2aa3a19430239ed684bde4a", + debt: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", // WBTC strategyType: ["btc"], chainId: 1, network: "Mainnet", @@ -35,15 +64,29 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Aura wstETH/tETH (Optimized by Beefy)", - id: "wmooBalancerEthereumwstETH-tETH", + id: "wmooBalancerEthereumwstETH-tETH-WETH", tokenOutAddress: "0x403Cc0d2694eC2639101F32B146b90D766461CE9", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", - creditManagers: [ - "0x1293a69e4ad4a93293a06b6303104be35bdd83af", - "0x68df4deeff1d9007063395cc190a486dceb05920", + creditManagers: ["0x1293a69e4ad4a93293a06b6303104be35bdd83af"], + issuesOnClose: true, + additionalCollaterals: [ + "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + "0xD11c452fc99cF405034ee446803b6F6c1F6d5ED8", + "0x9ed5175aecb6653c1bdaa19793c16fd74fbeeb37", ], + }, + { + name: "Aura wstETH/tETH (Optimized by Beefy)", + id: "wmooBalancerEthereumwstETH-tETH-wstETH", + tokenOutAddress: "0x403Cc0d2694eC2639101F32B146b90D766461CE9", + debt: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", // wstETH + strategyType: ["eth"], + chainId: 1, + network: "Mainnet", + creditManagers: ["0x68df4deeff1d9007063395cc190a486dceb05920"], issuesOnClose: true, additionalCollaterals: [ "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", @@ -55,6 +98,7 @@ export const STRATEGIES_LIST: Array = [ name: "ETH+", id: "ETH+", tokenOutAddress: "0xe72b141df173b999ae7c1adcbf60cc9833ce56a8", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -66,15 +110,15 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Convex ETH+/WETH (Optimized by Beefy)", - id: "wmooCurveETH+-WETH", + id: "wmooCurveETH+-WETH-WETH", tokenOutAddress: "0x02a4cceed3c400b5ba9fd22ad6ec18d8f7a3d48e", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", creditManagers: [ "0x79c6c1ce5b12abcc3e407ce8c160ee1160250921", "0xc307a074bd5aec2d6ad1d9b74465c24a59b490fd", - "0x9fb5493deb601a0329ad8bff43cd182a61321ca7", ], additionalCollaterals: [ "0x2c683fad51da2cd17793219cc86439c1875c353e", @@ -82,10 +126,26 @@ export const STRATEGIES_LIST: Array = [ ], issuesOnClose: true, }, + { + name: "Convex ETH+/WETH (Optimized by Beefy)", + id: "wmooCurveETH+-WETH-wstETH", + tokenOutAddress: "0x02a4cceed3c400b5ba9fd22ad6ec18d8f7a3d48e", + debt: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", // wstETH + strategyType: ["eth"], + chainId: 1, + network: "Mainnet", + creditManagers: ["0x9fb5493deb601a0329ad8bff43cd182a61321ca7"], + additionalCollaterals: [ + "0x2c683fad51da2cd17793219cc86439c1875c353e", + "0xe72b141df173b999ae7c1adcbf60cc9833ce56a8", + ], + issuesOnClose: true, + }, { name: "mRe7YIELD", id: "mRe7YIELD", tokenOutAddress: "0x733d504435a49FC8C4e9759e756C2846c92f0160", + debt: "0x796ea11fa2dd751ed01b53c372ffdb4aaa8f00f9", // USDC strategyType: ["stable"], chainId: 42793, network: "Etherlink", @@ -94,30 +154,53 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Curve AZND/AUSD", - id: "AZNDAUSD", + id: "AZNDAUSD-USDC", + tokenOutAddress: "0x2D84D79C852f6842AbE0304b70bBaA1506AdD457", + debt: "0x754704bc059f8c67012fed69bc8a327a5aafb603", // USDC + strategyType: ["stable"], + chainId: 143, + network: "Monad", + creditManagers: ["0xAB917E5397D67345d8d23ece26785582D8B4AE03"], + issuesOnClose: false, + }, + { + name: "Curve AZND/AUSD", + id: "AZNDAUSD-AUSD", tokenOutAddress: "0x2D84D79C852f6842AbE0304b70bBaA1506AdD457", + debt: "0x00000000efe302beaa2b3e6e1b18d08d69a9012a", // AUSD + strategyType: ["stable"], + chainId: 143, + network: "Monad", + creditManagers: ["0x06F5b5062477DCf6723c30a76232A5C0B6FCb01A"], + issuesOnClose: false, + }, + { + // apy: https://api.merkl.xyz/v4/opportunities?search=0x942644106B073E30D72c2C5D7529D5C296ea91ab + name: "Curve AUSD/USDC/USDT0", + id: "AUSDCT0-USDC", + tokenOutAddress: "0x942644106B073E30D72c2C5D7529D5C296ea91ab", + debt: "0x754704bc059f8c67012fed69bc8a327a5aafb603", // USDC strategyType: ["stable"], chainId: 143, network: "Monad", creditManagers: [ - "0xAB917E5397D67345d8d23ece26785582D8B4AE03", - "0x06F5b5062477DCf6723c30a76232A5C0B6FCb01A", + "0xf6f044485ac54eecbddfd71586daf351c3ebda88", + "0xe756919cc2e2b6e844a45dbbacf566b85cb928ab", ], issuesOnClose: false, }, { // apy: https://api.merkl.xyz/v4/opportunities?search=0x942644106B073E30D72c2C5D7529D5C296ea91ab name: "Curve AUSD/USDC/USDT0", - id: "AUSDCT0", + id: "AUSDCT0-AUSD", tokenOutAddress: "0x942644106B073E30D72c2C5D7529D5C296ea91ab", + debt: "0x00000000efe302beaa2b3e6e1b18d08d69a9012a", // AUSD strategyType: ["stable"], chainId: 143, network: "Monad", creditManagers: [ - "0xf6f044485ac54eecbddfd71586daf351c3ebda88", "0xeCa8b626B91fbf1191230C5d11D5f5ebC1ADbB04", "0x3626c30d386f5900a444b77464ae1b78f8281481", - "0xe756919cc2e2b6e844a45dbbacf566b85cb928ab", ], issuesOnClose: false, }, @@ -126,6 +209,7 @@ export const STRATEGIES_LIST: Array = [ name: "Magma gMON", id: "gMON", tokenOutAddress: "0x8498312A6B3CbD158bf0c93AbdCF29E6e4F55081", + debt: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a", // WMON strategyType: ["mon"], chainId: 143, network: "Monad", @@ -135,21 +219,32 @@ export const STRATEGIES_LIST: Array = [ { // apy: https://api.upshift.finance/v1/tokenized_vaults/0xD793c04B87386A6bb84ee61D98e0065FdE7fdA5E -> historical_apy -> 7 (0.02 = 2%) name: "Savings AUSD", - id: "sAUSD", + id: "sAUSD-USDC", tokenOutAddress: "0xd793c04b87386a6bb84ee61d98e0065fde7fda5e", + debt: "0x754704bc059f8c67012fed69bc8a327a5aafb603", // USDC strategyType: ["stable"], chainId: 143, network: "Monad", - creditManagers: [ - "0xE01FEeBC233ee715592D056B0a53A4F316a62d1A", - "0x5452971Fc17d025a1AFFDd5F7a44CCDD1BF0524C", - ], + creditManagers: ["0xE01FEeBC233ee715592D056B0a53A4F316a62d1A"], + issuesOnClose: true, + }, + { + // apy: https://api.upshift.finance/v1/tokenized_vaults/0xD793c04B87386A6bb84ee61D98e0065FdE7fdA5E -> historical_apy -> 7 (0.02 = 2%) + name: "Savings AUSD", + id: "sAUSD-AUSD", + tokenOutAddress: "0xd793c04b87386a6bb84ee61d98e0065fde7fda5e", + debt: "0x00000000efe302beaa2b3e6e1b18d08d69a9012a", // AUSD + strategyType: ["stable"], + chainId: 143, + network: "Monad", + creditManagers: ["0x5452971Fc17d025a1AFFDd5F7a44CCDD1BF0524C"], issuesOnClose: true, }, { name: "Renzo ETH", id: "ezETH", tokenOutAddress: "0xbf5495efe5db9ce00f80364c8b423567e58d2110", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -163,6 +258,7 @@ export const STRATEGIES_LIST: Array = [ name: "Ether.fi ETH", id: "weETH", tokenOutAddress: "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -176,6 +272,7 @@ export const STRATEGIES_LIST: Array = [ name: "Ethena staked USDe", id: "sUSDe", tokenOutAddress: "0x9d39a5de30e57443bff2a8307a4256c8797a3497", + debt: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC strategyType: ["stable"], chainId: 1, network: "Mainnet", @@ -186,6 +283,7 @@ export const STRATEGIES_LIST: Array = [ name: "Treehouse tETH", id: "tETH", tokenOutAddress: "0xd11c452fc99cf405034ee446803b6f6c1f6d5ed8", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -200,6 +298,7 @@ export const STRATEGIES_LIST: Array = [ name: "Rocketpool ETH", id: "rETH", tokenOutAddress: "0xae78736cd615f374d3085123a210448e74fc6393", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -213,6 +312,7 @@ export const STRATEGIES_LIST: Array = [ name: "Lido wstETH", id: "wstETH", tokenOutAddress: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", @@ -227,6 +327,7 @@ export const STRATEGIES_LIST: Array = [ name: "Coinbase cbETH", id: "cbETH", tokenOutAddress: "0xbe9895146f7af43049ca1c1ae358b0541ea49704", + debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], chainId: 1, network: "Mainnet", From 8fe97868b60c055ab6437cc79c6d7a00c8b74690 Mon Sep 17 00:00:00 2001 From: de-snake <122296842+de-snake@users.noreply.github.com> Date: Wed, 10 Jun 2026 15:48:13 +0300 Subject: [PATCH 2/3] fix: remove excess comment --- src/strategies/index.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/strategies/index.ts b/src/strategies/index.ts index 5b845e9..db0fbf9 100644 --- a/src/strategies/index.ts +++ b/src/strategies/index.ts @@ -1,20 +1,5 @@ import type { StrategyConfigPayload } from "@gearbox-protocol/sdk/common-utils"; -// Each entry is a single (collateral, debt) pair. `tokenOutAddress` is the -// collateral; `debt` is the borrowed underlying. When a collateral can be -// opened against more than one debt, it is listed as separate pairs (the `id` -// is suffixed with the debt symbol). Credit managers that share the same debt -// are grouped under one entry. -// -// Debt tokens were verified on-chain via creditManager.underlying(): -// Mainnet USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -// Mainnet WBTC 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 -// Mainnet WETH 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -// Mainnet wstETH 0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 -// Monad USDC 0x754704bc059f8c67012fed69bc8a327a5aafb603 -// Monad AUSD 0x00000000efe302beaa2b3e6e1b18d08d69a9012a -// Monad WMON 0x3bd359c1119da7da1d913d1c4d2b7c461115433a -// Etherlink USDC 0x796ea11fa2dd751ed01b53c372ffdb4aaa8f00f9 export const STRATEGIES_LIST: Array = [ { name: "Midas mEDGE", From 0ba655204a8da69a6862a4367b1d0521a0a2c0ec Mon Sep 17 00:00:00 2001 From: de-snake Date: Wed, 10 Jun 2026 15:54:51 +0300 Subject: [PATCH 3/3] chore: encode every strategy id as - Suffix the remaining single-debt strategy ids with their debt symbol so all ids uniformly reflect the (collateral, debt) pair (e.g. ETH+-WETH, sUSDe-USDC, cbETH-WETH). Split strategies already carried the suffix. Co-Authored-By: Claude Opus 4.8 --- src/strategies/index.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/strategies/index.ts b/src/strategies/index.ts index db0fbf9..c7db81a 100644 --- a/src/strategies/index.ts +++ b/src/strategies/index.ts @@ -33,7 +33,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Beefy WBTC/cbBTC/hemiBTC", - id: "wmooStakeDaoWBTC-cbBTC-hemiBTC", + id: "wmooStakeDaoWBTC-cbBTC-hemiBTC-WBTC", tokenOutAddress: "0x924d24c238db7ecae2aa3a19430239ed684bde4a", debt: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", // WBTC strategyType: ["btc"], @@ -81,7 +81,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "ETH+", - id: "ETH+", + id: "ETH+-WETH", tokenOutAddress: "0xe72b141df173b999ae7c1adcbf60cc9833ce56a8", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -128,7 +128,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "mRe7YIELD", - id: "mRe7YIELD", + id: "mRe7YIELD-USDC", tokenOutAddress: "0x733d504435a49FC8C4e9759e756C2846c92f0160", debt: "0x796ea11fa2dd751ed01b53c372ffdb4aaa8f00f9", // USDC strategyType: ["stable"], @@ -192,7 +192,7 @@ export const STRATEGIES_LIST: Array = [ { // apy: https://docs.hydrogenlabs.xyz/magma/developers/integrate-with-magma/historical-apy-indexing name: "Magma gMON", - id: "gMON", + id: "gMON-WMON", tokenOutAddress: "0x8498312A6B3CbD158bf0c93AbdCF29E6e4F55081", debt: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a", // WMON strategyType: ["mon"], @@ -227,7 +227,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Renzo ETH", - id: "ezETH", + id: "ezETH-WETH", tokenOutAddress: "0xbf5495efe5db9ce00f80364c8b423567e58d2110", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -241,7 +241,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Ether.fi ETH", - id: "weETH", + id: "weETH-WETH", tokenOutAddress: "0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -255,7 +255,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Ethena staked USDe", - id: "sUSDe", + id: "sUSDe-USDC", tokenOutAddress: "0x9d39a5de30e57443bff2a8307a4256c8797a3497", debt: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC strategyType: ["stable"], @@ -266,7 +266,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Treehouse tETH", - id: "tETH", + id: "tETH-WETH", tokenOutAddress: "0xd11c452fc99cf405034ee446803b6f6c1f6d5ed8", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -281,7 +281,7 @@ export const STRATEGIES_LIST: Array = [ }, { name: "Rocketpool ETH", - id: "rETH", + id: "rETH-WETH", tokenOutAddress: "0xae78736cd615f374d3085123a210448e74fc6393", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -295,7 +295,7 @@ export const STRATEGIES_LIST: Array = [ { // API: the same as stETH on Mainnet name: "Lido wstETH", - id: "wstETH", + id: "wstETH-WETH", tokenOutAddress: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"], @@ -310,7 +310,7 @@ export const STRATEGIES_LIST: Array = [ // icon: the same as cbETH on Arbitrum // API: the same as cbETH on Arbitrum name: "Coinbase cbETH", - id: "cbETH", + id: "cbETH-WETH", tokenOutAddress: "0xbe9895146f7af43049ca1c1ae358b0541ea49704", debt: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", // WETH strategyType: ["eth"],