46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package accounting
|
|
|
|
import (
|
|
"github.com/nspcc-dev/neofs-proto/decimal"
|
|
"github.com/nspcc-dev/neofs-proto/internal"
|
|
"github.com/nspcc-dev/neofs-proto/refs"
|
|
)
|
|
|
|
type (
|
|
// OwnerID type alias.
|
|
OwnerID = refs.OwnerID
|
|
|
|
// Decimal type alias.
|
|
Decimal = decimal.Decimal
|
|
|
|
// Filter is used to filter accounts by criteria.
|
|
Filter func(acc *Account) bool
|
|
)
|
|
|
|
const (
|
|
// ErrEmptyAddress is raised when passed Address is empty.
|
|
ErrEmptyAddress = internal.Error("empty address")
|
|
|
|
// ErrEmptyLockTarget is raised when passed LockTarget is empty.
|
|
ErrEmptyLockTarget = internal.Error("empty lock target")
|
|
|
|
// ErrEmptyContainerID is raised when passed CID is empty.
|
|
ErrEmptyContainerID = internal.Error("empty container ID")
|
|
|
|
// ErrEmptyParentAddress is raised when passed ParentAddress is empty.
|
|
ErrEmptyParentAddress = internal.Error("empty parent address")
|
|
)
|
|
|
|
// SumFunds goes through all accounts and sums up active funds.
|
|
func SumFunds(accounts []*Account) (res *decimal.Decimal) {
|
|
res = decimal.Zero.Copy()
|
|
|
|
for i := range accounts {
|
|
if accounts[i] == nil {
|
|
continue
|
|
}
|
|
|
|
res = res.Add(accounts[i].ActiveFunds)
|
|
}
|
|
return
|
|
}
|