launchpad_project_deposits.gno
2.70 Kb · 80 lines
1package staker
2
3import (
4 gnsmath "gno.land/p/gnoswap/gnsmath/v1"
5
6 "gno.land/r/gnoswap/gov/staker"
7)
8
9type LaunchpadProjectDepositsResolver struct {
10 *staker.LaunchpadProjectDeposits
11}
12
13// NewLaunchpadProjectDepositsResolver wraps launchpad project deposit state.
14//
15// Parameters:
16// - launchpadProjectDeposits: project deposit state to resolve and mutate
17//
18// Returns:
19// - *LaunchpadProjectDepositsResolver: resolver retaining the supplied deposit state pointer
20func NewLaunchpadProjectDepositsResolver(launchpadProjectDeposits *staker.LaunchpadProjectDeposits) *LaunchpadProjectDepositsResolver {
21 return &LaunchpadProjectDepositsResolver{launchpadProjectDeposits}
22}
23
24// getLaunchpadProjectDeposit retrieves the deposit amount for a launchpad project.
25//
26// Parameters:
27// - ownerAddress: project owner's address identifier
28//
29// Returns:
30// - int64: deposit amount
31// - bool: true if project exists, false otherwise
32func (lpdr *LaunchpadProjectDepositsResolver) getLaunchpadProjectDeposit(ownerAddress string) (int64, bool) {
33 return lpdr.LaunchpadProjectDeposits.GetDeposit(ownerAddress)
34}
35
36// setLaunchpadProjectDeposit sets the deposit amount for a launchpad project.
37//
38// Parameters:
39// - ownerAddress: project owner's address identifier
40// - deposit: deposit amount to set
41//
42// Returns:
43// - bool: true if successfully set
44func (lpdr *LaunchpadProjectDepositsResolver) setLaunchpadProjectDeposit(ownerAddress string, deposit int64) bool {
45 lpdr.LaunchpadProjectDeposits.SetDeposit(ownerAddress, deposit)
46 return true
47}
48
49// addDeposit adds to the deposit amount for a launchpad project.
50// This method ensures the deposit doesn't go negative.
51//
52// Parameters:
53// - ownerAddress: project owner's address identifier
54// - amount: amount to add to the deposit
55func (lpdr *LaunchpadProjectDepositsResolver) addDeposit(ownerAddress string, amount int64) {
56 currentDeposit, _ := lpdr.LaunchpadProjectDeposits.GetDeposit(ownerAddress)
57 newDeposit := gnsmath.SafeAddInt64(currentDeposit, amount)
58 if newDeposit < 0 {
59 newDeposit = 0
60 }
61 lpdr.LaunchpadProjectDeposits.SetDeposit(ownerAddress, newDeposit)
62}
63
64// removeDeposit removes from the deposit amount for a launchpad project.
65// This method ensures the deposit doesn't go negative.
66//
67// Parameters:
68// - ownerAddress: project owner's address identifier
69// - amount: amount to remove from the deposit
70func (lpdr *LaunchpadProjectDepositsResolver) removeDeposit(ownerAddress string, amount int64) {
71 currentDeposit, exists := lpdr.LaunchpadProjectDeposits.GetDeposit(ownerAddress)
72 if !exists {
73 return
74 }
75 newDeposit := gnsmath.SafeSubInt64(currentDeposit, amount)
76 if newDeposit < 0 {
77 newDeposit = 0
78 }
79 lpdr.LaunchpadProjectDeposits.SetDeposit(ownerAddress, newDeposit)
80}