Enums

Enum values used throughout the SDK for outcomes, statuses, and state transitions.

Outcome

Represents bet outcomes and wager sides. Used when placing wagers and casting votes:

typescript
enum Outcome {
  NotResolvedYet = 0,  // Default state, bet not yet resolved
  For = 1,             // "Yes" / affirmative
  Against = 2,         // "No" / negative
  Tied = 3,            // Push  everyone gets refunded
}

Usage

typescript
import { Outcome } from "@solworks/poll-sdk";

// Placing a wager
await sdk.placeWagerV2({ bet, amount: 10, side: Outcome.For, signers });

// Casting a vote
await sdk.placeVoteV2({ bet, outcome: Outcome.Against, signers });

// Checking resolved outcome
if (bet.resolvedOutcome === Outcome.For) {
  console.log("For side won!");
}

MarketStatus

Represents the lifecycle state of a bet:

typescript
enum MarketStatus {
  Draft = 0,        // Initial state
  Pending = 1,      // Active, accepting wagers
  Resolving = 2,    // Voting in progress
  Resolved = 3,     // Outcome determined
  Distributed = 4,  // Payouts complete
  Canceled = 5,     // Bet canceled
  Refunded = 6,     // All wagers refunded
}
State transitions
DraftPendingResolvingResolvedDistributed
Canceled / Refunded
typescript
import { MarketStatus } from "@solworks/poll-sdk";

switch (bet.status) {
  case MarketStatus.Pending:
    console.log("Accepting wagers");
    break;
  case MarketStatus.Resolving:
    console.log("Voting in progress");
    break;
  case MarketStatus.Distributed:
    console.log("Payouts complete");
    break;
}

String values

When using sdk.accounts.mapBetV2() or other mapper functions, enums are converted to strings:

EnumString values
Outcome"NotResolvedYet", "For", "Against", "Tied"
MarketStatus"Draft", "Pending", "Resolving", "Resolved", "Distributed", "Canceled", "Refunded"
WagerStatus"Open", "SettledWin", "SettledLoss"

Converting Rust enums

On-chain, Rust enums are stored as objects like { pending: {} }. Use the SDK static helper to convert to strings:

typescript
// Raw Rust enum from on-chain account
const rawStatus = bet.status; // { pending: {} }

// Convert to string
const statusString = SDK.convertRustEnumValueToString(rawStatus);
console.log(statusString); // "Pending"

// Or use mapBetV2() to get all fields converted automatically
const mappedBet = sdk.accounts.mapBetV2(rawBet);
console.log(mappedBet.status); // "Pending"
console.log(mappedBet.resolvedOutcome); // "For" | "Against" | "Tied"