launchpad_project_deposits.gno
1.33 Kb · 47 lines
1package staker
2
3import (
4 bptree "gno.land/p/nt/bptree/v0"
5)
6
7// LaunchpadProjectDeposits manages deposit amounts for launchpad projects.
8// It tracks the total staked amount for each project identified by owner address.
9type LaunchpadProjectDeposits struct {
10 // deposits maps owner address to deposit amount
11 deposits *bptree.BPTree // string -> int64
12}
13
14// NewLaunchpadProjectDeposits creates a new instance of LaunchpadProjectDeposits.
15func NewLaunchpadProjectDeposits() *LaunchpadProjectDeposits {
16 return &LaunchpadProjectDeposits{
17 deposits: bptree.NewBPTreeN(16),
18 }
19}
20
21// GetDeposits returns the entire deposits tree.
22func (lpd *LaunchpadProjectDeposits) GetDeposits() *bptree.BPTree {
23 return lpd.deposits
24}
25
26// SetDeposits sets the entire deposits tree.
27func (lpd *LaunchpadProjectDeposits) SetDeposits(deposits *bptree.BPTree) {
28 lpd.deposits = deposits
29}
30
31func (lpd *LaunchpadProjectDeposits) GetDeposit(ownerAddress string) (int64, bool) {
32 deposit, exists := lpd.deposits.Get(ownerAddress)
33 if !exists {
34 return 0, false
35 }
36 amount, ok := deposit.(int64)
37 return amount, ok
38}
39
40func (lpd *LaunchpadProjectDeposits) SetDeposit(ownerAddress string, amount int64) {
41 lpd.deposits.Set(ownerAddress, amount)
42}
43
44func (lpd *LaunchpadProjectDeposits) RemoveDeposit(ownerAddress string) bool {
45 _, ok := lpd.deposits.Remove(ownerAddress)
46 return ok
47}