Search Apps Documentation Source Content File Folder Download Copy Actions Download

launchpad_project_deposits.gno

2.36 Kb · 71 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.LaunchpadProjectDeposits.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.LaunchpadProjectDeposits.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.LaunchpadProjectDeposits.GetDeposit(ownerAddress)
48	newDeposit := safeAddInt64(currentDeposit, amount)
49	if newDeposit < 0 {
50		newDeposit = 0
51	}
52	lpdr.LaunchpadProjectDeposits.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.LaunchpadProjectDeposits.GetDeposit(ownerAddress)
63	if !exists {
64		return
65	}
66	newDeposit := safeSubInt64(currentDeposit, amount)
67	if newDeposit < 0 {
68		newDeposit = 0
69	}
70	lpdr.LaunchpadProjectDeposits.SetDeposit(ownerAddress, newDeposit)
71}