Hybrid AMM + orderbook options protocol (Premia Blue / v3) on Arbitrum and Ethereum. LPs supply concentrated range orders to specific (lower, upper) price bounds for a strike/expiry, while takers can route between AMM quotes and signed RFQ quotes from off-chain market makers.
- 01European-style cash-settled options
- 02range-order LPing with ticked premium pricing
- 03RFQ-style options for sophisticated market makers
- 04options vaults built on top of Premia AMM legs
- pnpm add @premia/v3-sdk viem
- forge install Premian-Labs/v3-contracts
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_ARB_RPC_URL | Client | Arbitrum One RPC endpoint for reading and writing to Premia v3 pools. |
| PREMIA_ORDERBOOK_API_URL | Client | Off-chain orderbook + indexer base — `https://orderbook.premia.finance` for mainnet quotes & posting RFQs. |
| PREMIA_API_KEY | Server | API key for the orderbook service for higher rate limits and posting market-maker quotes. Server-only. |
Use `@premia/v3-sdk` — instantiate `Premia.initialize({ provider, chainId })`, then `premia.pools.getPoolAddress({ base, quote, oracleAdapter, strike, maturity, isCallPool })` to resolve the pool. Quote a trade with `premia.options.quote({ poolAddress, size, isBuy, premiumLimit })` (returns AMM premium plus best signed RFQ quote). Execute with `premia.options.trade({...})` which calls `IPool.trade(size, isBuy, premiumLimit, referrer)`. LPs deposit via `IPool.deposit({ lower, upper, ...}, size, slippage)` — range orders define a buy-side or sell-side curve over the (`lower`, `upper`) premium range. Off-chain RFQ orders are posted to `POST /quotes` on the orderbook API and signed EIP-712.
- ⚑Premia v3 uses a Chainlink-based oracle adapter to mark options at expiry; if the oracle adapter isn't whitelisted for a token pair the pool literally cannot be deployed. Always check `OracleAdapter.isPairSupported` before quoting strikes.
- ⚑Range orders are NOT the same as Uniswap V3 LPs — they price options premium, not spot. Provide too narrow a range around current premium and you get filled within ticks; too wide and you collect almost no fees.
- ⚑Options are European and cash-settled; exercise is automatic post-expiry but settlement requires someone to call `IPool.settle`/`settlePosition`. Build a keeper or instruct LPs to claim.
- ⚑The orderbook API is centralised and rate-limited — production order routing should always fall back to on-chain AMM quote if the API is down or returns a stale signed quote (orders include a `deadline`).
- ⚑v2 (Premia Finance, ETH mainnet) and v3 (Premia Blue, Arbitrum + ETH) are separate code bases. Many older docs/SDKs reference v2 — ensure imports resolve to `@premia/v3-sdk`, not `@premia/sdk`.
- ⚑PREMIA token has a vxPREMIA staking contract; rewards are claimed via `vxPREMIA.harvest()` — ignoring this leaks yield for LPs/voters.