Enums

Enum values used throughout the SDK.

Outcome

Represents bet outcomes and wager sides.

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

Usage

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

// When placing a wager
await sdk.placeWagerV2({
  bet: betAddress,
  amount: 10,
  side: Outcome.For,  // Betting "Yes"
  signers: [wallet],
});

// When casting a vote
await sdk.placeVoteV2({
  bet: betAddress,
  outcome: Outcome.Against,  // Voting "No" wins
  signers: [wallet],
});

// 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

text
Draft → Pending → Resolving → Resolved → Distributed
                     ↓
                  Canceled/Refunded

Usage

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

const bet = await sdk.accounts.betV2.single(betAddress);

switch (bet.status) {
  case MarketStatus.Pending:
    console.log("Bet is accepting wagers");
    break;
  case MarketStatus.Resolving:
    console.log("Voting is in progress");
    break;
  case MarketStatus.Resolved:
    console.log("Bet resolved, awaiting settlement");
    break;
  case MarketStatus.Distributed:
    console.log("Payouts complete");
    break;
}

MappedGameStatus

Status for arcade-style games.

typescript
enum MappedGameStatus {
  Open = 0,                       // Accepting players
  InProgress = 1,                 // Game started
  AllScoresSubmittedNotSettled = 2,
  Settled = 3,
  Expired = 4,
  Refunded = 5,
}

MappedGameWagerStatus

Status for game wagers.

typescript
enum MappedGameWagerStatus {
  Empty = 0,
  Placed = 1,
  SubmittedScore = 2,
  VerifiedPending = 3,
  VerifiedWin = 4,
  VerifiedLoss = 5,
  Refunded = 6,
}

Converting Rust Enums

On-chain, Rust enums are stored as objects. Use the SDK helper to convert:

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

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

// Or use mapped accounts
const mappedBet = sdk.accounts.mapBetV2(bet);
console.log(mappedBet.status); // "Pending"

String Enum Values

When using mapped accounts, enums are converted to strings:

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