instance.gno
3.20 Kb ยท 141 lines
1package v1
2
3import sr "gno.land/r/gnoswap/staker"
4
5type stakerV1 struct {
6 store sr.IStakerStore
7 poolAccessor sr.PoolAccessor
8 emissionAccessor sr.EmissionAccessor
9 nftAccessor sr.NFTAccessor
10}
11
12func (s *stakerV1) getPools() *Pools {
13 return &Pools{
14 tree: s.store.GetPools(),
15 }
16}
17
18func (s *stakerV1) updatePools(pools *Pools) {
19 err := s.store.SetPools(pools.tree)
20 if err != nil {
21 panic(err)
22 }
23}
24
25func (s *stakerV1) getPoolTier() *PoolTier {
26 return NewPoolTierBy(
27 s.store.GetPoolTierMemberships(),
28 s.store.GetPoolTierRatio(),
29 s.store.GetPoolTierCounts(),
30 s.store.GetPoolTierLastRewardCacheTimestamp(),
31 s.store.GetPoolTierLastRewardCacheHeight(),
32 s.store.GetPoolTierCurrentEmission(),
33 s.store.GetPoolTierGetEmission(),
34 s.store.GetPoolTierGetHalvingBlocksInRange(),
35 )
36}
37
38func (s *stakerV1) updatePoolTier(poolTier *PoolTier) {
39 err := s.store.SetPoolTierMemberships(poolTier.membership)
40 if err != nil {
41 panic(err)
42 }
43
44 err = s.store.SetPoolTierRatio(poolTier.tierRatio)
45 if err != nil {
46 panic(err)
47 }
48
49 err = s.store.SetPoolTierCounts(poolTier.counts)
50 if err != nil {
51 panic(err)
52 }
53
54 err = s.store.SetPoolTierLastRewardCacheTimestamp(poolTier.lastRewardCacheTimestamp)
55 if err != nil {
56 panic(err)
57 }
58
59 err = s.store.SetPoolTierLastRewardCacheHeight(poolTier.lastRewardCacheHeight)
60 if err != nil {
61 panic(err)
62 }
63
64 err = s.store.SetPoolTierCurrentEmission(poolTier.currentEmission)
65 if err != nil {
66 panic(err)
67 }
68
69 err = s.store.SetPoolTierGetEmission(poolTier.getEmission)
70 if err != nil {
71 panic(err)
72 }
73
74 err = s.store.SetPoolTierGetHalvingBlocksInRange(poolTier.getHalvingBlocksInRange)
75 if err != nil {
76 panic(err)
77 }
78}
79
80func (s *stakerV1) getDeposits() *Deposits {
81 return &Deposits{
82 tree: s.store.GetDeposits(),
83 }
84}
85
86func (s *stakerV1) updateDeposits(deposits *Deposits) {
87 err := s.store.SetDeposits(deposits.tree)
88 if err != nil {
89 panic(err)
90 }
91}
92
93func (s *stakerV1) getStakers() *Stakers {
94 return &Stakers{
95 tree: s.store.GetStakers(),
96 }
97}
98
99func (s *stakerV1) updateStakers(stakers *Stakers) {
100 err := s.store.SetStakers(stakers.tree)
101 if err != nil {
102 panic(err)
103 }
104}
105
106func (s *stakerV1) getExternalIncentives() *ExternalIncentives {
107 return &ExternalIncentives{
108 tree: s.store.GetExternalIncentives(),
109 }
110}
111
112func (s *stakerV1) updateExternalIncentives(externalIncentives *ExternalIncentives) {
113 err := s.store.SetExternalIncentives(externalIncentives.tree)
114 if err != nil {
115 panic(err)
116 }
117}
118
119func (s *stakerV1) getDepositResolver(lpTokenId uint64) *DepositResolver {
120 return NewDepositResolver(s.getDeposit(lpTokenId))
121}
122
123func (s *stakerV1) getExternalIncentivesByCreationTime() *sr.UintTree {
124 return s.store.GetExternalIncentivesByCreationTime()
125}
126
127func (s *stakerV1) updateExternalIncentivesByCreationTime(externalIncentivesByCreationTime *sr.UintTree) {
128 err := s.store.SetExternalIncentivesByCreationTime(externalIncentivesByCreationTime)
129 if err != nil {
130 panic(err)
131 }
132}
133
134func NewStakerV1(stakerStore sr.IStakerStore, poolAccessor sr.PoolAccessor, emissionAccessor sr.EmissionAccessor, nftAccessor sr.NFTAccessor) *stakerV1 {
135 return &stakerV1{
136 store: stakerStore,
137 poolAccessor: poolAccessor,
138 emissionAccessor: emissionAccessor,
139 nftAccessor: nftAccessor,
140 }
141}