| 0 | NotSigner | Account is not a signer |
| 1 | InvalidOwner | Account has wrong owner |
| 2 | InvalidAccountData | Account data is malformed or wrong size |
| 3 | InvalidAddress | Account address doesn’t match expected PDA |
| 4 | Unauthorized | Signer is not the pool authority |
| 5 | PoolNotInitialized | Pool has not been initialized yet |
| 6 | PoolAlreadyInitialized | Pool has already been initialized |
| 7 | InsufficientLiquidity | Not enough liquidity to fill the swap |
| 8 | SlippageExceeded | Output amount is below minOut |
| 9 | CurvePointsNotSorted | Curve points must be sorted by ascending x value |
| 10 | CurveDuplicateX | Curve has duplicate x values |
| 11 | CurveTooManyPoints | Curve exceeds the max points limit |
| 12 | CurveEmpty | Curve has zero points |
| 13 | InvalidMidprice | Midprice value is invalid |
| 14 | MathOverflow | Arithmetic overflow during calculation |
| 15 | ZeroSwapAmount | Swap input amount is zero |
| 16 | PoolPaused | Pool is paused |
| 17 | FeeConfigAlreadyInitialized | Global fee config already exists |
| 18 | FeeConfigNotInitialized | Global fee config doesn’t exist yet |
| 19 | NotFeeAdmin | Signer is not the fee admin |
| 20 | InvalidFeePpm | Fee PPM value is out of range |
| 21 | RiskCurveXOutOfRange | Risk curve x-value must be between 0 and Q32_ONE |
| 22 | SequenceTooOld | Oracle update sequence must be >= current sequence |
| 23 | PrefabSlotOutOfRange | Prefab slot index exceeds pool’s max slots |
| 24 | CurvePrefabsNotInitialized | CurvePrefabs account not initialized |
| 25 | PrefabSlotNotInitialized | Target prefab slot has no curve data |
| 26 | CurveMetaNotInitialized | CurveMeta account not initialized |
| 27 | SpreadConfigAlreadyInitialized | Spread config already exists |
| 28 | SpreadConfigNotInitialized | Spread config doesn’t exist yet |
| 29 | TooManySpreadTriggers | Too many spread triggers |
| 30 | SpreadConfigRequired | Pool has spread config but it wasn’t provided in accounts |
| 31 | SpreadConfigInvalidOwner | Spread config account not owned by program |
| 32 | ConfigInvalidOwner | Config account not owned by program |
| 33 | MidpriceOracleInvalidOwner | Oracle account not owned by program |
| 34 | CurveMetaInvalidOwner | CurveMeta account not owned by program |
| 35 | CurvePrefabsInvalidOwner | CurvePrefabs account not owned by program |
| 36 | FeeConfigInvalidOwner | FeeConfig account not owned by program |
| 37 | StaleOracle | Oracle hasn’t been updated within deltaStaleness slots |
| 38 | Expired | Transaction slot deadline has passed |
| 39 | NoPendingNomination | No pending authority transfer to accept |
| 40 | NominationExpired | Authority nomination has expired |
| 41 | InvalidNominee | Signer is not the nominated authority |
| 42 | NominateSelf | Cannot nominate current authority as new authority |
| 43 | InvalidNominationExpiry | Nomination expiry slot must be in the future |
| 44 | InvalidTokenProgram | Must be SPL Token or Token-2022 |
| 45 | PriceCurveXOutOfRange | Price curve x-value out of range in percent mode |
| 46 | CurveUpdatesBufferFull | Curve updates buffer is full — apply before submitting more |
| 47 | CurveUpdatesInvalidOwner | CurveUpdates account not owned by program |
| 48 | CurveMetaMismatch | CurveMeta address doesn’t belong to this pool |
| 49 | InvalidOracleMode | Oracle mode must be 0 (Authority) or 1 (Relative) |
| 50 | InvalidRiskMode | Risk mode must be 0 (Virtual) or 1 (Integrated) |
| 51 | IntegratedRiskUnsupportedInterpolation | Integrated risk mode doesn’t support this interpolation type |
| 52 | VaultsNotEmpty | Vaults must be empty before closing pool |
| 53 | InvalidPoolState | Pool state must be Initialized, Paused, or WithdrawOnly (and different from current) |
| 54 | MaxPrefabSlotsOutOfRange | Max prefab slots must be 1–16 |
| 55 | MaxCurvePointsOutOfRange | Max curve points must be 1–128 |