Skip to main content
1

Deploy your provider

The provider is the contract that holds your inventory. Use the reference implementation as is: copy IMMProvider.sol to src/interfaces/IMMProvider.sol and BasicMMProvider.sol to src/periphery/examples/BasicMMProvider.sol in a Foundry project, then:
--interactive prompts for the deployer key. Details and custom contracts: Provider contract.
2

Fund it

Inventory is the output token of each direction you quote:
3

Register

Email support@biconomy.io:Until registration the stream returns UNREGISTERED_MARKET_MAKER.
4

Stream your ladder

Connect to wss://propamm-staging.biconomy.io, subscribe as your signer, and send a signed price-ladder per direction. Both mock tokens have 18 decimals, so 2,000 USDC per WETH is 2000e18 for WETH to USDC and 5e14 for USDC to WETH.
Each accepted message returns { "type": "ack" }. Send a new ladder with a higher nonce on every price change. Runnable client: Stream prices.
5

Read your ladder back

After Biconomy commits it, board() returns your levels with remaining equal to your top size:
Empty arrays and remaining == 0: not committed yet, expired, or (Reprice) no live anchor. Check the acks and that expiresAt leaves time for the commit.
6

Watch a fill

A fill calls executeSwap on your provider and emits MMFillExecuted on the executor. board() then shows filled up and remaining down.

Next

  • Stream prices: Rewrite and Reprice, nonces and expiry, a runnable client.
  • Risk and inventory: the four protections, how much a ladder can fill, how to stop.
  • Mainnet: change the endpoint to wss://propamm.biconomy.io, the chainId and the token addresses. Contract addresses are the same, see Addresses.