Overview

The app uses only public instructions and reads, so anything it does can be built with the SDK and the indexer API.

Updated Nov 9, 2026

Omnipair V2 is two Solana programs, a TypeScript SDK that wraps them, and an indexer that turns their events into history and live snapshots. Everything a user can do in the app is an instruction you can send yourself; everything the app shows is a read you can make.

Writes go to the programs over RPC; reads come from the indexer.

Pick your path

The pieces

PieceWhat it isWhere
Dusk programMarkets, liquidity, credit, leverage, liquidations, governance, referrals2rYBVfGubUVbHrLeut6Dn4A9ShM695dGSPCErdsGo16Y
Leverage delegate programTake-profit, stop-loss, entry and hLP orders, executed through approval hooksAXUucZuwuCu6voVQGf6tYMQ5LoRwLr9u4ESLpiPqqHbX
@omnipair/dusk-sdkTyped writes, reads, previews, operator helpers and an indexer client, with both IDLsnpm · source
IndexerFinalized event history, live snapshots, REST, SSE and gRPC-Webomnipair/dusk-indexer
Reference keeperDual-runtime Rust and TypeScript keepers with a shared conformance suiteomnipair/dusk-keepers
Program sourceThe Anchor workspace, tests, whitepaper and verifiable buildsomnipair/dusk

Three rules that save time

  1. Pin the revision. The program, its IDL hash, the SDK version and the indexer's protocol identity travel together. The app refuses to transact when they disagree; so should you. Addresses lists the current pins.
  2. Do not sort mints. The creator's base and quote order defines a market and its price direction. Derive the market address from the mints in that order and the creator's parameter hash.
  3. Raw atoms everywhere. Amounts are integer atoms in the mint's decimals. Prices are quote per base in fixed nine-decimal NAD precision. Convert at the UI boundary only, and use the token program's own conversion for mints with UI-amount extensions.

Integration methods

Support