types.gno
27.86 Kb · 649 lines
1package staker
2
3import (
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
9// Main interface that combines all sub-interfaces
10type 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.
25type 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
76type 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
137type 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
350type 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.
374type 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}