Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}