PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/gnoswap/gov/staker

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
staker
Namespace
gnoswap / gov
Files
24 (README)(gnomod.toml)
Exported functions
57
Module
gno.land/r/gnoswap/gov/staker
gno
0.9

Files (24)

  • README.mdmarkdown
  • gnomod.tomltoml
  • counter.gnogno
  • delegation_manager.gnogno
  • delegation_withdraw.gnogno
  • delegation.gnogno
  • doc.gnogno
  • emission_reward_manager.gnogno
  • emission_reward_state.gnogno
  • errors.gnogno
  • getter_utils.gnogno
  • getters.gnogno
  • launchpad_project_deposits.gnogno
  • protocol_fee_reward_manager.gnogno
  • protocol_fee_reward_state.gnogno
  • protocol_fee_token_accumulator.gnogno
  • proxy.gnogno
  • render.gnogno
  • state.gnogno
  • store.gnogno
  • tree.gnogno
  • types.gnogno
  • upgrade.gnogno
  • util.gnogno
  • types.gnogno
    1package staker23import (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

    Functions

    • 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.

    Rendered

    RenderedRawgnoweb ↗

    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
    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}
    650