@@ -24,6 +24,7 @@ import {
24
24
encodeDepositMulticallItem ,
25
25
encodeERC20TransferMulticallItem ,
26
26
encodeSwapMulticallItem ,
27
+ encodeTargetDebtAsExactInMulticall ,
27
28
findToken ,
28
29
isExactInRepay ,
29
30
matchParams ,
@@ -493,7 +494,7 @@ export class StrategyMidas {
493
494
const redeemAmount = ( swapParams . amount * 100_001n ) / 100_000n // a bit extra for accrued interest
494
495
495
496
const {
496
- swapMulticallItem : redeemInstantMulticallItem ,
497
+ data : redeemData ,
497
498
amountIn,
498
499
amountOut,
499
500
} = await this . encodeMTBILLRedeemInstant (
@@ -503,7 +504,10 @@ export class StrategyMidas {
503
504
mToken . paymentToken ,
504
505
)
505
506
506
- const multicallItems = [ redeemInstantMulticallItem ]
507
+ const multicallItems = encodeTargetDebtAsExactInMulticall (
508
+ swapParams ,
509
+ redeemData ,
510
+ )
507
511
508
512
const swap = buildApiResponseSwap ( swapParams . from , multicallItems )
509
513
@@ -605,141 +609,140 @@ export class StrategyMidas {
605
609
}
606
610
607
611
async targetDebtFromPaymentTokenToMToken (
608
- swapParams : SwapParams ,
612
+ _swapParams : SwapParams ,
609
613
) : Promise < SwapApiResponse [ ] > {
610
- const mToken = this . getMToken ( swapParams )
611
-
612
- const depositInstantAmount = adjustForInterest ( swapParams . amount )
613
-
614
- const {
615
- swapMulticallItem : depositInstantMulticallItem ,
616
- amountIn,
617
- amountOut,
618
- } = await this . encodeMTBILLDepositInstant (
619
- swapParams ,
620
- depositInstantAmount ,
621
- true ,
622
- mToken . paymentToken ,
623
- )
624
-
625
- // deposit instant is encoded in target debt mode, so repay will happen automatically
626
- const multicallItems = [ depositInstantMulticallItem ]
627
-
628
- const swap = buildApiResponseSwap ( swapParams . from , multicallItems )
629
-
630
- const verify = buildApiResponseVerifyDebtMax (
631
- swapParams . chainId ,
632
- swapParams . receiver ,
633
- swapParams . accountOut ,
634
- swapParams . targetDebt ,
635
- swapParams . deadline ,
614
+ throw new Error (
615
+ "Untested dust account update after making mTokens non-borrowable" ,
636
616
)
637
-
638
- return [
639
- {
640
- amountIn : String ( amountIn ) ,
641
- amountInMax : String ( amountIn ) ,
642
- amountOut : String ( amountOut ) ,
643
- amountOutMin : String ( amountOut ) ,
644
- vaultIn : swapParams . vaultIn ,
645
- receiver : swapParams . receiver ,
646
- accountIn : swapParams . accountIn ,
647
- accountOut : swapParams . accountOut ,
648
- tokenIn : swapParams . tokenIn ,
649
- tokenOut : swapParams . tokenOut ,
650
- slippage : swapParams . slippage ,
651
- route : [ MIDAS_ROUTE ] ,
652
- swap,
653
- verify,
654
- } ,
655
- ]
617
+ // const mToken = this.getMToken(swapParams)
618
+
619
+ // const depositInstantAmount = adjustForInterest(swapParams.amount)
620
+
621
+ // const {
622
+ // data: depositData,
623
+ // amountIn,
624
+ // amountOut,
625
+ // } = await this.encodeMTBILLDepositInstant(
626
+ // swapParams,
627
+ // depositInstantAmount,
628
+ // true,
629
+ // mToken.paymentToken,
630
+ // )
631
+
632
+ // const multicallItems = encodeTargetDebtAsExactInMulticall(swapParams, depositData)
633
+
634
+ // const swap = buildApiResponseSwap(swapParams.from, multicallItems)
635
+
636
+ // const verify = buildApiResponseVerifyDebtMax(
637
+ // swapParams.chainId,
638
+ // swapParams.receiver,
639
+ // swapParams.accountOut,
640
+ // swapParams.targetDebt,
641
+ // swapParams.deadline,
642
+ // )
643
+
644
+ // return [
645
+ // {
646
+ // amountIn: String(amountIn),
647
+ // amountInMax: String(amountIn),
648
+ // amountOut: String(amountOut),
649
+ // amountOutMin: String(amountOut),
650
+ // vaultIn: swapParams.vaultIn,
651
+ // receiver: swapParams.receiver,
652
+ // accountIn: swapParams.accountIn,
653
+ // accountOut: swapParams.accountOut,
654
+ // tokenIn: swapParams.tokenIn,
655
+ // tokenOut: swapParams.tokenOut,
656
+ // slippage: swapParams.slippage,
657
+ // route: [MIDAS_ROUTE],
658
+ // swap,
659
+ // verify,
660
+ // },
661
+ // ]
656
662
}
657
663
658
664
async targetDebtFromAnyToMToken (
659
- swapParams : SwapParams ,
665
+ _swapParams : SwapParams ,
660
666
) : Promise < SwapApiResponse [ ] > {
661
- const mToken = this . getMToken ( swapParams )
662
-
663
- const targetDeposit = adjustForInterest ( swapParams . amount )
664
-
665
- const depositSwapParams = {
666
- ...swapParams ,
667
- tokenIn : findToken (
668
- swapParams . chainId ,
669
- mToken . paymentToken ,
670
- ) as TokenListItem ,
671
- vaultIn : mToken . paymentTokenSweepVault ,
672
- accountIn : swapParams . dustAccount ,
673
- }
674
- const {
675
- swapMulticallItem : depositInstantMulticallItem ,
676
- amountIn : depositInstantAmountIn ,
677
- amountOut,
678
- } = await this . encodeMTBILLDepositInstant (
679
- depositSwapParams ,
680
- targetDeposit ,
681
- true ,
682
- mToken . paymentToken ,
683
- )
684
-
685
- const innerSwapParams = {
686
- ...swapParams ,
687
- amount : depositInstantAmountIn ,
688
- tokenOut : findToken (
689
- swapParams . chainId ,
690
- mToken . paymentToken ,
691
- ) as TokenListItem ,
692
- receiver : swapParams . from ,
693
- onlyFixedInputExactOut : true , // this option will overswap, which should cover growing exchange rate
694
- }
695
-
696
- const innerQuotes = await runPipeline ( innerSwapParams )
697
-
698
- return Promise . all (
699
- innerQuotes . map ( async ( innerQuote ) => {
700
- // re-encode inner swap from target debt to exact out so that repay is not executed before mint TODO fix with exact out support in all strategies
701
- const innerSwapItems = innerQuote . swap . multicallItems . map ( ( item ) => {
702
- if ( item . functionName !== "swap" ) return item
703
-
704
- const newItem = encodeSwapMulticallItem ( {
705
- ...item . args [ 0 ] ,
706
- mode : BigInt ( SwapperMode . EXACT_OUT ) ,
707
- } )
708
-
709
- return newItem
710
- } )
711
-
712
- // repay is done through deposit item, which will return unused input, which is the intermediate asset
713
- const multicallItems = [ ...innerSwapItems , depositInstantMulticallItem ]
714
-
715
- const swap = buildApiResponseSwap ( swapParams . from , multicallItems )
716
-
717
- const verify = buildApiResponseVerifyDebtMax (
718
- swapParams . chainId ,
719
- swapParams . receiver ,
720
- swapParams . accountOut ,
721
- swapParams . targetDebt ,
722
- swapParams . deadline ,
723
- )
724
-
725
- return {
726
- amountIn : String ( innerQuote . amountIn ) ,
727
- amountInMax : String ( innerQuote . amountInMax ) ,
728
- amountOut : String ( amountOut ) ,
729
- amountOutMin : String ( amountOut ) ,
730
- vaultIn : swapParams . vaultIn ,
731
- receiver : swapParams . receiver ,
732
- accountIn : swapParams . accountIn ,
733
- accountOut : swapParams . accountOut ,
734
- tokenIn : swapParams . tokenIn ,
735
- tokenOut : swapParams . tokenOut ,
736
- slippage : swapParams . slippage ,
737
- route : [ ...innerQuote . route , MIDAS_ROUTE ] ,
738
- swap,
739
- verify,
740
- }
741
- } ) ,
667
+ throw new Error (
668
+ "Untested dust account update after making mTokens non-borrowable" ,
742
669
)
670
+ // const mToken = this.getMToken(swapParams)
671
+
672
+ // const targetDeposit = adjustForInterest(swapParams.amount)
673
+
674
+ // const depositSwapParams = {
675
+ // ...swapParams,
676
+ // tokenIn: findToken(
677
+ // swapParams.chainId,
678
+ // mToken.paymentToken,
679
+ // ) as TokenListItem,
680
+ // vaultIn: mToken.paymentTokenSweepVault,
681
+ // accountIn: swapParams.dustAccount,
682
+ // }
683
+ // const {
684
+ // data: depositData,
685
+ // amountIn: depositInstantAmountIn,
686
+ // amountOut,
687
+ // } = await this.encodeMTBILLDepositInstant(
688
+ // depositSwapParams,
689
+ // targetDeposit,
690
+ // true,
691
+ // mToken.paymentToken,
692
+ // )
693
+
694
+ // const depositMulticallItems = encodeTargetDebtAsExactInMulticall(
695
+ // depositSwapParams,
696
+ // depositData,
697
+ // )
698
+
699
+ // const innerSwapParams = {
700
+ // ...swapParams,
701
+ // amount: depositInstantAmountIn,
702
+ // tokenOut: findToken(
703
+ // swapParams.chainId,
704
+ // mToken.paymentToken,
705
+ // ) as TokenListItem,
706
+ // receiver: swapParams.from,
707
+ // onlyFixedInputExactOut: true, // this option will overswap, which should cover growing exchange rate
708
+ // noRepayEncoding: true,
709
+ // }
710
+
711
+ // const innerQuotes = await runPipeline(innerSwapParams)
712
+
713
+ // return Promise.all(
714
+ // innerQuotes.map(async (innerQuote) => {
715
+ // // repay is done through deposit item, which will return unused input, which is the intermediate asset
716
+ // const multicallItems = [...innerQuote.swap.multicallItems, ...depositMulticallItems]
717
+
718
+ // const swap = buildApiResponseSwap(swapParams.from, multicallItems)
719
+
720
+ // const verify = buildApiResponseVerifyDebtMax(
721
+ // swapParams.chainId,
722
+ // swapParams.receiver,
723
+ // swapParams.accountOut,
724
+ // swapParams.targetDebt,
725
+ // swapParams.deadline,
726
+ // )
727
+
728
+ // return {
729
+ // amountIn: String(innerQuote.amountIn),
730
+ // amountInMax: String(innerQuote.amountInMax),
731
+ // amountOut: String(amountOut),
732
+ // amountOutMin: String(amountOut),
733
+ // vaultIn: swapParams.vaultIn,
734
+ // receiver: swapParams.receiver,
735
+ // accountIn: swapParams.accountIn,
736
+ // accountOut: swapParams.accountOut,
737
+ // tokenIn: swapParams.tokenIn,
738
+ // tokenOut: swapParams.tokenOut,
739
+ // slippage: swapParams.slippage,
740
+ // route: [...innerQuote.route, MIDAS_ROUTE],
741
+ // swap,
742
+ // verify,
743
+ // }
744
+ // }),
745
+ // )
743
746
}
744
747
745
748
async encodeMTBILLRedeemInstant (
@@ -824,6 +827,7 @@ export class StrategyMidas {
824
827
amountIn,
825
828
amountOut,
826
829
swapMulticallItem,
830
+ data : swapData ,
827
831
}
828
832
}
829
833
@@ -908,6 +912,7 @@ export class StrategyMidas {
908
912
amountOut,
909
913
amountIn,
910
914
swapMulticallItem,
915
+ data : swapData ,
911
916
}
912
917
}
913
918
0 commit comments