polymarket_dart 0.4.0
polymarket_dart: ^0.4.0 copied to clipboard
A Dart SDK for the Polymarket CLOB, Gamma, and Data APIs — REST, WebSocket, EIP-712 signing, HMAC auth, on-chain approvals, and order management.
polymarket_dart #
A Dart SDK for the Polymarket CLOB API — REST, WebSocket, EIP-712 signing, HMAC auth, on-chain approvals, and order management.
Features #
- 52 CLOB API methods — markets, orderbook, pricing, order management, rewards, auth
- GammaClient — 6 methods for market/event discovery, tags, and search (no auth required)
- DataClient — 5 methods for user positions, trades, activity, and holders
- EIP-712 signing — order signing for both EOA and GnosisSafe wallets
- HMAC Level 2 auth — API key management and authenticated requests
- On-chain approvals — EOA (direct Polygon RPC) and GnosisSafe (gasless relayer)
- WebSocket — live orderbook, trades, RTDS price feeds
- Pure Dart — no Flutter dependency, works in any Dart environment
Installation #
Add to your pubspec.yaml:
dependencies:
polymarket_dart: ^0.3.1
Then run:
dart pub get
Quick Start #
import 'package:polymarket_dart/polymarket_dart.dart';
void main() async {
// CLOB public API — no auth needed
final client = ClobClient();
final markets = await client.getMarkets();
print(markets.data.first.question);
client.close();
// Market discovery via Gamma API — no auth needed
final gamma = GammaClient();
final topMarkets = await gamma.getMarkets(
active: true,
order: 'volume24hr',
ascending: false,
limit: 5,
);
print(topMarkets.first.question);
gamma.close();
}
Usage #
See docs/plan/GUIDES.md for detailed examples covering public market data, GammaClient discovery, DataClient analytics, EIP-712 API key creation, placing orders (EOA and GnosisSafe), on-chain approvals, and WebSocket subscriptions.
Prerequisites #
EOA Trading #
- A Polygon wallet private key with MATIC for gas
- USDC on Polygon for collateral
Run on-chain approvals once before trading:
final wallet = PrivateKeyWalletAdapter('0x...');
await ensureEoaApprovals(wallet, onStatus: print);
GnosisSafe Trading #
- A GnosisSafe address funded with USDC
- Builder Program API credentials from polymarket.com/settings?tab=builder
Run gasless approvals once:
final relayer = RelayerClient(
wallet: wallet,
creds: BuilderCredentials(
apiKey: '...',
secret: '...',
passphrase: '...',
),
);
await relayer.runApprovals(safeAddress);
Contract Addresses (Polygon) #
| Contract | Address |
|---|---|
| USDC (USDC.e) | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 |
| CTF | 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045 |
| CTF Exchange | 0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E |
| Neg Risk Exchange | 0xC5d563A36AE78145C45a50134d48A1215220f80a |
| Neg Risk Adapter | 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296 |
Testing #
# Unit tests (no network)
dart test test/hmac_auth_test.dart test/eip712_test.dart
# CLOB public API
dart test test/clob_client_test.dart --tags integration
# Gamma API (market discovery)
dart test test/gamma_client_test.dart --tags gamma
# Data API (user analytics)
dart test test/data_client_test.dart --tags data
# L2 auth (requires PRIVATE_KEY in .env)
dart test test/auth_test.dart --tags auth
# Approvals (requires PRIVATE_KEY in .env)
dart test test/approvals_test.dart --tags approvals
# GnosisSafe relayer (requires BUILDER_* creds in .env)
dart test test/relayer_test.dart --tags relayer
# Full suite (91 tests)
dart test --tags integration
Create a .env file in the project root:
PRIVATE_KEY=0x...
FUNDER_ADDRESS=0x... # GnosisSafe address
BUILDER_API_KEY=...
BUILDER_API_SECRET=...
BUILDER_API_PASSPHRASE=...
Dependencies #
http— HTTP clientweb_socket_channel— WebSocketpointycastle— secp256k1 ECDSA, Keccak-256crypto— HMAC-SHA256convert— hex encoding
License #
MIT