Search Apps Documentation Source Content File Folder Download Copy Actions Download

launchpad_project_deposits.gno

2.95 Kb ยท 97 lines
 1package v1
 2
 3import (
 4	"gno.land/r/gnoswap/gov/staker"
 5)
 6
 7type LaunchpadProjectDepositsResolver struct {
 8	*staker.LaunchpadProjectDeposits
 9}
10
11func NewLaunchpadProjectDepositsResolver(launchpadProjectDeposits *staker.LaunchpadProjectDeposits) *LaunchpadProjectDepositsResolver {
12	return &LaunchpadProjectDepositsResolver{launchpadProjectDeposits}
13}
14
15// getLaunchpadProjectDeposit retrieves the deposit amount for a launchpad project.
16//
17// Parameters:
18//   - ownerAddress: project owner's address identifier
19//
20// Returns:
21//   - int64: deposit amount
22//   - bool: true if project exists, false otherwise
23func (lpdr *LaunchpadProjectDepositsResolver) getLaunchpadProjectDeposit(ownerAddress string) (int64, bool) {
24	return lpdr.GetDeposit(ownerAddress)
25}
26
27// setLaunchpadProjectDeposit sets the deposit amount for a launchpad project.
28//
29// Parameters:
30//   - ownerAddress: project owner's address identifier
31//   - deposit: deposit amount to set
32//
33// Returns:
34//   - bool: true if successfully set
35func (lpdr *LaunchpadProjectDepositsResolver) setLaunchpadProjectDeposit(ownerAddress string, deposit int64) bool {
36	lpdr.SetDeposit(ownerAddress, deposit)
37	return true
38}
39
40// addDeposit adds to the deposit amount for a launchpad project.
41// This method ensures the deposit doesn't go negative.
42//
43// Parameters:
44//   - ownerAddress: project owner's address identifier
45//   - amount: amount to add to the deposit
46func (lpdr *LaunchpadProjectDepositsResolver) addDeposit(ownerAddress string, amount int64) {
47	currentDeposit, _ := lpdr.GetDeposit(ownerAddress)
48	newDeposit := safeAddInt64(currentDeposit, amount)
49	if newDeposit < 0 {
50		newDeposit = 0
51	}
52	lpdr.SetDeposit(ownerAddress, newDeposit)
53}
54
55// removeDeposit removes from the deposit amount for a launchpad project.
56// This method ensures the deposit doesn't go negative.
57//
58// Parameters:
59//   - ownerAddress: project owner's address identifier
60//   - amount: amount to remove from the deposit
61func (lpdr *LaunchpadProjectDepositsResolver) removeDeposit(ownerAddress string, amount int64) {
62	currentDeposit, exists := lpdr.GetDeposit(ownerAddress)
63	if !exists {
64		return
65	}
66	newDeposit := safeSubInt64(currentDeposit, amount)
67	if newDeposit < 0 {
68		newDeposit = 0
69	}
70	lpdr.SetDeposit(ownerAddress, newDeposit)
71}
72
73// GetDeposit retrieves the deposit amount for a specific owner.
74func (lpdr *LaunchpadProjectDepositsResolver) GetDeposit(ownerAddress string) (int64, bool) {
75	deposit, exists := lpdr.GetDeposits().Get(ownerAddress)
76	if !exists {
77		return 0, false
78	}
79
80	amount, ok := deposit.(int64)
81	if !ok {
82		return 0, false
83	}
84
85	return amount, true
86}
87
88// SetDeposit sets the deposit amount for a specific owner.
89func (lpdr *LaunchpadProjectDepositsResolver) SetDeposit(ownerAddress string, amount int64) {
90	lpdr.GetDeposits().Set(ownerAddress, amount)
91}
92
93// RemoveDeposit removes the deposit for a specific owner.
94func (lpdr *LaunchpadProjectDepositsResolver) RemoveDeposit(ownerAddress string) bool {
95	_, ok := lpdr.GetDeposits().Remove(ownerAddress)
96	return ok
97}