Search Apps Documentation Source Content File Folder Download Copy Actions Download

init.gno

2.70 Kb ยท 121 lines
  1package v1
  2
  3import (
  4	"gno.land/p/nt/avl"
  5	"gno.land/r/gnoswap/gov/staker"
  6)
  7
  8func init() {
  9	registerGovStakerV1()
 10}
 11
 12func registerGovStakerV1() {
 13	staker.RegisterInitializer(cross, func(store staker.IGovStakerStore) staker.IGovStaker {
 14		err := initStoreData(store)
 15		if err != nil {
 16			panic(err)
 17		}
 18
 19		return NewGovStakerV1(store)
 20	})
 21}
 22
 23func initStoreData(store staker.IGovStakerStore) error {
 24	// Initialize basic configuration
 25	if !store.HasUnDelegationLockupPeriodStoreKey() {
 26		err := store.SetUnDelegationLockupPeriod(int64(7 * 24 * 60 * 60)) // 7 days default
 27		if err != nil {
 28			return err
 29		}
 30	}
 31
 32	if !store.HasEmissionRewardBalanceStoreKey() {
 33		err := store.SetEmissionRewardBalance(int64(0))
 34		if err != nil {
 35			return err
 36		}
 37	}
 38
 39	if !store.HasTotalDelegatedAmountStoreKey() {
 40		err := store.SetTotalDelegatedAmount(int64(0))
 41		if err != nil {
 42			return err
 43		}
 44	}
 45
 46	if !store.HasTotalLockedAmountStoreKey() {
 47		err := store.SetTotalLockedAmount(int64(0))
 48		if err != nil {
 49			return err
 50		}
 51	}
 52
 53	// Initialize delegation management
 54	if !store.HasDelegationCounterStoreKey() {
 55		err := store.SetDelegationCounter(staker.NewCounter())
 56		if err != nil {
 57			return err
 58		}
 59	}
 60
 61	if !store.HasDelegationsStoreKey() {
 62		err := store.SetDelegations(avl.NewTree())
 63		if err != nil {
 64			return err
 65		}
 66	}
 67
 68	// Initialize total delegation history (timestamp -> int64)
 69	if !store.HasTotalDelegationHistoryStoreKey() {
 70		err := store.SetTotalDelegationHistory(staker.NewUintTree())
 71		if err != nil {
 72			return err
 73		}
 74	}
 75
 76	// Initialize user delegation history (address -> *UintTree[timestamp -> int64])
 77	if !store.HasUserDelegationHistoryStoreKey() {
 78		err := store.SetUserDelegationHistory(avl.NewTree())
 79		if err != nil {
 80			return err
 81		}
 82	}
 83
 84	// Initialize EmissionRewardManager
 85	if !store.HasEmissionRewardManagerStoreKey() {
 86		emissionRewardManager := staker.NewEmissionRewardManager()
 87		err := store.SetEmissionRewardManager(emissionRewardManager)
 88		if err != nil {
 89			return err
 90		}
 91	}
 92
 93	// Initialize ProtocolFeeRewardManager
 94	if !store.HasProtocolFeeRewardManagerStoreKey() {
 95		protocolFeeRewardManager := staker.NewProtocolFeeRewardManager()
 96		err := store.SetProtocolFeeRewardManager(protocolFeeRewardManager)
 97		if err != nil {
 98			return err
 99		}
100	}
101
102	// Initialize LaunchpadProjectDeposits
103	if !store.HasLaunchpadProjectDepositsStoreKey() {
104		launchpadDeposits := staker.NewLaunchpadProjectDeposits()
105		err := store.SetLaunchpadProjectDeposits(launchpadDeposits)
106		if err != nil {
107			return err
108		}
109	}
110
111	// Initialize DelegationManager
112	if !store.HasDelegationManagerStoreKey() {
113		delegationManager := staker.NewDelegationManager()
114		err := store.SetDelegationManager(delegationManager)
115		if err != nil {
116			return err
117		}
118	}
119
120	return nil
121}