@@ -402,10 +402,12 @@ class InterchainMarketMaker {
402402 abortTransactionUnless (assetIn != null )
403403 const AssetOut = this .pool .findAssetByDenom (amountOut .denom )
404404 abortTransactionUnless (assetOut != null )
405- const balanceIn = assetIn .balance .amount
405+ const balanceIn = this . minusFees ( assetIn .balance .amount )
406406 const balanceOut = assetOut .balance .amount
407407 const weightIn = assetIn .weight / 100
408408 const weightOut = assetOut .weight / 100
409+ const amount = this .minusFees (amountIn .amount )
410+
409411 const amount = balanceIn * ((balanceOut / (balanceOut - amountOut .amount ) ** (weightOut / weightIn ) - 1 ))
410412
411413 abortTransactionUnless (amountIn .amount > amount )
@@ -1183,37 +1185,37 @@ function swap(msg: MsgSwapRequest): MsgSwapResponse {
11831185
11841186 const amm = new InterchainMarketMaker (pool );
11851187
1186- let tokenOut : sdk .Coin | undefined ;
1188+ let swappedToken : sdk .Coin | undefined ;
11871189 let tokenIn: sdk .Coin | undefined ;
11881190 let msgType: SwapMessageType ;
11891191 let expected: number
11901192
11911193 switch (msg .swapType ) {
11921194 case " LEFT" :
11931195 msgType = " LEFT_SWAP" ;
1194- tokenOut = amm .leftSwap (msg .tokenIn , msg .tokenOut .denom );
1195- expected = msg . tokenOut . amount * ( 1 - msg . slippage );
1196+ swappedToken = amm .leftSwap (msg .tokenIn , msg .tokenOut .denom );
1197+
11961198 break ;
11971199 case " RIGHT" :
11981200 msgType = " RIGHT_SWAP" ;
1199- tokenOut = amm .rightSwap (msg .tokenIn , msg .tokenOut );
1201+ swappedToken = amm .rightSwap (msg .tokenIn , msg .tokenOut );
12001202 expected = msg .tokenIn .amount * (1 - msg .slippage );
12011203 break ;
12021204 default :
12031205 abortTransactionUnless (false );
12041206 }
12051207
12061208
1207- abortTransactionUnless (tokenOut ?.amount ? <= 0 );
1208- abortTransactionUnless (tokenOut ?.amount ?.gte (expected ));
1209+ abortTransactionUnless (swappedToken ?.amount ? <= 0 );
1210+ abortTransactionUnless (swappedToken ?.amount ?.gte (expected ));
12091211
12101212 const lockErr = store .lockTokens (pool .counterPartyPort , pool .counterPartyChannel , msg .sender , msg .tokenIn );
12111213 abortTransactionUnless (lockErr === undefined );
12121214
12131215 const packet : IBCSwapPacketData = {
12141216 type: msgType ,
12151217 data: marshalJSON (msg ),
1216- stateChange: { out: [tokenOut ] },
1218+ stateChange: { out: [swappedToken ] },
12171219 };
12181220
12191221 const sendPacketErr = store .sendIBCSwapPacket (
0 commit comments