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}