/
account_entry.go
87 lines (72 loc) · 2.28 KB
/
account_entry.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
package xdr
func (account *AccountEntry) SignerSummary() map[string]int32 {
ret := map[string]int32{}
if account.MasterKeyWeight() > 0 {
ret[account.AccountId.Address()] = int32(account.Thresholds[0])
}
for _, signer := range account.Signers {
ret[signer.Key.Address()] = int32(signer.Weight)
}
return ret
}
func (account *AccountEntry) MasterKeyWeight() byte {
return account.Thresholds.MasterKeyWeight()
}
func (account *AccountEntry) ThresholdLow() byte {
return account.Thresholds.ThresholdLow()
}
func (account *AccountEntry) ThresholdMedium() byte {
return account.Thresholds.ThresholdMedium()
}
func (account *AccountEntry) ThresholdHigh() byte {
return account.Thresholds.ThresholdHigh()
}
// Liabilities returns AccountEntry's liabilities
func (account *AccountEntry) Liabilities() Liabilities {
var liabilities Liabilities
if account.Ext.V1 != nil {
liabilities = account.Ext.V1.Liabilities
}
return liabilities
}
// NumSponsored returns NumSponsored value for account.
func (account *AccountEntry) NumSponsored() Uint32 {
var numSponsored Uint32
if account.Ext.V1 != nil &&
account.Ext.V1.Ext.V2 != nil {
numSponsored = account.Ext.V1.Ext.V2.NumSponsored
}
return numSponsored
}
// NumSponsoring returns NumSponsoring value for account.
func (account *AccountEntry) NumSponsoring() Uint32 {
var numSponsoring Uint32
if account.Ext.V1 != nil &&
account.Ext.V1.Ext.V2 != nil {
numSponsoring = account.Ext.V1.Ext.V2.NumSponsoring
}
return numSponsoring
}
// SignerSponsoringIDs returns SignerSponsoringIDs value for account.
// This will return a slice of nil values if V2 extension does not exist.
func (account *AccountEntry) SignerSponsoringIDs() []SponsorshipDescriptor {
var ids []SponsorshipDescriptor
if account.Ext.V1 != nil &&
account.Ext.V1.Ext.V2 != nil {
ids = account.Ext.V1.Ext.V2.SignerSponsoringIDs
} else {
ids = make([]SponsorshipDescriptor, len(account.Signers))
}
return ids
}
// SponsorPerSigner returns a mapping of signer to its sponsor
func (account *AccountEntry) SponsorPerSigner() map[string]AccountId {
ids := account.SignerSponsoringIDs()
signerToSponsor := map[string]AccountId{}
for i, signerEntry := range account.Signers {
if ids[i] != nil {
signerToSponsor[signerEntry.Key.Address()] = *ids[i]
}
}
return signerToSponsor
}