Status values
Status: Provisional
Numeric values below are read independently from each stack. The derivation functions are copied from code, preserving branch order and boundary operators. They describe the checked implementation; unresolved product decisions still apply.
Defined values
SeriesMode: stage1:evm/src/types/MercesTypes.sol
Member | Numeric value | Source |
|---|---|---|
SealedBid | 0 | stage1:evm/src/types/MercesTypes.sol#L9 |
Curve | 1 | stage1:evm/src/types/MercesTypes.sol#L10 |
RaiseState: stage1:evm/src/types/MercesTypes.sol
Member | Numeric value | Source |
|---|---|---|
Draft | 0 | stage1:evm/src/types/MercesTypes.sol#L14 |
Open | 1 | stage1:evm/src/types/MercesTypes.sol#L15 |
Reveal | 2 | stage1:evm/src/types/MercesTypes.sol#L16 |
Settling | 3 | stage1:evm/src/types/MercesTypes.sol#L17 |
Settled | 4 | stage1:evm/src/types/MercesTypes.sol#L18 |
Failed | 5 | stage1:evm/src/types/MercesTypes.sol#L19 |
Cancelled | 6 | stage1:evm/src/types/MercesTypes.sol#L20 |
SeriesStatus: stage1:evm/src/types/MercesTypes.sol
Member | Numeric value | Source |
|---|---|---|
OnTime | 0 | stage1:evm/src/types/MercesTypes.sol#L24 |
InGrace | 1 | stage1:evm/src/types/MercesTypes.sol#L25 |
Late | 2 | stage1:evm/src/types/MercesTypes.sol#L26 |
Paused | 3 | stage1:evm/src/types/MercesTypes.sol#L27 |
Retired | 4 | stage1:evm/src/types/MercesTypes.sol#L28 |
Redeemed | 5 | stage1:evm/src/types/MercesTypes.sol#L29 |
Extinguished | 6 | stage1:evm/src/types/MercesTypes.sol#L30 |
SeriesStatus: stage1:packages/sdk/src/constants.ts
Member | Numeric value | Source |
|---|---|---|
OnTime | 0 | stage1:packages/sdk/src/constants.ts#L156 |
InGrace | 1 | stage1:packages/sdk/src/constants.ts#L157 |
Late | 2 | stage1:packages/sdk/src/constants.ts#L158 |
Paused | 3 | stage1:packages/sdk/src/constants.ts#L159 |
Retired | 4 | stage1:packages/sdk/src/constants.ts#L160 |
Redeemed | 5 | stage1:packages/sdk/src/constants.ts#L161 |
Extinguished | 6 | stage1:packages/sdk/src/constants.ts#L162 |
RaiseState: stage1:packages/sdk/src/constants.ts
Member | Numeric value | Source |
|---|---|---|
Draft | 0 | stage1:packages/sdk/src/constants.ts#L166 |
Open | 1 | stage1:packages/sdk/src/constants.ts#L167 |
Reveal | 2 | stage1:packages/sdk/src/constants.ts#L168 |
Settling | 3 | stage1:packages/sdk/src/constants.ts#L169 |
Settled | 4 | stage1:packages/sdk/src/constants.ts#L170 |
Failed | 5 | stage1:packages/sdk/src/constants.ts#L171 |
Cancelled | 6 | stage1:packages/sdk/src/constants.ts#L172 |
SeriesMode: stage1:packages/sdk/src/constants.ts
Member | Numeric value | Source |
|---|---|---|
SealedBid | 0 | stage1:packages/sdk/src/constants.ts#L176 |
Curve | 1 | stage1:packages/sdk/src/constants.ts#L177 |
SeriesStatus: stage1:solana/crates/merces-common/src/status.rs
Member | Numeric value | Source |
|---|---|---|
OnTime | 0 | stage1:solana/crates/merces-common/src/status.rs#L17 |
InGrace | 1 | stage1:solana/crates/merces-common/src/status.rs#L18 |
Late | 2 | stage1:solana/crates/merces-common/src/status.rs#L19 |
Paused | 3 | stage1:solana/crates/merces-common/src/status.rs#L20 |
Retired | 4 | stage1:solana/crates/merces-common/src/status.rs#L21 |
Redeemed | 5 | stage1:solana/crates/merces-common/src/status.rs#L22 |
Extinguished | 6 | stage1:solana/crates/merces-common/src/status.rs#L23 |
Solana stored raise constants
Name | Value | Source |
|---|---|---|
RAISE_DRAFT | 0 | stage1:solana/programs/merces_protocol/src/state.rs#L46 |
RAISE_OPEN | 1 | stage1:solana/programs/merces_protocol/src/state.rs#L47 |
RAISE_SETTLING | 3 | stage1:solana/programs/merces_protocol/src/state.rs#L48 |
RAISE_SETTLED | 4 | stage1:solana/programs/merces_protocol/src/state.rs#L49 |
RAISE_FAILED | 5 | stage1:solana/programs/merces_protocol/src/state.rs#L50 |
RAISE_CANCELLED | 6 | stage1:solana/programs/merces_protocol/src/state.rs#L51 |
Derivation in source order
isTerminal: stage1:packages/reference/src/math/status.ts
Source: stage1:packages/reference/src/math/status.ts#L27.
export function isTerminal(status: SeriesStatus): boolean {
return status === SeriesStatus.Retired || status === SeriesStatus.Redeemed || status === SeriesStatus.Extinguished;
}
deriveStatus: stage1:packages/reference/src/math/status.ts
Source: stage1:packages/reference/src/math/status.ts#L62.
export function deriveStatus(c: LedgerClock, now: bigint, p: StatusParams): SeriesStatus {
if (isTerminal(c.status)) return c.status;
if (isPaused(c, now)) return SeriesStatus.Paused;
if (trueupOverdue(c, now, p)) return SeriesStatus.Late;
const cd = countdown(earliestUnpaid(c), c, now);
if (cd <= deadlineSeconds(p)) return SeriesStatus.OnTime;
if (cd <= graceSeconds(p)) return SeriesStatus.InGrace;
return SeriesStatus.Late;
}
is_terminal: stage1:solana/crates/merces-common/src/status.rs
Source: stage1:solana/crates/merces-common/src/status.rs#L40.
pub fn is_terminal(self) -> bool {
matches!(self, Self::Retired | Self::Redeemed | Self::Extinguished)
}
derive_status: stage1:solana/crates/merces-common/src/status.rs
Source: stage1:solana/crates/merces-common/src/status.rs#L115.
pub fn derive_status(inp: &StatusInputs, now: u64) -> MathResult<SeriesStatus> {
if inp.stored.is_terminal() {
return Ok(inp.stored);
}
if is_paused(inp.pauses, now) {
return Ok(SeriesStatus::Paused);
}
if trueup_overdue(inp, now) {
return Ok(SeriesStatus::Late);
}
let c = countdown(inp.pauses, inp.earliest_unpaid_period, now)?;
Ok(if c <= DEADLINE_S {
SeriesStatus::OnTime
} else if c <= GRACE_S {
SeriesStatus::InGrace
} else {
SeriesStatus::Late
})
}
_derive: stage1:evm/src/MercesIncome.sol
Source: stage1:evm/src/MercesIncome.sol#L608.
function _derive(SeriesCore memory core, Ledger storage l, Pause[] storage ps, uint256 ts)
internal
view
returns (SeriesStatus)
{
if (core.terminalStatus != 0) return SeriesStatus(core.terminalStatus);
if (core.raiseState != RaiseState.Settled) return SeriesStatus.OnTime; // nothing is due before settlement
if (_isPaused(ps, ts)) return SeriesStatus.Paused;
if (_trueupOverdue(l, ps, ts)) return SeriesStatus.Late;
uint256 c = _countdown(ps, _earliestUnpaid(l, core), ts);
if (c <= C.DEADLINE_SECONDS) return SeriesStatus.OnTime;
if (c <= C.GRACE_SECONDS) return SeriesStatus.InGrace;
return SeriesStatus.Late;
}
State transition entry points
Each row identifies a function containing a stored state assignment or a state-changing call. These are locations to inspect, not unconditional transitions: each function’s guards and called functions determine whether execution reaches the change.
Function | Source statement (first line) | Location |
|---|---|---|
openRaise | a.state = RaiseState.Open; | stage1:evm/src/MercesAuction.sol#L67 |
cancelRaise | a.state = RaiseState.Cancelled; | stage1:evm/src/MercesAuction.sol#L86 |
cancelRaise | registry().markRaiseResult(seriesId, RaiseState.Cancelled, 0, 0, 0); | stage1:evm/src/MercesAuction.sol#L87 |
beginSettlement | a.state = RaiseState.Settling; | stage1:evm/src/MercesAuction.sol#L169 |
finalizeSettlement | a.state = RaiseState.Settled; | stage1:evm/src/MercesAuction.sol#L260 |
finalizeSettlement | registry().markRaiseResult(seriesId, RaiseState.Settled, a.settlementTs, unitsSold, p); | stage1:evm/src/MercesAuction.sol#L266 |
_fail | a.state = RaiseState.Failed; | stage1:evm/src/MercesAuction.sol#L287 |
_fail | registry().markRaiseResult(seriesId, RaiseState.Failed, a.settlementTs, 0, p); | stage1:evm/src/MercesAuction.sol#L293 |
_sync | l.storedStatus = next; | stage1:evm/src/MercesIncome.sol#L546 |
_storeCore | core.raiseState = RaiseState.Draft; | stage1:evm/src/MercesRegistry.sol#L521 |
markRaiseOpened | core.raiseState = RaiseState.Open; | stage1:evm/src/MercesRegistry.sol#L677 |
markRaiseResult | core.raiseState = state; | stage1:evm/src/MercesRegistry.sol#L695 |
markTerminal | core.terminalStatus = uint8(status); | stage1:evm/src/MercesRegistry.sol#L726 |
_retire | registry().markTerminal(seriesId, SeriesStatus.Retired); | stage1:evm/src/MercesVault.sol#L191 |
redeem | registry().markTerminal(seriesId, SeriesStatus.Redeemed); | stage1:evm/src/MercesVault.sol#L429 |
extinguish | registry().markTerminal(seriesId, SeriesStatus.Extinguished); | stage1:evm/src/MercesVault.sol#L606 |
sync_status | self.status = new as u8; | stage1:solana/programs/merces_protocol/src/common.rs#L431 |
init_after_settlement | self.status = SeriesStatus::OnTime as u8; | stage1:solana/programs/merces_protocol/src/common.rs#L666 |
retire | ledger.status = SeriesStatus::Retired as u8; | stage1:solana/programs/merces_protocol/src/common.rs#L682 |
complete_curve | registry.mark_raise_result(RAISE_SETTLED, settlement_ts, units_sold, p0)?; | stage1:solana/programs/merces_protocol/src/curve.rs#L888 |
redeem | ledger.status = SeriesStatus::Redeemed as u8; | stage1:solana/programs/merces_protocol/src/exit.rs#L138 |
extinguish | ledger.status = SeriesStatus::Extinguished as u8; | stage1:solana/programs/merces_protocol/src/exit.rs#L277 |
open_raise | a.state = RAISE_OPEN; | stage1:solana/programs/merces_protocol/src/raise.rs#L409 |
cancel_raise | a.state = RAISE_CANCELLED; | stage1:solana/programs/merces_protocol/src/raise.rs#L456 |
cancel_raise | .mark_raise_result(RAISE_CANCELLED, 0, 0, 0)?; | stage1:solana/programs/merces_protocol/src/raise.rs#L482 |
begin_settlement | a.state = RAISE_SETTLING; | stage1:solana/programs/merces_protocol/src/raise.rs#L657 |
finalize_settlement | a.state = RAISE_FAILED; | stage1:solana/programs/merces_protocol/src/raise.rs#L840 |
finalize_settlement | registry.mark_raise_result(RAISE_FAILED, now, 0, clearing_price)?; | stage1:solana/programs/merces_protocol/src/raise.rs#L847 |
finalize_settlement | a.state = RAISE_SETTLED; | stage1:solana/programs/merces_protocol/src/raise.rs#L913 |
finalize_settlement | registry.mark_raise_result(RAISE_SETTLED, now, units_sold, a.clearing_price)?; | stage1:solana/programs/merces_protocol/src/raise.rs#L918 |
create_series | s.raise_state = RAISE_DRAFT; | stage1:solana/programs/merces_registry/src/lib.rs#L669 |
mark_raise_opened | s.raise_state = RAISE_OPEN; | stage1:solana/programs/merces_registry/src/lib.rs#L873 |
mark_raise_result | s.raise_state = RAISE_CANCELLED; | stage1:solana/programs/merces_registry/src/lib.rs#L906 |
mark_raise_result | s.raise_state = RAISE_FAILED; | stage1:solana/programs/merces_registry/src/lib.rs#L913 |
mark_raise_result | s.raise_state = RAISE_SETTLED; | stage1:solana/programs/merces_registry/src/lib.rs#L927 |
mark_curve_activated | s.raise_state = RAISE_OPEN; | stage1:solana/programs/merces_registry/src/lib.rs#L1031 |