Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

instance.gno

2.12 Kb · 90 lines
 1package staker
 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 NewStakerV1(stakerStore sr.IStakerStore, poolAccessor sr.PoolAccessor, emissionAccessor sr.EmissionAccessor, nftAccessor sr.NFTAccessor) *stakerV1 {
84	return &stakerV1{
85		store:            stakerStore,
86		poolAccessor:     poolAccessor,
87		emissionAccessor: emissionAccessor,
88		nftAccessor:      nftAccessor,
89	}
90}