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