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}