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}