Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}