Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

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}