A Spending Mandate is a typed data structure defining the precise financial boundaries within which an agent is permitted to operate. Mandates are validated against the TreasuryMandateSchema in @moi/shared-types.
| Mandate Parameter | Type | Description | Default / Constraint |
|---|---|---|---|
mode | AgentOperatingModeEnum | Operating autonomy level: monitor, approval_required, autonomous | Required |
executionStrategy | Enum | Strategy: taker_rfq, passive_stitch_filler, hybrid | taker_rfq |
sellToken | Address | Allowed asset to convert from (e.g. cNGN) | Verified Celo token |
buyToken | Address | Target asset to convert into (e.g. USD₮) | Verified Celo token |
maxTradeAtomic | BigInt String | Maximum single-trade conversion cap in atomic units | Required by policy |
dailySellCapAtomic | BigInt String | Maximum 24-hour cumulative spend cap | Required by policy |
minimumReserveAtomic | BigInt String | Minimum balance of base token that must remain in treasury | Inviolable reserve floor |
maxSlippageBps | Number (bps) | Maximum allowable slippage in basis points (100 bps = 1.0%) | Default: 100 bps |
allowedTargets | Address Array | Strict list of contract addresses the agent may call | LimitOrderReactor (0xa9AA...) |