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 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 |
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 |