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
Draft→Pending→Resolving→Resolved→Distributed
↓
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:
| Enum | String 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"