CanonicCanonic Docs
Documentation

Takers (MAOB API)

Overview

Takers execute against maker-provided rung liquidity using MAOB’s taker entrypoints.

From MAOB.sol, taker entrypoints are:

Buy base tokens (spend quote tokens)

  • buyBaseExactOut(baseAmount, maxQuoteIn, maxRung, deadline)
  • buyBaseExactOut(baseAmount, maxQuoteIn, deadline) (traverses all rungs)
  • buyBaseTargetIn(quoteIn, minBaseOut, maxRung, deadline)
  • buyBaseTargetIn(quoteIn, minBaseOut, deadline) (traverses all rungs)

Sell base tokens (receive quote tokens)

  • sellBaseTargetIn(baseAmount, minQuoteOut, maxRung, deadline)
  • sellBaseTargetIn(baseAmount, minQuoteOut, deadline) (traverses all rungs)
  • sellBaseExactOut(quoteOut, maxBaseIn, maxRung, deadline)
  • sellBaseExactOut(quoteOut, maxBaseIn, deadline) (traverses all rungs)

Common parameters

maxRung

Taker calls can restrict traversal to a highest rung index.

  • Lower maxRung limits how far from the midpoint you are willing to cross.
  • Using the overloads without maxRung traverses all configured rungs.

deadline

All taker functions accept a deadline:

  • If deadline == 0, the deadline check is disabled.
  • Otherwise, the call reverts if block.timestamp > deadline.

Minimum quote token checks (minQuoteTaker)

MAOB enforces a minimum quote token amount check for taker safety:

  • For “buy exact out” and “sell target in”, MAOB evaluates the trade value at the mid price and requires it to meet minQuoteTaker.
  • For “buy target in” and “sell exact out”, the input/desired quote token values are validated directly.

Buy base tokens

Buy exact base tokens out

buyBaseExactOut(baseAmount, maxQuoteIn, ...) buys an exact amount of base tokens, spending up to maxQuoteIn quote tokens.

  • If rung liquidity requires more than maxQuoteIn, the call reverts.
  • MAOB charges a taker fee in base tokens, and transfers fee to feeCollector.

Return values:

  • quoteUsed: actual quote tokens spent (gross)
  • baseFeePaid: base token fee amount

Buy with a quote token budget (target in)

buyBaseTargetIn(quoteIn, minBaseOut, ...) spends up to quoteIn quote tokens, buying as much base tokens as possible, requiring at least minBaseOut base tokens (after fee).

Return values:

  • baseOut: base tokens received (after fee)
  • baseFeePaid: base token fee amount

Sell base tokens

Sell base tokens (target in)

sellBaseTargetIn(baseAmount, minQuoteOut, ...) sells up to baseAmount base tokens into bids and requires at least minQuoteOut quote tokens (after fee).

MAOB charges a taker fee in quote tokens.

Return values:

  • quoteOut: quote tokens received (after fee)
  • quoteFeePaid: quote token fee amount

Sell for a target quote token out (exact out)

sellBaseExactOut(quoteOut, maxBaseIn, ...) attempts to receive at least quoteOut net quote tokens (after fee), spending up to maxBaseIn base tokens.

Return values:

  • baseUsed: base tokens spent
  • quoteFeePaid: quote token fee amount

Failure modes to expect

  • MAOB__TakerPaused() if taker actions are paused.
  • MAOB__InvalidDeadline() if deadline is set and has passed.
  • MAOB__InsufficientLiquidity() if not enough rung liquidity exists within traversal.
  • MAOB__MaxQuoteExceeded() / MAOB__MaxBaseExceeded() if slippage guards are breached.
  • MAOB__OracleStale() / MAOB__OraclePriceMissing() / MAOB__OracleOutOfRange() if oracle data is unusable.