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.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}