@@ -6,41 +6,63 @@ import type {
66 Token ,
77} from 'types' ;
88import type { ApiSwapQuote } from '../types' ;
9+ import { subtractSlippagePercentage } from './subtractSlippagePercentage' ;
910
1011export const formatSwapQuote = ( {
1112 direction,
1213 fromToken,
1314 toToken,
1415 apiSwapQuote,
16+ slippagePercentage,
1517} : {
1618 direction : SwapQuoteDirection ;
1719 fromToken : Token ;
1820 toToken : Token ;
1921 apiSwapQuote : ApiSwapQuote ;
22+ slippagePercentage : number ;
2023} ) => {
2124 const sharedProps = {
2225 fromToken,
2326 toToken,
2427 priceImpactPercentage : apiSwapQuote . priceImpact ,
28+ callData : apiSwapQuote . swapHelperMulticall . calldata . encodedCall ,
2529 } ;
2630
2731 if ( direction === 'exact-in' ) {
32+ const expectedToTokenAmountReceivedMantissa = BigInt ( apiSwapQuote . amountOut ) ;
33+ const minimumToTokenAmountReceivedMantissa = subtractSlippagePercentage ( {
34+ amount : expectedToTokenAmountReceivedMantissa ,
35+ slippagePercentage,
36+ } ) ;
37+
38+ console . log ( 'amountOut (API)' , expectedToTokenAmountReceivedMantissa ) ;
39+ console . log (
40+ 'min amountOut (amountOut - slippage tolerance)' ,
41+ minimumToTokenAmountReceivedMantissa ,
42+ ) ;
43+
2844 const swapQuote : ExactInSwapQuote = {
2945 ...sharedProps ,
3046 fromTokenAmountSoldMantissa : BigInt ( apiSwapQuote . amountIn ) ,
31- expectedToTokenAmountReceivedMantissa : BigInt ( apiSwapQuote . amountOut ) ,
32- minimumToTokenAmountReceivedMantissa : BigInt ( apiSwapQuote . amountOut ) , // TODO: replace with amountOutMin once API returns it
47+ expectedToTokenAmountReceivedMantissa,
48+ minimumToTokenAmountReceivedMantissa,
3349 direction : 'exact-in' ,
3450 } ;
3551
3652 return swapQuote ;
3753 }
3854
3955 if ( direction === 'exact-out' ) {
56+ const expectedFromTokenAmountSoldMantissa = BigInt ( apiSwapQuote . amountIn ) ;
57+ const maximumFromTokenAmountSoldMantissa = subtractSlippagePercentage ( {
58+ amount : expectedFromTokenAmountSoldMantissa ,
59+ slippagePercentage,
60+ } ) ;
61+
4062 const swapQuote : ExactOutSwapQuote = {
4163 ...sharedProps ,
42- expectedFromTokenAmountSoldMantissa : BigInt ( apiSwapQuote . amountIn ) ,
43- maximumFromTokenAmountSoldMantissa : BigInt ( apiSwapQuote . amountIn ) , // TODO: replace with amountInMax once API returns it
64+ expectedFromTokenAmountSoldMantissa,
65+ maximumFromTokenAmountSoldMantissa,
4466 toTokenAmountReceivedMantissa : BigInt ( apiSwapQuote . amountOut ) ,
4567 direction : 'exact-out' ,
4668 } ;
@@ -49,11 +71,17 @@ export const formatSwapQuote = ({
4971 }
5072
5173 // Approximate out swap
74+ const expectedToTokenAmountReceivedMantissa = BigInt ( apiSwapQuote . amountOut ) ;
75+ const minimumToTokenAmountReceivedMantissa = subtractSlippagePercentage ( {
76+ amount : expectedToTokenAmountReceivedMantissa ,
77+ slippagePercentage,
78+ } ) ;
79+
5280 const swapQuote : ApproximateOutSwapQuote = {
5381 ...sharedProps ,
5482 fromTokenAmountSoldMantissa : BigInt ( apiSwapQuote . amountIn ) ,
55- expectedToTokenAmountReceivedMantissa : BigInt ( apiSwapQuote . amountOut ) ,
56- minimumToTokenAmountReceivedMantissa : BigInt ( apiSwapQuote . amountOut ) , // TODO: replace with amountOutMin once API returns it
83+ expectedToTokenAmountReceivedMantissa,
84+ minimumToTokenAmountReceivedMantissa,
5785 direction : 'approximate-out' ,
5886 } ;
5987
0 commit comments