instance.gno
2.49 Kb · 101 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) getPoolTier() *PoolTier {
19 return NewPoolTierBy(
20 s.store.GetPoolTierMemberships(),
21 s.store.GetPoolTierRatio(),
22 s.store.GetPoolTierCounts(),
23 s.store.GetPoolTierLastRewardCacheTimestamp(),
24 s.store.GetPoolTierCurrentEmission(),
25 s.store.GetPoolTierGetEmission(),
26 s.store.GetPoolTierGetHalvingBlocksInRange(),
27 )
28}
29
30func (s *stakerV1) updatePoolTier(_ int, rlm realm, poolTier *PoolTier) {
31 err := s.store.SetPoolTierMemberships(0, rlm, poolTier.membership)
32 if err != nil {
33 panic(err)
34 }
35
36 err = s.store.SetPoolTierRatio(0, rlm, poolTier.tierRatio)
37 if err != nil {
38 panic(err)
39 }
40
41 err = s.store.SetPoolTierCounts(0, rlm, poolTier.counts)
42 if err != nil {
43 panic(err)
44 }
45
46 err = s.store.SetPoolTierLastRewardCacheTimestamp(0, rlm, poolTier.lastRewardCacheTimestamp)
47 if err != nil {
48 panic(err)
49 }
50
51 err = s.store.SetPoolTierCurrentEmission(0, rlm, poolTier.currentEmission)
52 if err != nil {
53 panic(err)
54 }
55
56 err = s.store.SetPoolTierGetEmission(0, rlm, poolTier.getEmission)
57 if err != nil {
58 panic(err)
59 }
60
61 err = s.store.SetPoolTierGetHalvingBlocksInRange(0, rlm, poolTier.getHalvingBlocksInRange)
62 if err != nil {
63 panic(err)
64 }
65}
66
67func (s *stakerV1) getDeposits() *Deposits {
68 return &Deposits{
69 tree: s.store.GetDeposits(),
70 }
71}
72
73func (s *stakerV1) getExternalIncentives() *ExternalIncentives {
74 return &ExternalIncentives{
75 tree: s.store.GetExternalIncentives(),
76 }
77}
78
79func (s *stakerV1) getDepositResolver(lpTokenId uint64) *DepositResolver {
80 return NewDepositResolver(s.getDeposit(lpTokenId))
81}
82
83func (s *stakerV1) getExternalIncentivesByCreationTime() *sr.UintTree {
84 return s.store.GetExternalIncentivesByCreationTime()
85}
86
87func (s *stakerV1) updateExternalIncentivesByCreationTime(_ int, rlm realm, externalIncentivesByCreationTime *sr.UintTree) {
88 err := s.store.SetExternalIncentivesByCreationTime(0, rlm, externalIncentivesByCreationTime)
89 if err != nil {
90 panic(err)
91 }
92}
93
94func NewStakerV1(stakerStore sr.IStakerStore, poolAccessor sr.PoolAccessor, emissionAccessor sr.EmissionAccessor, nftAccessor sr.NFTAccessor) *stakerV1 {
95 return &stakerV1{
96 store: stakerStore,
97 poolAccessor: poolAccessor,
98 emissionAccessor: emissionAccessor,
99 nftAccessor: nftAccessor,
100 }
101}