Skip to content

Commit a7ec543

Browse files
authored
Merge pull request #3 from euler-xyz/idle
Idle
2 parents 1a33e84 + cfa8ba7 commit a7ec543

File tree

5 files changed

+403
-7
lines changed

5 files changed

+403
-7
lines changed

src/swapService/config/mainnet.ts

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
StrategyBalmySDK,
44
StrategyCombinedUniswap,
55
StrategyERC4626Wrapper,
6+
StrategyIdleCDOTranche,
67
StrategyMidas,
78
StrategyRepayWrapper,
89
} from "../strategies"
@@ -15,6 +16,8 @@ const PT_WSTUSR1740182579 = "0xd0097149aa4cc0d0e1fc99b8bd73fc17dc32c1e9"
1516
const PT_WSTUSR_27MAR2025_MAINNET = "0xA8c8861b5ccF8CCe0ade6811CD2A7A7d3222B0B8"
1617
const USD0PLUSPLUS_MAINNET = "0x35d8949372d46b7a3d5a56006ae77b215fc69bc0"
1718
const YNETHX_MAINNET = "0x657d9aba1dbb59e53f9f3ecaa878447dcfc96dcb"
19+
const IDLEAATRANCHEFASANARA_MAINNET =
20+
"0x45054c6753b4Bce40C5d54418DabC20b070F85bE"
1821

1922
const mainnetRoutingConfig: ChainRoutingConfig = [
2023
// WRAPPERS
@@ -30,6 +33,10 @@ const mainnetRoutingConfig: ChainRoutingConfig = [
3033
strategy: StrategyMidas.name(),
3134
match: {}, // supports function will match mTokens
3235
},
36+
{
37+
strategy: StrategyIdleCDOTranche.name(),
38+
match: { tokensInOrOut: [IDLEAATRANCHEFASANARA_MAINNET] },
39+
},
3340
{
3441
strategy: StrategyERC4626Wrapper.name(),
3542
match: {

src/swapService/strategies/index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { StrategyBalmySDK } from "./strategyBalmySDK"
22
import { StrategyCombinedUniswap } from "./strategyCombinedUniswap"
33
import { StrategyERC4626Wrapper } from "./strategyERC4626Wrapper"
4+
import { StrategyIdleCDOTranche } from "./strategyIdleCDOTranche"
45
import { StrategyMidas } from "./strategyMidas"
56
import { StrategyRepayWrapper } from "./strategyRepayWrapper"
67

@@ -10,6 +11,7 @@ export {
1011
StrategyRepayWrapper,
1112
StrategyBalmySDK,
1213
StrategyERC4626Wrapper,
14+
StrategyIdleCDOTranche,
1315
}
1416

1517
export const strategies = {
@@ -18,4 +20,5 @@ export const strategies = {
1820
[StrategyRepayWrapper.name()]: StrategyRepayWrapper,
1921
[StrategyBalmySDK.name()]: StrategyBalmySDK,
2022
[StrategyERC4626Wrapper.name()]: StrategyERC4626Wrapper,
23+
[StrategyIdleCDOTranche.name()]: StrategyIdleCDOTranche,
2124
}

src/swapService/strategies/strategyBalmySDK.ts

+1
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,7 @@ export class StrategyBalmySDK {
505505
? getAddress(sdkQuote.source.allowanceTarget)
506506
: undefined
507507

508+
console.log("allowanceTarget: ", allowanceTarget)
508509
return {
509510
swapParams,
510511
amountIn: sdkQuote.sellAmount.amount,

src/swapService/strategies/strategyERC4626Wrapper.ts

+15-7
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,11 @@ export class StrategyERC4626Wrapper {
230230
)
231231

232232
const vaultData = this.getSupportedVault(swapParams.tokenIn.addressInfo)
233-
233+
const tokenIn = findToken(swapParams.chainId, vaultData.asset)
234+
if (!tokenIn) throw new Error("Inner token not found")
234235
const innerSwapParams = {
235236
...swapParams,
236-
tokenIn: findToken(swapParams.chainId, vaultData.asset),
237+
tokenIn,
237238
amount: redeemAmountOut,
238239
}
239240

@@ -325,10 +326,11 @@ export class StrategyERC4626Wrapper {
325326
swapParams: SwapParams,
326327
): Promise<SwapApiResponse> {
327328
const vaultData = this.getSupportedVault(swapParams.tokenOut.addressInfo)
328-
329+
const tokenOut = findToken(swapParams.chainId, vaultData.asset)
330+
if (!tokenOut) throw new Error("Inner token not found")
329331
const innerSwapParams = {
330332
...swapParams,
331-
tokenOut: findToken(swapParams.chainId, vaultData.asset),
333+
tokenOut,
332334
receiver: swapParams.from,
333335
}
334336

@@ -436,9 +438,11 @@ export class StrategyERC4626Wrapper {
436438
): Promise<SwapApiResponse> {
437439
// TODO expects dust out - add to dust list
438440
const vaultData = this.getSupportedVault(swapParams.tokenIn.addressInfo)
441+
const tokenIn = findToken(swapParams.chainId, vaultData.asset)
442+
if (!tokenIn) throw new Error("Inner token not found")
439443
const innerSwapParams = {
440444
...swapParams,
441-
tokenIn: findToken(swapParams.chainId, vaultData.asset),
445+
tokenIn,
442446
vaultIn: vaultData.assetDustEVault,
443447
onlyFixedInputExactOut: true, // eliminate dust in the intermediate asset (vault underlying)
444448
}
@@ -548,9 +552,11 @@ export class StrategyERC4626Wrapper {
548552
const vaultData = this.getSupportedVault(swapParams.tokenOut.addressInfo)
549553

550554
const mintAmount = adjustForInterest(swapParams.amount)
555+
const tokenIn = findToken(swapParams.chainId, vaultData.asset)
556+
if (!tokenIn) throw new Error("Inner token in not found")
551557
const mintSwapParams = {
552558
...swapParams,
553-
tokenIn: findToken(swapParams.chainId, vaultData.asset),
559+
tokenIn,
554560
vaultIn: vaultData.assetDustEVault,
555561
}
556562

@@ -565,10 +571,12 @@ export class StrategyERC4626Wrapper {
565571
swapParams.from,
566572
)
567573

574+
const tokenOut = findToken(swapParams.chainId, vaultData.asset)
575+
if (!tokenOut) throw new Error("Inner token not found")
568576
const innerSwapParams = {
569577
...swapParams,
570578
amount: mintAmountIn,
571-
tokenOut: findToken(swapParams.chainId, vaultData.asset),
579+
tokenOut,
572580
receiver: swapParams.from,
573581
onlyFixedInputExactOut: true, // this option will overswap, which should cover growing exchange rate
574582
}

0 commit comments

Comments
 (0)