Docs

Integration guides. v1 is hand-written; we will switch to MDX-rendered content (next-mdx-remote / Contentlayer) once we have more than three sections.

For aggregators

ProNad is a drop-in RFQ source. The integration is two HTTP calls:

  1. POST /v1/rfq with (baseToken, quoteToken, baseAmount, trader, chainId).
  2. We respond with a signed quote. Submit it via the trader's wallet: PronadSettlement.settleRFQ(quote, signature).

Trader must have approved PronadSettlement for the base token amount before submission. Permit-based flows arrive in v2.

For market makers

Two ways to provide inventory to ProNad:

  • External account venue. Keep inventory in your own EOA. Grant ERC-20 allowance to your venue contract. The same account can collateralize multiple pairs — most capital-efficient.
  • Pool venue (v2). Deposit both sides into a 4626 vault. Useful when you want LPs other than yourself to participate.

Quotes are signed off-chain by an EOA you control. Rotate keys via ExternalAccountVenue.setSigner(...); the registry does not need to be touched.

Signed quote schema

EIP-712 typed data. Domain:

{
  name: "Pronad",
  version: "1",
  chainId: <network>,
  verifyingContract: <PronadSettlement>
}

Type RFQQuote:

address venue
address externalAccount
address trader
address baseToken
address quoteToken
uint256 baseAmount
uint256 quoteAmount
uint256 nonce
uint256 expiry

The complete TypeScript view (zod-validated) lives in @pronad/shared-types; the Rust mirror lives in services/quoter/src/types.rs.

Contract addresses

Monad testnet deployment record: contracts/deployments/monad-testnet.json. Mainnet TBD.