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;
}