Types
TypeScript type definitions used throughout the SDK.
Initialization types
InitializeSDKParams
interface InitializeSDKParams {
connection: Connection;
wallet?: IWallet;
skipPreflight?: boolean;
commitment?: Commitment;
maxRetries?: number;
}IWallet
type IWallet = {
publicKey: PublicKey;
signTransaction<T extends Transaction | VersionedTransaction>(
transaction: T
): Promise<T>;
signAllTransactions<T extends Transaction | VersionedTransaction>(
transactions: T[]
): Promise<T[]>;
};Transaction types
BaseTransactionParams
interface BaseTransactionParams {
payerOverride?: PublicKey;
signers?: Keypair[];
confirmOptions?: ConfirmOptions;
preinstructions?: TransactionInstruction[];
feePayerOverride?: PublicKey;
}ConfirmOptions
interface ConfirmOptions {
skipPreflight?: boolean;
commitment?: Commitment;
preflightCommitment?: Commitment;
maxRetries?: number;
minContextSlot?: number;
}Bet types
InitializeBetParams
interface InitializeBetParams extends BaseTransactionParams {
question: string;
expectedUserCount: number;
minimumVoteCount: number;
isCreatorResolver: boolean;
}PlaceWagerParams
interface PlaceWagerParams extends BaseTransactionParams {
bet: PublicKey;
amount?: number; // Human-readable (e.g., 10 for 10 USDC)
rawAmount?: number; // Raw lamports (e.g., 10_000_000)
side: Outcome;
}InitiateVoteParams
interface InitiateVoteParams extends BaseTransactionParams {
bet: PublicKey;
}PlaceVoteParams
interface PlaceVoteParams extends BaseTransactionParams {
bet: PublicKey;
outcome: Outcome;
}SettleBetBatchParams
interface SettleBetBatchParams extends BaseTransactionParams {
bet: PublicKey;
batchNumber: number;
usersPerBatch: number;
}Mapped types
Returned by mapper functions — use plain numbers and strings instead of BN and Rust enums.
MappedBet
interface MappedBet {
creator: string;
createdAt: number;
updatedAt: number;
resolvedAt: number;
distributedAt: number;
voteInitiatedAt: number;
status: string; // "Draft" | "Pending" | "Resolving" | etc.
resolvedOutcome: string; // "For" | "Against" | "Tied"
question: string;
expectedUserCount: number;
minimumVoteCount: number;
totalOiFor: number;
totalOiAgainst: number;
poolAddress: string;
wagers: MappedWager[];
votes: MappedVote[];
wagerId: number;
isCreatorResolver: boolean;
settledUserCount: number;
totalBatchesRequired: number;
}MappedWager
interface MappedWager {
user: string;
amount: number;
outcome: string; // "For" | "Against"
updatedAt: number;
status: string; // "Open" | "SettledWin" | "SettledLoss"
isVoteInitiator: boolean;
}MappedUser
interface MappedUser {
totalWagersCount: number;
totalWageredAmount: number;
inWagerAmount: number;
nextWagerId: number;
nextGameId: number;
}