ac29d80495
Change-Id: I902823ef40a62861ce32799e9fb7a67a1e14710d
53 lines
2.1 KiB
Go
53 lines
2.1 KiB
Go
// Copyright (C) 2020 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package estimatedpayout
|
|
|
|
import (
|
|
"math"
|
|
)
|
|
|
|
// EstimatedPayout contains usage and estimated payout data for current and previous months.
|
|
type EstimatedPayout struct {
|
|
CurrentMonth PayoutMonthly `json:"currentMonth"`
|
|
PreviousMonth PayoutMonthly `json:"previousMonth"`
|
|
}
|
|
|
|
// PayoutMonthly contains usage and estimated payout date.
|
|
type PayoutMonthly struct {
|
|
EgressBandwidth int64 `json:"egressBandwidth"`
|
|
EgressBandwidthPayout int64 `json:"egressBandwidthPayout"`
|
|
EgressRepairAudit int64 `json:"egressRepairAudit"`
|
|
EgressRepairAuditPayout int64 `json:"egressRepairAuditPayout"`
|
|
DiskSpace float64 `json:"diskSpace"`
|
|
DiskSpacePayout int64 `json:"diskSpacePayout"`
|
|
HeldRate int64 `json:"heldRate"`
|
|
Payout int64 `json:"payout"`
|
|
Held int64 `json:"held"`
|
|
}
|
|
|
|
// SetEgressBandwidthPayout counts egress bandwidth payout for PayoutMonthly object.
|
|
func (pm *PayoutMonthly) SetEgressBandwidthPayout(egressPrice int64) {
|
|
pm.EgressBandwidthPayout += int64(float64(pm.EgressBandwidth*egressPrice) / math.Pow10(12))
|
|
}
|
|
|
|
// SetEgressRepairAuditPayout counts audit and repair payout for PayoutMonthly object.
|
|
func (pm *PayoutMonthly) SetEgressRepairAuditPayout(auditRepairPrice int64) {
|
|
pm.EgressRepairAuditPayout += int64(float64(pm.EgressRepairAudit*auditRepairPrice) / math.Pow10(12))
|
|
}
|
|
|
|
// SetDiskSpacePayout counts disk space payout for PayoutMonthly object.
|
|
func (pm *PayoutMonthly) SetDiskSpacePayout(diskSpacePrice int64) {
|
|
pm.DiskSpacePayout += int64(pm.DiskSpace * float64(diskSpacePrice) / math.Pow10(12))
|
|
}
|
|
|
|
// SetHeldAmount counts held amount for PayoutMonthly object.
|
|
func (pm *PayoutMonthly) SetHeldAmount() {
|
|
pm.Held = (pm.DiskSpacePayout + pm.EgressBandwidthPayout + pm.EgressRepairAuditPayout) * pm.HeldRate / 100
|
|
}
|
|
|
|
// SetPayout counts payout amount for PayoutMonthly object.
|
|
func (pm *PayoutMonthly) SetPayout() {
|
|
pm.Payout = pm.DiskSpacePayout + pm.EgressBandwidthPayout + pm.EgressRepairAuditPayout - pm.Held
|
|
}
|