Skip to content

Commit 710cdc6

Browse files
committed
add target debt repay to elixir strat
1 parent 4bcaf83 commit 710cdc6

File tree

1 file changed

+104
-11
lines changed

1 file changed

+104
-11
lines changed

src/swapService/strategies/strategyElixir.ts

Lines changed: 104 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
buildApiResponseVerifyDebtMax,
1919
buildApiResponseVerifySkimMin,
2020
encodeDepositMulticallItem,
21+
encodeRepayAndSweep,
2122
encodeSwapMulticallItem,
2223
encodeTargetDebtAsExactInMulticall,
2324
findToken,
@@ -461,20 +462,21 @@ export class StrategyElixir {
461462
const withdrawAmount = adjustForInterest(swapParams.amount)
462463

463464
const {
464-
data: withdrawData,
465+
swapMulticallItems: multicallItems,
465466
amountIn,
466467
amountOut,
467-
} = await encodeWithdraw(
468+
} = await encodeUnstakeAssets(
468469
swapParams,
469470
vaultData.vault,
470471
withdrawAmount,
471472
swapParams.from,
472473
)
473474

474-
const multicallItems = encodeTargetDebtAsExactInMulticall(
475-
swapParams,
476-
withdrawData,
477-
)
475+
multicallItems.push(...encodeRepayAndSweep(swapParams))
476+
// const multicallItems = encodeTargetDebtAsExactInMulticall(
477+
// swapParams,
478+
// withdrawData,
479+
// )
478480
const swap = buildApiResponseSwap(swapParams.from, multicallItems)
479481

480482
const verify = buildApiResponseVerifyDebtMax(
@@ -897,15 +899,15 @@ export async function encodeUnstakeAssets(
897899
amountOut,
898900
)
899901

900-
const abiItemCooldown = {
901-
inputs: [{ name: "shares", type: "uint256" }],
902+
const abiItem = {
903+
inputs: [{ name: "assets", type: "uint256" }],
902904
name: "cooldownAssets",
903905
stateMutability: "nonpayable",
904906
type: "function",
905907
}
906908

907909
const cooldownData = encodeFunctionData({
908-
abi: [abiItemCooldown],
910+
abi: [abiItem],
909911
args: [amountOut],
910912
})
911913

@@ -937,6 +939,7 @@ export async function encodeUnstakeAssets(
937939
: swapParams.swapperMode === SwapperMode.EXACT_OUT
938940
? amountOut
939941
: swapParams.targetDebt
942+
940943
const swapMulticallItems = []
941944
swapMulticallItems.push(
942945
encodeSwapMulticallItem({
@@ -952,7 +955,6 @@ export async function encodeUnstakeAssets(
952955
data: cooldownSwapData,
953956
}),
954957
)
955-
956958
swapMulticallItems.push(
957959
encodeSwapMulticallItem({
958960
handler: SWAPPER_HANDLER_GENERIC,
@@ -972,10 +974,101 @@ export async function encodeUnstakeAssets(
972974
amountIn,
973975
amountOut,
974976
swapMulticallItems,
975-
// data: swapData,.
977+
// data: swapData,
976978
}
977979
}
978980

981+
// export async function encodeUnstakeAssets(
982+
// swapParams: SwapParams,
983+
// vault: Address,
984+
// amountOut: bigint,
985+
// receiver: Address,
986+
// ) {
987+
// const amountIn = await fetchPreviewWithdraw(
988+
// swapParams.chainId,
989+
// vault,
990+
// amountOut,
991+
// )
992+
993+
// const abiItemCooldown = {
994+
// inputs: [{ name: "shares", type: "uint256" }],
995+
// name: "cooldownAssets",
996+
// stateMutability: "nonpayable",
997+
// type: "function",
998+
// }
999+
1000+
// const cooldownData = encodeFunctionData({
1001+
// abi: [abiItemCooldown],
1002+
// args: [amountOut],
1003+
// })
1004+
1005+
// const cooldownSwapData = encodeAbiParameters(
1006+
// parseAbiParameters("address, bytes"),
1007+
// [vault, cooldownData],
1008+
// )
1009+
1010+
// const abiItemUnstake = {
1011+
// inputs: [{ name: "receiver", type: "address" }],
1012+
// name: "unstake",
1013+
// stateMutability: "nonpayable",
1014+
// type: "function",
1015+
// }
1016+
1017+
// const unstakeData = encodeFunctionData({
1018+
// abi: [abiItemUnstake],
1019+
// args: [receiver],
1020+
// })
1021+
1022+
// const unstakeSwapData = encodeAbiParameters(
1023+
// parseAbiParameters("address, bytes"),
1024+
// [vault, unstakeData],
1025+
// )
1026+
1027+
// const swapperAmountOut =
1028+
// swapParams.swapperMode === SwapperMode.EXACT_IN
1029+
// ? 0n //ignored
1030+
// : swapParams.swapperMode === SwapperMode.EXACT_OUT
1031+
// ? amountOut
1032+
// : swapParams.targetDebt
1033+
// const swapMulticallItems = []
1034+
// swapMulticallItems.push(
1035+
// encodeSwapMulticallItem({
1036+
// handler: SWAPPER_HANDLER_GENERIC,
1037+
// mode: BigInt(swapParams.swapperMode),
1038+
// account: swapParams.accountOut,
1039+
// tokenIn: swapParams.tokenIn.addressInfo,
1040+
// tokenOut: swapParams.tokenOut.addressInfo,
1041+
// vaultIn: swapParams.vaultIn,
1042+
// accountIn: swapParams.accountIn,
1043+
// receiver: swapParams.receiver,
1044+
// amountOut: swapperAmountOut,
1045+
// data: cooldownSwapData,
1046+
// }),
1047+
// )
1048+
1049+
// swapMulticallItems.push(
1050+
// encodeSwapMulticallItem({
1051+
// handler: SWAPPER_HANDLER_GENERIC,
1052+
// mode: BigInt(swapParams.swapperMode),
1053+
// account: swapParams.accountOut,
1054+
// tokenIn: swapParams.tokenIn.addressInfo,
1055+
// tokenOut: swapParams.tokenOut.addressInfo,
1056+
// vaultIn: swapParams.vaultIn,
1057+
// accountIn: swapParams.accountIn,
1058+
// receiver: swapParams.receiver,
1059+
// amountOut: swapperAmountOut,
1060+
// data: unstakeSwapData,
1061+
// }),
1062+
// )
1063+
1064+
// return {
1065+
// amountIn,
1066+
// amountOut,
1067+
// swapMulticallItems,
1068+
// // data: swapData,.
1069+
// }
1070+
// }
1071+
9791072
export async function encodeMint(
9801073
swapParams: SwapParams,
9811074
vault: Address,

0 commit comments

Comments
 (0)