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

proposal_action_status.gno

6.87 Kb · 208 lines
  1package governance
  2
  3// ProposalActionStatus tracks the execution and cancellation status of a proposal.
  4// This structure manages the action-related state including who performed actions and when.
  5type ProposalActionStatus struct {
  6	canceled       bool    // Whether the proposal has been canceled
  7	canceledAt     int64   // Timestamp when proposal was canceled
  8	canceledHeight int64   // Block height when proposal was canceled
  9	canceledBy     address // Who canceled the proposal
 10
 11	executed       bool    // Whether the proposal has been executed
 12	executedAt     int64   // Timestamp when proposal was executed
 13	executedHeight int64   // Block height when proposal was executed
 14	executedBy     address // Who executed the proposal
 15
 16	executable bool // Whether this proposal type supports execution
 17}
 18
 19/* Getter methods */
 20// Canceled reports whether this proposal has been marked canceled.
 21//
 22// Returns:
 23//   - bool: true when cancellation has been recorded
 24func (p *ProposalActionStatus) Canceled() bool { return p.canceled }
 25
 26// CanceledAt returns the timestamp recorded when the proposal was canceled.
 27//
 28// Returns:
 29//   - int64: cancellation timestamp, or zero when none has been recorded
 30func (p *ProposalActionStatus) CanceledAt() int64 { return p.canceledAt }
 31
 32// CanceledHeight returns the block height recorded when the proposal was canceled.
 33//
 34// Returns:
 35//   - int64: cancellation block height, or zero when none has been recorded
 36func (p *ProposalActionStatus) CanceledHeight() int64 { return p.canceledHeight }
 37
 38// Executed reports whether this proposal has been marked executed.
 39//
 40// Returns:
 41//   - bool: true when execution has been recorded
 42func (p *ProposalActionStatus) Executed() bool { return p.executed }
 43
 44// ExecutedAt returns the timestamp recorded when the proposal was executed.
 45//
 46// Returns:
 47//   - int64: execution timestamp, or zero when none has been recorded
 48func (p *ProposalActionStatus) ExecutedAt() int64 { return p.executedAt }
 49
 50// ExecutedHeight returns the block height recorded when the proposal was executed.
 51//
 52// Returns:
 53//   - int64: execution block height, or zero when none has been recorded
 54func (p *ProposalActionStatus) ExecutedHeight() int64 { return p.executedHeight }
 55
 56// Executable reports whether this proposal type supports execution.
 57//
 58// Returns:
 59//   - bool: true when the proposal's action can be executed
 60func (p *ProposalActionStatus) Executable() bool { return p.executable }
 61
 62/* Setter methods */
 63// SetCanceled records whether the proposal is canceled.
 64//
 65// Parameters:
 66//   - canceled: cancellation state to store
 67func (p *ProposalActionStatus) SetCanceled(canceled bool) {
 68	p.canceled = canceled
 69}
 70
 71// SetCanceledAt records the timestamp associated with proposal cancellation.
 72//
 73// Parameters:
 74//   - canceledAt: cancellation timestamp to store
 75func (p *ProposalActionStatus) SetCanceledAt(canceledAt int64) {
 76	p.canceledAt = canceledAt
 77}
 78
 79// SetCanceledHeight records the block height associated with proposal cancellation.
 80//
 81// Parameters:
 82//   - canceledHeight: cancellation block height to store
 83func (p *ProposalActionStatus) SetCanceledHeight(canceledHeight int64) {
 84	p.canceledHeight = canceledHeight
 85}
 86
 87// SetCanceledBy records the address that canceled the proposal.
 88//
 89// Parameters:
 90//   - canceledBy: address of the actor that canceled the proposal
 91func (p *ProposalActionStatus) SetCanceledBy(canceledBy address) {
 92	p.canceledBy = canceledBy
 93}
 94
 95// SetExecuted records whether the proposal is executed.
 96//
 97// Parameters:
 98//   - executed: execution state to store
 99func (p *ProposalActionStatus) SetExecuted(executed bool) {
100	p.executed = executed
101}
102
103// SetExecutedAt records the timestamp associated with proposal execution.
104//
105// Parameters:
106//   - executedAt: execution timestamp to store
107func (p *ProposalActionStatus) SetExecutedAt(executedAt int64) {
108	p.executedAt = executedAt
109}
110
111// SetExecutedHeight records the block height associated with proposal execution.
112//
113// Parameters:
114//   - executedHeight: execution block height to store
115func (p *ProposalActionStatus) SetExecutedHeight(executedHeight int64) {
116	p.executedHeight = executedHeight
117}
118
119// SetExecutedBy records the address that executed the proposal.
120//
121// Parameters:
122//   - executedBy: address of the actor that executed the proposal
123func (p *ProposalActionStatus) SetExecutedBy(executedBy address) {
124	p.executedBy = executedBy
125}
126
127// SetExecutable records whether this proposal type supports execution.
128//
129// Parameters:
130//   - executable: execution capability to store for the proposal type
131func (p *ProposalActionStatus) SetExecutable(executable bool) {
132	p.executable = executable
133}
134
135// CanceledBy returns the address recorded as having canceled the proposal.
136// The value is meaningful when Canceled() is true; before then it is the
137// zero address unless a caller has explicitly stored another value.
138//
139// Returns:
140//   - address: address recorded for the cancellation actor
141func (p *ProposalActionStatus) CanceledBy() address {
142	return p.canceledBy
143}
144
145// IsExecuted reports whether execution has been recorded for the proposal.
146//
147// Returns:
148//   - bool: true when the proposal has been marked executed
149func (p *ProposalActionStatus) IsExecuted() bool {
150	return p.executed
151}
152
153// ExecutedBy returns the address recorded as having executed the proposal.
154// The value is meaningful when IsExecuted() is true; before then it is the
155// zero address unless a caller has explicitly stored another value.
156//
157// Returns:
158//   - address: address recorded for the execution actor
159func (p *ProposalActionStatus) ExecutedBy() address {
160	return p.executedBy
161}
162
163// IsExecutable reports whether this proposal type can be executed.
164//
165// Returns:
166//   - bool: true when execution is supported for the proposal type
167func (p *ProposalActionStatus) IsExecutable() bool {
168	return p.executable
169}
170
171// NewProposalActionStatus creates a new action status for a proposal.
172// Initializes the status with default values and the executable flag.
173//
174// Parameters:
175//   - executable: whether this proposal type can be executed
176//
177// Returns:
178//   - *ProposalActionStatus: new action status instance
179func NewProposalActionStatus(executable bool) *ProposalActionStatus {
180	return &ProposalActionStatus{
181		canceled:   false,      // Proposal starts as not canceled
182		executed:   false,      // Proposal starts as not executed
183		executable: executable, // Set based on proposal type
184	}
185}
186
187// Clone creates a deep copy of the ProposalActionStatus, or nil when the
188// receiver is nil.
189//
190// Returns:
191//   - *ProposalActionStatus: independent copy of the status, or nil for a nil receiver
192func (p *ProposalActionStatus) Clone() *ProposalActionStatus {
193	if p == nil {
194		return nil
195	}
196
197	return &ProposalActionStatus{
198		canceled:       p.canceled,
199		canceledAt:     p.canceledAt,
200		canceledHeight: p.canceledHeight,
201		canceledBy:     p.canceledBy,
202		executed:       p.executed,
203		executedAt:     p.executedAt,
204		executedHeight: p.executedHeight,
205		executedBy:     p.executedBy,
206		executable:     p.executable,
207	}
208}