SDK Class

Complete reference for the SDK class methods.

Overview

The SDK class is the main entry point for interacting with the Poll.fun betting protocol.

Initialization

SDK.build()

Creates a new SDK instance.

typescript
import { SDK } from "@solworks/poll-sdk";
import { Connection } from "@solana/web3.js";

const sdk = SDK.build({
  connection: new Connection("https://api.devnet.solana.com"),
  wallet: walletAdapter,
  skipPreflight: false,
  commitment: "confirmed",
  maxRetries: 5,
});

Parameters:

NameTypeRequiredDescription
connectionConnectionYesSolana RPC connection
walletIWalletNoWallet adapter for signing
skipPreflightbooleanNoSkip preflight transaction checks
commitmentCommitmentNoTransaction confirmation level
maxRetriesnumberNoMax transaction retry attempts

User Methods

createUser()

Creates an onchain program user account.

typescript
const txHash = await sdk.createUser({
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
signersKeypair[]YesTransaction signers
payerOverridePublicKeyNoOverride fee payer
confirmOptionsConfirmOptionsNoConfirmation options

Returns: Promise<string> - Transaction signature

Bet Methods (V2)

initializeBetV2()

Creates a new bet (prediction market).

typescript
const txHash = await sdk.initializeBetV2({
  question: "Will Bitcoin hit $100k?",
  expectedUserCount: 10,
  minimumVoteCount: 2,
  isCreatorResolver: false,
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
questionstringYesBet question (max 280 chars)
expectedUserCountnumberYesMaximum participants
minimumVoteCountnumberYesVotes required for resolution
isCreatorResolverbooleanYesIf true, creator can resolve without votes
signersKeypair[]YesTransaction signers

Returns: Promise<string> - Transaction signature

placeWagerV2()

Places a wager on a bet.

typescript
import { Outcome } from "@solworks/poll-sdk";

const txHash = await sdk.placeWagerV2({
  bet: betPublicKey,
  amount: 25,
  side: Outcome.For,
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
betPublicKeyYesBet account address
amountnumberNo*USDC amount (human-readable)
rawAmountnumberNo*USDC amount (raw, 6 decimals)
sideOutcomeYesOutcome.For or Outcome.Against
signersKeypair[]YesTransaction signers

*One of amount or rawAmount is required.

Returns: Promise<string> - Transaction signature

initiateVoteV2()

Starts the voting period for a bet.

typescript
const txHash = await sdk.initiateVoteV2({
  bet: betPublicKey,
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
betPublicKeyYesBet account address
signersKeypair[]YesTransaction signers

Returns: Promise<string> - Transaction signature

placeVoteV2()

Casts a vote on a bet's outcome.

typescript
const txHash = await sdk.placeVoteV2({
  bet: betPublicKey,
  outcome: Outcome.For,
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
betPublicKeyYesBet account address
outcomeOutcomeYesVote for which outcome wins
signersKeypair[]YesTransaction signers

Returns: Promise<string> - Transaction signature

settleBetBatchV2()

Settles a bet in batches (for many participants).

typescript
const txHash = await sdk.settleBetBatchV2({
  bet: betPublicKey,
  batchNumber: 0,
  usersPerBatch: 10,
  signers: [wallet],
});

Parameters:

NameTypeRequiredDescription
betPublicKeyYesBet account address
batchNumbernumberYesWhich batch to settle (0-indexed)
usersPerBatchnumberYesUsers per batch
signersKeypair[]YesTransaction signers

Returns: Promise<string> - Transaction signature

closeBetV2()

Closes a bet and returns pool funds (admin only).

typescript
const txHash = await sdk.closeBetV2({
  bet: betPublicKey,
  signers: [wallet],
});

tryCancelWagerV2()

Attempts to cancel your wager (if allowed).

typescript
const txHash = await sdk.tryCancelWagerV2({
  bet: betPublicKey,
  signers: [wallet],
});

Properties

sdk.addresses

Address derivation helpers. See Addresses reference.

sdk.accounts

Account fetching helpers. See Accounts reference.

sdk.program

The underlying Anchor program instance.

sdk.connection

The Solana connection instance.

sdk.wallet

The wallet adapter instance.

Static Methods

SDK.convertRustEnumValueToString()

Converts Rust enum values to readable strings.

typescript
const statusString = SDK.convertRustEnumValueToString(bet.status);
console.log(statusString); // "Pending", "Resolving", etc.