Kind Realm (renderable)
Name staker
Namespace gnoswap / gov
Exported functions 57
Module gno.land/r/gnoswap/gov/staker
gno 0.9 types.gno gno
⧉
1 package staker 2 3 import ( 4 "gno.land/p/gnoswap/uint256/v1" 5 rotree "gno.land/p/nt/bptree/rotree/v0" 6 bptree "gno.land/p/nt/bptree/v0" 7 ) 8 CleanStakerDelegationSnapshotByAdmin (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, threshold int64, target string)
CollectEmissionReward (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
CollectEmissionRewardFromLaunchPad (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string)
CollectProtocolFeeReward (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, tokenPath string)
CollectProtocolFeeRewardFromLaunchPad (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string, tokenPath string)
CollectReward (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string})
CollectRewardFromLaunchPad (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string)
CollectUndelegatedGns (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}) int64
Delegate (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, to string, amount int64, referrer string) int64
ExistsDelegation (delegationID int64) bool
GetClaimableRewardByAddress (addr string) (int64, map[string]int64, interface {Error func() string})
GetClaimableRewardByLaunchpad (addr string) (int64, map[string]int64, interface {Error func() string})
GetClaimableRewardByRewardID (rewardID string) (int64, map[string]int64, interface {Error func() string})
GetCollectableWithdrawAmount (delegationID int64) int64
GetDelegations () *gno.land/p/nt/bptree/rotree/v0.ReadOnlyTree
GetDelegationWithdrawCount (delegationID int64) int
GetDelegationWithdraws (delegationID int64, offset int, count int) ([]gno.land/r/gnoswap/gov/staker.DelegationWithdraw, interface {Error func() string})
GetDelegatorDelegations (delegator string) *gno.land/p/nt/bptree/rotree/v0.ReadOnlyTree
GetEmissionAccumulatedTimestamp () int64
GetEmissionAccumulatedX128PerStake () *gno.land/p/gnoswap/uint256/v1.Uint
GetEmissionDistributedAmount () int64
GetImplementationPackagePath () string
GetLaunchpadProjectDeposit (projectAddr string) (int64, bool)
GetProtocolFeeAccumulatedTimestamp () int64
GetProtocolFeeAccumulatedX128PerStake (tokenPath string) *gno.land/p/gnoswap/uint256/v1.Uint
GetProtocolFeeAmount (tokenPath string) int64
GetTotalDelegated () int64
GetTotalDelegationAmountAtSnapshot (snapshotTime int64) (int64, bool)
GetTotalLockedAmount () int64
GetTotalxGnsSupply () int64
GetUnDelegationLockupPeriod () int64
GetUserDelegationAmountAtSnapshot (userAddr string, snapshotTime int64) (int64, bool)
GetUserDelegationIDs (delegator string, delegatee string) []int64
HasDelegationSnapshotsKey () bool
NewCounter () *gno.land/r/gnoswap/gov/staker.Counter
NewDelegation (id int64, delegateFrom string, delegateTo string, delegateAmount int64, createdHeight int64, createdAt int64) *gno.land/r/gnoswap/gov/staker.Delegation
NewDelegationManager () *gno.land/r/gnoswap/gov/staker.DelegationManager
NewDelegationTree () *gno.land/p/nt/bptree/v0.BPTree
NewDelegationWithdraw (delegationID int64, unDelegateAmount int64, createdHeight int64, createdAt int64, unDelegationLockupPeriod int64) struct{delegationID int64; unDelegateAmount int64; unDelegatedHeight int64; unDelegatedAt int64; collectedAmount int64; collectableTime int64; collectedAt int64; collected bool}
NewDelegationWithdrawWithoutLockup (delegationID int64, unDelegateAmount int64, createdHeight int64, createdAt int64) struct{delegationID int64; unDelegateAmount int64; unDelegatedHeight int64; unDelegatedAt int64; collectedAmount int64; collectableTime int64; collectedAt int64; collected bool}
NewEmissionRewardManager () *gno.land/r/gnoswap/gov/staker.EmissionRewardManager
NewEmissionRewardState (accumulatedRewardX128PerStake *gno.land/p/gnoswap/uint256/v1.Uint) *gno.land/r/gnoswap/gov/staker.EmissionRewardState
NewGovStakerStore (kvStore interface {AddAuthorizedCaller func(int, .uverse.realm, .uverse.address, gno.land/p/gnoswap/store/v1.Permission) .uverse.error; Delete func(int, .uverse.realm, string) .uverse.error; Get func(string) (interface {}, .uverse.error); GetAddress func(string) (.uverse.address, .uverse.error); GetAllKeys func() ([]string, .uverse.error); GetAuthorizedCallers func() (map[.uverse.address]gno.land/p/gnoswap/store/v1.Permission, .uverse.error); GetBPTree func(string) (*gno.land/p/nt/bptree/v0.BPTree, .uverse.error); GetBool func(string) (bool, .uverse.error); GetDomainAddress func() .uverse.address; GetInt64 func(string) (int64, .uverse.error); GetString func(string) (string, .uverse.error); GetUint64 func(string) (uint64, .uverse.error); Has func(string) bool; IsWriteAuthorized func(.uverse.address) bool; RemoveAuthorizedCaller func(int, .uverse.realm, .uverse.address) .uverse.error; Set func(int, .uverse.realm, string, interface {}) .uverse.error; UpdateAuthorizedCaller func(int, .uverse.realm, .uverse.address, gno.land/p/gnoswap/store/v1.Permission) .uverse.error}) interface {GetAllDelegations func() *gno.land/p/nt/bptree/v0.BPTree; GetDelegation func(int64) (*gno.land/r/gnoswap/gov/staker.Delegation, bool); GetDelegationCounter func() *gno.land/r/gnoswap/gov/staker.Counter; GetDelegationManager func() *gno.land/r/gnoswap/gov/staker.DelegationManager; GetEmissionRewardManager func() *gno.land/r/gnoswap/gov/staker.EmissionRewardManager; GetLaunchpadProjectDeposits func() *gno.land/r/gnoswap/gov/staker.LaunchpadProjectDeposits; GetProtocolFeeRewardManager func() *gno.land/r/gnoswap/gov/staker.ProtocolFeeRewardManager; GetTotalDelegatedAmount func() int64; GetTotalDelegationHistory func() *gno.land/r/gnoswap/gov/staker.UintTree; GetTotalLockedAmount func() int64; GetUnDelegationLockupPeriod func() int64; GetUserDelegationHistory func() *gno.land/p/nt/bptree/v0.BPTree; HasDelegation func(int64) bool; HasDelegationCounterStoreKey func() bool; HasDelegationManagerStoreKey func() bool; HasDelegationsStoreKey func() bool; HasEmissionRewardManagerStoreKey func() bool; HasLaunchpadProjectDepositsStoreKey func() bool; HasProtocolFeeRewardManagerStoreKey func() bool; HasTotalDelegatedAmountStoreKey func() bool; HasTotalDelegationHistoryStoreKey func() bool; HasTotalLockedAmountStoreKey func() bool; HasUnDelegationLockupPeriodStoreKey func() bool; HasUserDelegationHistoryStoreKey func() bool; RemoveDelegation func(int, .uverse.realm, int64) .uverse.error; SetDelegation func(int, .uverse.realm, int64, *gno.land/r/gnoswap/gov/staker.Delegation) .uverse.error; SetDelegationCounter func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.Counter) .uverse.error; SetDelegationManager func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.DelegationManager) .uverse.error; SetDelegations func(int, .uverse.realm, *gno.land/p/nt/bptree/v0.BPTree) .uverse.error; SetEmissionRewardManager func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.EmissionRewardManager) .uverse.error; SetLaunchpadProjectDeposits func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.LaunchpadProjectDeposits) .uverse.error; SetProtocolFeeRewardManager func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.ProtocolFeeRewardManager) .uverse.error; SetTotalDelegatedAmount func(int, .uverse.realm, int64) .uverse.error; SetTotalDelegationHistory func(int, .uverse.realm, *gno.land/r/gnoswap/gov/staker.UintTree) .uverse.error; SetTotalLockedAmount func(int, .uverse.realm, int64) .uverse.error; SetUnDelegationLockupPeriod func(int, .uverse.realm, int64) .uverse.error; SetUserDelegationHistory func(int, .uverse.realm, *gno.land/p/nt/bptree/v0.BPTree) .uverse.error}
NewLaunchpadProjectDeposits () *gno.land/r/gnoswap/gov/staker.LaunchpadProjectDeposits
NewProtocolFeeRewardManager () *gno.land/r/gnoswap/gov/staker.ProtocolFeeRewardManager
NewProtocolFeeRewardState () *gno.land/r/gnoswap/gov/staker.ProtocolFeeRewardState
NewProtocolFeeTokenAccumulator () *gno.land/r/gnoswap/gov/staker.ProtocolFeeTokenAccumulator
NewProtocolFeeTokenRewardState (eventCursor int64, segmentStakedAmount int64, segmentStartX128 *gno.land/p/gnoswap/uint256/v1.Uint) *gno.land/r/gnoswap/gov/staker.ProtocolFeeTokenRewardState
NewUintTree () *gno.land/r/gnoswap/gov/staker.UintTree
NewUserDelegationTree () *gno.land/p/nt/bptree/v0.BPTree
Redelegate (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, delegatee string, newDelegatee string, amount int64) int64
RegisterInitializer (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, initializer func(int, .uverse.realm, gno.land/r/gnoswap/gov/staker.IGovStakerStore) gno.land/r/gnoswap/gov/staker.IGovStaker)
Render (path string) string
SetAmountByProjectWallet (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, addr string, amount int64, add bool)
SetUnDelegationLockupPeriodByAdmin (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, period int64)
Undelegate (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, from string, amount int64) int64
UpgradeImpl (cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, packagePath string)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.
9 // Main interface that combines all sub-interfaces
10 type IGovStaker interface {
11 IGovStakerDelegation
12 IGovStakerReward
13 IGovStakerGetter
14 IGovStakerAdmin
15 Render(path string ) string
16 }
17
18 // Delegation operations interface
19 //
20 // Mutating methods take `_ int, rlm realm` so the realm token is threaded
21 // from the proxy entry points down to the cross-realm token transfers and
22 // store writes performed inside each implementation. The `_ int` sentinel
23 // surfaces at every call site as a literal `0`, making the realm threading
24 // visible to readers.
25 type IGovStakerDelegation interface {
26 // Main delegation operations
27 // Delegate moves GNS into delegation and assigns the corresponding xGNS voting power.
28 //
29 // Parameters:
30 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
31 // - rlm: propagated current realm context validated before token transfers and state updates
32 // - to: address that receives the delegated voting power
33 // - amount: positive GNS amount to delegate
34 // - referrer: optional referral identifier associated with the delegation
35 //
36 // Returns:
37 // - int64: amount delegated and represented as xGNS
38 Delegate(_ int , rlm realm, to address, amount int64 , referrer string ) int64
39 // Undelegate removes voting power from an existing delegatee and starts the
40 // undelegation lockup for the returned GNS.
41 //
42 // Parameters:
43 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
44 // - rlm: propagated current realm context validated before token and state updates
45 // - from: delegatee address from which the caller removes delegation
46 // - amount: positive xGNS amount to undelegate
47 //
48 // Returns:
49 // - int64: amount moved from active delegation into undelegation lockup
50 Undelegate(_ int , rlm realm, from address, amount int64 ) int64
51 // Redelegate moves voting power from one delegatee to another without a
52 // user-facing undelegation lockup.
53 //
54 // Parameters:
55 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
56 // - rlm: propagated current realm context validated before token and state updates
57 // - delegatee: current delegatee address whose delegation is reduced
58 // - newDelegatee: destination address that receives the redelegated amount
59 // - amount: positive xGNS amount to move between delegatees
60 //
61 // Returns:
62 // - int64: amount moved from the current delegatee to the new delegatee
63 Redelegate(_ int , rlm realm, delegatee, newDelegatee address, amount int64 ) int64
64 // CollectUndelegatedGns releases GNS whose undelegation lockup has expired.
65 //
66 // Parameters:
67 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
68 // - rlm: propagated current realm context validated before token and state updates
69 //
70 // Returns:
71 // - int64: amount of unlocked GNS collected by the caller
72 CollectUndelegatedGns(_ int , rlm realm) int64
73 }
74
75 // Reward management interface
76 type IGovStakerReward interface {
77 // Reward collection
78 // CollectReward settles the caller's GNS emission and all known protocol-fee
79 // token rewards.
80 //
81 // Parameters:
82 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
83 // - rlm: propagated current realm context validated before reward transfers and state updates
84 CollectReward(_ int , rlm realm)
85 // CollectEmissionReward settles only the caller's accumulated GNS emission reward.
86 //
87 // Parameters:
88 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
89 // - rlm: propagated current realm context validated before reward transfer and state updates
90 CollectEmissionReward(_ int , rlm realm)
91 // CollectProtocolFeeReward settles one registered protocol-fee token reward
92 // for the caller.
93 //
94 // Parameters:
95 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
96 // - rlm: propagated current realm context validated before reward transfer and state updates
97 // - tokenPath: registered token path whose accumulated reward is settled
98 CollectProtocolFeeReward(_ int , rlm realm, tokenPath string )
99 // CollectRewardFromLaunchPad settles both reward streams for a registered
100 // launchpad project wallet.
101 //
102 // Parameters:
103 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
104 // - rlm: propagated current realm context validated before launchpad authorization and reward transfers
105 // - to: registered launchpad project wallet that receives the rewards
106 CollectRewardFromLaunchPad(_ int , rlm realm, to address)
107 // CollectEmissionRewardFromLaunchPad settles only the emission reward for a
108 // registered launchpad project wallet.
109 //
110 // Parameters:
111 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
112 // - rlm: propagated current realm context validated before launchpad authorization and reward transfer
113 // - to: registered launchpad project wallet that receives the emission reward
114 CollectEmissionRewardFromLaunchPad(_ int , rlm realm, to address)
115 // CollectProtocolFeeRewardFromLaunchPad settles one protocol-fee token reward
116 // for a registered launchpad project wallet.
117 //
118 // Parameters:
119 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
120 // - rlm: propagated current realm context validated before launchpad authorization and reward transfer
121 // - to: registered launchpad project wallet that receives the token reward
122 // - tokenPath: registered token path whose accumulated reward is settled
123 CollectProtocolFeeRewardFromLaunchPad(_ int , rlm realm, to address, tokenPath string )
124 // SetAmountByProjectWallet adjusts the launchpad-backed stake amount and
125 // corresponding xGNS balance for a project wallet.
126 //
127 // Parameters:
128 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
129 // - rlm: propagated current realm context validated before launchpad authorization and state updates
130 // - addr: project wallet address whose launchpad-backed stake is adjusted
131 // - amount: stake amount delta passed to the launchpad reward accounting
132 // - add: true to add stake and mint xGNS; false to remove stake and burn xGNS
133 SetAmountByProjectWallet(_ int , rlm realm, addr address, amount int64 , add bool )
134 }
135
136 // Getter interface for read operations
137 type IGovStakerGetter interface {
138 // Store data getters
139 // GetUnDelegationLockupPeriod returns the configured undelegation cooldown.
140 //
141 // Returns:
142 // - int64: undelegation lockup duration in seconds
143 GetUnDelegationLockupPeriod() int64
144
145 // Delegation getters
146 // GetTotalxGnsSupply returns total xGNS supply, including xGNS held by the
147 // launchpad.
148 //
149 // Returns:
150 // - int64: total xGNS supply used as the governance quorum base
151 GetTotalxGnsSupply() int64
152 // GetTotalDelegated returns the amount currently delegated for governance
153 // voting power.
154 //
155 // Returns:
156 // - int64: total active delegated xGNS amount
157 GetTotalDelegated() int64
158 // GetTotalLockedAmount returns GNS held by the staker contract for active
159 // delegations and not-yet-collected undelegations.
160 //
161 // Returns:
162 // - int64: total locked GNS amount
163 GetTotalLockedAmount() int64
164 // GetDelegations returns a read-only tree of all delegations keyed by their
165 // decimal-string IDs.
166 //
167 // Returns:
168 // - *rotree.ReadOnlyTree: read-only delegation index whose entries are cloned for callers
169 GetDelegations() *rotree.ReadOnlyTree
170 // ExistsDelegation checks whether a delegation record exists.
171 //
172 // Parameters:
173 // - delegationID: unique delegation identifier to look up
174 //
175 // Returns:
176 // - bool: true when delegationID has a stored record; false otherwise
177 ExistsDelegation(delegationID int64 ) bool
178 // GetDelegatorDelegations returns a read-only tree for one delegator, keyed
179 // by delegatee address.
180 //
181 // Parameters:
182 // - delegator: address whose delegatee mappings are requested
183 //
184 // Returns:
185 // - *rotree.ReadOnlyTree: delegatee-to-delegation-ID tree, or nil when the delegator has no delegations
186 GetDelegatorDelegations(delegator address) *rotree.ReadOnlyTree
187 // GetUserDelegationIDs returns delegation IDs for one delegator-delegatee
188 // pair.
189 //
190 // Parameters:
191 // - delegator: address that owns the delegation
192 // - delegatee: address receiving the delegation
193 //
194 // Returns:
195 // - []int64: stored delegation IDs for the pair, or an empty list when none exist
196 GetUserDelegationIDs(delegator address, delegatee address) [] int64
197 // HasDelegationSnapshotsKey reports whether total delegation history has
198 // been initialized in storage.
199 //
200 // Returns:
201 // - bool: true when the total delegation history store key exists; false otherwise
202 HasDelegationSnapshotsKey() bool
203 // GetTotalDelegationAmountAtSnapshot finds the latest total delegation
204 // history value at or before a Unix timestamp.
205 //
206 // Parameters:
207 // - snapshotTime: Unix timestamp at which to resolve historical total delegation
208 //
209 // Returns:
210 // - int64: total delegated amount from the latest qualifying history entry
211 // - bool: true when a qualifying history entry exists; false when history has no such entry
212 GetTotalDelegationAmountAtSnapshot(snapshotTime int64 ) ( int64 , bool )
213 // GetUserDelegationAmountAtSnapshot finds one user's latest delegation
214 // history value at or before a Unix timestamp.
215 //
216 // Parameters:
217 // - userAddr: user's address whose delegation history is searched
218 // - snapshotTime: Unix timestamp at which to resolve the user's historical delegation
219 //
220 // Returns:
221 // - int64: user's delegated amount from the latest qualifying history entry
222 // - bool: true when a qualifying history entry exists; false otherwise
223 GetUserDelegationAmountAtSnapshot(userAddr address, snapshotTime int64 ) ( int64 , bool )
224
225 // Reward getters
226 // GetClaimableRewardByAddress computes current claimable emission and
227 // protocol-fee rewards for an address reward ID.
228 //
229 // Parameters:
230 // - addr: staker address whose reward ID is queried
231 //
232 // Returns:
233 // - int64: claimable GNS emission reward amount
234 // - map[string]int64: claimable protocol-fee amounts keyed by token path
235 // - error: nil when both reward streams are computed; otherwise the reward-accounting error
236 GetClaimableRewardByAddress(addr address) ( int64 , map [ string ] int64 , error )
237 // GetClaimableRewardByLaunchpad computes rewards for a launchpad project
238 // wallet's launchpad-specific reward ID.
239 //
240 // Parameters:
241 // - addr: registered launchpad project wallet address
242 //
243 // Returns:
244 // - int64: claimable GNS emission reward amount
245 // - map[string]int64: claimable protocol-fee amounts keyed by token path
246 // - error: nil when both reward streams are computed; otherwise the reward-accounting error
247 GetClaimableRewardByLaunchpad(addr address) ( int64 , map [ string ] int64 , error )
248 // GetClaimableRewardByRewardID computes current rewards for an explicit
249 // reward identifier.
250 //
251 // Parameters:
252 // - rewardID: staker or launchpad reward-state identifier
253 //
254 // Returns:
255 // - int64: claimable GNS emission reward amount
256 // - map[string]int64: claimable protocol-fee amounts keyed by token path
257 // - error: nil when both reward streams are computed; otherwise the reward-accounting error
258 GetClaimableRewardByRewardID(rewardID string ) ( int64 , map [ string ] int64 , error )
259
260 // Launchpad getters
261 // GetLaunchpadProjectDeposit returns a project's recorded launchpad deposit.
262 //
263 // Parameters:
264 // - projectAddr: project address identifier used to derive the launchpad reward key
265 //
266 // Returns:
267 // - int64: stored project deposit amount
268 // - bool: true when a deposit record exists for projectAddr; false otherwise
269 GetLaunchpadProjectDeposit(projectAddr string ) ( int64 , bool )
270
271 // Withdraw getters
272 // GetDelegationWithdrawCount returns the number of pending withdrawal
273 // records attached to a delegation.
274 //
275 // Parameters:
276 // - delegationID: delegation whose withdrawal list is counted
277 //
278 // Returns:
279 // - int: number of withdrawal records, or 0 when the delegation is absent
280 GetDelegationWithdrawCount(delegationID int64 ) int
281 // GetDelegationWithdraws returns a slice of a delegation's withdrawal list.
282 //
283 // Parameters:
284 // - delegationID: delegation whose withdrawals are requested
285 // - offset: non-negative zero-based starting index in the withdrawal list
286 // - count: non-negative maximum number of withdrawals to include
287 //
288 // Returns:
289 // - []DelegationWithdraw: withdrawals in the requested range, or an empty slice when the delegation or range is absent
290 // - error: nil when the lookup completes; an unknown delegation yields an empty slice
291 GetDelegationWithdraws(delegationID int64 , offset, count int ) ([]DelegationWithdraw, error )
292 // GetCollectableWithdrawAmount sums all withdrawal amounts currently
293 // collectable for a delegation.
294 //
295 // Parameters:
296 // - delegationID: delegation whose expired withdrawals are summed
297 //
298 // Returns:
299 // - int64: total GNS amount collectable now, or 0 when none is collectable
300 GetCollectableWithdrawAmount(delegationID int64 ) int64
301
302 // Protocol fee reward getters
303 // GetProtocolFeeAccumulatedX128PerStake returns the per-stake protocol-fee
304 // accumulator for a token path, scaled by 2^128.
305 //
306 // Parameters:
307 // - tokenPath: registered token path whose accumulator is queried
308 //
309 // Returns:
310 // - *uint256.Uint: Q128-scaled accumulated fee per stake, zero when the token has no folded fee
311 GetProtocolFeeAccumulatedX128PerStake(tokenPath string ) *uint256.Uint
312 // GetProtocolFeeAmount returns the total protocol fee folded for a token
313 // path.
314 //
315 // Parameters:
316 // - tokenPath: registered token path whose folded fee amount is queried
317 //
318 // Returns:
319 // - int64: total folded protocol-fee amount, or 0 when the token has no accumulator
320 GetProtocolFeeAmount(tokenPath string ) int64
321 // GetProtocolFeeAccumulatedTimestamp returns the last timestamp at which
322 // protocol-fee accrual state advanced.
323 //
324 // Returns:
325 // - int64: Unix timestamp of the latest protocol-fee accumulation update
326 GetProtocolFeeAccumulatedTimestamp() int64
327
328 // Emission reward getters
329 // GetEmissionAccumulatedX128PerStake returns the accumulated GNS emission
330 // reward per stake, scaled by 2^128.
331 //
332 // Returns:
333 // - *uint256.Uint: Q128-scaled accumulated emission per stake
334 GetEmissionAccumulatedX128PerStake() *uint256.Uint
335 // GetEmissionDistributedAmount returns the total GNS emission distributed
336 // through the staker reward manager.
337 //
338 // Returns:
339 // - int64: cumulative distributed GNS emission amount
340 GetEmissionDistributedAmount() int64
341 // GetEmissionAccumulatedTimestamp returns the last timestamp at which
342 // emission reward accrual state advanced.
343 //
344 // Returns:
345 // - int64: Unix timestamp of the latest emission accumulation update
346 GetEmissionAccumulatedTimestamp() int64
347 }
348
349 // Admin interface for administrative functions
350 type IGovStakerAdmin interface {
351 // CleanStakerDelegationSnapshotByAdmin removes delegation-history entries
352 // older than a validated timestamp cutoff.
353 //
354 // Parameters:
355 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
356 // - rlm: propagated current realm context validated before administrative state updates
357 // - snapshotTime: Unix timestamp cutoff before which eligible history entries are removed
358 // - target: address whose user delegation history is cleaned
359 CleanStakerDelegationSnapshotByAdmin(_ int , rlm realm, snapshotTime int64 , target address)
360 // SetUnDelegationLockupPeriodByAdmin updates the duration used by future
361 // undelegation withdrawals.
362 //
363 // Parameters:
364 // - _: leading realm-call discriminator; callers pass 0 for the forwarded implementation call
365 // - rlm: propagated current realm context validated before the administrative store write
366 // - period: non-negative undelegation lockup duration in seconds
367 SetUnDelegationLockupPeriodByAdmin(_ int , rlm realm, period int64 )
368 }
369
370 // IGovStakerStore mirrors the mutating-method realm-threading convention used
371 // by the public IGovStaker* interfaces above. Setters take `_ int, rlm realm`
372 // so KV-store writes execute under the proxy realm — the only address with
373 // write access to the shared store.
374 type IGovStakerStore interface {
375 // Basic configuration
376 // HasUnDelegationLockupPeriodStoreKey reports whether the lockup duration is initialized.
377 //
378 // Returns:
379 // - bool: true when the undelegation lockup period store key exists
380 HasUnDelegationLockupPeriodStoreKey() bool
381 // GetUnDelegationLockupPeriod returns the persisted undelegation lockup duration.
382 //
383 // Returns:
384 // - int64: configured lockup duration in seconds
385 GetUnDelegationLockupPeriod() int64
386 // SetUnDelegationLockupPeriod persists the undelegation lockup duration.
387 //
388 // Parameters:
389 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
390 // - rlm: propagated current realm context required by the KV store
391 // - period: lockup duration in seconds
392 //
393 // Returns:
394 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
395 SetUnDelegationLockupPeriod(_ int , rlm realm, period int64 ) error
396
397 // HasTotalDelegatedAmountStoreKey reports whether total active delegation is initialized.
398 //
399 // Returns:
400 // - bool: true when the total delegated amount store key exists
401 HasTotalDelegatedAmountStoreKey() bool
402 // GetTotalDelegatedAmount returns the persisted total active delegation amount.
403 //
404 // Returns:
405 // - int64: total delegated xGNS amount
406 GetTotalDelegatedAmount() int64
407 // SetTotalDelegatedAmount persists the total active delegation amount.
408 //
409 // Parameters:
410 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
411 // - rlm: propagated current realm context required by the KV store
412 // - amount: total active delegated xGNS amount to store
413 //
414 // Returns:
415 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
416 SetTotalDelegatedAmount(_ int , rlm realm, amount int64 ) error
417
418 // HasTotalLockedAmountStoreKey reports whether total locked GNS is initialized.
419 //
420 // Returns:
421 // - bool: true when the total locked amount store key exists
422 HasTotalLockedAmountStoreKey() bool
423 // GetTotalLockedAmount returns the persisted total GNS held by the staker.
424 //
425 // Returns:
426 // - int64: total locked GNS amount
427 GetTotalLockedAmount() int64
428 // SetTotalLockedAmount persists the total locked GNS amount.
429 //
430 // Parameters:
431 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
432 // - rlm: propagated current realm context required by the KV store
433 // - amount: total locked GNS amount to store
434 //
435 // Returns:
436 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
437 SetTotalLockedAmount(_ int , rlm realm, amount int64 ) error
438
439 // Delegation management
440 // HasDelegation reports whether a delegation record exists for an ID.
441 //
442 // Parameters:
443 // - id: delegation identifier to look up
444 //
445 // Returns:
446 // - bool: true when a delegation is stored under id; false otherwise
447 HasDelegation(id int64 ) bool
448 // GetDelegation retrieves one delegation record.
449 //
450 // Parameters:
451 // - id: delegation identifier to look up
452 //
453 // Returns:
454 // - *Delegation: stored delegation pointer, or nil when id is absent
455 // - bool: true when a delegation record exists and has the expected type; false otherwise
456 GetDelegation(id int64 ) (*Delegation, bool )
457 // SetDelegation stores a delegation under its identifier.
458 //
459 // Parameters:
460 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
461 // - rlm: propagated current realm context required by the KV store
462 // - id: delegation identifier used as the storage key
463 // - delegation: delegation record to store
464 //
465 // Returns:
466 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
467 SetDelegation(_ int , rlm realm, id int64 , delegation *Delegation) error
468 // RemoveDelegation deletes a delegation record and its storage entry.
469 //
470 // Parameters:
471 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
472 // - rlm: propagated current realm context required by the KV store
473 // - id: delegation identifier to remove
474 //
475 // Returns:
476 // - error: nil when the store write succeeds; otherwise the KV-store error, including a spoofed realm context
477 RemoveDelegation(_ int , rlm realm, id int64 ) error
478
479 // HasDelegationsStoreKey reports whether the all-delegations tree is initialized.
480 //
481 // Returns:
482 // - bool: true when the delegations store key exists
483 HasDelegationsStoreKey() bool
484 // SetDelegations replaces the persisted all-delegations tree.
485 //
486 // Parameters:
487 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
488 // - rlm: propagated current realm context required by the KV store
489 // - delegations: BPTree containing delegation records keyed by delegation ID
490 //
491 // Returns:
492 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
493 SetDelegations(_ int , rlm realm, delegations *bptree.BPTree) error
494 // GetAllDelegations returns the persisted tree containing every delegation.
495 //
496 // Returns:
497 // - *bptree.BPTree: all-delegations tree keyed by decimal-string delegation ID
498 GetAllDelegations() *bptree.BPTree
499
500 // HasDelegationCounterStoreKey reports whether the next-delegation-ID counter is initialized.
501 //
502 // Returns:
503 // - bool: true when the delegation counter store key exists
504 HasDelegationCounterStoreKey() bool
505 // GetDelegationCounter returns the persisted counter used to allocate delegation IDs.
506 //
507 // Returns:
508 // - *Counter: mutable delegation-ID counter
509 GetDelegationCounter() *Counter
510 // SetDelegationCounter persists the delegation-ID counter.
511 //
512 // Parameters:
513 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
514 // - rlm: propagated current realm context required by the KV store
515 // - counter: delegation-ID counter to store
516 //
517 // Returns:
518 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
519 SetDelegationCounter(_ int , rlm realm, counter *Counter) error
520
521 // Total delegation history (timestamp -> int64)
522 // HasTotalDelegationHistoryStoreKey reports whether cumulative total delegation history is initialized.
523 //
524 // Returns:
525 // - bool: true when the total-delegation-history store key exists
526 HasTotalDelegationHistoryStoreKey() bool
527 // GetTotalDelegationHistory returns timestamp-keyed cumulative total delegation history.
528 //
529 // Returns:
530 // - *UintTree: total delegation history tree mapping Unix timestamps to int64 amounts
531 GetTotalDelegationHistory() *UintTree
532 // SetTotalDelegationHistory persists timestamp-keyed cumulative total delegation history.
533 //
534 // Parameters:
535 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
536 // - rlm: propagated current realm context required by the KV store
537 // - history: timestamp-to-total-delegation tree to store
538 //
539 // Returns:
540 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
541 SetTotalDelegationHistory(_ int , rlm realm, history *UintTree) error
542
543 // User delegation history (address -> *UintTree[timestamp -> int64])
544 // HasUserDelegationHistoryStoreKey reports whether per-user delegation history is initialized.
545 //
546 // Returns:
547 // - bool: true when the user-delegation-history store key exists
548 HasUserDelegationHistoryStoreKey() bool
549 // GetUserDelegationHistory returns the composite-keyed per-user delegation history tree.
550 //
551 // Returns:
552 // - *bptree.BPTree: history tree keyed by address and timestamp
553 GetUserDelegationHistory() *bptree.BPTree
554 // SetUserDelegationHistory persists the composite-keyed per-user delegation history tree.
555 //
556 // Parameters:
557 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
558 // - rlm: propagated current realm context required by the KV store
559 // - history: address-and-timestamp delegation history tree to store
560 //
561 // Returns:
562 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
563 SetUserDelegationHistory(_ int , rlm realm, history *bptree.BPTree) error
564
565 // Manager states
566 // HasEmissionRewardManagerStoreKey reports whether the emission reward manager is initialized.
567 //
568 // Returns:
569 // - bool: true when the emission reward manager store key exists
570 HasEmissionRewardManagerStoreKey() bool
571 // GetEmissionRewardManager returns the persisted emission reward manager.
572 //
573 // Returns:
574 // - *EmissionRewardManager: emission reward accounting manager
575 GetEmissionRewardManager() *EmissionRewardManager
576 // SetEmissionRewardManager persists the emission reward manager.
577 //
578 // Parameters:
579 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
580 // - rlm: propagated current realm context required by the KV store
581 // - manager: emission reward manager state to store
582 //
583 // Returns:
584 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
585 SetEmissionRewardManager(_ int , rlm realm, manager *EmissionRewardManager) error
586
587 // HasProtocolFeeRewardManagerStoreKey reports whether protocol-fee reward state is initialized.
588 //
589 // Returns:
590 // - bool: true when the protocol-fee reward manager store key exists
591 HasProtocolFeeRewardManagerStoreKey() bool
592 // GetProtocolFeeRewardManager returns the persisted protocol-fee reward manager.
593 //
594 // Returns:
595 // - *ProtocolFeeRewardManager: protocol-fee reward accounting manager
596 GetProtocolFeeRewardManager() *ProtocolFeeRewardManager
597 // SetProtocolFeeRewardManager persists the protocol-fee reward manager.
598 //
599 // Parameters:
600 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
601 // - rlm: propagated current realm context required by the KV store
602 // - manager: protocol-fee reward manager state to store
603 //
604 // Returns:
605 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
606 SetProtocolFeeRewardManager(_ int , rlm realm, manager *ProtocolFeeRewardManager) error
607
608 // HasDelegationManagerStoreKey reports whether delegation-manager state is initialized.
609 //
610 // Returns:
611 // - bool: true when the delegation manager store key exists
612 HasDelegationManagerStoreKey() bool
613 // GetDelegationManager returns the persisted delegation manager.
614 //
615 // Returns:
616 // - *DelegationManager: delegation-to-address index manager
617 GetDelegationManager() *DelegationManager
618 // SetDelegationManager persists the delegation manager.
619 //
620 // Parameters:
621 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
622 // - rlm: propagated current realm context required by the KV store
623 // - manager: delegation manager state to store
624 //
625 // Returns:
626 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
627 SetDelegationManager(_ int , rlm realm, manager *DelegationManager) error
628
629 // HasLaunchpadProjectDepositsStoreKey reports whether launchpad project deposits are initialized.
630 //
631 // Returns:
632 // - bool: true when the launchpad-project-deposits store key exists
633 HasLaunchpadProjectDepositsStoreKey() bool
634 // GetLaunchpadProjectDeposits returns the persisted launchpad project deposit state.
635 //
636 // Returns:
637 // - *LaunchpadProjectDeposits: project-address-to-deposit state
638 GetLaunchpadProjectDeposits() *LaunchpadProjectDeposits
639 // SetLaunchpadProjectDeposits persists launchpad project deposit state.
640 //
641 // Parameters:
642 // - _: leading realm-call discriminator; callers pass 0 for the forwarded store write
643 // - rlm: propagated current realm context required by the KV store
644 // - deposits: launchpad project deposit state to store
645 //
646 // Returns:
647 // - error: nil when stored; otherwise the KV-store error, including a spoofed realm context
648 SetLaunchpadProjectDeposits(_ int , rlm realm, deposits *LaunchpadProjectDeposits) error
649 }
650