> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rondo.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Every knob, its deployed default, the bound around it, and why that bound exists.

| Knob               | Default                                   | Bound           | Why the bound exists                               |
| ------------------ | ----------------------------------------- | --------------- | -------------------------------------------------- |
| `feeBps`           | 30 (0.30%)                                | ≤ 500           | A ceiling on the taker-facing cost                 |
| `bandBps`          | 300 (±3%)                                 | ≤ 2000          | How far a Fixed order may be posted from the price |
| `maxOracleAge`     | 30 min                                    | **5 min – 6 h** | See below                                          |
| `maxOrderDuration` | 30 days                                   | > 0             | Bounds how long capital can sit escrowed           |
| `maxPremiumBps`    | 200 (2%)                                  | ≤ 1000          | Caps the taker edge on pegged orders               |
| `minOrderAmount`   | 1,000 JPYC or 100,000 IDRX/IDRP · 10 USDT | ≥ 0.01 token    | Per-market; at zero the dust guard is vacuous      |

## Five-minute reference price

Every oracle-dependent action uses Orakl's `twap` function with a **300-second interval** and at
least **5 observations**. `getOraclePrice()` returns that average rather than the latest individual
round. The latest observation must also be no older than `maxOracleAge`.

If the five-minute average is unavailable, Rondo fails closed: new Fixed and Pegged orders are
blocked, as are Pegged quotes and fills. Existing Fixed fills and every cancellation remain
available because they do not need an oracle read.

## Why `maxOracleAge` is 30 minutes

The current Orakl feeds normally update much faster than 30 minutes, while the wider window avoids
halting PEG fills during a short feed delay. The configurable range is **5 minutes to 6 hours**.
The upper bound keeps freshness checks meaningful. Integrations must still use the `stale` result
returned by `getOraclePrice()`.

## Why `minOrderAmount` has a floor

`fillOrder` enforces "while an order still has at least `minOrderAmount` remaining, a partial fill
must itself release at least `minOrderAmount`". At zero that test is vacuous, so a normal-sized
order could be chipped through one-wei fills. One wei as a minimum is no better.

The floor is therefore expressed in the token's own units rather than in wei:

```
floor = 10 ** decimals(token) / 100     // 0.01 token in that token's own units
```

This is two orders of magnitude under the deployed defaults. A wei constant would necessarily be
wrong across markets whose base tokens use 18, 2, and 6 decimals.

The remainder after a valid fill is deliberately unconstrained. If an order is already below a
newly raised minimum, the partial-fill threshold is waived; changing the configuration must not
freeze an existing small remainder into an all-or-nothing fill.
