-
Notifications
You must be signed in to change notification settings - Fork 0
/
math.go
23 lines (18 loc) · 1.25 KB
/
math.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package keeper
import (
"github.com/QuadrateOrg/core/x/stable/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
func (k Keeper) CalculateAmountToMint(ibcBaseTokenDenomAmount sdk.Int, atomPrice sdk.Int, mintingFee sdk.Int) sdk.Int {
return (ibcBaseTokenDenomAmount.Mul(atomPrice).Sub((ibcBaseTokenDenomAmount.Mul(atomPrice).Mul(mintingFee)).Quo(types.MintUsqMultiplier))).Quo(types.Multiplier)
}
func (k Keeper) CalculateMintingFeeForBurningFund(ibcBaseTokenDenomAmount sdk.Int, atomPrice sdk.Int, mintingFee sdk.Int) sdk.Int {
return (((ibcBaseTokenDenomAmount.Mul(atomPrice)).Mul(mintingFee)).Quo(types.MintUsqMultiplier)).Quo(types.Multiplier)
}
func (k Keeper) CalculateAmountToSend(qAssetTokenAmount sdk.Int, atomPrice sdk.Int, burningFee sdk.Int) sdk.Int {
fee := (((qAssetTokenAmount.Mul(types.BurnUsqMultiplier)).Quo(atomPrice)).Mul(burningFee)).Quo(types.MintUsqMultiplier)
return (((qAssetTokenAmount.Mul(types.BurnUsqMultiplier)).Quo(atomPrice)).Sub(fee)).Quo(types.FeeMultiplier)
}
func (k Keeper) CalculateBurningFeeForBurningFund(qAssetTokenAmount sdk.Int, atomPrice sdk.Int, burningFee sdk.Int) sdk.Int {
return ((((qAssetTokenAmount.Mul(types.BurnUsqMultiplier)).Quo(atomPrice)).Mul(burningFee)).Quo(types.MintUsqMultiplier)).Quo(types.FeeMultiplier)
}