Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}