| PoolAlreadyRegistered(address) | A pool has already been registered. registerPool may only be called once |
| PoolAlreadyInitialized(address) | A pool has already been initialized. initialize may only be called once |
| PoolNotRegistered(address) | A pool has not been registered |
| PoolNotInitialized(address) | A referenced pool has not been initialized |
| HookRegistrationFailed(address,address,address) | A hook contract rejected a pool on registration |
| TokenAlreadyRegistered(IERC20) | A token was already registered (i.e.,it is a duplicate in the pool) |
| MinTokens() | The token count is below the minimum allowed |
| MaxTokens() | The token count is above the maximum allowed |
| InvalidToken() | Invalid tokens (e.g.,zero) cannot be registered |
| InvalidTokenType() | The token type given in a TokenConfig during pool registration is invalid |
| InvalidTokenConfiguration() | The data in a TokenConfig struct is inconsistent or unsupported |
| InvalidTokenDecimals() | Tokens with more than 18 decimals are not supported |
| TokensMismatch(address,address,address) | The token list passed into an operation does not match the pool tokens in the pool |
| BalanceNotSettled() | A transient accounting operation completed with outstanding token deltas |
| VaultIsNotUnlocked() | A user called a Vault function (swap,add/remove liquidity) outside the lock context |
| DynamicSwapFeeHookFailed() | The pool has returned false to the beforeSwap hook, indicating the transaction should revert |
| BeforeSwapHookFailed() | The pool has returned false to the beforeSwap hook, indicating the transaction should revert |
| AfterSwapHookFailed() | The pool has returned false to the afterSwap hook, indicating the transaction should revert |
| BeforeInitializeHookFailed() | The pool has returned false to the beforeInitialize hook, indicating the transaction should revert |
| AfterInitializeHookFailed() | The pool has returned false to the afterInitialize hook, indicating the transaction should revert |
| BeforeAddLiquidityHookFailed() | The pool has returned false to the beforeAddLiquidity hook, indicating the transaction should revert |
| AfterAddLiquidityHookFailed() | The pool has returned false to the afterAddLiquidity hook, indicating the transaction should revert |
| BeforeRemoveLiquidityHookFailed() | The pool has returned false to the beforeRemoveLiquidity hook, indicating the transaction should revert |
| AfterRemoveLiquidityHookFailed() | The pool has returned false to the afterRemoveLiquidity hook, indicating the transaction should revert |
| RouterNotTrusted() | An unauthorized Router tried to call a permissioned function (i.e.,using the Vault's token allowance) |
| AmountGivenZero() | The user tried to swap zero tokens |
| CannotSwapSameToken() | The user attempted to swap a token for itself |
| TokenNotRegistered(IERC20) | The user attempted to swap a token not in the pool |
| SwapLimit(uint256,uint256) | An amount in or out has exceeded the limit specified in the swap request |
| HookAdjustedSwapLimit(uint256,uint256) | A hook adjusted amount in or out has exceeded the limit specified in the swap request |
| TradeAmountTooSmall() | The amount given or calculated for an operation is below the minimum limit |
| InvalidAddLiquidityKind() | Add liquidity kind not supported |
| AmountInAboveMax(IERC20,uint256,uint256) | A required amountIn exceeds the maximum limit specified for the operation |
| HookAdjustedAmountInAboveMax(IERC20,uint256,uint256) | A hook adjusted amountIn exceeds the maximum limit specified for the operation |
| BptAmountOutBelowMin(uint256,uint256) | The BPT amount received from adding liquidity is below the minimum specified for the operation |
| DoesNotSupportAddLiquidityCustom() | Pool does not support adding liquidity with a customized input |
| DoesNotSupportDonation() | Pool does not support adding liquidity through donation |
| InvalidRemoveLiquidityKind() | Remove liquidity kind not supported |
| AmountOutBelowMin(IERC20,uint256,uint256) | The actual amount out is below the minimum limit specified for the operation |
| HookAdjustedAmountOutBelowMin(IERC20,uint256,uint256) | The hook adjusted amount out is below the minimum limit specified for the operation |
| BptAmountInAboveMax(uint256,uint256) | The required BPT amount in exceeds the maximum limit specified for the operation |
| DoesNotSupportRemoveLiquidityCustom() | Pool does not support removing liquidity with a customized input |
| ProtocolFeesExceedTotalCollected() | Error raised when the sum of the parts (aggregate swap or yield fee) |
| SwapFeePercentageTooLow() | Error raised when the swap fee percentage is less than the minimum allowed value |
| SwapFeePercentageTooHigh() | Error raised when the swap fee percentage exceeds the maximum allowed value |
| FeePrecisionTooHigh() | Primary fee percentages result in an aggregate fee that cannot be stored with the required precision |
| PercentageAboveMax() | A given percentage is above the maximum (usually FixedPoint.ONE,or 1e18 wei) |
| QueriesDisabled() | A user tried to execute a query operation when they were reversibly disabled |
| QueriesDisabledPermanently() | A user tried to execute a query operation when they were permanently disabled |
| PoolInRecoveryMode(address) | Cannot enable recovery mode when already enabled |
| PoolNotInRecoveryMode(address) | Cannot disable recovery mode when not enabled |
| SenderIsNotVault(address) | Error indicating the sender is not the Vault (e.g.,someone is trying to call a permissioned function) |
| VaultPauseWindowDurationTooLarge() | The caller specified a pause window period longer than the maximum |
| PauseBufferPeriodDurationTooLarge() | The caller specified a buffer period longer than the maximum |
| VaultPaused() | A user tried to perform an operation while the Vault was paused |
| VaultNotPaused() | Governance tried to unpause the Vault when it was not paused |
| VaultPauseWindowExpired() | Governance tried to pause the Vault after the pause period expired |
| PoolPaused(address) | A user tried to perform an operation involving a paused Pool |
| PoolNotPaused(address) | Governance tried to unpause the Pool when it was not paused |
| PoolPauseWindowExpired(address) | Governance tried to pause a Pool after the pause period expired |
| BufferAlreadyInitialized(IERC4626) | Buffer for the given wrapped token was already initialized |
| BufferNotInitialized(IERC4626) | Buffer for the given wrapped token was not initialized |
| NotEnoughBufferShares() | The user is trying to remove more than their allocated shares from the buffer |
| WrongUnderlyingToken(IERC4626,address) | The wrapped token asset does not match the underlying token |
| InvalidUnderlyingToken(IERC4626) | A wrapped token reported the zero address as its underlying token asset |
| WrapAmountTooSmall(IERC4626) | The amount given to wrap/unwrap was too small,which can introduce rounding issues |
| VaultBuffersArePaused() | Buffer operation attempted while vault buffers are paused |
| BufferSharesInvalidReceiver() | Buffer shares were minted to an invalid address |
| BufferSharesInvalidOwner() | Buffer shares were burned from an invalid address |
| BufferTotalSupplyTooLow(uint256) | The total supply of a buffer can't be lower than the absolute minimum |
| NotEnoughUnderlying(IERC4626,uint256,uint256) | A wrap/unwrap operation consumed more or returned less underlying tokens than it should |
| NotEnoughWrapped(IERC4626,uint256,uint256) | A wrap/unwrap operation consumed more or returned less wrapped tokens than it should |
| IssuedSharesBelowMin(uint256,uint256) | Shares issued during initialization are below the requested amount |
| DoesNotSupportUnbalancedLiquidity() | Pool does not support adding / removing liquidity with an unbalanced input |
| CannotReceiveEth() | The contract should not receive ETH |
| NotVaultDelegateCall() | The Vault extension was called by an account directly; it can only be called by the Vault via delegatecall |
| WrongVaultExtensionDeployment() | The vault extension was configured with an incorrect Vault address |
| WrongProtocolFeeControllerDeployment() | The protocol fee controller was configured with an incorrect Vault address |
| WrongVaultAdminDeployment() | The vault admin was configured with an incorrect Vault address |
| QuoteResultSpoofed() | Quote reverted with a reserved error code |