-
Notifications
You must be signed in to change notification settings - Fork 397
/
payouts.go
87 lines (76 loc) · 2.68 KB
/
payouts.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright (C) 2021 Storj Labs, Inc.
// See LICENSE for copying information.
package payouts
import (
"storj.io/common/storj"
)
// SatelliteSummary contains satellite id and earned amount.
type SatelliteSummary struct {
SatelliteID storj.NodeID `json:"satelliteID"`
Earned int64 `json:"earned"`
}
// HeldAmountHistory contains held amount history of particular satellite.
type HeldAmountHistory struct {
SatelliteID storj.NodeID `json:"satelliteId"`
HeldAmounts []HeldAmount `json:"heldAmounts"`
}
// HeldAmount contains amount held for period.
type HeldAmount struct {
Period string `json:"period"`
Amount int64 `json:"amount"`
}
// HeldAmountSummary contains held amount summary for first 3 quarters.
type HeldAmountSummary struct {
SatelliteID storj.NodeID `json:"satelliteId"`
SatelliteAddress string `json:"satelliteAddress"`
FirstQuarter int64 `json:"firstQuarter"`
SecondQuarter int64 `json:"secondQuarter"`
ThirdQuarter int64 `json:"thirdQuarter"`
PeriodCount int `json:"periodCount"`
}
// NodeSummary contains node's payout information.
type NodeSummary struct {
NodeID storj.NodeID `json:"nodeId"`
NodeName string `json:"nodeName"`
Held int64 `json:"held"`
Paid int64 `json:"paid"`
}
// Summary contains payouts page data.
type Summary struct {
TotalEarned int64 `json:"totalEarned"`
TotalHeld int64 `json:"totalHeld"`
TotalPaid int64 `json:"totalPaid"`
NodeSummary []NodeSummary `json:"nodeSummary"`
}
// Add appends node payout data to summary.
func (summary *Summary) Add(held, paid int64, id storj.NodeID, name string) {
summary.TotalPaid += paid
summary.TotalHeld += held
summary.TotalEarned += paid + held
summary.NodeSummary = append(summary.NodeSummary, NodeSummary{
NodeID: id,
Held: held,
Paid: paid,
NodeName: name,
})
}
// Expectations contains estimated and undistributed payouts.
type Expectations struct {
CurrentMonthEstimation int64 `json:"currentMonthEstimation"`
Undistributed int64 `json:"undistributed"`
}
// Paystub is node payouts data for satellite by specific period.
type Paystub struct {
UsageAtRest float64 `json:"usageAtRest"`
UsageGet int64 `json:"usageGet"`
UsageGetRepair int64 `json:"usageGetRepair"`
UsageGetAudit int64 `json:"usageGetAudit"`
CompAtRest int64 `json:"compAtRest"`
CompGet int64 `json:"compGet"`
CompGetRepair int64 `json:"compGetRepair"`
CompGetAudit int64 `json:"compGetAudit"`
Held int64 `json:"held"`
Paid int64 `json:"paid"`
Distributed int64 `json:"distributed"`
Disposed int64 `json:"disposed"`
}