diff --git a/packages/asset-swapper/CHANGELOG.json b/packages/asset-swapper/CHANGELOG.json index 25aa6da4b7..8ab13ab599 100644 --- a/packages/asset-swapper/CHANGELOG.json +++ b/packages/asset-swapper/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "16.49.2", + "changes": [ + { + "note": "Fix ABI encoding error with two hop buys due to applying slippage to uint(-1) values", + "pr": 410 + } + ] + }, { "version": "16.49.1", "changes": [ diff --git a/packages/asset-swapper/src/quote_consumers/exchange_proxy_swap_quote_consumer.ts b/packages/asset-swapper/src/quote_consumers/exchange_proxy_swap_quote_consumer.ts index 9a8188640b..2108db1b50 100644 --- a/packages/asset-swapper/src/quote_consumers/exchange_proxy_swap_quote_consumer.ts +++ b/packages/asset-swapper/src/quote_consumers/exchange_proxy_swap_quote_consumer.ts @@ -701,8 +701,16 @@ function slipNonNativeOrders(quote: MarketSellSwapQuote | MarketBuySwapQuote): O return { ...o, ...(quote.type === MarketOperation.Sell - ? { makerAmount: o.makerAmount.times(1 - slippage).integerValue(BigNumber.ROUND_DOWN) } - : { takerAmount: o.takerAmount.times(1 + slippage).integerValue(BigNumber.ROUND_UP) }), + ? { + makerAmount: o.makerAmount.eq(MAX_UINT256) + ? MAX_UINT256 + : o.makerAmount.times(1 - slippage).integerValue(BigNumber.ROUND_DOWN), + } + : { + takerAmount: o.takerAmount.eq(MAX_UINT256) + ? MAX_UINT256 + : o.takerAmount.times(1 + slippage).integerValue(BigNumber.ROUND_UP), + }), }; }); }