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/RefundedUsage
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:
| Enum | String Values |
|---|---|
| Outcome | "NotResolvedYet", "For", "Against", "Tied" |
| MarketStatus | "Draft", "Pending", "Resolving", "Resolved", "Distributed", "Canceled", "Refunded" |
| WagerStatus | "Open", "SettledWin", "SettledLoss" |