Place a parlay
Create a quote, submit on-chain, and claim winnings.
Prerequisites
tournamentsBaseUrlconfigured- JWT or wallet auth for quote creation
onchainconfig for chain submission (or use calldata builders with your own signer)
Flow
import {
createBentoSdk,
jwtAuthProvider,
walletAuthProvider,
waitForParlaySettlement,
} from '@bento.fun/sdk';
const sdk = createBentoSdk({
baseUrl: process.env.BENTO_URL!,
tournamentsBaseUrl: process.env.PARLAY_TOURNMENT_URL,
auth: walletAuthProvider(() => ({ /* … */ })),
tournamentsAuth: jwtAuthProvider({
getAccessToken: () => token,
}),
onchain: {
contracts: {
parlayDiamond: '0x…',
usdc: '0x…',
/* … */
},
wallet: viemWalletClient,
},
});
// 1. Create quote
const quote = await sdk.tournaments!.parlay.createQuote({
legs: [{ marketId: '…', outcome: 'YES' }],
stake: '25',
});
// 2. Prepare (optional server-side step)
await sdk.tournaments!.parlay.prepareQuoteForPlacement(quote.id);
// 3. On-chain placement
const { hash } = await sdk.onchain!.placeParlayFromQuoteId(quote.id);
// 4. Wait for settlement (poll)
await waitForParlaySettlement(sdk.tournaments!.parlay, quote.parlayId);
// 5. Claim after win
await sdk.tournaments!.parlay.claim(quote.parlayId);Backend signer path
If your backend owns the wallet:
import { buildPlaceParlayCalldata } from '@bento.fun/sdk';
const calldata = buildPlaceParlayCalldata(quote);
await backendWallet.sendTransaction({ to: calldata.to, data: calldata.data });Related
- TypeScript SDK —
parlay,onchain - Two API hosts