@@ -18,6 +18,7 @@ import {
18
18
buildApiResponseVerifyDebtMax ,
19
19
buildApiResponseVerifySkimMin ,
20
20
encodeDepositMulticallItem ,
21
+ encodeRepayAndSweep ,
21
22
encodeSwapMulticallItem ,
22
23
encodeTargetDebtAsExactInMulticall ,
23
24
findToken ,
@@ -461,20 +462,21 @@ export class StrategyElixir {
461
462
const withdrawAmount = adjustForInterest ( swapParams . amount )
462
463
463
464
const {
464
- data : withdrawData ,
465
+ swapMulticallItems : multicallItems ,
465
466
amountIn,
466
467
amountOut,
467
- } = await encodeWithdraw (
468
+ } = await encodeUnstakeAssets (
468
469
swapParams ,
469
470
vaultData . vault ,
470
471
withdrawAmount ,
471
472
swapParams . from ,
472
473
)
473
474
474
- const multicallItems = encodeTargetDebtAsExactInMulticall (
475
- swapParams ,
476
- withdrawData ,
477
- )
475
+ multicallItems . push ( ...encodeRepayAndSweep ( swapParams ) )
476
+ // const multicallItems = encodeTargetDebtAsExactInMulticall(
477
+ // swapParams,
478
+ // withdrawData,
479
+ // )
478
480
const swap = buildApiResponseSwap ( swapParams . from , multicallItems )
479
481
480
482
const verify = buildApiResponseVerifyDebtMax (
@@ -897,15 +899,15 @@ export async function encodeUnstakeAssets(
897
899
amountOut ,
898
900
)
899
901
900
- const abiItemCooldown = {
901
- inputs : [ { name : "shares " , type : "uint256" } ] ,
902
+ const abiItem = {
903
+ inputs : [ { name : "assets " , type : "uint256" } ] ,
902
904
name : "cooldownAssets" ,
903
905
stateMutability : "nonpayable" ,
904
906
type : "function" ,
905
907
}
906
908
907
909
const cooldownData = encodeFunctionData ( {
908
- abi : [ abiItemCooldown ] ,
910
+ abi : [ abiItem ] ,
909
911
args : [ amountOut ] ,
910
912
} )
911
913
@@ -937,6 +939,7 @@ export async function encodeUnstakeAssets(
937
939
: swapParams . swapperMode === SwapperMode . EXACT_OUT
938
940
? amountOut
939
941
: swapParams . targetDebt
942
+
940
943
const swapMulticallItems = [ ]
941
944
swapMulticallItems . push (
942
945
encodeSwapMulticallItem ( {
@@ -952,7 +955,6 @@ export async function encodeUnstakeAssets(
952
955
data : cooldownSwapData ,
953
956
} ) ,
954
957
)
955
-
956
958
swapMulticallItems . push (
957
959
encodeSwapMulticallItem ( {
958
960
handler : SWAPPER_HANDLER_GENERIC ,
@@ -972,10 +974,101 @@ export async function encodeUnstakeAssets(
972
974
amountIn,
973
975
amountOut,
974
976
swapMulticallItems,
975
- // data: swapData,.
977
+ // data: swapData,
976
978
}
977
979
}
978
980
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
+
979
1072
export async function encodeMint (
980
1073
swapParams : SwapParams ,
981
1074
vault : Address ,
0 commit comments