@oddmaki-protocol/sdk
v1.1.0
Published
OddMaki Protocol SDK
Downloads
1,304
Maintainers
Readme
OddMaki SDK
TypeScript SDK for the OddMaki Protocol — a fully on-chain prediction market factory on Base. Built on viem.
Install
pnpm add @oddmaki-protocol/sdk viemQuick Start
import { createOddMakiClient } from "@oddmaki-protocol/sdk";
const client = createOddMakiClient({
walletClient, // viem WalletClient
});
// Read markets
const markets = await client.public.getMarkets(venueId);
// Place a limit order — buy YES at $0.65, 100 USDC, expires in 24h
await client.trade.placeOrderSimple(marketId, outcomeId, "buy", "0.65", "100", "24h");
// Place a market order (Fill-or-Kill)
await client.trade.placeMarketOrderSimple(marketId, outcomeId, "50", "0.70", 0);Modules
The client exposes functional modules covering the full protocol:
| Module | Purpose |
|---|---|
| venue | Create and configure venues (fee structure, access control, oracle params) |
| market | Create markets and market groups, read pricing and positions |
| trade | Limit orders, market orders (FOK/FAK), batch operations, split/merge |
| public | Subgraph queries — markets, trades, orderbook, analytics, leaderboards |
| token | ERC20 approvals and balance checks |
| uma | UMA oracle lifecycle — assert, settle, report, redeem |
| accessControl | Deploy and manage access control contracts (whitelist, NFT-gated, token-gated) |
| priceMarket | Pyth-powered price markets with automatic resolution |
Trade API
Both raw and simplified interfaces are available. The simple API accepts human-readable strings:
// Limit order
await client.trade.placeOrderSimple(marketId, outcomeId, "buy", "0.65", "100", "24h");
// Market order: spend 50 USDC, max price $0.70, Fill-or-Kill
await client.trade.placeMarketOrderSimple(marketId, outcomeId, "50", "0.70", 0);
// Batch: place up to 20 orders atomically
await client.trade.batchPlaceOrdersSimple(marketId, orders);
// Cancel and replace in a single transaction
await client.trade.cancelAndReplace(cancelIds, marketId, newOrders);Subgraph Queries
The public module provides indexed reads:
// Unified feed (standalone markets + groups)
const feed = await client.public.getUnifiedMarketFeed(venueId);
// Trader profile and positions
const profile = await client.public.getTraderProfile(address);
const positions = await client.public.getTraderPositions(address);
// Leaderboard
const leaders = await client.public.getLeaderboard("totalVolume", "desc");Utilities
import { priceToTick, tickToPrice, parseAmount } from "@oddmaki-protocol/sdk";
priceToTick("0.80"); // 80n
tickToPrice(80n); // "0.80"
parseAmount("10.5"); // 10500000n (6 decimals)Development
pnpm install
pnpm run build
pnpm run test
pnpm run lintRelated
- oddmaki-core — Smart contracts
- oddmaki-subgraph — Subgraph
- oddmaki-venue-starter — Venue starter template
Links
- Protocol — oddmaki.com
- Maintainer — predictablereality.com
- Contact — [email protected]
License
MIT — Copyright (c) 2025-2026 Predictable Reality, Inc.
