From cad7ae42170aaf1576fbd7e0bca421091068bbbd Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Sun, 21 Mar 2021 18:15:29 +0530 Subject: [PATCH] Add calculateAmtMinusFee in fee connector --- contracts/connectors/fee/main.sol | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/contracts/connectors/fee/main.sol b/contracts/connectors/fee/main.sol index b09c2684..e08a1bdf 100644 --- a/contracts/connectors/fee/main.sol +++ b/contracts/connectors/fee/main.sol @@ -6,6 +6,11 @@ import { Basic } from "../../common/basic.sol"; abstract contract FeeResolver is DSMath, Basic { /** * @dev Calculate fee + * @param amount token amount to caculate fee. + * @param fee fee percentage. Eg: 1% => 1e17, 100% => 1e18. + * @param getId Get token amount at this ID from `InstaMemory` Contract. + * @param setId Set total amount at this ID in `InstaMemory` Contract. + * @param setIdFee Set only fee amount at this ID in `InstaMemory` Contract. */ function calculateFee( uint amount, @@ -23,6 +28,30 @@ abstract contract FeeResolver is DSMath, Basic { setUint(setId, totalAmt); setUint(setIdFee, feeAmt); } + + /** + * @dev Calculate amount minus fee + * @param amount token amount to caculate fee. + * @param fee fee percentage. Eg: 1% => 1e17, 100% => 1e18. + * @param getId Get token amount at this ID from `InstaMemory` Contract. + * @param setIdAmtMinusFee Set amount minus fee amount at this ID in `InstaMemory` Contract. + * @param setIdFee Set only fee amount at this ID in `InstaMemory` Contract. + */ + function calculateAmtMinusFee( + uint amount, + uint fee, + uint getId, + uint setIdAmtMinusFee, + uint setIdFee + ) external payable { + uint _amt = getUint(getId, amount); + + uint feeAmt = wmul(_amt, fee); + uint amountMinusFee = sub(_amt, feeAmt); + + setUint(setIdAmtMinusFee, amountMinusFee); + setUint(setIdFee, feeAmt); + } } contract ConnectV2Fee is FeeResolver {