package common import "math" // Fee is a type that represents the percentage of tokens that will be paid in a transaction // to incentivaise the materialization of it type Fee float64 // RecommendedFee is the recommended fee to pay in USD per transaction set by // the coordinator according to the tx type (if the tx requires to create an // account and register, only register or he account already esists) type RecommendedFee struct { ExistingAccount float64 CreatesAccount float64 CreatesAccountAndRegister float64 } // FeeSelector is used to select a percentage from the FeePlan. type FeeSelector uint8 // Percentage returns the associated percentage of the FeeSelector func (f FeeSelector) Percentage() float64 { if f == 0 { return 0 //nolint:gomnd } else if f <= 32 { //nolint:gomnd return math.Pow(10, -24+(float64(f)/2)) //nolint:gomnd } else if f <= 223 { //nolint:gomnd return math.Pow(10, -8+(0.041666666666667*(float64(f)-32))) //nolint:gomnd } else { return math.Pow(10, float64(f)-224) //nolint:gomnd } } // MaxFeePlan is the maximum value of the FeePlan const MaxFeePlan = 256 // FeePlan represents the fee model, a position in the array indicates the // percentage of tokens paid in concept of fee for a transaction var FeePlan = [MaxFeePlan]float64{}