The on-chain Anchor error enum. Every revert maps to one of these.
| NotActive | Commitment is in a terminal state (Executed/Cancelled/Expired) or doesn't exist. |
| NotOwner | Caller is not the commitment owner. Cancel is owner-only. |
| Expired | Tried to execute past expiry_ts. Call expire_commitment instead. |
| NotYetExpired | Tried to expire before expiry_ts. Wait or have the owner cancel. |
| TriggerNotReached | Time-gated trigger not yet satisfied (TimeOnly / JupiterRoutableAfter). |
| PriceCapExceeded | Jupiter delivered tokens at a price > max_price. Keeper should retry with a better route. |
| MinFillNotMet | Jupiter delivered fewer target tokens than min_fill, or input not fully consumed. |
| UnsupportedPaymentMint | Payment mint not in the {USDC, USDT, wSOL} allowlist. |
| UnsupportedExtension | Target mint carries a forbidden Token-2022 extension (transfer fee, transfer hook, etc). |
| UnsupportedTokenProgram | Target mint is owned by neither SPL Token nor Token-2022. |
| InvalidMint | Mint account is malformed or short. |
| WrongOutputMint | Jupiter route's destination mint doesn't match commitment.target_mint. |
| WrongInputMint | Account constraint mismatch on payment_mint. |
| InvalidRouteDiscriminator | swap_data discriminator isn't sharedAccountsRoute. fillr only accepts that variant. |
| InvalidJupiterProgram | jupiter_program account key ≠ JUP6Lkb... or event-authority mismatch. |
| InsufficientRemainingAccounts | Keeper passed fewer than 3 remaining accounts (programAuthority + source + dest pool). |
| MathOverflow | u128 multiplication or u64 subtraction overflowed. Should never trigger in practice. |
| DivisionByZero | Effective price computation got zero tokens received. |
| InvalidPrice | max_price must be > 0. |
| InvalidMinFill | min_fill must be > 0. |
| InvalidPaymentAmount | payment_amount must be > 0. |
| ExpiryInPast | expiry_ts must be in the future. |
| ExpiryTooFar | expiry_ts exceeds the 30-day max. |
| BountyTooLow | keeper_bounty below MIN_KEEPER_BOUNTY (100_000 lamports = 0.0001 SOL). |
| BountyTooHigh | keeper_bounty above MAX_KEEPER_BOUNTY (1_000_000_000 lamports = 1 SOL). |
| SameMint | target_mint == payment_mint. Pick a different target. |
| BadTreasury | treasury_payment_ata isn't owned by TREASURY, or its mint doesn't match. |