Types

TypeScript type definitions for the SDK.

Initialization Types

InitializeSDKParams

Parameters for creating an SDK instance.

typescript
interface InitializeSDKParams {
  connection: Connection;
  wallet?: IWallet;
  skipPreflight?: boolean;
  commitment?: Commitment;
  maxRetries?: number;
}

IWallet

Wallet adapter interface.

typescript
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

Common parameters for all transaction methods.

typescript
interface BaseTransactionParams {
  payerOverride?: PublicKey;
  signers?: Keypair[];
  confirmOptions?: ConfirmOptions;
  preinstructions?: TransactionInstruction[];
  feePayerOverride?: PublicKey;
}

ConfirmOptions

Solana transaction confirmation options.

typescript
interface ConfirmOptions {
  skipPreflight?: boolean;
  commitment?: Commitment;
  preflightCommitment?: Commitment;
  maxRetries?: number;
  minContextSlot?: number;
}

Bet Types

InitializeBetParams

Parameters for creating a bet.

typescript
interface InitializeBetParams extends BaseTransactionParams {
  question: string;
  expectedUserCount: number;
  minimumVoteCount: number;
}

PlaceWagerParams

Parameters for placing a wager.

typescript
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

Parameters for initiating voting.

typescript
interface InitiateVoteParams extends BaseTransactionParams {
  bet: PublicKey;
}

PlaceVoteParams

Parameters for casting a vote.

typescript
interface PlaceVoteParams extends BaseTransactionParams {
  bet: PublicKey;
  outcome: Outcome;
}

SettleBetParams

Parameters for settling a bet.

typescript
interface SettleBetParams extends BaseTransactionParams {
  bet: PublicKey;
}

SettleBetBatchParams

Parameters for batch settlement.

typescript
interface SettleBetBatchParams extends BaseTransactionParams {
  bet: PublicKey;
  batchNumber: number;
  usersPerBatch: number;
}

TryCancelWagerParams

Parameters for canceling a wager.

typescript
interface TryCancelWagerParams extends BaseTransactionParams {
  bet: PublicKey;
}

Game Types

CreateGameParams

typescript
interface CreateGameParams extends BaseTransactionParams {
  expectedUserCount: number;
}

PlaceGameWagerParams

typescript
interface PlaceGameWagerParams extends BaseTransactionParams {
  game: PublicKey;
  amount: number;
}

CreateGameAndPlaceWagerParams

typescript
interface CreateGameAndPlaceWagerParams extends BaseTransactionParams {
  expectedUserCount: number;
  amount: number;
}

SubmitScoreParams

typescript
interface SubmitScoreParams extends BaseTransactionParams {
  game: PublicKey;
  score: number;
}

SettleGameParams

typescript
interface SettleGameParams extends BaseTransactionParams {
  game: PublicKey;
}

ExpireGameParams

typescript
interface ExpireGameParams extends BaseTransactionParams {
  game: PublicKey;
}

Mapped Types

MappedBet

typescript
interface MappedBet {
  creator: string;
  createdAt: number;
  updatedAt: number;
  resolvedAt: number;
  distributedAt: number;
  voteInitiatedAt: number;
  status: string;
  resolvedOutcome: string;
  question: string;
  expectedUserCount: number;
  minimumVoteCount: number;
  totalOiFor: number;
  totalOiAgainst: number;
  poolAddress: string;
  wagers: MappedWager[];
  votes: MappedVote[];
  poolBump: number;
  wagerId: number;
  isCreatorResolver: boolean;
  settledUserCount: number;
  totalBatchesRequired: number;
}

MappedWager

typescript
interface MappedWager {
  user: string;
  amount: number;
  outcome: string;
  updatedAt: number;
  status: string;
  isVoteInitiator: boolean;
}

MappedVote

typescript
interface MappedVote {
  user: string;
  outcome: string;
  createdAt: number;
}

MappedUser

typescript
interface MappedUser {
  totalWagersCount: number;
  totalWageredAmount: number;
  inWagerAmount: number;
  nextWagerId: number;
  nextGameId: number;
}

MappedProtocol

typescript
interface MappedProtocol {
  protocolBump: number;
  updateAuthority: string;
  updateBump: number;
  withdrawAuthority: string;
  totalWagersCount: number;
  totalWageredAmount: number;
  totalUsersCount: number;
  totalFeesGeneratedAmount: number;
  feeVaultAddress: string;
  feeVaultBalance: number;
  feeVaultLastUpdated: number;
  feePercentage: number;
  usdcMint: string;
  totalUniqueBets: number;
  totalGamesCount: number;
  totalWageredGamesAmount: number;
}

MappedGame

typescript
interface MappedGame {
  id: number;
  creator: string;
  createdAt: number;
  escrow: string;
  escrowBump: number;
  status: MappedGameStatus;
  expectedPlayerCount: number;
  playerCount: number;
  wagers: MappedGameWager[];
}