Discount fees from USV2 getPriceAt logic

add marginal price capability
This commit is contained in:
czanella
2024-08-03 10:53:25 +01:00
parent 75e8bdf96f
commit 9411fc2b67

View File

@@ -54,13 +54,10 @@ contract UniswapV2SwapAdapter is ISwapAdapter {
if (reserveIn == 0 || reserveOut == 0) { if (reserveIn == 0 || reserveOut == 0) {
revert Unavailable("At least one reserve is zero!"); revert Unavailable("At least one reserve is zero!");
} }
uint256 amountInWithFee = amountIn * 997; uint256 amountOut = getAmountOut(amountIn, reserveIn, reserveOut);
uint256 numerator = amountInWithFee * reserveOut;
uint256 denominator = (reserveIn * 1000) + amountInWithFee;
uint256 amountOut = numerator / denominator;
uint256 newReserveOut = reserveOut - amountOut; uint256 newReserveOut = reserveOut - amountOut;
uint256 newReserveIn = reserveIn + amountIn; uint256 newReserveIn = reserveIn + amountIn;
return Fraction(newReserveOut * 1000, newReserveIn * 997); return Fraction(newReserveOut * 997, newReserveIn * 1000);
} }
/// @inheritdoc ISwapAdapter /// @inheritdoc ISwapAdapter
@@ -233,10 +230,11 @@ contract UniswapV2SwapAdapter is ISwapAdapter {
override override
returns (Capability[] memory capabilities) returns (Capability[] memory capabilities)
{ {
capabilities = new Capability[](3); capabilities = new Capability[](4);
capabilities[0] = Capability.SellOrder; capabilities[0] = Capability.SellOrder;
capabilities[1] = Capability.BuyOrder; capabilities[1] = Capability.BuyOrder;
capabilities[2] = Capability.PriceFunction; capabilities[2] = Capability.PriceFunction;
capabilities[3] = Capability.MarginalPrice;
} }
/// @inheritdoc ISwapAdapter /// @inheritdoc ISwapAdapter