github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/balancerv3/vault/vault.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package vault
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	ethereum "github.com/ethereum/go-ethereum"
    12  	"github.com/ethereum/go-ethereum/accounts/abi"
    13  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    14  	"github.com/ethereum/go-ethereum/common"
    15  	"github.com/ethereum/go-ethereum/core/types"
    16  	"github.com/ethereum/go-ethereum/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = ethereum.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // AddLiquidityParams is an auto generated low-level Go binding around an user-defined struct.
    33  type AddLiquidityParams struct {
    34  	Pool            common.Address
    35  	To              common.Address
    36  	MaxAmountsIn    []*big.Int
    37  	MinBptAmountOut *big.Int
    38  	Kind            uint8
    39  	UserData        []byte
    40  }
    41  
    42  // BufferWrapOrUnwrapParams is an auto generated low-level Go binding around an user-defined struct.
    43  type BufferWrapOrUnwrapParams struct {
    44  	Kind           uint8
    45  	Direction      uint8
    46  	WrappedToken   common.Address
    47  	AmountGivenRaw *big.Int
    48  	LimitRaw       *big.Int
    49  }
    50  
    51  // HooksConfig is an auto generated low-level Go binding around an user-defined struct.
    52  type HooksConfig struct {
    53  	EnableHookAdjustedAmounts       bool
    54  	ShouldCallBeforeInitialize      bool
    55  	ShouldCallAfterInitialize       bool
    56  	ShouldCallComputeDynamicSwapFee bool
    57  	ShouldCallBeforeSwap            bool
    58  	ShouldCallAfterSwap             bool
    59  	ShouldCallBeforeAddLiquidity    bool
    60  	ShouldCallAfterAddLiquidity     bool
    61  	ShouldCallBeforeRemoveLiquidity bool
    62  	ShouldCallAfterRemoveLiquidity  bool
    63  	HooksContract                   common.Address
    64  }
    65  
    66  // LiquidityManagement is an auto generated low-level Go binding around an user-defined struct.
    67  type LiquidityManagement struct {
    68  	DisableUnbalancedLiquidity  bool
    69  	EnableAddLiquidityCustom    bool
    70  	EnableRemoveLiquidityCustom bool
    71  	EnableDonation              bool
    72  }
    73  
    74  // PoolRoleAccounts is an auto generated low-level Go binding around an user-defined struct.
    75  type PoolRoleAccounts struct {
    76  	PauseManager   common.Address
    77  	SwapFeeManager common.Address
    78  	PoolCreator    common.Address
    79  }
    80  
    81  // RemoveLiquidityParams is an auto generated low-level Go binding around an user-defined struct.
    82  type RemoveLiquidityParams struct {
    83  	Pool           common.Address
    84  	From           common.Address
    85  	MaxBptAmountIn *big.Int
    86  	MinAmountsOut  []*big.Int
    87  	Kind           uint8
    88  	UserData       []byte
    89  }
    90  
    91  // TokenConfig is an auto generated low-level Go binding around an user-defined struct.
    92  type TokenConfig struct {
    93  	Token         common.Address
    94  	TokenType     uint8
    95  	RateProvider  common.Address
    96  	PaysYieldFees bool
    97  }
    98  
    99  // VaultSwapParams is an auto generated low-level Go binding around an user-defined struct.
   100  type VaultSwapParams struct {
   101  	Kind           uint8
   102  	Pool           common.Address
   103  	TokenIn        common.Address
   104  	TokenOut       common.Address
   105  	AmountGivenRaw *big.Int
   106  	LimitRaw       *big.Int
   107  	UserData       []byte
   108  }
   109  
   110  // VaultMetaData contains all meta data concerning the Vault contract.
   111  var VaultMetaData = &bind.MetaData{
   112  	ABI: "[{\"inputs\":[{\"internalType\":\"contractIVaultExtension\",\"name\":\"vaultExtension\",\"type\":\"address\"},{\"internalType\":\"contractIAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"contractIProtocolFeeController\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AfterSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountGivenZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"AmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"AmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BalanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeAddLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeInitializeHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeRemoveLiquidityHookFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeforeSwapHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"BptAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"BptAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"BufferNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BufferSharesInvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"BufferTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotReceiveEth\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotSwapSameToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportAddLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportDonation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportRemoveLiquidityCustom\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DoesNotSupportUnbalancedLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DynamicSwapFeeHookFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeePrecisionTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountIn\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountInAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedAmountOutBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"HookAdjustedSwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"}],\"name\":\"HookRegistrationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRemoveLiquidityKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenConfiguration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"InvalidUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invariantRatio\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minInvariantRatio\",\"type\":\"uint256\"}],\"name\":\"InvariantRatioBelowMin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIssuedShares\",\"type\":\"uint256\"}],\"name\":\"IssuedSharesBelowMin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MultipleNonZeroInputs\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughBufferShares\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedUnderlyingAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualUnderlyingAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughUnderlying\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expectedWrappedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualWrappedAmount\",\"type\":\"uint256\"}],\"name\":\"NotEnoughWrapped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotStaticCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultDelegateCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PauseBufferPeriodDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentageAboveMax\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInRecoveryMode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"name\":\"PoolTotalSupplyTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeesExceedTotalCollected\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueriesDisabledPermanently\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QuoteResultSpoofed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SenderIsNotVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapFeePercentageTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"SwapLimit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"expectedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actualToken\",\"type\":\"address\"}],\"name\":\"TokensMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TradeAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultBuffersArePaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultIsNotUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultNotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowDurationTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPauseWindowExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"WrapAmountTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongProtocolFeeControllerDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"underlyingToken\",\"type\":\"address\"}],\"name\":\"WrongUnderlyingToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultAdminDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongVaultExtensionDeployment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroDivision\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateSwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"}],\"name\":\"AggregateYieldFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"issuedShares\",\"type\":\"uint256\"}],\"name\":\"BufferSharesMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enumAddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsAddedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityAddedToBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"enumRemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amountsRemovedRaw\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"swapFeeAmountsRaw\",\"type\":\"uint256[]\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountWrapped\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"LiquidityRemovedFromBuffer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PoolPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"recoveryMode\",\"type\":\"bool\"}],\"name\":\"PoolRecoveryModeStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"enumTokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contractIRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"structTokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structPoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"enableHookAdjustedAmounts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterInitialize\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallComputeDynamicSwapFee\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterSwap\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterAddLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallBeforeRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"shouldCallAfterRemoveLiquidity\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"hooksContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"structHooksConfig\",\"name\":\"hooksConfig\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"disableUnbalancedLiquidity\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableAddLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableRemoveLiquidityCustom\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enableDonation\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"structLiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIProtocolFeeController\",\"name\":\"newProtocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeeAmount\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"burnedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawnUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Unwrap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"VaultAuxiliary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultBuffersPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"VaultPausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"VaultQueriesEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositedUnderlying\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"mintedShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"bufferBalances\",\"type\":\"bytes32\"}],\"name\":\"Wrap\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"enumAddLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structAddLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enumSwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"enumWrappingDirection\",\"name\":\"direction\",\"type\":\"uint8\"},{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"}],\"internalType\":\"structBufferWrapOrUnwrapParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"erc4626BufferWrapOrUnwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculatedRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutRaw\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenCountAndIndexOfToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"enumRemoveLiquidityKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structRemoveLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountHint\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"credit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enumSwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenRaw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitRaw\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structVaultSwapParams\",\"name\":\"vaultSwapParams\",\"type\":\"tuple\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
   113  }
   114  
   115  // VaultABI is the input ABI used to generate the binding from.
   116  // Deprecated: Use VaultMetaData.ABI instead.
   117  var VaultABI = VaultMetaData.ABI
   118  
   119  // Vault is an auto generated Go binding around an Ethereum contract.
   120  type Vault struct {
   121  	VaultCaller     // Read-only binding to the contract
   122  	VaultTransactor // Write-only binding to the contract
   123  	VaultFilterer   // Log filterer for contract events
   124  }
   125  
   126  // VaultCaller is an auto generated read-only Go binding around an Ethereum contract.
   127  type VaultCaller struct {
   128  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   129  }
   130  
   131  // VaultTransactor is an auto generated write-only Go binding around an Ethereum contract.
   132  type VaultTransactor struct {
   133  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   134  }
   135  
   136  // VaultFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   137  type VaultFilterer struct {
   138  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   139  }
   140  
   141  // VaultSession is an auto generated Go binding around an Ethereum contract,
   142  // with pre-set call and transact options.
   143  type VaultSession struct {
   144  	Contract     *Vault            // Generic contract binding to set the session for
   145  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   146  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   147  }
   148  
   149  // VaultCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   150  // with pre-set call options.
   151  type VaultCallerSession struct {
   152  	Contract *VaultCaller  // Generic contract caller binding to set the session for
   153  	CallOpts bind.CallOpts // Call options to use throughout this session
   154  }
   155  
   156  // VaultTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   157  // with pre-set transact options.
   158  type VaultTransactorSession struct {
   159  	Contract     *VaultTransactor  // Generic contract transactor binding to set the session for
   160  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   161  }
   162  
   163  // VaultRaw is an auto generated low-level Go binding around an Ethereum contract.
   164  type VaultRaw struct {
   165  	Contract *Vault // Generic contract binding to access the raw methods on
   166  }
   167  
   168  // VaultCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   169  type VaultCallerRaw struct {
   170  	Contract *VaultCaller // Generic read-only contract binding to access the raw methods on
   171  }
   172  
   173  // VaultTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   174  type VaultTransactorRaw struct {
   175  	Contract *VaultTransactor // Generic write-only contract binding to access the raw methods on
   176  }
   177  
   178  // NewVault creates a new instance of Vault, bound to a specific deployed contract.
   179  func NewVault(address common.Address, backend bind.ContractBackend) (*Vault, error) {
   180  	contract, err := bindVault(address, backend, backend, backend)
   181  	if err != nil {
   182  		return nil, err
   183  	}
   184  	return &Vault{VaultCaller: VaultCaller{contract: contract}, VaultTransactor: VaultTransactor{contract: contract}, VaultFilterer: VaultFilterer{contract: contract}}, nil
   185  }
   186  
   187  // NewVaultCaller creates a new read-only instance of Vault, bound to a specific deployed contract.
   188  func NewVaultCaller(address common.Address, caller bind.ContractCaller) (*VaultCaller, error) {
   189  	contract, err := bindVault(address, caller, nil, nil)
   190  	if err != nil {
   191  		return nil, err
   192  	}
   193  	return &VaultCaller{contract: contract}, nil
   194  }
   195  
   196  // NewVaultTransactor creates a new write-only instance of Vault, bound to a specific deployed contract.
   197  func NewVaultTransactor(address common.Address, transactor bind.ContractTransactor) (*VaultTransactor, error) {
   198  	contract, err := bindVault(address, nil, transactor, nil)
   199  	if err != nil {
   200  		return nil, err
   201  	}
   202  	return &VaultTransactor{contract: contract}, nil
   203  }
   204  
   205  // NewVaultFilterer creates a new log filterer instance of Vault, bound to a specific deployed contract.
   206  func NewVaultFilterer(address common.Address, filterer bind.ContractFilterer) (*VaultFilterer, error) {
   207  	contract, err := bindVault(address, nil, nil, filterer)
   208  	if err != nil {
   209  		return nil, err
   210  	}
   211  	return &VaultFilterer{contract: contract}, nil
   212  }
   213  
   214  // bindVault binds a generic wrapper to an already deployed contract.
   215  func bindVault(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   216  	parsed, err := VaultMetaData.GetAbi()
   217  	if err != nil {
   218  		return nil, err
   219  	}
   220  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   221  }
   222  
   223  // Call invokes the (constant) contract method with params as input values and
   224  // sets the output to result. The result type might be a single field for simple
   225  // returns, a slice of interfaces for anonymous returns and a struct for named
   226  // returns.
   227  func (_Vault *VaultRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   228  	return _Vault.Contract.VaultCaller.contract.Call(opts, result, method, params...)
   229  }
   230  
   231  // Transfer initiates a plain transaction to move funds to the contract, calling
   232  // its default method if one is available.
   233  func (_Vault *VaultRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   234  	return _Vault.Contract.VaultTransactor.contract.Transfer(opts)
   235  }
   236  
   237  // Transact invokes the (paid) contract method with params as input values.
   238  func (_Vault *VaultRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   239  	return _Vault.Contract.VaultTransactor.contract.Transact(opts, method, params...)
   240  }
   241  
   242  // Call invokes the (constant) contract method with params as input values and
   243  // sets the output to result. The result type might be a single field for simple
   244  // returns, a slice of interfaces for anonymous returns and a struct for named
   245  // returns.
   246  func (_Vault *VaultCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   247  	return _Vault.Contract.contract.Call(opts, result, method, params...)
   248  }
   249  
   250  // Transfer initiates a plain transaction to move funds to the contract, calling
   251  // its default method if one is available.
   252  func (_Vault *VaultTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   253  	return _Vault.Contract.contract.Transfer(opts)
   254  }
   255  
   256  // Transact invokes the (paid) contract method with params as input values.
   257  func (_Vault *VaultTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   258  	return _Vault.Contract.contract.Transact(opts, method, params...)
   259  }
   260  
   261  // GetPoolTokenCountAndIndexOfToken is a free data retrieval call binding the contract method 0xc9c1661b.
   262  //
   263  // Solidity: function getPoolTokenCountAndIndexOfToken(address pool, address token) view returns(uint256, uint256)
   264  func (_Vault *VaultCaller) GetPoolTokenCountAndIndexOfToken(opts *bind.CallOpts, pool common.Address, token common.Address) (*big.Int, *big.Int, error) {
   265  	var out []interface{}
   266  	err := _Vault.contract.Call(opts, &out, "getPoolTokenCountAndIndexOfToken", pool, token)
   267  
   268  	if err != nil {
   269  		return *new(*big.Int), *new(*big.Int), err
   270  	}
   271  
   272  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   273  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   274  
   275  	return out0, out1, err
   276  
   277  }
   278  
   279  // GetPoolTokenCountAndIndexOfToken is a free data retrieval call binding the contract method 0xc9c1661b.
   280  //
   281  // Solidity: function getPoolTokenCountAndIndexOfToken(address pool, address token) view returns(uint256, uint256)
   282  func (_Vault *VaultSession) GetPoolTokenCountAndIndexOfToken(pool common.Address, token common.Address) (*big.Int, *big.Int, error) {
   283  	return _Vault.Contract.GetPoolTokenCountAndIndexOfToken(&_Vault.CallOpts, pool, token)
   284  }
   285  
   286  // GetPoolTokenCountAndIndexOfToken is a free data retrieval call binding the contract method 0xc9c1661b.
   287  //
   288  // Solidity: function getPoolTokenCountAndIndexOfToken(address pool, address token) view returns(uint256, uint256)
   289  func (_Vault *VaultCallerSession) GetPoolTokenCountAndIndexOfToken(pool common.Address, token common.Address) (*big.Int, *big.Int, error) {
   290  	return _Vault.Contract.GetPoolTokenCountAndIndexOfToken(&_Vault.CallOpts, pool, token)
   291  }
   292  
   293  // GetVaultExtension is a free data retrieval call binding the contract method 0xb9a8effa.
   294  //
   295  // Solidity: function getVaultExtension() view returns(address)
   296  func (_Vault *VaultCaller) GetVaultExtension(opts *bind.CallOpts) (common.Address, error) {
   297  	var out []interface{}
   298  	err := _Vault.contract.Call(opts, &out, "getVaultExtension")
   299  
   300  	if err != nil {
   301  		return *new(common.Address), err
   302  	}
   303  
   304  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   305  
   306  	return out0, err
   307  
   308  }
   309  
   310  // GetVaultExtension is a free data retrieval call binding the contract method 0xb9a8effa.
   311  //
   312  // Solidity: function getVaultExtension() view returns(address)
   313  func (_Vault *VaultSession) GetVaultExtension() (common.Address, error) {
   314  	return _Vault.Contract.GetVaultExtension(&_Vault.CallOpts)
   315  }
   316  
   317  // GetVaultExtension is a free data retrieval call binding the contract method 0xb9a8effa.
   318  //
   319  // Solidity: function getVaultExtension() view returns(address)
   320  func (_Vault *VaultCallerSession) GetVaultExtension() (common.Address, error) {
   321  	return _Vault.Contract.GetVaultExtension(&_Vault.CallOpts)
   322  }
   323  
   324  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
   325  //
   326  // Solidity: function reentrancyGuardEntered() view returns(bool)
   327  func (_Vault *VaultCaller) ReentrancyGuardEntered(opts *bind.CallOpts) (bool, error) {
   328  	var out []interface{}
   329  	err := _Vault.contract.Call(opts, &out, "reentrancyGuardEntered")
   330  
   331  	if err != nil {
   332  		return *new(bool), err
   333  	}
   334  
   335  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   336  
   337  	return out0, err
   338  
   339  }
   340  
   341  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
   342  //
   343  // Solidity: function reentrancyGuardEntered() view returns(bool)
   344  func (_Vault *VaultSession) ReentrancyGuardEntered() (bool, error) {
   345  	return _Vault.Contract.ReentrancyGuardEntered(&_Vault.CallOpts)
   346  }
   347  
   348  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
   349  //
   350  // Solidity: function reentrancyGuardEntered() view returns(bool)
   351  func (_Vault *VaultCallerSession) ReentrancyGuardEntered() (bool, error) {
   352  	return _Vault.Contract.ReentrancyGuardEntered(&_Vault.CallOpts)
   353  }
   354  
   355  // AddLiquidity is a paid mutator transaction binding the contract method 0x4af29ec4.
   356  //
   357  // Solidity: function addLiquidity((address,address,uint256[],uint256,uint8,bytes) params) returns(uint256[] amountsIn, uint256 bptAmountOut, bytes returnData)
   358  func (_Vault *VaultTransactor) AddLiquidity(opts *bind.TransactOpts, params AddLiquidityParams) (*types.Transaction, error) {
   359  	return _Vault.contract.Transact(opts, "addLiquidity", params)
   360  }
   361  
   362  // AddLiquidity is a paid mutator transaction binding the contract method 0x4af29ec4.
   363  //
   364  // Solidity: function addLiquidity((address,address,uint256[],uint256,uint8,bytes) params) returns(uint256[] amountsIn, uint256 bptAmountOut, bytes returnData)
   365  func (_Vault *VaultSession) AddLiquidity(params AddLiquidityParams) (*types.Transaction, error) {
   366  	return _Vault.Contract.AddLiquidity(&_Vault.TransactOpts, params)
   367  }
   368  
   369  // AddLiquidity is a paid mutator transaction binding the contract method 0x4af29ec4.
   370  //
   371  // Solidity: function addLiquidity((address,address,uint256[],uint256,uint8,bytes) params) returns(uint256[] amountsIn, uint256 bptAmountOut, bytes returnData)
   372  func (_Vault *VaultTransactorSession) AddLiquidity(params AddLiquidityParams) (*types.Transaction, error) {
   373  	return _Vault.Contract.AddLiquidity(&_Vault.TransactOpts, params)
   374  }
   375  
   376  // Erc4626BufferWrapOrUnwrap is a paid mutator transaction binding the contract method 0x43583be5.
   377  //
   378  // Solidity: function erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256) params) returns(uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw)
   379  func (_Vault *VaultTransactor) Erc4626BufferWrapOrUnwrap(opts *bind.TransactOpts, params BufferWrapOrUnwrapParams) (*types.Transaction, error) {
   380  	return _Vault.contract.Transact(opts, "erc4626BufferWrapOrUnwrap", params)
   381  }
   382  
   383  // Erc4626BufferWrapOrUnwrap is a paid mutator transaction binding the contract method 0x43583be5.
   384  //
   385  // Solidity: function erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256) params) returns(uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw)
   386  func (_Vault *VaultSession) Erc4626BufferWrapOrUnwrap(params BufferWrapOrUnwrapParams) (*types.Transaction, error) {
   387  	return _Vault.Contract.Erc4626BufferWrapOrUnwrap(&_Vault.TransactOpts, params)
   388  }
   389  
   390  // Erc4626BufferWrapOrUnwrap is a paid mutator transaction binding the contract method 0x43583be5.
   391  //
   392  // Solidity: function erc4626BufferWrapOrUnwrap((uint8,uint8,address,uint256,uint256) params) returns(uint256 amountCalculatedRaw, uint256 amountInRaw, uint256 amountOutRaw)
   393  func (_Vault *VaultTransactorSession) Erc4626BufferWrapOrUnwrap(params BufferWrapOrUnwrapParams) (*types.Transaction, error) {
   394  	return _Vault.Contract.Erc4626BufferWrapOrUnwrap(&_Vault.TransactOpts, params)
   395  }
   396  
   397  // RemoveLiquidity is a paid mutator transaction binding the contract method 0x21457897.
   398  //
   399  // Solidity: function removeLiquidity((address,address,uint256,uint256[],uint8,bytes) params) returns(uint256 bptAmountIn, uint256[] amountsOut, bytes returnData)
   400  func (_Vault *VaultTransactor) RemoveLiquidity(opts *bind.TransactOpts, params RemoveLiquidityParams) (*types.Transaction, error) {
   401  	return _Vault.contract.Transact(opts, "removeLiquidity", params)
   402  }
   403  
   404  // RemoveLiquidity is a paid mutator transaction binding the contract method 0x21457897.
   405  //
   406  // Solidity: function removeLiquidity((address,address,uint256,uint256[],uint8,bytes) params) returns(uint256 bptAmountIn, uint256[] amountsOut, bytes returnData)
   407  func (_Vault *VaultSession) RemoveLiquidity(params RemoveLiquidityParams) (*types.Transaction, error) {
   408  	return _Vault.Contract.RemoveLiquidity(&_Vault.TransactOpts, params)
   409  }
   410  
   411  // RemoveLiquidity is a paid mutator transaction binding the contract method 0x21457897.
   412  //
   413  // Solidity: function removeLiquidity((address,address,uint256,uint256[],uint8,bytes) params) returns(uint256 bptAmountIn, uint256[] amountsOut, bytes returnData)
   414  func (_Vault *VaultTransactorSession) RemoveLiquidity(params RemoveLiquidityParams) (*types.Transaction, error) {
   415  	return _Vault.Contract.RemoveLiquidity(&_Vault.TransactOpts, params)
   416  }
   417  
   418  // SendTo is a paid mutator transaction binding the contract method 0xae639329.
   419  //
   420  // Solidity: function sendTo(address token, address to, uint256 amount) returns()
   421  func (_Vault *VaultTransactor) SendTo(opts *bind.TransactOpts, token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   422  	return _Vault.contract.Transact(opts, "sendTo", token, to, amount)
   423  }
   424  
   425  // SendTo is a paid mutator transaction binding the contract method 0xae639329.
   426  //
   427  // Solidity: function sendTo(address token, address to, uint256 amount) returns()
   428  func (_Vault *VaultSession) SendTo(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   429  	return _Vault.Contract.SendTo(&_Vault.TransactOpts, token, to, amount)
   430  }
   431  
   432  // SendTo is a paid mutator transaction binding the contract method 0xae639329.
   433  //
   434  // Solidity: function sendTo(address token, address to, uint256 amount) returns()
   435  func (_Vault *VaultTransactorSession) SendTo(token common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   436  	return _Vault.Contract.SendTo(&_Vault.TransactOpts, token, to, amount)
   437  }
   438  
   439  // Settle is a paid mutator transaction binding the contract method 0x15afd409.
   440  //
   441  // Solidity: function settle(address token, uint256 amountHint) returns(uint256 credit)
   442  func (_Vault *VaultTransactor) Settle(opts *bind.TransactOpts, token common.Address, amountHint *big.Int) (*types.Transaction, error) {
   443  	return _Vault.contract.Transact(opts, "settle", token, amountHint)
   444  }
   445  
   446  // Settle is a paid mutator transaction binding the contract method 0x15afd409.
   447  //
   448  // Solidity: function settle(address token, uint256 amountHint) returns(uint256 credit)
   449  func (_Vault *VaultSession) Settle(token common.Address, amountHint *big.Int) (*types.Transaction, error) {
   450  	return _Vault.Contract.Settle(&_Vault.TransactOpts, token, amountHint)
   451  }
   452  
   453  // Settle is a paid mutator transaction binding the contract method 0x15afd409.
   454  //
   455  // Solidity: function settle(address token, uint256 amountHint) returns(uint256 credit)
   456  func (_Vault *VaultTransactorSession) Settle(token common.Address, amountHint *big.Int) (*types.Transaction, error) {
   457  	return _Vault.Contract.Settle(&_Vault.TransactOpts, token, amountHint)
   458  }
   459  
   460  // Swap is a paid mutator transaction binding the contract method 0x2bfb780c.
   461  //
   462  // Solidity: function swap((uint8,address,address,address,uint256,uint256,bytes) vaultSwapParams) returns(uint256 amountCalculated, uint256 amountIn, uint256 amountOut)
   463  func (_Vault *VaultTransactor) Swap(opts *bind.TransactOpts, vaultSwapParams VaultSwapParams) (*types.Transaction, error) {
   464  	return _Vault.contract.Transact(opts, "swap", vaultSwapParams)
   465  }
   466  
   467  // Swap is a paid mutator transaction binding the contract method 0x2bfb780c.
   468  //
   469  // Solidity: function swap((uint8,address,address,address,uint256,uint256,bytes) vaultSwapParams) returns(uint256 amountCalculated, uint256 amountIn, uint256 amountOut)
   470  func (_Vault *VaultSession) Swap(vaultSwapParams VaultSwapParams) (*types.Transaction, error) {
   471  	return _Vault.Contract.Swap(&_Vault.TransactOpts, vaultSwapParams)
   472  }
   473  
   474  // Swap is a paid mutator transaction binding the contract method 0x2bfb780c.
   475  //
   476  // Solidity: function swap((uint8,address,address,address,uint256,uint256,bytes) vaultSwapParams) returns(uint256 amountCalculated, uint256 amountIn, uint256 amountOut)
   477  func (_Vault *VaultTransactorSession) Swap(vaultSwapParams VaultSwapParams) (*types.Transaction, error) {
   478  	return _Vault.Contract.Swap(&_Vault.TransactOpts, vaultSwapParams)
   479  }
   480  
   481  // Transfer is a paid mutator transaction binding the contract method 0xbeabacc8.
   482  //
   483  // Solidity: function transfer(address owner, address to, uint256 amount) returns(bool)
   484  func (_Vault *VaultTransactor) Transfer(opts *bind.TransactOpts, owner common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   485  	return _Vault.contract.Transact(opts, "transfer", owner, to, amount)
   486  }
   487  
   488  // Transfer is a paid mutator transaction binding the contract method 0xbeabacc8.
   489  //
   490  // Solidity: function transfer(address owner, address to, uint256 amount) returns(bool)
   491  func (_Vault *VaultSession) Transfer(owner common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   492  	return _Vault.Contract.Transfer(&_Vault.TransactOpts, owner, to, amount)
   493  }
   494  
   495  // Transfer is a paid mutator transaction binding the contract method 0xbeabacc8.
   496  //
   497  // Solidity: function transfer(address owner, address to, uint256 amount) returns(bool)
   498  func (_Vault *VaultTransactorSession) Transfer(owner common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   499  	return _Vault.Contract.Transfer(&_Vault.TransactOpts, owner, to, amount)
   500  }
   501  
   502  // TransferFrom is a paid mutator transaction binding the contract method 0x15dacbea.
   503  //
   504  // Solidity: function transferFrom(address spender, address from, address to, uint256 amount) returns(bool)
   505  func (_Vault *VaultTransactor) TransferFrom(opts *bind.TransactOpts, spender common.Address, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   506  	return _Vault.contract.Transact(opts, "transferFrom", spender, from, to, amount)
   507  }
   508  
   509  // TransferFrom is a paid mutator transaction binding the contract method 0x15dacbea.
   510  //
   511  // Solidity: function transferFrom(address spender, address from, address to, uint256 amount) returns(bool)
   512  func (_Vault *VaultSession) TransferFrom(spender common.Address, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   513  	return _Vault.Contract.TransferFrom(&_Vault.TransactOpts, spender, from, to, amount)
   514  }
   515  
   516  // TransferFrom is a paid mutator transaction binding the contract method 0x15dacbea.
   517  //
   518  // Solidity: function transferFrom(address spender, address from, address to, uint256 amount) returns(bool)
   519  func (_Vault *VaultTransactorSession) TransferFrom(spender common.Address, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) {
   520  	return _Vault.Contract.TransferFrom(&_Vault.TransactOpts, spender, from, to, amount)
   521  }
   522  
   523  // Unlock is a paid mutator transaction binding the contract method 0x48c89491.
   524  //
   525  // Solidity: function unlock(bytes data) returns(bytes result)
   526  func (_Vault *VaultTransactor) Unlock(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) {
   527  	return _Vault.contract.Transact(opts, "unlock", data)
   528  }
   529  
   530  // Unlock is a paid mutator transaction binding the contract method 0x48c89491.
   531  //
   532  // Solidity: function unlock(bytes data) returns(bytes result)
   533  func (_Vault *VaultSession) Unlock(data []byte) (*types.Transaction, error) {
   534  	return _Vault.Contract.Unlock(&_Vault.TransactOpts, data)
   535  }
   536  
   537  // Unlock is a paid mutator transaction binding the contract method 0x48c89491.
   538  //
   539  // Solidity: function unlock(bytes data) returns(bytes result)
   540  func (_Vault *VaultTransactorSession) Unlock(data []byte) (*types.Transaction, error) {
   541  	return _Vault.Contract.Unlock(&_Vault.TransactOpts, data)
   542  }
   543  
   544  // Fallback is a paid mutator transaction binding the contract fallback function.
   545  //
   546  // Solidity: fallback() payable returns()
   547  func (_Vault *VaultTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
   548  	return _Vault.contract.RawTransact(opts, calldata)
   549  }
   550  
   551  // Fallback is a paid mutator transaction binding the contract fallback function.
   552  //
   553  // Solidity: fallback() payable returns()
   554  func (_Vault *VaultSession) Fallback(calldata []byte) (*types.Transaction, error) {
   555  	return _Vault.Contract.Fallback(&_Vault.TransactOpts, calldata)
   556  }
   557  
   558  // Fallback is a paid mutator transaction binding the contract fallback function.
   559  //
   560  // Solidity: fallback() payable returns()
   561  func (_Vault *VaultTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
   562  	return _Vault.Contract.Fallback(&_Vault.TransactOpts, calldata)
   563  }
   564  
   565  // Receive is a paid mutator transaction binding the contract receive function.
   566  //
   567  // Solidity: receive() payable returns()
   568  func (_Vault *VaultTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) {
   569  	return _Vault.contract.RawTransact(opts, nil) // calldata is disallowed for receive function
   570  }
   571  
   572  // Receive is a paid mutator transaction binding the contract receive function.
   573  //
   574  // Solidity: receive() payable returns()
   575  func (_Vault *VaultSession) Receive() (*types.Transaction, error) {
   576  	return _Vault.Contract.Receive(&_Vault.TransactOpts)
   577  }
   578  
   579  // Receive is a paid mutator transaction binding the contract receive function.
   580  //
   581  // Solidity: receive() payable returns()
   582  func (_Vault *VaultTransactorSession) Receive() (*types.Transaction, error) {
   583  	return _Vault.Contract.Receive(&_Vault.TransactOpts)
   584  }
   585  
   586  // VaultAggregateSwapFeePercentageChangedIterator is returned from FilterAggregateSwapFeePercentageChanged and is used to iterate over the raw logs and unpacked data for AggregateSwapFeePercentageChanged events raised by the Vault contract.
   587  type VaultAggregateSwapFeePercentageChangedIterator struct {
   588  	Event *VaultAggregateSwapFeePercentageChanged // Event containing the contract specifics and raw log
   589  
   590  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   591  	event    string              // Event name to use for unpacking event data
   592  
   593  	logs chan types.Log        // Log channel receiving the found contract events
   594  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   595  	done bool                  // Whether the subscription completed delivering logs
   596  	fail error                 // Occurred error to stop iteration
   597  }
   598  
   599  // Next advances the iterator to the subsequent event, returning whether there
   600  // are any more events found. In case of a retrieval or parsing error, false is
   601  // returned and Error() can be queried for the exact failure.
   602  func (it *VaultAggregateSwapFeePercentageChangedIterator) Next() bool {
   603  	// If the iterator failed, stop iterating
   604  	if it.fail != nil {
   605  		return false
   606  	}
   607  	// If the iterator completed, deliver directly whatever's available
   608  	if it.done {
   609  		select {
   610  		case log := <-it.logs:
   611  			it.Event = new(VaultAggregateSwapFeePercentageChanged)
   612  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   613  				it.fail = err
   614  				return false
   615  			}
   616  			it.Event.Raw = log
   617  			return true
   618  
   619  		default:
   620  			return false
   621  		}
   622  	}
   623  	// Iterator still in progress, wait for either a data or an error event
   624  	select {
   625  	case log := <-it.logs:
   626  		it.Event = new(VaultAggregateSwapFeePercentageChanged)
   627  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   628  			it.fail = err
   629  			return false
   630  		}
   631  		it.Event.Raw = log
   632  		return true
   633  
   634  	case err := <-it.sub.Err():
   635  		it.done = true
   636  		it.fail = err
   637  		return it.Next()
   638  	}
   639  }
   640  
   641  // Error returns any retrieval or parsing error occurred during filtering.
   642  func (it *VaultAggregateSwapFeePercentageChangedIterator) Error() error {
   643  	return it.fail
   644  }
   645  
   646  // Close terminates the iteration process, releasing any pending underlying
   647  // resources.
   648  func (it *VaultAggregateSwapFeePercentageChangedIterator) Close() error {
   649  	it.sub.Unsubscribe()
   650  	return nil
   651  }
   652  
   653  // VaultAggregateSwapFeePercentageChanged represents a AggregateSwapFeePercentageChanged event raised by the Vault contract.
   654  type VaultAggregateSwapFeePercentageChanged struct {
   655  	Pool                       common.Address
   656  	AggregateSwapFeePercentage *big.Int
   657  	Raw                        types.Log // Blockchain specific contextual infos
   658  }
   659  
   660  // FilterAggregateSwapFeePercentageChanged is a free log retrieval operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
   661  //
   662  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
   663  func (_Vault *VaultFilterer) FilterAggregateSwapFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultAggregateSwapFeePercentageChangedIterator, error) {
   664  
   665  	var poolRule []interface{}
   666  	for _, poolItem := range pool {
   667  		poolRule = append(poolRule, poolItem)
   668  	}
   669  
   670  	logs, sub, err := _Vault.contract.FilterLogs(opts, "AggregateSwapFeePercentageChanged", poolRule)
   671  	if err != nil {
   672  		return nil, err
   673  	}
   674  	return &VaultAggregateSwapFeePercentageChangedIterator{contract: _Vault.contract, event: "AggregateSwapFeePercentageChanged", logs: logs, sub: sub}, nil
   675  }
   676  
   677  // WatchAggregateSwapFeePercentageChanged is a free log subscription operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
   678  //
   679  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
   680  func (_Vault *VaultFilterer) WatchAggregateSwapFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultAggregateSwapFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
   681  
   682  	var poolRule []interface{}
   683  	for _, poolItem := range pool {
   684  		poolRule = append(poolRule, poolItem)
   685  	}
   686  
   687  	logs, sub, err := _Vault.contract.WatchLogs(opts, "AggregateSwapFeePercentageChanged", poolRule)
   688  	if err != nil {
   689  		return nil, err
   690  	}
   691  	return event.NewSubscription(func(quit <-chan struct{}) error {
   692  		defer sub.Unsubscribe()
   693  		for {
   694  			select {
   695  			case log := <-logs:
   696  				// New log arrived, parse the event and forward to the user
   697  				event := new(VaultAggregateSwapFeePercentageChanged)
   698  				if err := _Vault.contract.UnpackLog(event, "AggregateSwapFeePercentageChanged", log); err != nil {
   699  					return err
   700  				}
   701  				event.Raw = log
   702  
   703  				select {
   704  				case sink <- event:
   705  				case err := <-sub.Err():
   706  					return err
   707  				case <-quit:
   708  					return nil
   709  				}
   710  			case err := <-sub.Err():
   711  				return err
   712  			case <-quit:
   713  				return nil
   714  			}
   715  		}
   716  	}), nil
   717  }
   718  
   719  // ParseAggregateSwapFeePercentageChanged is a log parse operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
   720  //
   721  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
   722  func (_Vault *VaultFilterer) ParseAggregateSwapFeePercentageChanged(log types.Log) (*VaultAggregateSwapFeePercentageChanged, error) {
   723  	event := new(VaultAggregateSwapFeePercentageChanged)
   724  	if err := _Vault.contract.UnpackLog(event, "AggregateSwapFeePercentageChanged", log); err != nil {
   725  		return nil, err
   726  	}
   727  	event.Raw = log
   728  	return event, nil
   729  }
   730  
   731  // VaultAggregateYieldFeePercentageChangedIterator is returned from FilterAggregateYieldFeePercentageChanged and is used to iterate over the raw logs and unpacked data for AggregateYieldFeePercentageChanged events raised by the Vault contract.
   732  type VaultAggregateYieldFeePercentageChangedIterator struct {
   733  	Event *VaultAggregateYieldFeePercentageChanged // Event containing the contract specifics and raw log
   734  
   735  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   736  	event    string              // Event name to use for unpacking event data
   737  
   738  	logs chan types.Log        // Log channel receiving the found contract events
   739  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   740  	done bool                  // Whether the subscription completed delivering logs
   741  	fail error                 // Occurred error to stop iteration
   742  }
   743  
   744  // Next advances the iterator to the subsequent event, returning whether there
   745  // are any more events found. In case of a retrieval or parsing error, false is
   746  // returned and Error() can be queried for the exact failure.
   747  func (it *VaultAggregateYieldFeePercentageChangedIterator) Next() bool {
   748  	// If the iterator failed, stop iterating
   749  	if it.fail != nil {
   750  		return false
   751  	}
   752  	// If the iterator completed, deliver directly whatever's available
   753  	if it.done {
   754  		select {
   755  		case log := <-it.logs:
   756  			it.Event = new(VaultAggregateYieldFeePercentageChanged)
   757  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   758  				it.fail = err
   759  				return false
   760  			}
   761  			it.Event.Raw = log
   762  			return true
   763  
   764  		default:
   765  			return false
   766  		}
   767  	}
   768  	// Iterator still in progress, wait for either a data or an error event
   769  	select {
   770  	case log := <-it.logs:
   771  		it.Event = new(VaultAggregateYieldFeePercentageChanged)
   772  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   773  			it.fail = err
   774  			return false
   775  		}
   776  		it.Event.Raw = log
   777  		return true
   778  
   779  	case err := <-it.sub.Err():
   780  		it.done = true
   781  		it.fail = err
   782  		return it.Next()
   783  	}
   784  }
   785  
   786  // Error returns any retrieval or parsing error occurred during filtering.
   787  func (it *VaultAggregateYieldFeePercentageChangedIterator) Error() error {
   788  	return it.fail
   789  }
   790  
   791  // Close terminates the iteration process, releasing any pending underlying
   792  // resources.
   793  func (it *VaultAggregateYieldFeePercentageChangedIterator) Close() error {
   794  	it.sub.Unsubscribe()
   795  	return nil
   796  }
   797  
   798  // VaultAggregateYieldFeePercentageChanged represents a AggregateYieldFeePercentageChanged event raised by the Vault contract.
   799  type VaultAggregateYieldFeePercentageChanged struct {
   800  	Pool                        common.Address
   801  	AggregateYieldFeePercentage *big.Int
   802  	Raw                         types.Log // Blockchain specific contextual infos
   803  }
   804  
   805  // FilterAggregateYieldFeePercentageChanged is a free log retrieval operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
   806  //
   807  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
   808  func (_Vault *VaultFilterer) FilterAggregateYieldFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultAggregateYieldFeePercentageChangedIterator, error) {
   809  
   810  	var poolRule []interface{}
   811  	for _, poolItem := range pool {
   812  		poolRule = append(poolRule, poolItem)
   813  	}
   814  
   815  	logs, sub, err := _Vault.contract.FilterLogs(opts, "AggregateYieldFeePercentageChanged", poolRule)
   816  	if err != nil {
   817  		return nil, err
   818  	}
   819  	return &VaultAggregateYieldFeePercentageChangedIterator{contract: _Vault.contract, event: "AggregateYieldFeePercentageChanged", logs: logs, sub: sub}, nil
   820  }
   821  
   822  // WatchAggregateYieldFeePercentageChanged is a free log subscription operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
   823  //
   824  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
   825  func (_Vault *VaultFilterer) WatchAggregateYieldFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultAggregateYieldFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
   826  
   827  	var poolRule []interface{}
   828  	for _, poolItem := range pool {
   829  		poolRule = append(poolRule, poolItem)
   830  	}
   831  
   832  	logs, sub, err := _Vault.contract.WatchLogs(opts, "AggregateYieldFeePercentageChanged", poolRule)
   833  	if err != nil {
   834  		return nil, err
   835  	}
   836  	return event.NewSubscription(func(quit <-chan struct{}) error {
   837  		defer sub.Unsubscribe()
   838  		for {
   839  			select {
   840  			case log := <-logs:
   841  				// New log arrived, parse the event and forward to the user
   842  				event := new(VaultAggregateYieldFeePercentageChanged)
   843  				if err := _Vault.contract.UnpackLog(event, "AggregateYieldFeePercentageChanged", log); err != nil {
   844  					return err
   845  				}
   846  				event.Raw = log
   847  
   848  				select {
   849  				case sink <- event:
   850  				case err := <-sub.Err():
   851  					return err
   852  				case <-quit:
   853  					return nil
   854  				}
   855  			case err := <-sub.Err():
   856  				return err
   857  			case <-quit:
   858  				return nil
   859  			}
   860  		}
   861  	}), nil
   862  }
   863  
   864  // ParseAggregateYieldFeePercentageChanged is a log parse operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
   865  //
   866  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
   867  func (_Vault *VaultFilterer) ParseAggregateYieldFeePercentageChanged(log types.Log) (*VaultAggregateYieldFeePercentageChanged, error) {
   868  	event := new(VaultAggregateYieldFeePercentageChanged)
   869  	if err := _Vault.contract.UnpackLog(event, "AggregateYieldFeePercentageChanged", log); err != nil {
   870  		return nil, err
   871  	}
   872  	event.Raw = log
   873  	return event, nil
   874  }
   875  
   876  // VaultApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Vault contract.
   877  type VaultApprovalIterator struct {
   878  	Event *VaultApproval // Event containing the contract specifics and raw log
   879  
   880  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   881  	event    string              // Event name to use for unpacking event data
   882  
   883  	logs chan types.Log        // Log channel receiving the found contract events
   884  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   885  	done bool                  // Whether the subscription completed delivering logs
   886  	fail error                 // Occurred error to stop iteration
   887  }
   888  
   889  // Next advances the iterator to the subsequent event, returning whether there
   890  // are any more events found. In case of a retrieval or parsing error, false is
   891  // returned and Error() can be queried for the exact failure.
   892  func (it *VaultApprovalIterator) Next() bool {
   893  	// If the iterator failed, stop iterating
   894  	if it.fail != nil {
   895  		return false
   896  	}
   897  	// If the iterator completed, deliver directly whatever's available
   898  	if it.done {
   899  		select {
   900  		case log := <-it.logs:
   901  			it.Event = new(VaultApproval)
   902  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   903  				it.fail = err
   904  				return false
   905  			}
   906  			it.Event.Raw = log
   907  			return true
   908  
   909  		default:
   910  			return false
   911  		}
   912  	}
   913  	// Iterator still in progress, wait for either a data or an error event
   914  	select {
   915  	case log := <-it.logs:
   916  		it.Event = new(VaultApproval)
   917  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   918  			it.fail = err
   919  			return false
   920  		}
   921  		it.Event.Raw = log
   922  		return true
   923  
   924  	case err := <-it.sub.Err():
   925  		it.done = true
   926  		it.fail = err
   927  		return it.Next()
   928  	}
   929  }
   930  
   931  // Error returns any retrieval or parsing error occurred during filtering.
   932  func (it *VaultApprovalIterator) Error() error {
   933  	return it.fail
   934  }
   935  
   936  // Close terminates the iteration process, releasing any pending underlying
   937  // resources.
   938  func (it *VaultApprovalIterator) Close() error {
   939  	it.sub.Unsubscribe()
   940  	return nil
   941  }
   942  
   943  // VaultApproval represents a Approval event raised by the Vault contract.
   944  type VaultApproval struct {
   945  	Pool    common.Address
   946  	Owner   common.Address
   947  	Spender common.Address
   948  	Value   *big.Int
   949  	Raw     types.Log // Blockchain specific contextual infos
   950  }
   951  
   952  // FilterApproval is a free log retrieval operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
   953  //
   954  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
   955  func (_Vault *VaultFilterer) FilterApproval(opts *bind.FilterOpts, pool []common.Address, owner []common.Address, spender []common.Address) (*VaultApprovalIterator, error) {
   956  
   957  	var poolRule []interface{}
   958  	for _, poolItem := range pool {
   959  		poolRule = append(poolRule, poolItem)
   960  	}
   961  	var ownerRule []interface{}
   962  	for _, ownerItem := range owner {
   963  		ownerRule = append(ownerRule, ownerItem)
   964  	}
   965  	var spenderRule []interface{}
   966  	for _, spenderItem := range spender {
   967  		spenderRule = append(spenderRule, spenderItem)
   968  	}
   969  
   970  	logs, sub, err := _Vault.contract.FilterLogs(opts, "Approval", poolRule, ownerRule, spenderRule)
   971  	if err != nil {
   972  		return nil, err
   973  	}
   974  	return &VaultApprovalIterator{contract: _Vault.contract, event: "Approval", logs: logs, sub: sub}, nil
   975  }
   976  
   977  // WatchApproval is a free log subscription operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
   978  //
   979  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
   980  func (_Vault *VaultFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *VaultApproval, pool []common.Address, owner []common.Address, spender []common.Address) (event.Subscription, error) {
   981  
   982  	var poolRule []interface{}
   983  	for _, poolItem := range pool {
   984  		poolRule = append(poolRule, poolItem)
   985  	}
   986  	var ownerRule []interface{}
   987  	for _, ownerItem := range owner {
   988  		ownerRule = append(ownerRule, ownerItem)
   989  	}
   990  	var spenderRule []interface{}
   991  	for _, spenderItem := range spender {
   992  		spenderRule = append(spenderRule, spenderItem)
   993  	}
   994  
   995  	logs, sub, err := _Vault.contract.WatchLogs(opts, "Approval", poolRule, ownerRule, spenderRule)
   996  	if err != nil {
   997  		return nil, err
   998  	}
   999  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1000  		defer sub.Unsubscribe()
  1001  		for {
  1002  			select {
  1003  			case log := <-logs:
  1004  				// New log arrived, parse the event and forward to the user
  1005  				event := new(VaultApproval)
  1006  				if err := _Vault.contract.UnpackLog(event, "Approval", log); err != nil {
  1007  					return err
  1008  				}
  1009  				event.Raw = log
  1010  
  1011  				select {
  1012  				case sink <- event:
  1013  				case err := <-sub.Err():
  1014  					return err
  1015  				case <-quit:
  1016  					return nil
  1017  				}
  1018  			case err := <-sub.Err():
  1019  				return err
  1020  			case <-quit:
  1021  				return nil
  1022  			}
  1023  		}
  1024  	}), nil
  1025  }
  1026  
  1027  // ParseApproval is a log parse operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
  1028  //
  1029  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
  1030  func (_Vault *VaultFilterer) ParseApproval(log types.Log) (*VaultApproval, error) {
  1031  	event := new(VaultApproval)
  1032  	if err := _Vault.contract.UnpackLog(event, "Approval", log); err != nil {
  1033  		return nil, err
  1034  	}
  1035  	event.Raw = log
  1036  	return event, nil
  1037  }
  1038  
  1039  // VaultAuthorizerChangedIterator is returned from FilterAuthorizerChanged and is used to iterate over the raw logs and unpacked data for AuthorizerChanged events raised by the Vault contract.
  1040  type VaultAuthorizerChangedIterator struct {
  1041  	Event *VaultAuthorizerChanged // Event containing the contract specifics and raw log
  1042  
  1043  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1044  	event    string              // Event name to use for unpacking event data
  1045  
  1046  	logs chan types.Log        // Log channel receiving the found contract events
  1047  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1048  	done bool                  // Whether the subscription completed delivering logs
  1049  	fail error                 // Occurred error to stop iteration
  1050  }
  1051  
  1052  // Next advances the iterator to the subsequent event, returning whether there
  1053  // are any more events found. In case of a retrieval or parsing error, false is
  1054  // returned and Error() can be queried for the exact failure.
  1055  func (it *VaultAuthorizerChangedIterator) Next() bool {
  1056  	// If the iterator failed, stop iterating
  1057  	if it.fail != nil {
  1058  		return false
  1059  	}
  1060  	// If the iterator completed, deliver directly whatever's available
  1061  	if it.done {
  1062  		select {
  1063  		case log := <-it.logs:
  1064  			it.Event = new(VaultAuthorizerChanged)
  1065  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1066  				it.fail = err
  1067  				return false
  1068  			}
  1069  			it.Event.Raw = log
  1070  			return true
  1071  
  1072  		default:
  1073  			return false
  1074  		}
  1075  	}
  1076  	// Iterator still in progress, wait for either a data or an error event
  1077  	select {
  1078  	case log := <-it.logs:
  1079  		it.Event = new(VaultAuthorizerChanged)
  1080  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1081  			it.fail = err
  1082  			return false
  1083  		}
  1084  		it.Event.Raw = log
  1085  		return true
  1086  
  1087  	case err := <-it.sub.Err():
  1088  		it.done = true
  1089  		it.fail = err
  1090  		return it.Next()
  1091  	}
  1092  }
  1093  
  1094  // Error returns any retrieval or parsing error occurred during filtering.
  1095  func (it *VaultAuthorizerChangedIterator) Error() error {
  1096  	return it.fail
  1097  }
  1098  
  1099  // Close terminates the iteration process, releasing any pending underlying
  1100  // resources.
  1101  func (it *VaultAuthorizerChangedIterator) Close() error {
  1102  	it.sub.Unsubscribe()
  1103  	return nil
  1104  }
  1105  
  1106  // VaultAuthorizerChanged represents a AuthorizerChanged event raised by the Vault contract.
  1107  type VaultAuthorizerChanged struct {
  1108  	NewAuthorizer common.Address
  1109  	Raw           types.Log // Blockchain specific contextual infos
  1110  }
  1111  
  1112  // FilterAuthorizerChanged is a free log retrieval operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1113  //
  1114  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1115  func (_Vault *VaultFilterer) FilterAuthorizerChanged(opts *bind.FilterOpts, newAuthorizer []common.Address) (*VaultAuthorizerChangedIterator, error) {
  1116  
  1117  	var newAuthorizerRule []interface{}
  1118  	for _, newAuthorizerItem := range newAuthorizer {
  1119  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  1120  	}
  1121  
  1122  	logs, sub, err := _Vault.contract.FilterLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  1123  	if err != nil {
  1124  		return nil, err
  1125  	}
  1126  	return &VaultAuthorizerChangedIterator{contract: _Vault.contract, event: "AuthorizerChanged", logs: logs, sub: sub}, nil
  1127  }
  1128  
  1129  // WatchAuthorizerChanged is a free log subscription operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1130  //
  1131  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1132  func (_Vault *VaultFilterer) WatchAuthorizerChanged(opts *bind.WatchOpts, sink chan<- *VaultAuthorizerChanged, newAuthorizer []common.Address) (event.Subscription, error) {
  1133  
  1134  	var newAuthorizerRule []interface{}
  1135  	for _, newAuthorizerItem := range newAuthorizer {
  1136  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  1137  	}
  1138  
  1139  	logs, sub, err := _Vault.contract.WatchLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  1140  	if err != nil {
  1141  		return nil, err
  1142  	}
  1143  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1144  		defer sub.Unsubscribe()
  1145  		for {
  1146  			select {
  1147  			case log := <-logs:
  1148  				// New log arrived, parse the event and forward to the user
  1149  				event := new(VaultAuthorizerChanged)
  1150  				if err := _Vault.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  1151  					return err
  1152  				}
  1153  				event.Raw = log
  1154  
  1155  				select {
  1156  				case sink <- event:
  1157  				case err := <-sub.Err():
  1158  					return err
  1159  				case <-quit:
  1160  					return nil
  1161  				}
  1162  			case err := <-sub.Err():
  1163  				return err
  1164  			case <-quit:
  1165  				return nil
  1166  			}
  1167  		}
  1168  	}), nil
  1169  }
  1170  
  1171  // ParseAuthorizerChanged is a log parse operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1172  //
  1173  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1174  func (_Vault *VaultFilterer) ParseAuthorizerChanged(log types.Log) (*VaultAuthorizerChanged, error) {
  1175  	event := new(VaultAuthorizerChanged)
  1176  	if err := _Vault.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  1177  		return nil, err
  1178  	}
  1179  	event.Raw = log
  1180  	return event, nil
  1181  }
  1182  
  1183  // VaultBufferSharesBurnedIterator is returned from FilterBufferSharesBurned and is used to iterate over the raw logs and unpacked data for BufferSharesBurned events raised by the Vault contract.
  1184  type VaultBufferSharesBurnedIterator struct {
  1185  	Event *VaultBufferSharesBurned // Event containing the contract specifics and raw log
  1186  
  1187  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1188  	event    string              // Event name to use for unpacking event data
  1189  
  1190  	logs chan types.Log        // Log channel receiving the found contract events
  1191  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1192  	done bool                  // Whether the subscription completed delivering logs
  1193  	fail error                 // Occurred error to stop iteration
  1194  }
  1195  
  1196  // Next advances the iterator to the subsequent event, returning whether there
  1197  // are any more events found. In case of a retrieval or parsing error, false is
  1198  // returned and Error() can be queried for the exact failure.
  1199  func (it *VaultBufferSharesBurnedIterator) Next() bool {
  1200  	// If the iterator failed, stop iterating
  1201  	if it.fail != nil {
  1202  		return false
  1203  	}
  1204  	// If the iterator completed, deliver directly whatever's available
  1205  	if it.done {
  1206  		select {
  1207  		case log := <-it.logs:
  1208  			it.Event = new(VaultBufferSharesBurned)
  1209  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1210  				it.fail = err
  1211  				return false
  1212  			}
  1213  			it.Event.Raw = log
  1214  			return true
  1215  
  1216  		default:
  1217  			return false
  1218  		}
  1219  	}
  1220  	// Iterator still in progress, wait for either a data or an error event
  1221  	select {
  1222  	case log := <-it.logs:
  1223  		it.Event = new(VaultBufferSharesBurned)
  1224  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1225  			it.fail = err
  1226  			return false
  1227  		}
  1228  		it.Event.Raw = log
  1229  		return true
  1230  
  1231  	case err := <-it.sub.Err():
  1232  		it.done = true
  1233  		it.fail = err
  1234  		return it.Next()
  1235  	}
  1236  }
  1237  
  1238  // Error returns any retrieval or parsing error occurred during filtering.
  1239  func (it *VaultBufferSharesBurnedIterator) Error() error {
  1240  	return it.fail
  1241  }
  1242  
  1243  // Close terminates the iteration process, releasing any pending underlying
  1244  // resources.
  1245  func (it *VaultBufferSharesBurnedIterator) Close() error {
  1246  	it.sub.Unsubscribe()
  1247  	return nil
  1248  }
  1249  
  1250  // VaultBufferSharesBurned represents a BufferSharesBurned event raised by the Vault contract.
  1251  type VaultBufferSharesBurned struct {
  1252  	WrappedToken common.Address
  1253  	From         common.Address
  1254  	BurnedShares *big.Int
  1255  	Raw          types.Log // Blockchain specific contextual infos
  1256  }
  1257  
  1258  // FilterBufferSharesBurned is a free log retrieval operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  1259  //
  1260  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  1261  func (_Vault *VaultFilterer) FilterBufferSharesBurned(opts *bind.FilterOpts, wrappedToken []common.Address, from []common.Address) (*VaultBufferSharesBurnedIterator, error) {
  1262  
  1263  	var wrappedTokenRule []interface{}
  1264  	for _, wrappedTokenItem := range wrappedToken {
  1265  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1266  	}
  1267  	var fromRule []interface{}
  1268  	for _, fromItem := range from {
  1269  		fromRule = append(fromRule, fromItem)
  1270  	}
  1271  
  1272  	logs, sub, err := _Vault.contract.FilterLogs(opts, "BufferSharesBurned", wrappedTokenRule, fromRule)
  1273  	if err != nil {
  1274  		return nil, err
  1275  	}
  1276  	return &VaultBufferSharesBurnedIterator{contract: _Vault.contract, event: "BufferSharesBurned", logs: logs, sub: sub}, nil
  1277  }
  1278  
  1279  // WatchBufferSharesBurned is a free log subscription operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  1280  //
  1281  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  1282  func (_Vault *VaultFilterer) WatchBufferSharesBurned(opts *bind.WatchOpts, sink chan<- *VaultBufferSharesBurned, wrappedToken []common.Address, from []common.Address) (event.Subscription, error) {
  1283  
  1284  	var wrappedTokenRule []interface{}
  1285  	for _, wrappedTokenItem := range wrappedToken {
  1286  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1287  	}
  1288  	var fromRule []interface{}
  1289  	for _, fromItem := range from {
  1290  		fromRule = append(fromRule, fromItem)
  1291  	}
  1292  
  1293  	logs, sub, err := _Vault.contract.WatchLogs(opts, "BufferSharesBurned", wrappedTokenRule, fromRule)
  1294  	if err != nil {
  1295  		return nil, err
  1296  	}
  1297  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1298  		defer sub.Unsubscribe()
  1299  		for {
  1300  			select {
  1301  			case log := <-logs:
  1302  				// New log arrived, parse the event and forward to the user
  1303  				event := new(VaultBufferSharesBurned)
  1304  				if err := _Vault.contract.UnpackLog(event, "BufferSharesBurned", log); err != nil {
  1305  					return err
  1306  				}
  1307  				event.Raw = log
  1308  
  1309  				select {
  1310  				case sink <- event:
  1311  				case err := <-sub.Err():
  1312  					return err
  1313  				case <-quit:
  1314  					return nil
  1315  				}
  1316  			case err := <-sub.Err():
  1317  				return err
  1318  			case <-quit:
  1319  				return nil
  1320  			}
  1321  		}
  1322  	}), nil
  1323  }
  1324  
  1325  // ParseBufferSharesBurned is a log parse operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  1326  //
  1327  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  1328  func (_Vault *VaultFilterer) ParseBufferSharesBurned(log types.Log) (*VaultBufferSharesBurned, error) {
  1329  	event := new(VaultBufferSharesBurned)
  1330  	if err := _Vault.contract.UnpackLog(event, "BufferSharesBurned", log); err != nil {
  1331  		return nil, err
  1332  	}
  1333  	event.Raw = log
  1334  	return event, nil
  1335  }
  1336  
  1337  // VaultBufferSharesMintedIterator is returned from FilterBufferSharesMinted and is used to iterate over the raw logs and unpacked data for BufferSharesMinted events raised by the Vault contract.
  1338  type VaultBufferSharesMintedIterator struct {
  1339  	Event *VaultBufferSharesMinted // Event containing the contract specifics and raw log
  1340  
  1341  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1342  	event    string              // Event name to use for unpacking event data
  1343  
  1344  	logs chan types.Log        // Log channel receiving the found contract events
  1345  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1346  	done bool                  // Whether the subscription completed delivering logs
  1347  	fail error                 // Occurred error to stop iteration
  1348  }
  1349  
  1350  // Next advances the iterator to the subsequent event, returning whether there
  1351  // are any more events found. In case of a retrieval or parsing error, false is
  1352  // returned and Error() can be queried for the exact failure.
  1353  func (it *VaultBufferSharesMintedIterator) Next() bool {
  1354  	// If the iterator failed, stop iterating
  1355  	if it.fail != nil {
  1356  		return false
  1357  	}
  1358  	// If the iterator completed, deliver directly whatever's available
  1359  	if it.done {
  1360  		select {
  1361  		case log := <-it.logs:
  1362  			it.Event = new(VaultBufferSharesMinted)
  1363  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1364  				it.fail = err
  1365  				return false
  1366  			}
  1367  			it.Event.Raw = log
  1368  			return true
  1369  
  1370  		default:
  1371  			return false
  1372  		}
  1373  	}
  1374  	// Iterator still in progress, wait for either a data or an error event
  1375  	select {
  1376  	case log := <-it.logs:
  1377  		it.Event = new(VaultBufferSharesMinted)
  1378  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1379  			it.fail = err
  1380  			return false
  1381  		}
  1382  		it.Event.Raw = log
  1383  		return true
  1384  
  1385  	case err := <-it.sub.Err():
  1386  		it.done = true
  1387  		it.fail = err
  1388  		return it.Next()
  1389  	}
  1390  }
  1391  
  1392  // Error returns any retrieval or parsing error occurred during filtering.
  1393  func (it *VaultBufferSharesMintedIterator) Error() error {
  1394  	return it.fail
  1395  }
  1396  
  1397  // Close terminates the iteration process, releasing any pending underlying
  1398  // resources.
  1399  func (it *VaultBufferSharesMintedIterator) Close() error {
  1400  	it.sub.Unsubscribe()
  1401  	return nil
  1402  }
  1403  
  1404  // VaultBufferSharesMinted represents a BufferSharesMinted event raised by the Vault contract.
  1405  type VaultBufferSharesMinted struct {
  1406  	WrappedToken common.Address
  1407  	To           common.Address
  1408  	IssuedShares *big.Int
  1409  	Raw          types.Log // Blockchain specific contextual infos
  1410  }
  1411  
  1412  // FilterBufferSharesMinted is a free log retrieval operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  1413  //
  1414  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  1415  func (_Vault *VaultFilterer) FilterBufferSharesMinted(opts *bind.FilterOpts, wrappedToken []common.Address, to []common.Address) (*VaultBufferSharesMintedIterator, error) {
  1416  
  1417  	var wrappedTokenRule []interface{}
  1418  	for _, wrappedTokenItem := range wrappedToken {
  1419  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1420  	}
  1421  	var toRule []interface{}
  1422  	for _, toItem := range to {
  1423  		toRule = append(toRule, toItem)
  1424  	}
  1425  
  1426  	logs, sub, err := _Vault.contract.FilterLogs(opts, "BufferSharesMinted", wrappedTokenRule, toRule)
  1427  	if err != nil {
  1428  		return nil, err
  1429  	}
  1430  	return &VaultBufferSharesMintedIterator{contract: _Vault.contract, event: "BufferSharesMinted", logs: logs, sub: sub}, nil
  1431  }
  1432  
  1433  // WatchBufferSharesMinted is a free log subscription operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  1434  //
  1435  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  1436  func (_Vault *VaultFilterer) WatchBufferSharesMinted(opts *bind.WatchOpts, sink chan<- *VaultBufferSharesMinted, wrappedToken []common.Address, to []common.Address) (event.Subscription, error) {
  1437  
  1438  	var wrappedTokenRule []interface{}
  1439  	for _, wrappedTokenItem := range wrappedToken {
  1440  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1441  	}
  1442  	var toRule []interface{}
  1443  	for _, toItem := range to {
  1444  		toRule = append(toRule, toItem)
  1445  	}
  1446  
  1447  	logs, sub, err := _Vault.contract.WatchLogs(opts, "BufferSharesMinted", wrappedTokenRule, toRule)
  1448  	if err != nil {
  1449  		return nil, err
  1450  	}
  1451  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1452  		defer sub.Unsubscribe()
  1453  		for {
  1454  			select {
  1455  			case log := <-logs:
  1456  				// New log arrived, parse the event and forward to the user
  1457  				event := new(VaultBufferSharesMinted)
  1458  				if err := _Vault.contract.UnpackLog(event, "BufferSharesMinted", log); err != nil {
  1459  					return err
  1460  				}
  1461  				event.Raw = log
  1462  
  1463  				select {
  1464  				case sink <- event:
  1465  				case err := <-sub.Err():
  1466  					return err
  1467  				case <-quit:
  1468  					return nil
  1469  				}
  1470  			case err := <-sub.Err():
  1471  				return err
  1472  			case <-quit:
  1473  				return nil
  1474  			}
  1475  		}
  1476  	}), nil
  1477  }
  1478  
  1479  // ParseBufferSharesMinted is a log parse operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  1480  //
  1481  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  1482  func (_Vault *VaultFilterer) ParseBufferSharesMinted(log types.Log) (*VaultBufferSharesMinted, error) {
  1483  	event := new(VaultBufferSharesMinted)
  1484  	if err := _Vault.contract.UnpackLog(event, "BufferSharesMinted", log); err != nil {
  1485  		return nil, err
  1486  	}
  1487  	event.Raw = log
  1488  	return event, nil
  1489  }
  1490  
  1491  // VaultLiquidityAddedIterator is returned from FilterLiquidityAdded and is used to iterate over the raw logs and unpacked data for LiquidityAdded events raised by the Vault contract.
  1492  type VaultLiquidityAddedIterator struct {
  1493  	Event *VaultLiquidityAdded // Event containing the contract specifics and raw log
  1494  
  1495  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1496  	event    string              // Event name to use for unpacking event data
  1497  
  1498  	logs chan types.Log        // Log channel receiving the found contract events
  1499  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1500  	done bool                  // Whether the subscription completed delivering logs
  1501  	fail error                 // Occurred error to stop iteration
  1502  }
  1503  
  1504  // Next advances the iterator to the subsequent event, returning whether there
  1505  // are any more events found. In case of a retrieval or parsing error, false is
  1506  // returned and Error() can be queried for the exact failure.
  1507  func (it *VaultLiquidityAddedIterator) Next() bool {
  1508  	// If the iterator failed, stop iterating
  1509  	if it.fail != nil {
  1510  		return false
  1511  	}
  1512  	// If the iterator completed, deliver directly whatever's available
  1513  	if it.done {
  1514  		select {
  1515  		case log := <-it.logs:
  1516  			it.Event = new(VaultLiquidityAdded)
  1517  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1518  				it.fail = err
  1519  				return false
  1520  			}
  1521  			it.Event.Raw = log
  1522  			return true
  1523  
  1524  		default:
  1525  			return false
  1526  		}
  1527  	}
  1528  	// Iterator still in progress, wait for either a data or an error event
  1529  	select {
  1530  	case log := <-it.logs:
  1531  		it.Event = new(VaultLiquidityAdded)
  1532  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1533  			it.fail = err
  1534  			return false
  1535  		}
  1536  		it.Event.Raw = log
  1537  		return true
  1538  
  1539  	case err := <-it.sub.Err():
  1540  		it.done = true
  1541  		it.fail = err
  1542  		return it.Next()
  1543  	}
  1544  }
  1545  
  1546  // Error returns any retrieval or parsing error occurred during filtering.
  1547  func (it *VaultLiquidityAddedIterator) Error() error {
  1548  	return it.fail
  1549  }
  1550  
  1551  // Close terminates the iteration process, releasing any pending underlying
  1552  // resources.
  1553  func (it *VaultLiquidityAddedIterator) Close() error {
  1554  	it.sub.Unsubscribe()
  1555  	return nil
  1556  }
  1557  
  1558  // VaultLiquidityAdded represents a LiquidityAdded event raised by the Vault contract.
  1559  type VaultLiquidityAdded struct {
  1560  	Pool              common.Address
  1561  	LiquidityProvider common.Address
  1562  	Kind              uint8
  1563  	TotalSupply       *big.Int
  1564  	AmountsAddedRaw   []*big.Int
  1565  	SwapFeeAmountsRaw []*big.Int
  1566  	Raw               types.Log // Blockchain specific contextual infos
  1567  }
  1568  
  1569  // FilterLiquidityAdded is a free log retrieval operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  1570  //
  1571  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  1572  func (_Vault *VaultFilterer) FilterLiquidityAdded(opts *bind.FilterOpts, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (*VaultLiquidityAddedIterator, error) {
  1573  
  1574  	var poolRule []interface{}
  1575  	for _, poolItem := range pool {
  1576  		poolRule = append(poolRule, poolItem)
  1577  	}
  1578  	var liquidityProviderRule []interface{}
  1579  	for _, liquidityProviderItem := range liquidityProvider {
  1580  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1581  	}
  1582  	var kindRule []interface{}
  1583  	for _, kindItem := range kind {
  1584  		kindRule = append(kindRule, kindItem)
  1585  	}
  1586  
  1587  	logs, sub, err := _Vault.contract.FilterLogs(opts, "LiquidityAdded", poolRule, liquidityProviderRule, kindRule)
  1588  	if err != nil {
  1589  		return nil, err
  1590  	}
  1591  	return &VaultLiquidityAddedIterator{contract: _Vault.contract, event: "LiquidityAdded", logs: logs, sub: sub}, nil
  1592  }
  1593  
  1594  // WatchLiquidityAdded is a free log subscription operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  1595  //
  1596  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  1597  func (_Vault *VaultFilterer) WatchLiquidityAdded(opts *bind.WatchOpts, sink chan<- *VaultLiquidityAdded, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (event.Subscription, error) {
  1598  
  1599  	var poolRule []interface{}
  1600  	for _, poolItem := range pool {
  1601  		poolRule = append(poolRule, poolItem)
  1602  	}
  1603  	var liquidityProviderRule []interface{}
  1604  	for _, liquidityProviderItem := range liquidityProvider {
  1605  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1606  	}
  1607  	var kindRule []interface{}
  1608  	for _, kindItem := range kind {
  1609  		kindRule = append(kindRule, kindItem)
  1610  	}
  1611  
  1612  	logs, sub, err := _Vault.contract.WatchLogs(opts, "LiquidityAdded", poolRule, liquidityProviderRule, kindRule)
  1613  	if err != nil {
  1614  		return nil, err
  1615  	}
  1616  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1617  		defer sub.Unsubscribe()
  1618  		for {
  1619  			select {
  1620  			case log := <-logs:
  1621  				// New log arrived, parse the event and forward to the user
  1622  				event := new(VaultLiquidityAdded)
  1623  				if err := _Vault.contract.UnpackLog(event, "LiquidityAdded", log); err != nil {
  1624  					return err
  1625  				}
  1626  				event.Raw = log
  1627  
  1628  				select {
  1629  				case sink <- event:
  1630  				case err := <-sub.Err():
  1631  					return err
  1632  				case <-quit:
  1633  					return nil
  1634  				}
  1635  			case err := <-sub.Err():
  1636  				return err
  1637  			case <-quit:
  1638  				return nil
  1639  			}
  1640  		}
  1641  	}), nil
  1642  }
  1643  
  1644  // ParseLiquidityAdded is a log parse operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  1645  //
  1646  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  1647  func (_Vault *VaultFilterer) ParseLiquidityAdded(log types.Log) (*VaultLiquidityAdded, error) {
  1648  	event := new(VaultLiquidityAdded)
  1649  	if err := _Vault.contract.UnpackLog(event, "LiquidityAdded", log); err != nil {
  1650  		return nil, err
  1651  	}
  1652  	event.Raw = log
  1653  	return event, nil
  1654  }
  1655  
  1656  // VaultLiquidityAddedToBufferIterator is returned from FilterLiquidityAddedToBuffer and is used to iterate over the raw logs and unpacked data for LiquidityAddedToBuffer events raised by the Vault contract.
  1657  type VaultLiquidityAddedToBufferIterator struct {
  1658  	Event *VaultLiquidityAddedToBuffer // Event containing the contract specifics and raw log
  1659  
  1660  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1661  	event    string              // Event name to use for unpacking event data
  1662  
  1663  	logs chan types.Log        // Log channel receiving the found contract events
  1664  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1665  	done bool                  // Whether the subscription completed delivering logs
  1666  	fail error                 // Occurred error to stop iteration
  1667  }
  1668  
  1669  // Next advances the iterator to the subsequent event, returning whether there
  1670  // are any more events found. In case of a retrieval or parsing error, false is
  1671  // returned and Error() can be queried for the exact failure.
  1672  func (it *VaultLiquidityAddedToBufferIterator) Next() bool {
  1673  	// If the iterator failed, stop iterating
  1674  	if it.fail != nil {
  1675  		return false
  1676  	}
  1677  	// If the iterator completed, deliver directly whatever's available
  1678  	if it.done {
  1679  		select {
  1680  		case log := <-it.logs:
  1681  			it.Event = new(VaultLiquidityAddedToBuffer)
  1682  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1683  				it.fail = err
  1684  				return false
  1685  			}
  1686  			it.Event.Raw = log
  1687  			return true
  1688  
  1689  		default:
  1690  			return false
  1691  		}
  1692  	}
  1693  	// Iterator still in progress, wait for either a data or an error event
  1694  	select {
  1695  	case log := <-it.logs:
  1696  		it.Event = new(VaultLiquidityAddedToBuffer)
  1697  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1698  			it.fail = err
  1699  			return false
  1700  		}
  1701  		it.Event.Raw = log
  1702  		return true
  1703  
  1704  	case err := <-it.sub.Err():
  1705  		it.done = true
  1706  		it.fail = err
  1707  		return it.Next()
  1708  	}
  1709  }
  1710  
  1711  // Error returns any retrieval or parsing error occurred during filtering.
  1712  func (it *VaultLiquidityAddedToBufferIterator) Error() error {
  1713  	return it.fail
  1714  }
  1715  
  1716  // Close terminates the iteration process, releasing any pending underlying
  1717  // resources.
  1718  func (it *VaultLiquidityAddedToBufferIterator) Close() error {
  1719  	it.sub.Unsubscribe()
  1720  	return nil
  1721  }
  1722  
  1723  // VaultLiquidityAddedToBuffer represents a LiquidityAddedToBuffer event raised by the Vault contract.
  1724  type VaultLiquidityAddedToBuffer struct {
  1725  	WrappedToken     common.Address
  1726  	AmountUnderlying *big.Int
  1727  	AmountWrapped    *big.Int
  1728  	BufferBalances   [32]byte
  1729  	Raw              types.Log // Blockchain specific contextual infos
  1730  }
  1731  
  1732  // FilterLiquidityAddedToBuffer is a free log retrieval operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  1733  //
  1734  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  1735  func (_Vault *VaultFilterer) FilterLiquidityAddedToBuffer(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultLiquidityAddedToBufferIterator, error) {
  1736  
  1737  	var wrappedTokenRule []interface{}
  1738  	for _, wrappedTokenItem := range wrappedToken {
  1739  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1740  	}
  1741  
  1742  	logs, sub, err := _Vault.contract.FilterLogs(opts, "LiquidityAddedToBuffer", wrappedTokenRule)
  1743  	if err != nil {
  1744  		return nil, err
  1745  	}
  1746  	return &VaultLiquidityAddedToBufferIterator{contract: _Vault.contract, event: "LiquidityAddedToBuffer", logs: logs, sub: sub}, nil
  1747  }
  1748  
  1749  // WatchLiquidityAddedToBuffer is a free log subscription operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  1750  //
  1751  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  1752  func (_Vault *VaultFilterer) WatchLiquidityAddedToBuffer(opts *bind.WatchOpts, sink chan<- *VaultLiquidityAddedToBuffer, wrappedToken []common.Address) (event.Subscription, error) {
  1753  
  1754  	var wrappedTokenRule []interface{}
  1755  	for _, wrappedTokenItem := range wrappedToken {
  1756  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  1757  	}
  1758  
  1759  	logs, sub, err := _Vault.contract.WatchLogs(opts, "LiquidityAddedToBuffer", wrappedTokenRule)
  1760  	if err != nil {
  1761  		return nil, err
  1762  	}
  1763  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1764  		defer sub.Unsubscribe()
  1765  		for {
  1766  			select {
  1767  			case log := <-logs:
  1768  				// New log arrived, parse the event and forward to the user
  1769  				event := new(VaultLiquidityAddedToBuffer)
  1770  				if err := _Vault.contract.UnpackLog(event, "LiquidityAddedToBuffer", log); err != nil {
  1771  					return err
  1772  				}
  1773  				event.Raw = log
  1774  
  1775  				select {
  1776  				case sink <- event:
  1777  				case err := <-sub.Err():
  1778  					return err
  1779  				case <-quit:
  1780  					return nil
  1781  				}
  1782  			case err := <-sub.Err():
  1783  				return err
  1784  			case <-quit:
  1785  				return nil
  1786  			}
  1787  		}
  1788  	}), nil
  1789  }
  1790  
  1791  // ParseLiquidityAddedToBuffer is a log parse operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  1792  //
  1793  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  1794  func (_Vault *VaultFilterer) ParseLiquidityAddedToBuffer(log types.Log) (*VaultLiquidityAddedToBuffer, error) {
  1795  	event := new(VaultLiquidityAddedToBuffer)
  1796  	if err := _Vault.contract.UnpackLog(event, "LiquidityAddedToBuffer", log); err != nil {
  1797  		return nil, err
  1798  	}
  1799  	event.Raw = log
  1800  	return event, nil
  1801  }
  1802  
  1803  // VaultLiquidityRemovedIterator is returned from FilterLiquidityRemoved and is used to iterate over the raw logs and unpacked data for LiquidityRemoved events raised by the Vault contract.
  1804  type VaultLiquidityRemovedIterator struct {
  1805  	Event *VaultLiquidityRemoved // Event containing the contract specifics and raw log
  1806  
  1807  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1808  	event    string              // Event name to use for unpacking event data
  1809  
  1810  	logs chan types.Log        // Log channel receiving the found contract events
  1811  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1812  	done bool                  // Whether the subscription completed delivering logs
  1813  	fail error                 // Occurred error to stop iteration
  1814  }
  1815  
  1816  // Next advances the iterator to the subsequent event, returning whether there
  1817  // are any more events found. In case of a retrieval or parsing error, false is
  1818  // returned and Error() can be queried for the exact failure.
  1819  func (it *VaultLiquidityRemovedIterator) Next() bool {
  1820  	// If the iterator failed, stop iterating
  1821  	if it.fail != nil {
  1822  		return false
  1823  	}
  1824  	// If the iterator completed, deliver directly whatever's available
  1825  	if it.done {
  1826  		select {
  1827  		case log := <-it.logs:
  1828  			it.Event = new(VaultLiquidityRemoved)
  1829  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1830  				it.fail = err
  1831  				return false
  1832  			}
  1833  			it.Event.Raw = log
  1834  			return true
  1835  
  1836  		default:
  1837  			return false
  1838  		}
  1839  	}
  1840  	// Iterator still in progress, wait for either a data or an error event
  1841  	select {
  1842  	case log := <-it.logs:
  1843  		it.Event = new(VaultLiquidityRemoved)
  1844  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1845  			it.fail = err
  1846  			return false
  1847  		}
  1848  		it.Event.Raw = log
  1849  		return true
  1850  
  1851  	case err := <-it.sub.Err():
  1852  		it.done = true
  1853  		it.fail = err
  1854  		return it.Next()
  1855  	}
  1856  }
  1857  
  1858  // Error returns any retrieval or parsing error occurred during filtering.
  1859  func (it *VaultLiquidityRemovedIterator) Error() error {
  1860  	return it.fail
  1861  }
  1862  
  1863  // Close terminates the iteration process, releasing any pending underlying
  1864  // resources.
  1865  func (it *VaultLiquidityRemovedIterator) Close() error {
  1866  	it.sub.Unsubscribe()
  1867  	return nil
  1868  }
  1869  
  1870  // VaultLiquidityRemoved represents a LiquidityRemoved event raised by the Vault contract.
  1871  type VaultLiquidityRemoved struct {
  1872  	Pool              common.Address
  1873  	LiquidityProvider common.Address
  1874  	Kind              uint8
  1875  	TotalSupply       *big.Int
  1876  	AmountsRemovedRaw []*big.Int
  1877  	SwapFeeAmountsRaw []*big.Int
  1878  	Raw               types.Log // Blockchain specific contextual infos
  1879  }
  1880  
  1881  // FilterLiquidityRemoved is a free log retrieval operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  1882  //
  1883  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  1884  func (_Vault *VaultFilterer) FilterLiquidityRemoved(opts *bind.FilterOpts, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (*VaultLiquidityRemovedIterator, error) {
  1885  
  1886  	var poolRule []interface{}
  1887  	for _, poolItem := range pool {
  1888  		poolRule = append(poolRule, poolItem)
  1889  	}
  1890  	var liquidityProviderRule []interface{}
  1891  	for _, liquidityProviderItem := range liquidityProvider {
  1892  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1893  	}
  1894  	var kindRule []interface{}
  1895  	for _, kindItem := range kind {
  1896  		kindRule = append(kindRule, kindItem)
  1897  	}
  1898  
  1899  	logs, sub, err := _Vault.contract.FilterLogs(opts, "LiquidityRemoved", poolRule, liquidityProviderRule, kindRule)
  1900  	if err != nil {
  1901  		return nil, err
  1902  	}
  1903  	return &VaultLiquidityRemovedIterator{contract: _Vault.contract, event: "LiquidityRemoved", logs: logs, sub: sub}, nil
  1904  }
  1905  
  1906  // WatchLiquidityRemoved is a free log subscription operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  1907  //
  1908  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  1909  func (_Vault *VaultFilterer) WatchLiquidityRemoved(opts *bind.WatchOpts, sink chan<- *VaultLiquidityRemoved, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (event.Subscription, error) {
  1910  
  1911  	var poolRule []interface{}
  1912  	for _, poolItem := range pool {
  1913  		poolRule = append(poolRule, poolItem)
  1914  	}
  1915  	var liquidityProviderRule []interface{}
  1916  	for _, liquidityProviderItem := range liquidityProvider {
  1917  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1918  	}
  1919  	var kindRule []interface{}
  1920  	for _, kindItem := range kind {
  1921  		kindRule = append(kindRule, kindItem)
  1922  	}
  1923  
  1924  	logs, sub, err := _Vault.contract.WatchLogs(opts, "LiquidityRemoved", poolRule, liquidityProviderRule, kindRule)
  1925  	if err != nil {
  1926  		return nil, err
  1927  	}
  1928  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1929  		defer sub.Unsubscribe()
  1930  		for {
  1931  			select {
  1932  			case log := <-logs:
  1933  				// New log arrived, parse the event and forward to the user
  1934  				event := new(VaultLiquidityRemoved)
  1935  				if err := _Vault.contract.UnpackLog(event, "LiquidityRemoved", log); err != nil {
  1936  					return err
  1937  				}
  1938  				event.Raw = log
  1939  
  1940  				select {
  1941  				case sink <- event:
  1942  				case err := <-sub.Err():
  1943  					return err
  1944  				case <-quit:
  1945  					return nil
  1946  				}
  1947  			case err := <-sub.Err():
  1948  				return err
  1949  			case <-quit:
  1950  				return nil
  1951  			}
  1952  		}
  1953  	}), nil
  1954  }
  1955  
  1956  // ParseLiquidityRemoved is a log parse operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  1957  //
  1958  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  1959  func (_Vault *VaultFilterer) ParseLiquidityRemoved(log types.Log) (*VaultLiquidityRemoved, error) {
  1960  	event := new(VaultLiquidityRemoved)
  1961  	if err := _Vault.contract.UnpackLog(event, "LiquidityRemoved", log); err != nil {
  1962  		return nil, err
  1963  	}
  1964  	event.Raw = log
  1965  	return event, nil
  1966  }
  1967  
  1968  // VaultLiquidityRemovedFromBufferIterator is returned from FilterLiquidityRemovedFromBuffer and is used to iterate over the raw logs and unpacked data for LiquidityRemovedFromBuffer events raised by the Vault contract.
  1969  type VaultLiquidityRemovedFromBufferIterator struct {
  1970  	Event *VaultLiquidityRemovedFromBuffer // Event containing the contract specifics and raw log
  1971  
  1972  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1973  	event    string              // Event name to use for unpacking event data
  1974  
  1975  	logs chan types.Log        // Log channel receiving the found contract events
  1976  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1977  	done bool                  // Whether the subscription completed delivering logs
  1978  	fail error                 // Occurred error to stop iteration
  1979  }
  1980  
  1981  // Next advances the iterator to the subsequent event, returning whether there
  1982  // are any more events found. In case of a retrieval or parsing error, false is
  1983  // returned and Error() can be queried for the exact failure.
  1984  func (it *VaultLiquidityRemovedFromBufferIterator) Next() bool {
  1985  	// If the iterator failed, stop iterating
  1986  	if it.fail != nil {
  1987  		return false
  1988  	}
  1989  	// If the iterator completed, deliver directly whatever's available
  1990  	if it.done {
  1991  		select {
  1992  		case log := <-it.logs:
  1993  			it.Event = new(VaultLiquidityRemovedFromBuffer)
  1994  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1995  				it.fail = err
  1996  				return false
  1997  			}
  1998  			it.Event.Raw = log
  1999  			return true
  2000  
  2001  		default:
  2002  			return false
  2003  		}
  2004  	}
  2005  	// Iterator still in progress, wait for either a data or an error event
  2006  	select {
  2007  	case log := <-it.logs:
  2008  		it.Event = new(VaultLiquidityRemovedFromBuffer)
  2009  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2010  			it.fail = err
  2011  			return false
  2012  		}
  2013  		it.Event.Raw = log
  2014  		return true
  2015  
  2016  	case err := <-it.sub.Err():
  2017  		it.done = true
  2018  		it.fail = err
  2019  		return it.Next()
  2020  	}
  2021  }
  2022  
  2023  // Error returns any retrieval or parsing error occurred during filtering.
  2024  func (it *VaultLiquidityRemovedFromBufferIterator) Error() error {
  2025  	return it.fail
  2026  }
  2027  
  2028  // Close terminates the iteration process, releasing any pending underlying
  2029  // resources.
  2030  func (it *VaultLiquidityRemovedFromBufferIterator) Close() error {
  2031  	it.sub.Unsubscribe()
  2032  	return nil
  2033  }
  2034  
  2035  // VaultLiquidityRemovedFromBuffer represents a LiquidityRemovedFromBuffer event raised by the Vault contract.
  2036  type VaultLiquidityRemovedFromBuffer struct {
  2037  	WrappedToken     common.Address
  2038  	AmountUnderlying *big.Int
  2039  	AmountWrapped    *big.Int
  2040  	BufferBalances   [32]byte
  2041  	Raw              types.Log // Blockchain specific contextual infos
  2042  }
  2043  
  2044  // FilterLiquidityRemovedFromBuffer is a free log retrieval operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  2045  //
  2046  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2047  func (_Vault *VaultFilterer) FilterLiquidityRemovedFromBuffer(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultLiquidityRemovedFromBufferIterator, error) {
  2048  
  2049  	var wrappedTokenRule []interface{}
  2050  	for _, wrappedTokenItem := range wrappedToken {
  2051  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2052  	}
  2053  
  2054  	logs, sub, err := _Vault.contract.FilterLogs(opts, "LiquidityRemovedFromBuffer", wrappedTokenRule)
  2055  	if err != nil {
  2056  		return nil, err
  2057  	}
  2058  	return &VaultLiquidityRemovedFromBufferIterator{contract: _Vault.contract, event: "LiquidityRemovedFromBuffer", logs: logs, sub: sub}, nil
  2059  }
  2060  
  2061  // WatchLiquidityRemovedFromBuffer is a free log subscription operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  2062  //
  2063  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2064  func (_Vault *VaultFilterer) WatchLiquidityRemovedFromBuffer(opts *bind.WatchOpts, sink chan<- *VaultLiquidityRemovedFromBuffer, wrappedToken []common.Address) (event.Subscription, error) {
  2065  
  2066  	var wrappedTokenRule []interface{}
  2067  	for _, wrappedTokenItem := range wrappedToken {
  2068  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2069  	}
  2070  
  2071  	logs, sub, err := _Vault.contract.WatchLogs(opts, "LiquidityRemovedFromBuffer", wrappedTokenRule)
  2072  	if err != nil {
  2073  		return nil, err
  2074  	}
  2075  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2076  		defer sub.Unsubscribe()
  2077  		for {
  2078  			select {
  2079  			case log := <-logs:
  2080  				// New log arrived, parse the event and forward to the user
  2081  				event := new(VaultLiquidityRemovedFromBuffer)
  2082  				if err := _Vault.contract.UnpackLog(event, "LiquidityRemovedFromBuffer", log); err != nil {
  2083  					return err
  2084  				}
  2085  				event.Raw = log
  2086  
  2087  				select {
  2088  				case sink <- event:
  2089  				case err := <-sub.Err():
  2090  					return err
  2091  				case <-quit:
  2092  					return nil
  2093  				}
  2094  			case err := <-sub.Err():
  2095  				return err
  2096  			case <-quit:
  2097  				return nil
  2098  			}
  2099  		}
  2100  	}), nil
  2101  }
  2102  
  2103  // ParseLiquidityRemovedFromBuffer is a log parse operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  2104  //
  2105  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2106  func (_Vault *VaultFilterer) ParseLiquidityRemovedFromBuffer(log types.Log) (*VaultLiquidityRemovedFromBuffer, error) {
  2107  	event := new(VaultLiquidityRemovedFromBuffer)
  2108  	if err := _Vault.contract.UnpackLog(event, "LiquidityRemovedFromBuffer", log); err != nil {
  2109  		return nil, err
  2110  	}
  2111  	event.Raw = log
  2112  	return event, nil
  2113  }
  2114  
  2115  // VaultPoolInitializedIterator is returned from FilterPoolInitialized and is used to iterate over the raw logs and unpacked data for PoolInitialized events raised by the Vault contract.
  2116  type VaultPoolInitializedIterator struct {
  2117  	Event *VaultPoolInitialized // Event containing the contract specifics and raw log
  2118  
  2119  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2120  	event    string              // Event name to use for unpacking event data
  2121  
  2122  	logs chan types.Log        // Log channel receiving the found contract events
  2123  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2124  	done bool                  // Whether the subscription completed delivering logs
  2125  	fail error                 // Occurred error to stop iteration
  2126  }
  2127  
  2128  // Next advances the iterator to the subsequent event, returning whether there
  2129  // are any more events found. In case of a retrieval or parsing error, false is
  2130  // returned and Error() can be queried for the exact failure.
  2131  func (it *VaultPoolInitializedIterator) Next() bool {
  2132  	// If the iterator failed, stop iterating
  2133  	if it.fail != nil {
  2134  		return false
  2135  	}
  2136  	// If the iterator completed, deliver directly whatever's available
  2137  	if it.done {
  2138  		select {
  2139  		case log := <-it.logs:
  2140  			it.Event = new(VaultPoolInitialized)
  2141  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2142  				it.fail = err
  2143  				return false
  2144  			}
  2145  			it.Event.Raw = log
  2146  			return true
  2147  
  2148  		default:
  2149  			return false
  2150  		}
  2151  	}
  2152  	// Iterator still in progress, wait for either a data or an error event
  2153  	select {
  2154  	case log := <-it.logs:
  2155  		it.Event = new(VaultPoolInitialized)
  2156  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2157  			it.fail = err
  2158  			return false
  2159  		}
  2160  		it.Event.Raw = log
  2161  		return true
  2162  
  2163  	case err := <-it.sub.Err():
  2164  		it.done = true
  2165  		it.fail = err
  2166  		return it.Next()
  2167  	}
  2168  }
  2169  
  2170  // Error returns any retrieval or parsing error occurred during filtering.
  2171  func (it *VaultPoolInitializedIterator) Error() error {
  2172  	return it.fail
  2173  }
  2174  
  2175  // Close terminates the iteration process, releasing any pending underlying
  2176  // resources.
  2177  func (it *VaultPoolInitializedIterator) Close() error {
  2178  	it.sub.Unsubscribe()
  2179  	return nil
  2180  }
  2181  
  2182  // VaultPoolInitialized represents a PoolInitialized event raised by the Vault contract.
  2183  type VaultPoolInitialized struct {
  2184  	Pool common.Address
  2185  	Raw  types.Log // Blockchain specific contextual infos
  2186  }
  2187  
  2188  // FilterPoolInitialized is a free log retrieval operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  2189  //
  2190  // Solidity: event PoolInitialized(address indexed pool)
  2191  func (_Vault *VaultFilterer) FilterPoolInitialized(opts *bind.FilterOpts, pool []common.Address) (*VaultPoolInitializedIterator, error) {
  2192  
  2193  	var poolRule []interface{}
  2194  	for _, poolItem := range pool {
  2195  		poolRule = append(poolRule, poolItem)
  2196  	}
  2197  
  2198  	logs, sub, err := _Vault.contract.FilterLogs(opts, "PoolInitialized", poolRule)
  2199  	if err != nil {
  2200  		return nil, err
  2201  	}
  2202  	return &VaultPoolInitializedIterator{contract: _Vault.contract, event: "PoolInitialized", logs: logs, sub: sub}, nil
  2203  }
  2204  
  2205  // WatchPoolInitialized is a free log subscription operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  2206  //
  2207  // Solidity: event PoolInitialized(address indexed pool)
  2208  func (_Vault *VaultFilterer) WatchPoolInitialized(opts *bind.WatchOpts, sink chan<- *VaultPoolInitialized, pool []common.Address) (event.Subscription, error) {
  2209  
  2210  	var poolRule []interface{}
  2211  	for _, poolItem := range pool {
  2212  		poolRule = append(poolRule, poolItem)
  2213  	}
  2214  
  2215  	logs, sub, err := _Vault.contract.WatchLogs(opts, "PoolInitialized", poolRule)
  2216  	if err != nil {
  2217  		return nil, err
  2218  	}
  2219  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2220  		defer sub.Unsubscribe()
  2221  		for {
  2222  			select {
  2223  			case log := <-logs:
  2224  				// New log arrived, parse the event and forward to the user
  2225  				event := new(VaultPoolInitialized)
  2226  				if err := _Vault.contract.UnpackLog(event, "PoolInitialized", log); err != nil {
  2227  					return err
  2228  				}
  2229  				event.Raw = log
  2230  
  2231  				select {
  2232  				case sink <- event:
  2233  				case err := <-sub.Err():
  2234  					return err
  2235  				case <-quit:
  2236  					return nil
  2237  				}
  2238  			case err := <-sub.Err():
  2239  				return err
  2240  			case <-quit:
  2241  				return nil
  2242  			}
  2243  		}
  2244  	}), nil
  2245  }
  2246  
  2247  // ParsePoolInitialized is a log parse operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  2248  //
  2249  // Solidity: event PoolInitialized(address indexed pool)
  2250  func (_Vault *VaultFilterer) ParsePoolInitialized(log types.Log) (*VaultPoolInitialized, error) {
  2251  	event := new(VaultPoolInitialized)
  2252  	if err := _Vault.contract.UnpackLog(event, "PoolInitialized", log); err != nil {
  2253  		return nil, err
  2254  	}
  2255  	event.Raw = log
  2256  	return event, nil
  2257  }
  2258  
  2259  // VaultPoolPausedStateChangedIterator is returned from FilterPoolPausedStateChanged and is used to iterate over the raw logs and unpacked data for PoolPausedStateChanged events raised by the Vault contract.
  2260  type VaultPoolPausedStateChangedIterator struct {
  2261  	Event *VaultPoolPausedStateChanged // Event containing the contract specifics and raw log
  2262  
  2263  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2264  	event    string              // Event name to use for unpacking event data
  2265  
  2266  	logs chan types.Log        // Log channel receiving the found contract events
  2267  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2268  	done bool                  // Whether the subscription completed delivering logs
  2269  	fail error                 // Occurred error to stop iteration
  2270  }
  2271  
  2272  // Next advances the iterator to the subsequent event, returning whether there
  2273  // are any more events found. In case of a retrieval or parsing error, false is
  2274  // returned and Error() can be queried for the exact failure.
  2275  func (it *VaultPoolPausedStateChangedIterator) Next() bool {
  2276  	// If the iterator failed, stop iterating
  2277  	if it.fail != nil {
  2278  		return false
  2279  	}
  2280  	// If the iterator completed, deliver directly whatever's available
  2281  	if it.done {
  2282  		select {
  2283  		case log := <-it.logs:
  2284  			it.Event = new(VaultPoolPausedStateChanged)
  2285  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2286  				it.fail = err
  2287  				return false
  2288  			}
  2289  			it.Event.Raw = log
  2290  			return true
  2291  
  2292  		default:
  2293  			return false
  2294  		}
  2295  	}
  2296  	// Iterator still in progress, wait for either a data or an error event
  2297  	select {
  2298  	case log := <-it.logs:
  2299  		it.Event = new(VaultPoolPausedStateChanged)
  2300  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2301  			it.fail = err
  2302  			return false
  2303  		}
  2304  		it.Event.Raw = log
  2305  		return true
  2306  
  2307  	case err := <-it.sub.Err():
  2308  		it.done = true
  2309  		it.fail = err
  2310  		return it.Next()
  2311  	}
  2312  }
  2313  
  2314  // Error returns any retrieval or parsing error occurred during filtering.
  2315  func (it *VaultPoolPausedStateChangedIterator) Error() error {
  2316  	return it.fail
  2317  }
  2318  
  2319  // Close terminates the iteration process, releasing any pending underlying
  2320  // resources.
  2321  func (it *VaultPoolPausedStateChangedIterator) Close() error {
  2322  	it.sub.Unsubscribe()
  2323  	return nil
  2324  }
  2325  
  2326  // VaultPoolPausedStateChanged represents a PoolPausedStateChanged event raised by the Vault contract.
  2327  type VaultPoolPausedStateChanged struct {
  2328  	Pool   common.Address
  2329  	Paused bool
  2330  	Raw    types.Log // Blockchain specific contextual infos
  2331  }
  2332  
  2333  // FilterPoolPausedStateChanged is a free log retrieval operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  2334  //
  2335  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  2336  func (_Vault *VaultFilterer) FilterPoolPausedStateChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultPoolPausedStateChangedIterator, error) {
  2337  
  2338  	var poolRule []interface{}
  2339  	for _, poolItem := range pool {
  2340  		poolRule = append(poolRule, poolItem)
  2341  	}
  2342  
  2343  	logs, sub, err := _Vault.contract.FilterLogs(opts, "PoolPausedStateChanged", poolRule)
  2344  	if err != nil {
  2345  		return nil, err
  2346  	}
  2347  	return &VaultPoolPausedStateChangedIterator{contract: _Vault.contract, event: "PoolPausedStateChanged", logs: logs, sub: sub}, nil
  2348  }
  2349  
  2350  // WatchPoolPausedStateChanged is a free log subscription operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  2351  //
  2352  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  2353  func (_Vault *VaultFilterer) WatchPoolPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultPoolPausedStateChanged, pool []common.Address) (event.Subscription, error) {
  2354  
  2355  	var poolRule []interface{}
  2356  	for _, poolItem := range pool {
  2357  		poolRule = append(poolRule, poolItem)
  2358  	}
  2359  
  2360  	logs, sub, err := _Vault.contract.WatchLogs(opts, "PoolPausedStateChanged", poolRule)
  2361  	if err != nil {
  2362  		return nil, err
  2363  	}
  2364  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2365  		defer sub.Unsubscribe()
  2366  		for {
  2367  			select {
  2368  			case log := <-logs:
  2369  				// New log arrived, parse the event and forward to the user
  2370  				event := new(VaultPoolPausedStateChanged)
  2371  				if err := _Vault.contract.UnpackLog(event, "PoolPausedStateChanged", log); err != nil {
  2372  					return err
  2373  				}
  2374  				event.Raw = log
  2375  
  2376  				select {
  2377  				case sink <- event:
  2378  				case err := <-sub.Err():
  2379  					return err
  2380  				case <-quit:
  2381  					return nil
  2382  				}
  2383  			case err := <-sub.Err():
  2384  				return err
  2385  			case <-quit:
  2386  				return nil
  2387  			}
  2388  		}
  2389  	}), nil
  2390  }
  2391  
  2392  // ParsePoolPausedStateChanged is a log parse operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  2393  //
  2394  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  2395  func (_Vault *VaultFilterer) ParsePoolPausedStateChanged(log types.Log) (*VaultPoolPausedStateChanged, error) {
  2396  	event := new(VaultPoolPausedStateChanged)
  2397  	if err := _Vault.contract.UnpackLog(event, "PoolPausedStateChanged", log); err != nil {
  2398  		return nil, err
  2399  	}
  2400  	event.Raw = log
  2401  	return event, nil
  2402  }
  2403  
  2404  // VaultPoolRecoveryModeStateChangedIterator is returned from FilterPoolRecoveryModeStateChanged and is used to iterate over the raw logs and unpacked data for PoolRecoveryModeStateChanged events raised by the Vault contract.
  2405  type VaultPoolRecoveryModeStateChangedIterator struct {
  2406  	Event *VaultPoolRecoveryModeStateChanged // Event containing the contract specifics and raw log
  2407  
  2408  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2409  	event    string              // Event name to use for unpacking event data
  2410  
  2411  	logs chan types.Log        // Log channel receiving the found contract events
  2412  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2413  	done bool                  // Whether the subscription completed delivering logs
  2414  	fail error                 // Occurred error to stop iteration
  2415  }
  2416  
  2417  // Next advances the iterator to the subsequent event, returning whether there
  2418  // are any more events found. In case of a retrieval or parsing error, false is
  2419  // returned and Error() can be queried for the exact failure.
  2420  func (it *VaultPoolRecoveryModeStateChangedIterator) Next() bool {
  2421  	// If the iterator failed, stop iterating
  2422  	if it.fail != nil {
  2423  		return false
  2424  	}
  2425  	// If the iterator completed, deliver directly whatever's available
  2426  	if it.done {
  2427  		select {
  2428  		case log := <-it.logs:
  2429  			it.Event = new(VaultPoolRecoveryModeStateChanged)
  2430  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2431  				it.fail = err
  2432  				return false
  2433  			}
  2434  			it.Event.Raw = log
  2435  			return true
  2436  
  2437  		default:
  2438  			return false
  2439  		}
  2440  	}
  2441  	// Iterator still in progress, wait for either a data or an error event
  2442  	select {
  2443  	case log := <-it.logs:
  2444  		it.Event = new(VaultPoolRecoveryModeStateChanged)
  2445  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2446  			it.fail = err
  2447  			return false
  2448  		}
  2449  		it.Event.Raw = log
  2450  		return true
  2451  
  2452  	case err := <-it.sub.Err():
  2453  		it.done = true
  2454  		it.fail = err
  2455  		return it.Next()
  2456  	}
  2457  }
  2458  
  2459  // Error returns any retrieval or parsing error occurred during filtering.
  2460  func (it *VaultPoolRecoveryModeStateChangedIterator) Error() error {
  2461  	return it.fail
  2462  }
  2463  
  2464  // Close terminates the iteration process, releasing any pending underlying
  2465  // resources.
  2466  func (it *VaultPoolRecoveryModeStateChangedIterator) Close() error {
  2467  	it.sub.Unsubscribe()
  2468  	return nil
  2469  }
  2470  
  2471  // VaultPoolRecoveryModeStateChanged represents a PoolRecoveryModeStateChanged event raised by the Vault contract.
  2472  type VaultPoolRecoveryModeStateChanged struct {
  2473  	Pool         common.Address
  2474  	RecoveryMode bool
  2475  	Raw          types.Log // Blockchain specific contextual infos
  2476  }
  2477  
  2478  // FilterPoolRecoveryModeStateChanged is a free log retrieval operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  2479  //
  2480  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  2481  func (_Vault *VaultFilterer) FilterPoolRecoveryModeStateChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultPoolRecoveryModeStateChangedIterator, error) {
  2482  
  2483  	var poolRule []interface{}
  2484  	for _, poolItem := range pool {
  2485  		poolRule = append(poolRule, poolItem)
  2486  	}
  2487  
  2488  	logs, sub, err := _Vault.contract.FilterLogs(opts, "PoolRecoveryModeStateChanged", poolRule)
  2489  	if err != nil {
  2490  		return nil, err
  2491  	}
  2492  	return &VaultPoolRecoveryModeStateChangedIterator{contract: _Vault.contract, event: "PoolRecoveryModeStateChanged", logs: logs, sub: sub}, nil
  2493  }
  2494  
  2495  // WatchPoolRecoveryModeStateChanged is a free log subscription operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  2496  //
  2497  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  2498  func (_Vault *VaultFilterer) WatchPoolRecoveryModeStateChanged(opts *bind.WatchOpts, sink chan<- *VaultPoolRecoveryModeStateChanged, pool []common.Address) (event.Subscription, error) {
  2499  
  2500  	var poolRule []interface{}
  2501  	for _, poolItem := range pool {
  2502  		poolRule = append(poolRule, poolItem)
  2503  	}
  2504  
  2505  	logs, sub, err := _Vault.contract.WatchLogs(opts, "PoolRecoveryModeStateChanged", poolRule)
  2506  	if err != nil {
  2507  		return nil, err
  2508  	}
  2509  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2510  		defer sub.Unsubscribe()
  2511  		for {
  2512  			select {
  2513  			case log := <-logs:
  2514  				// New log arrived, parse the event and forward to the user
  2515  				event := new(VaultPoolRecoveryModeStateChanged)
  2516  				if err := _Vault.contract.UnpackLog(event, "PoolRecoveryModeStateChanged", log); err != nil {
  2517  					return err
  2518  				}
  2519  				event.Raw = log
  2520  
  2521  				select {
  2522  				case sink <- event:
  2523  				case err := <-sub.Err():
  2524  					return err
  2525  				case <-quit:
  2526  					return nil
  2527  				}
  2528  			case err := <-sub.Err():
  2529  				return err
  2530  			case <-quit:
  2531  				return nil
  2532  			}
  2533  		}
  2534  	}), nil
  2535  }
  2536  
  2537  // ParsePoolRecoveryModeStateChanged is a log parse operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  2538  //
  2539  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  2540  func (_Vault *VaultFilterer) ParsePoolRecoveryModeStateChanged(log types.Log) (*VaultPoolRecoveryModeStateChanged, error) {
  2541  	event := new(VaultPoolRecoveryModeStateChanged)
  2542  	if err := _Vault.contract.UnpackLog(event, "PoolRecoveryModeStateChanged", log); err != nil {
  2543  		return nil, err
  2544  	}
  2545  	event.Raw = log
  2546  	return event, nil
  2547  }
  2548  
  2549  // VaultPoolRegisteredIterator is returned from FilterPoolRegistered and is used to iterate over the raw logs and unpacked data for PoolRegistered events raised by the Vault contract.
  2550  type VaultPoolRegisteredIterator struct {
  2551  	Event *VaultPoolRegistered // Event containing the contract specifics and raw log
  2552  
  2553  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2554  	event    string              // Event name to use for unpacking event data
  2555  
  2556  	logs chan types.Log        // Log channel receiving the found contract events
  2557  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2558  	done bool                  // Whether the subscription completed delivering logs
  2559  	fail error                 // Occurred error to stop iteration
  2560  }
  2561  
  2562  // Next advances the iterator to the subsequent event, returning whether there
  2563  // are any more events found. In case of a retrieval or parsing error, false is
  2564  // returned and Error() can be queried for the exact failure.
  2565  func (it *VaultPoolRegisteredIterator) Next() bool {
  2566  	// If the iterator failed, stop iterating
  2567  	if it.fail != nil {
  2568  		return false
  2569  	}
  2570  	// If the iterator completed, deliver directly whatever's available
  2571  	if it.done {
  2572  		select {
  2573  		case log := <-it.logs:
  2574  			it.Event = new(VaultPoolRegistered)
  2575  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2576  				it.fail = err
  2577  				return false
  2578  			}
  2579  			it.Event.Raw = log
  2580  			return true
  2581  
  2582  		default:
  2583  			return false
  2584  		}
  2585  	}
  2586  	// Iterator still in progress, wait for either a data or an error event
  2587  	select {
  2588  	case log := <-it.logs:
  2589  		it.Event = new(VaultPoolRegistered)
  2590  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2591  			it.fail = err
  2592  			return false
  2593  		}
  2594  		it.Event.Raw = log
  2595  		return true
  2596  
  2597  	case err := <-it.sub.Err():
  2598  		it.done = true
  2599  		it.fail = err
  2600  		return it.Next()
  2601  	}
  2602  }
  2603  
  2604  // Error returns any retrieval or parsing error occurred during filtering.
  2605  func (it *VaultPoolRegisteredIterator) Error() error {
  2606  	return it.fail
  2607  }
  2608  
  2609  // Close terminates the iteration process, releasing any pending underlying
  2610  // resources.
  2611  func (it *VaultPoolRegisteredIterator) Close() error {
  2612  	it.sub.Unsubscribe()
  2613  	return nil
  2614  }
  2615  
  2616  // VaultPoolRegistered represents a PoolRegistered event raised by the Vault contract.
  2617  type VaultPoolRegistered struct {
  2618  	Pool                common.Address
  2619  	Factory             common.Address
  2620  	TokenConfig         []TokenConfig
  2621  	SwapFeePercentage   *big.Int
  2622  	PauseWindowEndTime  uint32
  2623  	RoleAccounts        PoolRoleAccounts
  2624  	HooksConfig         HooksConfig
  2625  	LiquidityManagement LiquidityManagement
  2626  	Raw                 types.Log // Blockchain specific contextual infos
  2627  }
  2628  
  2629  // FilterPoolRegistered is a free log retrieval operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  2630  //
  2631  // Solidity: event PoolRegistered(address indexed pool, address indexed factory, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, (address,address,address) roleAccounts, (bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address) hooksConfig, (bool,bool,bool,bool) liquidityManagement)
  2632  func (_Vault *VaultFilterer) FilterPoolRegistered(opts *bind.FilterOpts, pool []common.Address, factory []common.Address) (*VaultPoolRegisteredIterator, error) {
  2633  
  2634  	var poolRule []interface{}
  2635  	for _, poolItem := range pool {
  2636  		poolRule = append(poolRule, poolItem)
  2637  	}
  2638  	var factoryRule []interface{}
  2639  	for _, factoryItem := range factory {
  2640  		factoryRule = append(factoryRule, factoryItem)
  2641  	}
  2642  
  2643  	logs, sub, err := _Vault.contract.FilterLogs(opts, "PoolRegistered", poolRule, factoryRule)
  2644  	if err != nil {
  2645  		return nil, err
  2646  	}
  2647  	return &VaultPoolRegisteredIterator{contract: _Vault.contract, event: "PoolRegistered", logs: logs, sub: sub}, nil
  2648  }
  2649  
  2650  // WatchPoolRegistered is a free log subscription operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  2651  //
  2652  // Solidity: event PoolRegistered(address indexed pool, address indexed factory, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, (address,address,address) roleAccounts, (bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address) hooksConfig, (bool,bool,bool,bool) liquidityManagement)
  2653  func (_Vault *VaultFilterer) WatchPoolRegistered(opts *bind.WatchOpts, sink chan<- *VaultPoolRegistered, pool []common.Address, factory []common.Address) (event.Subscription, error) {
  2654  
  2655  	var poolRule []interface{}
  2656  	for _, poolItem := range pool {
  2657  		poolRule = append(poolRule, poolItem)
  2658  	}
  2659  	var factoryRule []interface{}
  2660  	for _, factoryItem := range factory {
  2661  		factoryRule = append(factoryRule, factoryItem)
  2662  	}
  2663  
  2664  	logs, sub, err := _Vault.contract.WatchLogs(opts, "PoolRegistered", poolRule, factoryRule)
  2665  	if err != nil {
  2666  		return nil, err
  2667  	}
  2668  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2669  		defer sub.Unsubscribe()
  2670  		for {
  2671  			select {
  2672  			case log := <-logs:
  2673  				// New log arrived, parse the event and forward to the user
  2674  				event := new(VaultPoolRegistered)
  2675  				if err := _Vault.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  2676  					return err
  2677  				}
  2678  				event.Raw = log
  2679  
  2680  				select {
  2681  				case sink <- event:
  2682  				case err := <-sub.Err():
  2683  					return err
  2684  				case <-quit:
  2685  					return nil
  2686  				}
  2687  			case err := <-sub.Err():
  2688  				return err
  2689  			case <-quit:
  2690  				return nil
  2691  			}
  2692  		}
  2693  	}), nil
  2694  }
  2695  
  2696  // ParsePoolRegistered is a log parse operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  2697  //
  2698  // Solidity: event PoolRegistered(address indexed pool, address indexed factory, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, (address,address,address) roleAccounts, (bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address) hooksConfig, (bool,bool,bool,bool) liquidityManagement)
  2699  func (_Vault *VaultFilterer) ParsePoolRegistered(log types.Log) (*VaultPoolRegistered, error) {
  2700  	event := new(VaultPoolRegistered)
  2701  	if err := _Vault.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  2702  		return nil, err
  2703  	}
  2704  	event.Raw = log
  2705  	return event, nil
  2706  }
  2707  
  2708  // VaultProtocolFeeControllerChangedIterator is returned from FilterProtocolFeeControllerChanged and is used to iterate over the raw logs and unpacked data for ProtocolFeeControllerChanged events raised by the Vault contract.
  2709  type VaultProtocolFeeControllerChangedIterator struct {
  2710  	Event *VaultProtocolFeeControllerChanged // Event containing the contract specifics and raw log
  2711  
  2712  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2713  	event    string              // Event name to use for unpacking event data
  2714  
  2715  	logs chan types.Log        // Log channel receiving the found contract events
  2716  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2717  	done bool                  // Whether the subscription completed delivering logs
  2718  	fail error                 // Occurred error to stop iteration
  2719  }
  2720  
  2721  // Next advances the iterator to the subsequent event, returning whether there
  2722  // are any more events found. In case of a retrieval or parsing error, false is
  2723  // returned and Error() can be queried for the exact failure.
  2724  func (it *VaultProtocolFeeControllerChangedIterator) Next() bool {
  2725  	// If the iterator failed, stop iterating
  2726  	if it.fail != nil {
  2727  		return false
  2728  	}
  2729  	// If the iterator completed, deliver directly whatever's available
  2730  	if it.done {
  2731  		select {
  2732  		case log := <-it.logs:
  2733  			it.Event = new(VaultProtocolFeeControllerChanged)
  2734  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2735  				it.fail = err
  2736  				return false
  2737  			}
  2738  			it.Event.Raw = log
  2739  			return true
  2740  
  2741  		default:
  2742  			return false
  2743  		}
  2744  	}
  2745  	// Iterator still in progress, wait for either a data or an error event
  2746  	select {
  2747  	case log := <-it.logs:
  2748  		it.Event = new(VaultProtocolFeeControllerChanged)
  2749  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2750  			it.fail = err
  2751  			return false
  2752  		}
  2753  		it.Event.Raw = log
  2754  		return true
  2755  
  2756  	case err := <-it.sub.Err():
  2757  		it.done = true
  2758  		it.fail = err
  2759  		return it.Next()
  2760  	}
  2761  }
  2762  
  2763  // Error returns any retrieval or parsing error occurred during filtering.
  2764  func (it *VaultProtocolFeeControllerChangedIterator) Error() error {
  2765  	return it.fail
  2766  }
  2767  
  2768  // Close terminates the iteration process, releasing any pending underlying
  2769  // resources.
  2770  func (it *VaultProtocolFeeControllerChangedIterator) Close() error {
  2771  	it.sub.Unsubscribe()
  2772  	return nil
  2773  }
  2774  
  2775  // VaultProtocolFeeControllerChanged represents a ProtocolFeeControllerChanged event raised by the Vault contract.
  2776  type VaultProtocolFeeControllerChanged struct {
  2777  	NewProtocolFeeController common.Address
  2778  	Raw                      types.Log // Blockchain specific contextual infos
  2779  }
  2780  
  2781  // FilterProtocolFeeControllerChanged is a free log retrieval operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  2782  //
  2783  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  2784  func (_Vault *VaultFilterer) FilterProtocolFeeControllerChanged(opts *bind.FilterOpts, newProtocolFeeController []common.Address) (*VaultProtocolFeeControllerChangedIterator, error) {
  2785  
  2786  	var newProtocolFeeControllerRule []interface{}
  2787  	for _, newProtocolFeeControllerItem := range newProtocolFeeController {
  2788  		newProtocolFeeControllerRule = append(newProtocolFeeControllerRule, newProtocolFeeControllerItem)
  2789  	}
  2790  
  2791  	logs, sub, err := _Vault.contract.FilterLogs(opts, "ProtocolFeeControllerChanged", newProtocolFeeControllerRule)
  2792  	if err != nil {
  2793  		return nil, err
  2794  	}
  2795  	return &VaultProtocolFeeControllerChangedIterator{contract: _Vault.contract, event: "ProtocolFeeControllerChanged", logs: logs, sub: sub}, nil
  2796  }
  2797  
  2798  // WatchProtocolFeeControllerChanged is a free log subscription operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  2799  //
  2800  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  2801  func (_Vault *VaultFilterer) WatchProtocolFeeControllerChanged(opts *bind.WatchOpts, sink chan<- *VaultProtocolFeeControllerChanged, newProtocolFeeController []common.Address) (event.Subscription, error) {
  2802  
  2803  	var newProtocolFeeControllerRule []interface{}
  2804  	for _, newProtocolFeeControllerItem := range newProtocolFeeController {
  2805  		newProtocolFeeControllerRule = append(newProtocolFeeControllerRule, newProtocolFeeControllerItem)
  2806  	}
  2807  
  2808  	logs, sub, err := _Vault.contract.WatchLogs(opts, "ProtocolFeeControllerChanged", newProtocolFeeControllerRule)
  2809  	if err != nil {
  2810  		return nil, err
  2811  	}
  2812  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2813  		defer sub.Unsubscribe()
  2814  		for {
  2815  			select {
  2816  			case log := <-logs:
  2817  				// New log arrived, parse the event and forward to the user
  2818  				event := new(VaultProtocolFeeControllerChanged)
  2819  				if err := _Vault.contract.UnpackLog(event, "ProtocolFeeControllerChanged", log); err != nil {
  2820  					return err
  2821  				}
  2822  				event.Raw = log
  2823  
  2824  				select {
  2825  				case sink <- event:
  2826  				case err := <-sub.Err():
  2827  					return err
  2828  				case <-quit:
  2829  					return nil
  2830  				}
  2831  			case err := <-sub.Err():
  2832  				return err
  2833  			case <-quit:
  2834  				return nil
  2835  			}
  2836  		}
  2837  	}), nil
  2838  }
  2839  
  2840  // ParseProtocolFeeControllerChanged is a log parse operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  2841  //
  2842  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  2843  func (_Vault *VaultFilterer) ParseProtocolFeeControllerChanged(log types.Log) (*VaultProtocolFeeControllerChanged, error) {
  2844  	event := new(VaultProtocolFeeControllerChanged)
  2845  	if err := _Vault.contract.UnpackLog(event, "ProtocolFeeControllerChanged", log); err != nil {
  2846  		return nil, err
  2847  	}
  2848  	event.Raw = log
  2849  	return event, nil
  2850  }
  2851  
  2852  // VaultSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the Vault contract.
  2853  type VaultSwapIterator struct {
  2854  	Event *VaultSwap // Event containing the contract specifics and raw log
  2855  
  2856  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2857  	event    string              // Event name to use for unpacking event data
  2858  
  2859  	logs chan types.Log        // Log channel receiving the found contract events
  2860  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2861  	done bool                  // Whether the subscription completed delivering logs
  2862  	fail error                 // Occurred error to stop iteration
  2863  }
  2864  
  2865  // Next advances the iterator to the subsequent event, returning whether there
  2866  // are any more events found. In case of a retrieval or parsing error, false is
  2867  // returned and Error() can be queried for the exact failure.
  2868  func (it *VaultSwapIterator) Next() bool {
  2869  	// If the iterator failed, stop iterating
  2870  	if it.fail != nil {
  2871  		return false
  2872  	}
  2873  	// If the iterator completed, deliver directly whatever's available
  2874  	if it.done {
  2875  		select {
  2876  		case log := <-it.logs:
  2877  			it.Event = new(VaultSwap)
  2878  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2879  				it.fail = err
  2880  				return false
  2881  			}
  2882  			it.Event.Raw = log
  2883  			return true
  2884  
  2885  		default:
  2886  			return false
  2887  		}
  2888  	}
  2889  	// Iterator still in progress, wait for either a data or an error event
  2890  	select {
  2891  	case log := <-it.logs:
  2892  		it.Event = new(VaultSwap)
  2893  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2894  			it.fail = err
  2895  			return false
  2896  		}
  2897  		it.Event.Raw = log
  2898  		return true
  2899  
  2900  	case err := <-it.sub.Err():
  2901  		it.done = true
  2902  		it.fail = err
  2903  		return it.Next()
  2904  	}
  2905  }
  2906  
  2907  // Error returns any retrieval or parsing error occurred during filtering.
  2908  func (it *VaultSwapIterator) Error() error {
  2909  	return it.fail
  2910  }
  2911  
  2912  // Close terminates the iteration process, releasing any pending underlying
  2913  // resources.
  2914  func (it *VaultSwapIterator) Close() error {
  2915  	it.sub.Unsubscribe()
  2916  	return nil
  2917  }
  2918  
  2919  // VaultSwap represents a Swap event raised by the Vault contract.
  2920  type VaultSwap struct {
  2921  	Pool              common.Address
  2922  	TokenIn           common.Address
  2923  	TokenOut          common.Address
  2924  	AmountIn          *big.Int
  2925  	AmountOut         *big.Int
  2926  	SwapFeePercentage *big.Int
  2927  	SwapFeeAmount     *big.Int
  2928  	Raw               types.Log // Blockchain specific contextual infos
  2929  }
  2930  
  2931  // FilterSwap is a free log retrieval operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  2932  //
  2933  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  2934  func (_Vault *VaultFilterer) FilterSwap(opts *bind.FilterOpts, pool []common.Address, tokenIn []common.Address, tokenOut []common.Address) (*VaultSwapIterator, error) {
  2935  
  2936  	var poolRule []interface{}
  2937  	for _, poolItem := range pool {
  2938  		poolRule = append(poolRule, poolItem)
  2939  	}
  2940  	var tokenInRule []interface{}
  2941  	for _, tokenInItem := range tokenIn {
  2942  		tokenInRule = append(tokenInRule, tokenInItem)
  2943  	}
  2944  	var tokenOutRule []interface{}
  2945  	for _, tokenOutItem := range tokenOut {
  2946  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  2947  	}
  2948  
  2949  	logs, sub, err := _Vault.contract.FilterLogs(opts, "Swap", poolRule, tokenInRule, tokenOutRule)
  2950  	if err != nil {
  2951  		return nil, err
  2952  	}
  2953  	return &VaultSwapIterator{contract: _Vault.contract, event: "Swap", logs: logs, sub: sub}, nil
  2954  }
  2955  
  2956  // WatchSwap is a free log subscription operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  2957  //
  2958  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  2959  func (_Vault *VaultFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *VaultSwap, pool []common.Address, tokenIn []common.Address, tokenOut []common.Address) (event.Subscription, error) {
  2960  
  2961  	var poolRule []interface{}
  2962  	for _, poolItem := range pool {
  2963  		poolRule = append(poolRule, poolItem)
  2964  	}
  2965  	var tokenInRule []interface{}
  2966  	for _, tokenInItem := range tokenIn {
  2967  		tokenInRule = append(tokenInRule, tokenInItem)
  2968  	}
  2969  	var tokenOutRule []interface{}
  2970  	for _, tokenOutItem := range tokenOut {
  2971  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  2972  	}
  2973  
  2974  	logs, sub, err := _Vault.contract.WatchLogs(opts, "Swap", poolRule, tokenInRule, tokenOutRule)
  2975  	if err != nil {
  2976  		return nil, err
  2977  	}
  2978  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2979  		defer sub.Unsubscribe()
  2980  		for {
  2981  			select {
  2982  			case log := <-logs:
  2983  				// New log arrived, parse the event and forward to the user
  2984  				event := new(VaultSwap)
  2985  				if err := _Vault.contract.UnpackLog(event, "Swap", log); err != nil {
  2986  					return err
  2987  				}
  2988  				event.Raw = log
  2989  
  2990  				select {
  2991  				case sink <- event:
  2992  				case err := <-sub.Err():
  2993  					return err
  2994  				case <-quit:
  2995  					return nil
  2996  				}
  2997  			case err := <-sub.Err():
  2998  				return err
  2999  			case <-quit:
  3000  				return nil
  3001  			}
  3002  		}
  3003  	}), nil
  3004  }
  3005  
  3006  // ParseSwap is a log parse operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  3007  //
  3008  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  3009  func (_Vault *VaultFilterer) ParseSwap(log types.Log) (*VaultSwap, error) {
  3010  	event := new(VaultSwap)
  3011  	if err := _Vault.contract.UnpackLog(event, "Swap", log); err != nil {
  3012  		return nil, err
  3013  	}
  3014  	event.Raw = log
  3015  	return event, nil
  3016  }
  3017  
  3018  // VaultSwapFeePercentageChangedIterator is returned from FilterSwapFeePercentageChanged and is used to iterate over the raw logs and unpacked data for SwapFeePercentageChanged events raised by the Vault contract.
  3019  type VaultSwapFeePercentageChangedIterator struct {
  3020  	Event *VaultSwapFeePercentageChanged // Event containing the contract specifics and raw log
  3021  
  3022  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3023  	event    string              // Event name to use for unpacking event data
  3024  
  3025  	logs chan types.Log        // Log channel receiving the found contract events
  3026  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3027  	done bool                  // Whether the subscription completed delivering logs
  3028  	fail error                 // Occurred error to stop iteration
  3029  }
  3030  
  3031  // Next advances the iterator to the subsequent event, returning whether there
  3032  // are any more events found. In case of a retrieval or parsing error, false is
  3033  // returned and Error() can be queried for the exact failure.
  3034  func (it *VaultSwapFeePercentageChangedIterator) Next() bool {
  3035  	// If the iterator failed, stop iterating
  3036  	if it.fail != nil {
  3037  		return false
  3038  	}
  3039  	// If the iterator completed, deliver directly whatever's available
  3040  	if it.done {
  3041  		select {
  3042  		case log := <-it.logs:
  3043  			it.Event = new(VaultSwapFeePercentageChanged)
  3044  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3045  				it.fail = err
  3046  				return false
  3047  			}
  3048  			it.Event.Raw = log
  3049  			return true
  3050  
  3051  		default:
  3052  			return false
  3053  		}
  3054  	}
  3055  	// Iterator still in progress, wait for either a data or an error event
  3056  	select {
  3057  	case log := <-it.logs:
  3058  		it.Event = new(VaultSwapFeePercentageChanged)
  3059  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3060  			it.fail = err
  3061  			return false
  3062  		}
  3063  		it.Event.Raw = log
  3064  		return true
  3065  
  3066  	case err := <-it.sub.Err():
  3067  		it.done = true
  3068  		it.fail = err
  3069  		return it.Next()
  3070  	}
  3071  }
  3072  
  3073  // Error returns any retrieval or parsing error occurred during filtering.
  3074  func (it *VaultSwapFeePercentageChangedIterator) Error() error {
  3075  	return it.fail
  3076  }
  3077  
  3078  // Close terminates the iteration process, releasing any pending underlying
  3079  // resources.
  3080  func (it *VaultSwapFeePercentageChangedIterator) Close() error {
  3081  	it.sub.Unsubscribe()
  3082  	return nil
  3083  }
  3084  
  3085  // VaultSwapFeePercentageChanged represents a SwapFeePercentageChanged event raised by the Vault contract.
  3086  type VaultSwapFeePercentageChanged struct {
  3087  	Pool              common.Address
  3088  	SwapFeePercentage *big.Int
  3089  	Raw               types.Log // Blockchain specific contextual infos
  3090  }
  3091  
  3092  // FilterSwapFeePercentageChanged is a free log retrieval operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  3093  //
  3094  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  3095  func (_Vault *VaultFilterer) FilterSwapFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultSwapFeePercentageChangedIterator, error) {
  3096  
  3097  	var poolRule []interface{}
  3098  	for _, poolItem := range pool {
  3099  		poolRule = append(poolRule, poolItem)
  3100  	}
  3101  
  3102  	logs, sub, err := _Vault.contract.FilterLogs(opts, "SwapFeePercentageChanged", poolRule)
  3103  	if err != nil {
  3104  		return nil, err
  3105  	}
  3106  	return &VaultSwapFeePercentageChangedIterator{contract: _Vault.contract, event: "SwapFeePercentageChanged", logs: logs, sub: sub}, nil
  3107  }
  3108  
  3109  // WatchSwapFeePercentageChanged is a free log subscription operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  3110  //
  3111  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  3112  func (_Vault *VaultFilterer) WatchSwapFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultSwapFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
  3113  
  3114  	var poolRule []interface{}
  3115  	for _, poolItem := range pool {
  3116  		poolRule = append(poolRule, poolItem)
  3117  	}
  3118  
  3119  	logs, sub, err := _Vault.contract.WatchLogs(opts, "SwapFeePercentageChanged", poolRule)
  3120  	if err != nil {
  3121  		return nil, err
  3122  	}
  3123  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3124  		defer sub.Unsubscribe()
  3125  		for {
  3126  			select {
  3127  			case log := <-logs:
  3128  				// New log arrived, parse the event and forward to the user
  3129  				event := new(VaultSwapFeePercentageChanged)
  3130  				if err := _Vault.contract.UnpackLog(event, "SwapFeePercentageChanged", log); err != nil {
  3131  					return err
  3132  				}
  3133  				event.Raw = log
  3134  
  3135  				select {
  3136  				case sink <- event:
  3137  				case err := <-sub.Err():
  3138  					return err
  3139  				case <-quit:
  3140  					return nil
  3141  				}
  3142  			case err := <-sub.Err():
  3143  				return err
  3144  			case <-quit:
  3145  				return nil
  3146  			}
  3147  		}
  3148  	}), nil
  3149  }
  3150  
  3151  // ParseSwapFeePercentageChanged is a log parse operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  3152  //
  3153  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  3154  func (_Vault *VaultFilterer) ParseSwapFeePercentageChanged(log types.Log) (*VaultSwapFeePercentageChanged, error) {
  3155  	event := new(VaultSwapFeePercentageChanged)
  3156  	if err := _Vault.contract.UnpackLog(event, "SwapFeePercentageChanged", log); err != nil {
  3157  		return nil, err
  3158  	}
  3159  	event.Raw = log
  3160  	return event, nil
  3161  }
  3162  
  3163  // VaultTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Vault contract.
  3164  type VaultTransferIterator struct {
  3165  	Event *VaultTransfer // Event containing the contract specifics and raw log
  3166  
  3167  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3168  	event    string              // Event name to use for unpacking event data
  3169  
  3170  	logs chan types.Log        // Log channel receiving the found contract events
  3171  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3172  	done bool                  // Whether the subscription completed delivering logs
  3173  	fail error                 // Occurred error to stop iteration
  3174  }
  3175  
  3176  // Next advances the iterator to the subsequent event, returning whether there
  3177  // are any more events found. In case of a retrieval or parsing error, false is
  3178  // returned and Error() can be queried for the exact failure.
  3179  func (it *VaultTransferIterator) Next() bool {
  3180  	// If the iterator failed, stop iterating
  3181  	if it.fail != nil {
  3182  		return false
  3183  	}
  3184  	// If the iterator completed, deliver directly whatever's available
  3185  	if it.done {
  3186  		select {
  3187  		case log := <-it.logs:
  3188  			it.Event = new(VaultTransfer)
  3189  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3190  				it.fail = err
  3191  				return false
  3192  			}
  3193  			it.Event.Raw = log
  3194  			return true
  3195  
  3196  		default:
  3197  			return false
  3198  		}
  3199  	}
  3200  	// Iterator still in progress, wait for either a data or an error event
  3201  	select {
  3202  	case log := <-it.logs:
  3203  		it.Event = new(VaultTransfer)
  3204  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3205  			it.fail = err
  3206  			return false
  3207  		}
  3208  		it.Event.Raw = log
  3209  		return true
  3210  
  3211  	case err := <-it.sub.Err():
  3212  		it.done = true
  3213  		it.fail = err
  3214  		return it.Next()
  3215  	}
  3216  }
  3217  
  3218  // Error returns any retrieval or parsing error occurred during filtering.
  3219  func (it *VaultTransferIterator) Error() error {
  3220  	return it.fail
  3221  }
  3222  
  3223  // Close terminates the iteration process, releasing any pending underlying
  3224  // resources.
  3225  func (it *VaultTransferIterator) Close() error {
  3226  	it.sub.Unsubscribe()
  3227  	return nil
  3228  }
  3229  
  3230  // VaultTransfer represents a Transfer event raised by the Vault contract.
  3231  type VaultTransfer struct {
  3232  	Pool  common.Address
  3233  	From  common.Address
  3234  	To    common.Address
  3235  	Value *big.Int
  3236  	Raw   types.Log // Blockchain specific contextual infos
  3237  }
  3238  
  3239  // FilterTransfer is a free log retrieval operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  3240  //
  3241  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  3242  func (_Vault *VaultFilterer) FilterTransfer(opts *bind.FilterOpts, pool []common.Address, from []common.Address, to []common.Address) (*VaultTransferIterator, error) {
  3243  
  3244  	var poolRule []interface{}
  3245  	for _, poolItem := range pool {
  3246  		poolRule = append(poolRule, poolItem)
  3247  	}
  3248  	var fromRule []interface{}
  3249  	for _, fromItem := range from {
  3250  		fromRule = append(fromRule, fromItem)
  3251  	}
  3252  	var toRule []interface{}
  3253  	for _, toItem := range to {
  3254  		toRule = append(toRule, toItem)
  3255  	}
  3256  
  3257  	logs, sub, err := _Vault.contract.FilterLogs(opts, "Transfer", poolRule, fromRule, toRule)
  3258  	if err != nil {
  3259  		return nil, err
  3260  	}
  3261  	return &VaultTransferIterator{contract: _Vault.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3262  }
  3263  
  3264  // WatchTransfer is a free log subscription operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  3265  //
  3266  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  3267  func (_Vault *VaultFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *VaultTransfer, pool []common.Address, from []common.Address, to []common.Address) (event.Subscription, error) {
  3268  
  3269  	var poolRule []interface{}
  3270  	for _, poolItem := range pool {
  3271  		poolRule = append(poolRule, poolItem)
  3272  	}
  3273  	var fromRule []interface{}
  3274  	for _, fromItem := range from {
  3275  		fromRule = append(fromRule, fromItem)
  3276  	}
  3277  	var toRule []interface{}
  3278  	for _, toItem := range to {
  3279  		toRule = append(toRule, toItem)
  3280  	}
  3281  
  3282  	logs, sub, err := _Vault.contract.WatchLogs(opts, "Transfer", poolRule, fromRule, toRule)
  3283  	if err != nil {
  3284  		return nil, err
  3285  	}
  3286  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3287  		defer sub.Unsubscribe()
  3288  		for {
  3289  			select {
  3290  			case log := <-logs:
  3291  				// New log arrived, parse the event and forward to the user
  3292  				event := new(VaultTransfer)
  3293  				if err := _Vault.contract.UnpackLog(event, "Transfer", log); err != nil {
  3294  					return err
  3295  				}
  3296  				event.Raw = log
  3297  
  3298  				select {
  3299  				case sink <- event:
  3300  				case err := <-sub.Err():
  3301  					return err
  3302  				case <-quit:
  3303  					return nil
  3304  				}
  3305  			case err := <-sub.Err():
  3306  				return err
  3307  			case <-quit:
  3308  				return nil
  3309  			}
  3310  		}
  3311  	}), nil
  3312  }
  3313  
  3314  // ParseTransfer is a log parse operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  3315  //
  3316  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  3317  func (_Vault *VaultFilterer) ParseTransfer(log types.Log) (*VaultTransfer, error) {
  3318  	event := new(VaultTransfer)
  3319  	if err := _Vault.contract.UnpackLog(event, "Transfer", log); err != nil {
  3320  		return nil, err
  3321  	}
  3322  	event.Raw = log
  3323  	return event, nil
  3324  }
  3325  
  3326  // VaultUnwrapIterator is returned from FilterUnwrap and is used to iterate over the raw logs and unpacked data for Unwrap events raised by the Vault contract.
  3327  type VaultUnwrapIterator struct {
  3328  	Event *VaultUnwrap // Event containing the contract specifics and raw log
  3329  
  3330  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3331  	event    string              // Event name to use for unpacking event data
  3332  
  3333  	logs chan types.Log        // Log channel receiving the found contract events
  3334  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3335  	done bool                  // Whether the subscription completed delivering logs
  3336  	fail error                 // Occurred error to stop iteration
  3337  }
  3338  
  3339  // Next advances the iterator to the subsequent event, returning whether there
  3340  // are any more events found. In case of a retrieval or parsing error, false is
  3341  // returned and Error() can be queried for the exact failure.
  3342  func (it *VaultUnwrapIterator) Next() bool {
  3343  	// If the iterator failed, stop iterating
  3344  	if it.fail != nil {
  3345  		return false
  3346  	}
  3347  	// If the iterator completed, deliver directly whatever's available
  3348  	if it.done {
  3349  		select {
  3350  		case log := <-it.logs:
  3351  			it.Event = new(VaultUnwrap)
  3352  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3353  				it.fail = err
  3354  				return false
  3355  			}
  3356  			it.Event.Raw = log
  3357  			return true
  3358  
  3359  		default:
  3360  			return false
  3361  		}
  3362  	}
  3363  	// Iterator still in progress, wait for either a data or an error event
  3364  	select {
  3365  	case log := <-it.logs:
  3366  		it.Event = new(VaultUnwrap)
  3367  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3368  			it.fail = err
  3369  			return false
  3370  		}
  3371  		it.Event.Raw = log
  3372  		return true
  3373  
  3374  	case err := <-it.sub.Err():
  3375  		it.done = true
  3376  		it.fail = err
  3377  		return it.Next()
  3378  	}
  3379  }
  3380  
  3381  // Error returns any retrieval or parsing error occurred during filtering.
  3382  func (it *VaultUnwrapIterator) Error() error {
  3383  	return it.fail
  3384  }
  3385  
  3386  // Close terminates the iteration process, releasing any pending underlying
  3387  // resources.
  3388  func (it *VaultUnwrapIterator) Close() error {
  3389  	it.sub.Unsubscribe()
  3390  	return nil
  3391  }
  3392  
  3393  // VaultUnwrap represents a Unwrap event raised by the Vault contract.
  3394  type VaultUnwrap struct {
  3395  	WrappedToken        common.Address
  3396  	BurnedShares        *big.Int
  3397  	WithdrawnUnderlying *big.Int
  3398  	BufferBalances      [32]byte
  3399  	Raw                 types.Log // Blockchain specific contextual infos
  3400  }
  3401  
  3402  // FilterUnwrap is a free log retrieval operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  3403  //
  3404  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  3405  func (_Vault *VaultFilterer) FilterUnwrap(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultUnwrapIterator, error) {
  3406  
  3407  	var wrappedTokenRule []interface{}
  3408  	for _, wrappedTokenItem := range wrappedToken {
  3409  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  3410  	}
  3411  
  3412  	logs, sub, err := _Vault.contract.FilterLogs(opts, "Unwrap", wrappedTokenRule)
  3413  	if err != nil {
  3414  		return nil, err
  3415  	}
  3416  	return &VaultUnwrapIterator{contract: _Vault.contract, event: "Unwrap", logs: logs, sub: sub}, nil
  3417  }
  3418  
  3419  // WatchUnwrap is a free log subscription operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  3420  //
  3421  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  3422  func (_Vault *VaultFilterer) WatchUnwrap(opts *bind.WatchOpts, sink chan<- *VaultUnwrap, wrappedToken []common.Address) (event.Subscription, error) {
  3423  
  3424  	var wrappedTokenRule []interface{}
  3425  	for _, wrappedTokenItem := range wrappedToken {
  3426  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  3427  	}
  3428  
  3429  	logs, sub, err := _Vault.contract.WatchLogs(opts, "Unwrap", wrappedTokenRule)
  3430  	if err != nil {
  3431  		return nil, err
  3432  	}
  3433  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3434  		defer sub.Unsubscribe()
  3435  		for {
  3436  			select {
  3437  			case log := <-logs:
  3438  				// New log arrived, parse the event and forward to the user
  3439  				event := new(VaultUnwrap)
  3440  				if err := _Vault.contract.UnpackLog(event, "Unwrap", log); err != nil {
  3441  					return err
  3442  				}
  3443  				event.Raw = log
  3444  
  3445  				select {
  3446  				case sink <- event:
  3447  				case err := <-sub.Err():
  3448  					return err
  3449  				case <-quit:
  3450  					return nil
  3451  				}
  3452  			case err := <-sub.Err():
  3453  				return err
  3454  			case <-quit:
  3455  				return nil
  3456  			}
  3457  		}
  3458  	}), nil
  3459  }
  3460  
  3461  // ParseUnwrap is a log parse operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  3462  //
  3463  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  3464  func (_Vault *VaultFilterer) ParseUnwrap(log types.Log) (*VaultUnwrap, error) {
  3465  	event := new(VaultUnwrap)
  3466  	if err := _Vault.contract.UnpackLog(event, "Unwrap", log); err != nil {
  3467  		return nil, err
  3468  	}
  3469  	event.Raw = log
  3470  	return event, nil
  3471  }
  3472  
  3473  // VaultVaultAuxiliaryIterator is returned from FilterVaultAuxiliary and is used to iterate over the raw logs and unpacked data for VaultAuxiliary events raised by the Vault contract.
  3474  type VaultVaultAuxiliaryIterator struct {
  3475  	Event *VaultVaultAuxiliary // Event containing the contract specifics and raw log
  3476  
  3477  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3478  	event    string              // Event name to use for unpacking event data
  3479  
  3480  	logs chan types.Log        // Log channel receiving the found contract events
  3481  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3482  	done bool                  // Whether the subscription completed delivering logs
  3483  	fail error                 // Occurred error to stop iteration
  3484  }
  3485  
  3486  // Next advances the iterator to the subsequent event, returning whether there
  3487  // are any more events found. In case of a retrieval or parsing error, false is
  3488  // returned and Error() can be queried for the exact failure.
  3489  func (it *VaultVaultAuxiliaryIterator) Next() bool {
  3490  	// If the iterator failed, stop iterating
  3491  	if it.fail != nil {
  3492  		return false
  3493  	}
  3494  	// If the iterator completed, deliver directly whatever's available
  3495  	if it.done {
  3496  		select {
  3497  		case log := <-it.logs:
  3498  			it.Event = new(VaultVaultAuxiliary)
  3499  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3500  				it.fail = err
  3501  				return false
  3502  			}
  3503  			it.Event.Raw = log
  3504  			return true
  3505  
  3506  		default:
  3507  			return false
  3508  		}
  3509  	}
  3510  	// Iterator still in progress, wait for either a data or an error event
  3511  	select {
  3512  	case log := <-it.logs:
  3513  		it.Event = new(VaultVaultAuxiliary)
  3514  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3515  			it.fail = err
  3516  			return false
  3517  		}
  3518  		it.Event.Raw = log
  3519  		return true
  3520  
  3521  	case err := <-it.sub.Err():
  3522  		it.done = true
  3523  		it.fail = err
  3524  		return it.Next()
  3525  	}
  3526  }
  3527  
  3528  // Error returns any retrieval or parsing error occurred during filtering.
  3529  func (it *VaultVaultAuxiliaryIterator) Error() error {
  3530  	return it.fail
  3531  }
  3532  
  3533  // Close terminates the iteration process, releasing any pending underlying
  3534  // resources.
  3535  func (it *VaultVaultAuxiliaryIterator) Close() error {
  3536  	it.sub.Unsubscribe()
  3537  	return nil
  3538  }
  3539  
  3540  // VaultVaultAuxiliary represents a VaultAuxiliary event raised by the Vault contract.
  3541  type VaultVaultAuxiliary struct {
  3542  	Pool      common.Address
  3543  	EventKey  [32]byte
  3544  	EventData []byte
  3545  	Raw       types.Log // Blockchain specific contextual infos
  3546  }
  3547  
  3548  // FilterVaultAuxiliary is a free log retrieval operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  3549  //
  3550  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  3551  func (_Vault *VaultFilterer) FilterVaultAuxiliary(opts *bind.FilterOpts, pool []common.Address, eventKey [][32]byte) (*VaultVaultAuxiliaryIterator, error) {
  3552  
  3553  	var poolRule []interface{}
  3554  	for _, poolItem := range pool {
  3555  		poolRule = append(poolRule, poolItem)
  3556  	}
  3557  	var eventKeyRule []interface{}
  3558  	for _, eventKeyItem := range eventKey {
  3559  		eventKeyRule = append(eventKeyRule, eventKeyItem)
  3560  	}
  3561  
  3562  	logs, sub, err := _Vault.contract.FilterLogs(opts, "VaultAuxiliary", poolRule, eventKeyRule)
  3563  	if err != nil {
  3564  		return nil, err
  3565  	}
  3566  	return &VaultVaultAuxiliaryIterator{contract: _Vault.contract, event: "VaultAuxiliary", logs: logs, sub: sub}, nil
  3567  }
  3568  
  3569  // WatchVaultAuxiliary is a free log subscription operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  3570  //
  3571  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  3572  func (_Vault *VaultFilterer) WatchVaultAuxiliary(opts *bind.WatchOpts, sink chan<- *VaultVaultAuxiliary, pool []common.Address, eventKey [][32]byte) (event.Subscription, error) {
  3573  
  3574  	var poolRule []interface{}
  3575  	for _, poolItem := range pool {
  3576  		poolRule = append(poolRule, poolItem)
  3577  	}
  3578  	var eventKeyRule []interface{}
  3579  	for _, eventKeyItem := range eventKey {
  3580  		eventKeyRule = append(eventKeyRule, eventKeyItem)
  3581  	}
  3582  
  3583  	logs, sub, err := _Vault.contract.WatchLogs(opts, "VaultAuxiliary", poolRule, eventKeyRule)
  3584  	if err != nil {
  3585  		return nil, err
  3586  	}
  3587  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3588  		defer sub.Unsubscribe()
  3589  		for {
  3590  			select {
  3591  			case log := <-logs:
  3592  				// New log arrived, parse the event and forward to the user
  3593  				event := new(VaultVaultAuxiliary)
  3594  				if err := _Vault.contract.UnpackLog(event, "VaultAuxiliary", log); err != nil {
  3595  					return err
  3596  				}
  3597  				event.Raw = log
  3598  
  3599  				select {
  3600  				case sink <- event:
  3601  				case err := <-sub.Err():
  3602  					return err
  3603  				case <-quit:
  3604  					return nil
  3605  				}
  3606  			case err := <-sub.Err():
  3607  				return err
  3608  			case <-quit:
  3609  				return nil
  3610  			}
  3611  		}
  3612  	}), nil
  3613  }
  3614  
  3615  // ParseVaultAuxiliary is a log parse operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  3616  //
  3617  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  3618  func (_Vault *VaultFilterer) ParseVaultAuxiliary(log types.Log) (*VaultVaultAuxiliary, error) {
  3619  	event := new(VaultVaultAuxiliary)
  3620  	if err := _Vault.contract.UnpackLog(event, "VaultAuxiliary", log); err != nil {
  3621  		return nil, err
  3622  	}
  3623  	event.Raw = log
  3624  	return event, nil
  3625  }
  3626  
  3627  // VaultVaultBuffersPausedStateChangedIterator is returned from FilterVaultBuffersPausedStateChanged and is used to iterate over the raw logs and unpacked data for VaultBuffersPausedStateChanged events raised by the Vault contract.
  3628  type VaultVaultBuffersPausedStateChangedIterator struct {
  3629  	Event *VaultVaultBuffersPausedStateChanged // Event containing the contract specifics and raw log
  3630  
  3631  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3632  	event    string              // Event name to use for unpacking event data
  3633  
  3634  	logs chan types.Log        // Log channel receiving the found contract events
  3635  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3636  	done bool                  // Whether the subscription completed delivering logs
  3637  	fail error                 // Occurred error to stop iteration
  3638  }
  3639  
  3640  // Next advances the iterator to the subsequent event, returning whether there
  3641  // are any more events found. In case of a retrieval or parsing error, false is
  3642  // returned and Error() can be queried for the exact failure.
  3643  func (it *VaultVaultBuffersPausedStateChangedIterator) Next() bool {
  3644  	// If the iterator failed, stop iterating
  3645  	if it.fail != nil {
  3646  		return false
  3647  	}
  3648  	// If the iterator completed, deliver directly whatever's available
  3649  	if it.done {
  3650  		select {
  3651  		case log := <-it.logs:
  3652  			it.Event = new(VaultVaultBuffersPausedStateChanged)
  3653  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3654  				it.fail = err
  3655  				return false
  3656  			}
  3657  			it.Event.Raw = log
  3658  			return true
  3659  
  3660  		default:
  3661  			return false
  3662  		}
  3663  	}
  3664  	// Iterator still in progress, wait for either a data or an error event
  3665  	select {
  3666  	case log := <-it.logs:
  3667  		it.Event = new(VaultVaultBuffersPausedStateChanged)
  3668  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3669  			it.fail = err
  3670  			return false
  3671  		}
  3672  		it.Event.Raw = log
  3673  		return true
  3674  
  3675  	case err := <-it.sub.Err():
  3676  		it.done = true
  3677  		it.fail = err
  3678  		return it.Next()
  3679  	}
  3680  }
  3681  
  3682  // Error returns any retrieval or parsing error occurred during filtering.
  3683  func (it *VaultVaultBuffersPausedStateChangedIterator) Error() error {
  3684  	return it.fail
  3685  }
  3686  
  3687  // Close terminates the iteration process, releasing any pending underlying
  3688  // resources.
  3689  func (it *VaultVaultBuffersPausedStateChangedIterator) Close() error {
  3690  	it.sub.Unsubscribe()
  3691  	return nil
  3692  }
  3693  
  3694  // VaultVaultBuffersPausedStateChanged represents a VaultBuffersPausedStateChanged event raised by the Vault contract.
  3695  type VaultVaultBuffersPausedStateChanged struct {
  3696  	Paused bool
  3697  	Raw    types.Log // Blockchain specific contextual infos
  3698  }
  3699  
  3700  // FilterVaultBuffersPausedStateChanged is a free log retrieval operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  3701  //
  3702  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  3703  func (_Vault *VaultFilterer) FilterVaultBuffersPausedStateChanged(opts *bind.FilterOpts) (*VaultVaultBuffersPausedStateChangedIterator, error) {
  3704  
  3705  	logs, sub, err := _Vault.contract.FilterLogs(opts, "VaultBuffersPausedStateChanged")
  3706  	if err != nil {
  3707  		return nil, err
  3708  	}
  3709  	return &VaultVaultBuffersPausedStateChangedIterator{contract: _Vault.contract, event: "VaultBuffersPausedStateChanged", logs: logs, sub: sub}, nil
  3710  }
  3711  
  3712  // WatchVaultBuffersPausedStateChanged is a free log subscription operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  3713  //
  3714  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  3715  func (_Vault *VaultFilterer) WatchVaultBuffersPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultVaultBuffersPausedStateChanged) (event.Subscription, error) {
  3716  
  3717  	logs, sub, err := _Vault.contract.WatchLogs(opts, "VaultBuffersPausedStateChanged")
  3718  	if err != nil {
  3719  		return nil, err
  3720  	}
  3721  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3722  		defer sub.Unsubscribe()
  3723  		for {
  3724  			select {
  3725  			case log := <-logs:
  3726  				// New log arrived, parse the event and forward to the user
  3727  				event := new(VaultVaultBuffersPausedStateChanged)
  3728  				if err := _Vault.contract.UnpackLog(event, "VaultBuffersPausedStateChanged", log); err != nil {
  3729  					return err
  3730  				}
  3731  				event.Raw = log
  3732  
  3733  				select {
  3734  				case sink <- event:
  3735  				case err := <-sub.Err():
  3736  					return err
  3737  				case <-quit:
  3738  					return nil
  3739  				}
  3740  			case err := <-sub.Err():
  3741  				return err
  3742  			case <-quit:
  3743  				return nil
  3744  			}
  3745  		}
  3746  	}), nil
  3747  }
  3748  
  3749  // ParseVaultBuffersPausedStateChanged is a log parse operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  3750  //
  3751  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  3752  func (_Vault *VaultFilterer) ParseVaultBuffersPausedStateChanged(log types.Log) (*VaultVaultBuffersPausedStateChanged, error) {
  3753  	event := new(VaultVaultBuffersPausedStateChanged)
  3754  	if err := _Vault.contract.UnpackLog(event, "VaultBuffersPausedStateChanged", log); err != nil {
  3755  		return nil, err
  3756  	}
  3757  	event.Raw = log
  3758  	return event, nil
  3759  }
  3760  
  3761  // VaultVaultPausedStateChangedIterator is returned from FilterVaultPausedStateChanged and is used to iterate over the raw logs and unpacked data for VaultPausedStateChanged events raised by the Vault contract.
  3762  type VaultVaultPausedStateChangedIterator struct {
  3763  	Event *VaultVaultPausedStateChanged // Event containing the contract specifics and raw log
  3764  
  3765  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3766  	event    string              // Event name to use for unpacking event data
  3767  
  3768  	logs chan types.Log        // Log channel receiving the found contract events
  3769  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3770  	done bool                  // Whether the subscription completed delivering logs
  3771  	fail error                 // Occurred error to stop iteration
  3772  }
  3773  
  3774  // Next advances the iterator to the subsequent event, returning whether there
  3775  // are any more events found. In case of a retrieval or parsing error, false is
  3776  // returned and Error() can be queried for the exact failure.
  3777  func (it *VaultVaultPausedStateChangedIterator) Next() bool {
  3778  	// If the iterator failed, stop iterating
  3779  	if it.fail != nil {
  3780  		return false
  3781  	}
  3782  	// If the iterator completed, deliver directly whatever's available
  3783  	if it.done {
  3784  		select {
  3785  		case log := <-it.logs:
  3786  			it.Event = new(VaultVaultPausedStateChanged)
  3787  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3788  				it.fail = err
  3789  				return false
  3790  			}
  3791  			it.Event.Raw = log
  3792  			return true
  3793  
  3794  		default:
  3795  			return false
  3796  		}
  3797  	}
  3798  	// Iterator still in progress, wait for either a data or an error event
  3799  	select {
  3800  	case log := <-it.logs:
  3801  		it.Event = new(VaultVaultPausedStateChanged)
  3802  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3803  			it.fail = err
  3804  			return false
  3805  		}
  3806  		it.Event.Raw = log
  3807  		return true
  3808  
  3809  	case err := <-it.sub.Err():
  3810  		it.done = true
  3811  		it.fail = err
  3812  		return it.Next()
  3813  	}
  3814  }
  3815  
  3816  // Error returns any retrieval or parsing error occurred during filtering.
  3817  func (it *VaultVaultPausedStateChangedIterator) Error() error {
  3818  	return it.fail
  3819  }
  3820  
  3821  // Close terminates the iteration process, releasing any pending underlying
  3822  // resources.
  3823  func (it *VaultVaultPausedStateChangedIterator) Close() error {
  3824  	it.sub.Unsubscribe()
  3825  	return nil
  3826  }
  3827  
  3828  // VaultVaultPausedStateChanged represents a VaultPausedStateChanged event raised by the Vault contract.
  3829  type VaultVaultPausedStateChanged struct {
  3830  	Paused bool
  3831  	Raw    types.Log // Blockchain specific contextual infos
  3832  }
  3833  
  3834  // FilterVaultPausedStateChanged is a free log retrieval operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  3835  //
  3836  // Solidity: event VaultPausedStateChanged(bool paused)
  3837  func (_Vault *VaultFilterer) FilterVaultPausedStateChanged(opts *bind.FilterOpts) (*VaultVaultPausedStateChangedIterator, error) {
  3838  
  3839  	logs, sub, err := _Vault.contract.FilterLogs(opts, "VaultPausedStateChanged")
  3840  	if err != nil {
  3841  		return nil, err
  3842  	}
  3843  	return &VaultVaultPausedStateChangedIterator{contract: _Vault.contract, event: "VaultPausedStateChanged", logs: logs, sub: sub}, nil
  3844  }
  3845  
  3846  // WatchVaultPausedStateChanged is a free log subscription operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  3847  //
  3848  // Solidity: event VaultPausedStateChanged(bool paused)
  3849  func (_Vault *VaultFilterer) WatchVaultPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultVaultPausedStateChanged) (event.Subscription, error) {
  3850  
  3851  	logs, sub, err := _Vault.contract.WatchLogs(opts, "VaultPausedStateChanged")
  3852  	if err != nil {
  3853  		return nil, err
  3854  	}
  3855  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3856  		defer sub.Unsubscribe()
  3857  		for {
  3858  			select {
  3859  			case log := <-logs:
  3860  				// New log arrived, parse the event and forward to the user
  3861  				event := new(VaultVaultPausedStateChanged)
  3862  				if err := _Vault.contract.UnpackLog(event, "VaultPausedStateChanged", log); err != nil {
  3863  					return err
  3864  				}
  3865  				event.Raw = log
  3866  
  3867  				select {
  3868  				case sink <- event:
  3869  				case err := <-sub.Err():
  3870  					return err
  3871  				case <-quit:
  3872  					return nil
  3873  				}
  3874  			case err := <-sub.Err():
  3875  				return err
  3876  			case <-quit:
  3877  				return nil
  3878  			}
  3879  		}
  3880  	}), nil
  3881  }
  3882  
  3883  // ParseVaultPausedStateChanged is a log parse operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  3884  //
  3885  // Solidity: event VaultPausedStateChanged(bool paused)
  3886  func (_Vault *VaultFilterer) ParseVaultPausedStateChanged(log types.Log) (*VaultVaultPausedStateChanged, error) {
  3887  	event := new(VaultVaultPausedStateChanged)
  3888  	if err := _Vault.contract.UnpackLog(event, "VaultPausedStateChanged", log); err != nil {
  3889  		return nil, err
  3890  	}
  3891  	event.Raw = log
  3892  	return event, nil
  3893  }
  3894  
  3895  // VaultVaultQueriesDisabledIterator is returned from FilterVaultQueriesDisabled and is used to iterate over the raw logs and unpacked data for VaultQueriesDisabled events raised by the Vault contract.
  3896  type VaultVaultQueriesDisabledIterator struct {
  3897  	Event *VaultVaultQueriesDisabled // Event containing the contract specifics and raw log
  3898  
  3899  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3900  	event    string              // Event name to use for unpacking event data
  3901  
  3902  	logs chan types.Log        // Log channel receiving the found contract events
  3903  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3904  	done bool                  // Whether the subscription completed delivering logs
  3905  	fail error                 // Occurred error to stop iteration
  3906  }
  3907  
  3908  // Next advances the iterator to the subsequent event, returning whether there
  3909  // are any more events found. In case of a retrieval or parsing error, false is
  3910  // returned and Error() can be queried for the exact failure.
  3911  func (it *VaultVaultQueriesDisabledIterator) Next() bool {
  3912  	// If the iterator failed, stop iterating
  3913  	if it.fail != nil {
  3914  		return false
  3915  	}
  3916  	// If the iterator completed, deliver directly whatever's available
  3917  	if it.done {
  3918  		select {
  3919  		case log := <-it.logs:
  3920  			it.Event = new(VaultVaultQueriesDisabled)
  3921  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3922  				it.fail = err
  3923  				return false
  3924  			}
  3925  			it.Event.Raw = log
  3926  			return true
  3927  
  3928  		default:
  3929  			return false
  3930  		}
  3931  	}
  3932  	// Iterator still in progress, wait for either a data or an error event
  3933  	select {
  3934  	case log := <-it.logs:
  3935  		it.Event = new(VaultVaultQueriesDisabled)
  3936  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3937  			it.fail = err
  3938  			return false
  3939  		}
  3940  		it.Event.Raw = log
  3941  		return true
  3942  
  3943  	case err := <-it.sub.Err():
  3944  		it.done = true
  3945  		it.fail = err
  3946  		return it.Next()
  3947  	}
  3948  }
  3949  
  3950  // Error returns any retrieval or parsing error occurred during filtering.
  3951  func (it *VaultVaultQueriesDisabledIterator) Error() error {
  3952  	return it.fail
  3953  }
  3954  
  3955  // Close terminates the iteration process, releasing any pending underlying
  3956  // resources.
  3957  func (it *VaultVaultQueriesDisabledIterator) Close() error {
  3958  	it.sub.Unsubscribe()
  3959  	return nil
  3960  }
  3961  
  3962  // VaultVaultQueriesDisabled represents a VaultQueriesDisabled event raised by the Vault contract.
  3963  type VaultVaultQueriesDisabled struct {
  3964  	Raw types.Log // Blockchain specific contextual infos
  3965  }
  3966  
  3967  // FilterVaultQueriesDisabled is a free log retrieval operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  3968  //
  3969  // Solidity: event VaultQueriesDisabled()
  3970  func (_Vault *VaultFilterer) FilterVaultQueriesDisabled(opts *bind.FilterOpts) (*VaultVaultQueriesDisabledIterator, error) {
  3971  
  3972  	logs, sub, err := _Vault.contract.FilterLogs(opts, "VaultQueriesDisabled")
  3973  	if err != nil {
  3974  		return nil, err
  3975  	}
  3976  	return &VaultVaultQueriesDisabledIterator{contract: _Vault.contract, event: "VaultQueriesDisabled", logs: logs, sub: sub}, nil
  3977  }
  3978  
  3979  // WatchVaultQueriesDisabled is a free log subscription operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  3980  //
  3981  // Solidity: event VaultQueriesDisabled()
  3982  func (_Vault *VaultFilterer) WatchVaultQueriesDisabled(opts *bind.WatchOpts, sink chan<- *VaultVaultQueriesDisabled) (event.Subscription, error) {
  3983  
  3984  	logs, sub, err := _Vault.contract.WatchLogs(opts, "VaultQueriesDisabled")
  3985  	if err != nil {
  3986  		return nil, err
  3987  	}
  3988  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3989  		defer sub.Unsubscribe()
  3990  		for {
  3991  			select {
  3992  			case log := <-logs:
  3993  				// New log arrived, parse the event and forward to the user
  3994  				event := new(VaultVaultQueriesDisabled)
  3995  				if err := _Vault.contract.UnpackLog(event, "VaultQueriesDisabled", log); err != nil {
  3996  					return err
  3997  				}
  3998  				event.Raw = log
  3999  
  4000  				select {
  4001  				case sink <- event:
  4002  				case err := <-sub.Err():
  4003  					return err
  4004  				case <-quit:
  4005  					return nil
  4006  				}
  4007  			case err := <-sub.Err():
  4008  				return err
  4009  			case <-quit:
  4010  				return nil
  4011  			}
  4012  		}
  4013  	}), nil
  4014  }
  4015  
  4016  // ParseVaultQueriesDisabled is a log parse operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  4017  //
  4018  // Solidity: event VaultQueriesDisabled()
  4019  func (_Vault *VaultFilterer) ParseVaultQueriesDisabled(log types.Log) (*VaultVaultQueriesDisabled, error) {
  4020  	event := new(VaultVaultQueriesDisabled)
  4021  	if err := _Vault.contract.UnpackLog(event, "VaultQueriesDisabled", log); err != nil {
  4022  		return nil, err
  4023  	}
  4024  	event.Raw = log
  4025  	return event, nil
  4026  }
  4027  
  4028  // VaultVaultQueriesEnabledIterator is returned from FilterVaultQueriesEnabled and is used to iterate over the raw logs and unpacked data for VaultQueriesEnabled events raised by the Vault contract.
  4029  type VaultVaultQueriesEnabledIterator struct {
  4030  	Event *VaultVaultQueriesEnabled // Event containing the contract specifics and raw log
  4031  
  4032  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4033  	event    string              // Event name to use for unpacking event data
  4034  
  4035  	logs chan types.Log        // Log channel receiving the found contract events
  4036  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4037  	done bool                  // Whether the subscription completed delivering logs
  4038  	fail error                 // Occurred error to stop iteration
  4039  }
  4040  
  4041  // Next advances the iterator to the subsequent event, returning whether there
  4042  // are any more events found. In case of a retrieval or parsing error, false is
  4043  // returned and Error() can be queried for the exact failure.
  4044  func (it *VaultVaultQueriesEnabledIterator) Next() bool {
  4045  	// If the iterator failed, stop iterating
  4046  	if it.fail != nil {
  4047  		return false
  4048  	}
  4049  	// If the iterator completed, deliver directly whatever's available
  4050  	if it.done {
  4051  		select {
  4052  		case log := <-it.logs:
  4053  			it.Event = new(VaultVaultQueriesEnabled)
  4054  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4055  				it.fail = err
  4056  				return false
  4057  			}
  4058  			it.Event.Raw = log
  4059  			return true
  4060  
  4061  		default:
  4062  			return false
  4063  		}
  4064  	}
  4065  	// Iterator still in progress, wait for either a data or an error event
  4066  	select {
  4067  	case log := <-it.logs:
  4068  		it.Event = new(VaultVaultQueriesEnabled)
  4069  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4070  			it.fail = err
  4071  			return false
  4072  		}
  4073  		it.Event.Raw = log
  4074  		return true
  4075  
  4076  	case err := <-it.sub.Err():
  4077  		it.done = true
  4078  		it.fail = err
  4079  		return it.Next()
  4080  	}
  4081  }
  4082  
  4083  // Error returns any retrieval or parsing error occurred during filtering.
  4084  func (it *VaultVaultQueriesEnabledIterator) Error() error {
  4085  	return it.fail
  4086  }
  4087  
  4088  // Close terminates the iteration process, releasing any pending underlying
  4089  // resources.
  4090  func (it *VaultVaultQueriesEnabledIterator) Close() error {
  4091  	it.sub.Unsubscribe()
  4092  	return nil
  4093  }
  4094  
  4095  // VaultVaultQueriesEnabled represents a VaultQueriesEnabled event raised by the Vault contract.
  4096  type VaultVaultQueriesEnabled struct {
  4097  	Raw types.Log // Blockchain specific contextual infos
  4098  }
  4099  
  4100  // FilterVaultQueriesEnabled is a free log retrieval operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  4101  //
  4102  // Solidity: event VaultQueriesEnabled()
  4103  func (_Vault *VaultFilterer) FilterVaultQueriesEnabled(opts *bind.FilterOpts) (*VaultVaultQueriesEnabledIterator, error) {
  4104  
  4105  	logs, sub, err := _Vault.contract.FilterLogs(opts, "VaultQueriesEnabled")
  4106  	if err != nil {
  4107  		return nil, err
  4108  	}
  4109  	return &VaultVaultQueriesEnabledIterator{contract: _Vault.contract, event: "VaultQueriesEnabled", logs: logs, sub: sub}, nil
  4110  }
  4111  
  4112  // WatchVaultQueriesEnabled is a free log subscription operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  4113  //
  4114  // Solidity: event VaultQueriesEnabled()
  4115  func (_Vault *VaultFilterer) WatchVaultQueriesEnabled(opts *bind.WatchOpts, sink chan<- *VaultVaultQueriesEnabled) (event.Subscription, error) {
  4116  
  4117  	logs, sub, err := _Vault.contract.WatchLogs(opts, "VaultQueriesEnabled")
  4118  	if err != nil {
  4119  		return nil, err
  4120  	}
  4121  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4122  		defer sub.Unsubscribe()
  4123  		for {
  4124  			select {
  4125  			case log := <-logs:
  4126  				// New log arrived, parse the event and forward to the user
  4127  				event := new(VaultVaultQueriesEnabled)
  4128  				if err := _Vault.contract.UnpackLog(event, "VaultQueriesEnabled", log); err != nil {
  4129  					return err
  4130  				}
  4131  				event.Raw = log
  4132  
  4133  				select {
  4134  				case sink <- event:
  4135  				case err := <-sub.Err():
  4136  					return err
  4137  				case <-quit:
  4138  					return nil
  4139  				}
  4140  			case err := <-sub.Err():
  4141  				return err
  4142  			case <-quit:
  4143  				return nil
  4144  			}
  4145  		}
  4146  	}), nil
  4147  }
  4148  
  4149  // ParseVaultQueriesEnabled is a log parse operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  4150  //
  4151  // Solidity: event VaultQueriesEnabled()
  4152  func (_Vault *VaultFilterer) ParseVaultQueriesEnabled(log types.Log) (*VaultVaultQueriesEnabled, error) {
  4153  	event := new(VaultVaultQueriesEnabled)
  4154  	if err := _Vault.contract.UnpackLog(event, "VaultQueriesEnabled", log); err != nil {
  4155  		return nil, err
  4156  	}
  4157  	event.Raw = log
  4158  	return event, nil
  4159  }
  4160  
  4161  // VaultWrapIterator is returned from FilterWrap and is used to iterate over the raw logs and unpacked data for Wrap events raised by the Vault contract.
  4162  type VaultWrapIterator struct {
  4163  	Event *VaultWrap // Event containing the contract specifics and raw log
  4164  
  4165  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4166  	event    string              // Event name to use for unpacking event data
  4167  
  4168  	logs chan types.Log        // Log channel receiving the found contract events
  4169  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4170  	done bool                  // Whether the subscription completed delivering logs
  4171  	fail error                 // Occurred error to stop iteration
  4172  }
  4173  
  4174  // Next advances the iterator to the subsequent event, returning whether there
  4175  // are any more events found. In case of a retrieval or parsing error, false is
  4176  // returned and Error() can be queried for the exact failure.
  4177  func (it *VaultWrapIterator) Next() bool {
  4178  	// If the iterator failed, stop iterating
  4179  	if it.fail != nil {
  4180  		return false
  4181  	}
  4182  	// If the iterator completed, deliver directly whatever's available
  4183  	if it.done {
  4184  		select {
  4185  		case log := <-it.logs:
  4186  			it.Event = new(VaultWrap)
  4187  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4188  				it.fail = err
  4189  				return false
  4190  			}
  4191  			it.Event.Raw = log
  4192  			return true
  4193  
  4194  		default:
  4195  			return false
  4196  		}
  4197  	}
  4198  	// Iterator still in progress, wait for either a data or an error event
  4199  	select {
  4200  	case log := <-it.logs:
  4201  		it.Event = new(VaultWrap)
  4202  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4203  			it.fail = err
  4204  			return false
  4205  		}
  4206  		it.Event.Raw = log
  4207  		return true
  4208  
  4209  	case err := <-it.sub.Err():
  4210  		it.done = true
  4211  		it.fail = err
  4212  		return it.Next()
  4213  	}
  4214  }
  4215  
  4216  // Error returns any retrieval or parsing error occurred during filtering.
  4217  func (it *VaultWrapIterator) Error() error {
  4218  	return it.fail
  4219  }
  4220  
  4221  // Close terminates the iteration process, releasing any pending underlying
  4222  // resources.
  4223  func (it *VaultWrapIterator) Close() error {
  4224  	it.sub.Unsubscribe()
  4225  	return nil
  4226  }
  4227  
  4228  // VaultWrap represents a Wrap event raised by the Vault contract.
  4229  type VaultWrap struct {
  4230  	WrappedToken        common.Address
  4231  	DepositedUnderlying *big.Int
  4232  	MintedShares        *big.Int
  4233  	BufferBalances      [32]byte
  4234  	Raw                 types.Log // Blockchain specific contextual infos
  4235  }
  4236  
  4237  // FilterWrap is a free log retrieval operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  4238  //
  4239  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  4240  func (_Vault *VaultFilterer) FilterWrap(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultWrapIterator, error) {
  4241  
  4242  	var wrappedTokenRule []interface{}
  4243  	for _, wrappedTokenItem := range wrappedToken {
  4244  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  4245  	}
  4246  
  4247  	logs, sub, err := _Vault.contract.FilterLogs(opts, "Wrap", wrappedTokenRule)
  4248  	if err != nil {
  4249  		return nil, err
  4250  	}
  4251  	return &VaultWrapIterator{contract: _Vault.contract, event: "Wrap", logs: logs, sub: sub}, nil
  4252  }
  4253  
  4254  // WatchWrap is a free log subscription operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  4255  //
  4256  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  4257  func (_Vault *VaultFilterer) WatchWrap(opts *bind.WatchOpts, sink chan<- *VaultWrap, wrappedToken []common.Address) (event.Subscription, error) {
  4258  
  4259  	var wrappedTokenRule []interface{}
  4260  	for _, wrappedTokenItem := range wrappedToken {
  4261  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  4262  	}
  4263  
  4264  	logs, sub, err := _Vault.contract.WatchLogs(opts, "Wrap", wrappedTokenRule)
  4265  	if err != nil {
  4266  		return nil, err
  4267  	}
  4268  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4269  		defer sub.Unsubscribe()
  4270  		for {
  4271  			select {
  4272  			case log := <-logs:
  4273  				// New log arrived, parse the event and forward to the user
  4274  				event := new(VaultWrap)
  4275  				if err := _Vault.contract.UnpackLog(event, "Wrap", log); err != nil {
  4276  					return err
  4277  				}
  4278  				event.Raw = log
  4279  
  4280  				select {
  4281  				case sink <- event:
  4282  				case err := <-sub.Err():
  4283  					return err
  4284  				case <-quit:
  4285  					return nil
  4286  				}
  4287  			case err := <-sub.Err():
  4288  				return err
  4289  			case <-quit:
  4290  				return nil
  4291  			}
  4292  		}
  4293  	}), nil
  4294  }
  4295  
  4296  // ParseWrap is a log parse operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  4297  //
  4298  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  4299  func (_Vault *VaultFilterer) ParseWrap(log types.Log) (*VaultWrap, error) {
  4300  	event := new(VaultWrap)
  4301  	if err := _Vault.contract.UnpackLog(event, "Wrap", log); err != nil {
  4302  		return nil, err
  4303  	}
  4304  	event.Raw = log
  4305  	return event, nil
  4306  }