github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/balancerv3/vaultextension/vaultextension.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 vaultextension
     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  // HooksConfig is an auto generated low-level Go binding around an user-defined struct.
    33  type HooksConfig struct {
    34  	EnableHookAdjustedAmounts       bool
    35  	ShouldCallBeforeInitialize      bool
    36  	ShouldCallAfterInitialize       bool
    37  	ShouldCallComputeDynamicSwapFee bool
    38  	ShouldCallBeforeSwap            bool
    39  	ShouldCallAfterSwap             bool
    40  	ShouldCallBeforeAddLiquidity    bool
    41  	ShouldCallAfterAddLiquidity     bool
    42  	ShouldCallBeforeRemoveLiquidity bool
    43  	ShouldCallAfterRemoveLiquidity  bool
    44  	HooksContract                   common.Address
    45  }
    46  
    47  // LiquidityManagement is an auto generated low-level Go binding around an user-defined struct.
    48  type LiquidityManagement struct {
    49  	DisableUnbalancedLiquidity  bool
    50  	EnableAddLiquidityCustom    bool
    51  	EnableRemoveLiquidityCustom bool
    52  	EnableDonation              bool
    53  }
    54  
    55  // PoolConfig is an auto generated low-level Go binding around an user-defined struct.
    56  type PoolConfig struct {
    57  	LiquidityManagement         LiquidityManagement
    58  	StaticSwapFeePercentage     *big.Int
    59  	AggregateSwapFeePercentage  *big.Int
    60  	AggregateYieldFeePercentage *big.Int
    61  	TokenDecimalDiffs           *big.Int
    62  	PauseWindowEndTime          uint32
    63  	IsPoolRegistered            bool
    64  	IsPoolInitialized           bool
    65  	IsPoolPaused                bool
    66  	IsPoolInRecoveryMode        bool
    67  }
    68  
    69  // PoolData is an auto generated low-level Go binding around an user-defined struct.
    70  type PoolData struct {
    71  	PoolConfigBits        [32]byte
    72  	Tokens                []common.Address
    73  	TokenInfo             []TokenInfo
    74  	BalancesRaw           []*big.Int
    75  	BalancesLiveScaled18  []*big.Int
    76  	TokenRates            []*big.Int
    77  	DecimalScalingFactors []*big.Int
    78  }
    79  
    80  // PoolRoleAccounts is an auto generated low-level Go binding around an user-defined struct.
    81  type PoolRoleAccounts struct {
    82  	PauseManager   common.Address
    83  	SwapFeeManager common.Address
    84  	PoolCreator    common.Address
    85  }
    86  
    87  // PoolSwapParams is an auto generated low-level Go binding around an user-defined struct.
    88  type PoolSwapParams struct {
    89  	Kind                uint8
    90  	AmountGivenScaled18 *big.Int
    91  	BalancesScaled18    []*big.Int
    92  	IndexIn             *big.Int
    93  	IndexOut            *big.Int
    94  	Router              common.Address
    95  	UserData            []byte
    96  }
    97  
    98  // TokenConfig is an auto generated low-level Go binding around an user-defined struct.
    99  type TokenConfig struct {
   100  	Token         common.Address
   101  	TokenType     uint8
   102  	RateProvider  common.Address
   103  	PaysYieldFees bool
   104  }
   105  
   106  // TokenInfo is an auto generated low-level Go binding around an user-defined struct.
   107  type TokenInfo struct {
   108  	TokenType     uint8
   109  	RateProvider  common.Address
   110  	PaysYieldFees bool
   111  }
   112  
   113  // VaultextensionMetaData contains all meta data concerning the Vaultextension contract.
   114  var VaultextensionMetaData = &bind.MetaData{
   115  	ABI: "[{\"inputs\":[{\"internalType\":\"contractIVault\",\"name\":\"mainVault\",\"type\":\"address\"},{\"internalType\":\"contractIVaultAdmin\",\"name\":\"vaultAdmin\",\"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\":\"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\":\"CodecOverflow\",\"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\":\"ErrorSelectorNotFound\",\"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\":\"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\":\"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\":\"OutOfBounds\",\"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\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Result\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterNotTrusted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"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\":\"TokensNotSorted\",\"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\"},{\"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\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumSwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amountGivenScaled18\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"indexIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structPoolSwapParams\",\"name\":\"swapParams\",\"type\":\"tuple\"}],\"name\":\"computeDynamicSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dynamicSwapFeePercentage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"eventKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"eventData\",\"type\":\"bytes\"}],\"name\":\"emitAuxiliaryEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getAddLiquidityCalledFlag\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateSwapFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getAggregateYieldFeeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contractIAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getBptRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getCurrentLiveBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"getERC4626BufferAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getHooksConfig\",\"outputs\":[{\"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\"}],\"internalType\":\"structHooksConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonzeroDeltaCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"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\"}],\"internalType\":\"structLiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"staticSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aggregateYieldFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"tokenDecimalDiffs\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isPoolRegistered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolPaused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPoolInRecoveryMode\",\"type\":\"bool\"}],\"internalType\":\"structPoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolData\",\"outputs\":[{\"components\":[{\"internalType\":\"PoolConfigBits\",\"name\":\"poolConfigBits\",\"type\":\"bytes32\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enumTokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contractIRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"structTokenInfo[]\",\"name\":\"tokenInfo\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesLiveScaled18\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"}],\"internalType\":\"structPoolData\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolRoleAccounts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"structPoolRoleAccounts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"enumTokenType\",\"name\":\"tokenType\",\"type\":\"uint8\"},{\"internalType\":\"contractIRateProvider\",\"name\":\"rateProvider\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"paysYieldFees\",\"type\":\"bool\"}],\"internalType\":\"structTokenInfo[]\",\"name\":\"tokenInfo\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balancesRaw\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"lastBalancesLiveScaled18\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokenRates\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"decimalScalingFactors\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenRates\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeeController\",\"outputs\":[{\"internalType\":\"contractIProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getReservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"getStaticSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVaultAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"exactAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"minBptAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"isERC4626BufferInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isQueryDisabledPermanently\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isUnlocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quoteAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reentrancyGuardEntered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"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\"}],\"internalType\":\"structTokenConfig[]\",\"name\":\"tokenConfig\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"swapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"protocolFeeExempt\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pauseManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapFeeManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCreator\",\"type\":\"address\"}],\"internalType\":\"structPoolRoleAccounts\",\"name\":\"roleAccounts\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"poolHooksContract\",\"type\":\"address\"},{\"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\"}],\"internalType\":\"structLiquidityManagement\",\"name\":\"liquidityManagement\",\"type\":\"tuple\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exactBptAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"removeLiquidityRecovery\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOutRaw\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contractIVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
   116  }
   117  
   118  // VaultextensionABI is the input ABI used to generate the binding from.
   119  // Deprecated: Use VaultextensionMetaData.ABI instead.
   120  var VaultextensionABI = VaultextensionMetaData.ABI
   121  
   122  // Vaultextension is an auto generated Go binding around an Ethereum contract.
   123  type Vaultextension struct {
   124  	VaultextensionCaller     // Read-only binding to the contract
   125  	VaultextensionTransactor // Write-only binding to the contract
   126  	VaultextensionFilterer   // Log filterer for contract events
   127  }
   128  
   129  // VaultextensionCaller is an auto generated read-only Go binding around an Ethereum contract.
   130  type VaultextensionCaller struct {
   131  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   132  }
   133  
   134  // VaultextensionTransactor is an auto generated write-only Go binding around an Ethereum contract.
   135  type VaultextensionTransactor struct {
   136  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   137  }
   138  
   139  // VaultextensionFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   140  type VaultextensionFilterer struct {
   141  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   142  }
   143  
   144  // VaultextensionSession is an auto generated Go binding around an Ethereum contract,
   145  // with pre-set call and transact options.
   146  type VaultextensionSession struct {
   147  	Contract     *Vaultextension   // Generic contract binding to set the session for
   148  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   149  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   150  }
   151  
   152  // VaultextensionCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   153  // with pre-set call options.
   154  type VaultextensionCallerSession struct {
   155  	Contract *VaultextensionCaller // Generic contract caller binding to set the session for
   156  	CallOpts bind.CallOpts         // Call options to use throughout this session
   157  }
   158  
   159  // VaultextensionTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   160  // with pre-set transact options.
   161  type VaultextensionTransactorSession struct {
   162  	Contract     *VaultextensionTransactor // Generic contract transactor binding to set the session for
   163  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
   164  }
   165  
   166  // VaultextensionRaw is an auto generated low-level Go binding around an Ethereum contract.
   167  type VaultextensionRaw struct {
   168  	Contract *Vaultextension // Generic contract binding to access the raw methods on
   169  }
   170  
   171  // VaultextensionCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   172  type VaultextensionCallerRaw struct {
   173  	Contract *VaultextensionCaller // Generic read-only contract binding to access the raw methods on
   174  }
   175  
   176  // VaultextensionTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   177  type VaultextensionTransactorRaw struct {
   178  	Contract *VaultextensionTransactor // Generic write-only contract binding to access the raw methods on
   179  }
   180  
   181  // NewVaultextension creates a new instance of Vaultextension, bound to a specific deployed contract.
   182  func NewVaultextension(address common.Address, backend bind.ContractBackend) (*Vaultextension, error) {
   183  	contract, err := bindVaultextension(address, backend, backend, backend)
   184  	if err != nil {
   185  		return nil, err
   186  	}
   187  	return &Vaultextension{VaultextensionCaller: VaultextensionCaller{contract: contract}, VaultextensionTransactor: VaultextensionTransactor{contract: contract}, VaultextensionFilterer: VaultextensionFilterer{contract: contract}}, nil
   188  }
   189  
   190  // NewVaultextensionCaller creates a new read-only instance of Vaultextension, bound to a specific deployed contract.
   191  func NewVaultextensionCaller(address common.Address, caller bind.ContractCaller) (*VaultextensionCaller, error) {
   192  	contract, err := bindVaultextension(address, caller, nil, nil)
   193  	if err != nil {
   194  		return nil, err
   195  	}
   196  	return &VaultextensionCaller{contract: contract}, nil
   197  }
   198  
   199  // NewVaultextensionTransactor creates a new write-only instance of Vaultextension, bound to a specific deployed contract.
   200  func NewVaultextensionTransactor(address common.Address, transactor bind.ContractTransactor) (*VaultextensionTransactor, error) {
   201  	contract, err := bindVaultextension(address, nil, transactor, nil)
   202  	if err != nil {
   203  		return nil, err
   204  	}
   205  	return &VaultextensionTransactor{contract: contract}, nil
   206  }
   207  
   208  // NewVaultextensionFilterer creates a new log filterer instance of Vaultextension, bound to a specific deployed contract.
   209  func NewVaultextensionFilterer(address common.Address, filterer bind.ContractFilterer) (*VaultextensionFilterer, error) {
   210  	contract, err := bindVaultextension(address, nil, nil, filterer)
   211  	if err != nil {
   212  		return nil, err
   213  	}
   214  	return &VaultextensionFilterer{contract: contract}, nil
   215  }
   216  
   217  // bindVaultextension binds a generic wrapper to an already deployed contract.
   218  func bindVaultextension(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   219  	parsed, err := VaultextensionMetaData.GetAbi()
   220  	if err != nil {
   221  		return nil, err
   222  	}
   223  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   224  }
   225  
   226  // Call invokes the (constant) contract method with params as input values and
   227  // sets the output to result. The result type might be a single field for simple
   228  // returns, a slice of interfaces for anonymous returns and a struct for named
   229  // returns.
   230  func (_Vaultextension *VaultextensionRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   231  	return _Vaultextension.Contract.VaultextensionCaller.contract.Call(opts, result, method, params...)
   232  }
   233  
   234  // Transfer initiates a plain transaction to move funds to the contract, calling
   235  // its default method if one is available.
   236  func (_Vaultextension *VaultextensionRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   237  	return _Vaultextension.Contract.VaultextensionTransactor.contract.Transfer(opts)
   238  }
   239  
   240  // Transact invokes the (paid) contract method with params as input values.
   241  func (_Vaultextension *VaultextensionRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   242  	return _Vaultextension.Contract.VaultextensionTransactor.contract.Transact(opts, method, params...)
   243  }
   244  
   245  // Call invokes the (constant) contract method with params as input values and
   246  // sets the output to result. The result type might be a single field for simple
   247  // returns, a slice of interfaces for anonymous returns and a struct for named
   248  // returns.
   249  func (_Vaultextension *VaultextensionCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   250  	return _Vaultextension.Contract.contract.Call(opts, result, method, params...)
   251  }
   252  
   253  // Transfer initiates a plain transaction to move funds to the contract, calling
   254  // its default method if one is available.
   255  func (_Vaultextension *VaultextensionTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   256  	return _Vaultextension.Contract.contract.Transfer(opts)
   257  }
   258  
   259  // Transact invokes the (paid) contract method with params as input values.
   260  func (_Vaultextension *VaultextensionTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   261  	return _Vaultextension.Contract.contract.Transact(opts, method, params...)
   262  }
   263  
   264  // Allowance is a free data retrieval call binding the contract method 0x927da105.
   265  //
   266  // Solidity: function allowance(address token, address owner, address spender) view returns(uint256)
   267  func (_Vaultextension *VaultextensionCaller) Allowance(opts *bind.CallOpts, token common.Address, owner common.Address, spender common.Address) (*big.Int, error) {
   268  	var out []interface{}
   269  	err := _Vaultextension.contract.Call(opts, &out, "allowance", token, owner, spender)
   270  
   271  	if err != nil {
   272  		return *new(*big.Int), err
   273  	}
   274  
   275  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   276  
   277  	return out0, err
   278  
   279  }
   280  
   281  // Allowance is a free data retrieval call binding the contract method 0x927da105.
   282  //
   283  // Solidity: function allowance(address token, address owner, address spender) view returns(uint256)
   284  func (_Vaultextension *VaultextensionSession) Allowance(token common.Address, owner common.Address, spender common.Address) (*big.Int, error) {
   285  	return _Vaultextension.Contract.Allowance(&_Vaultextension.CallOpts, token, owner, spender)
   286  }
   287  
   288  // Allowance is a free data retrieval call binding the contract method 0x927da105.
   289  //
   290  // Solidity: function allowance(address token, address owner, address spender) view returns(uint256)
   291  func (_Vaultextension *VaultextensionCallerSession) Allowance(token common.Address, owner common.Address, spender common.Address) (*big.Int, error) {
   292  	return _Vaultextension.Contract.Allowance(&_Vaultextension.CallOpts, token, owner, spender)
   293  }
   294  
   295  // BalanceOf is a free data retrieval call binding the contract method 0xf7888aec.
   296  //
   297  // Solidity: function balanceOf(address token, address account) view returns(uint256)
   298  func (_Vaultextension *VaultextensionCaller) BalanceOf(opts *bind.CallOpts, token common.Address, account common.Address) (*big.Int, error) {
   299  	var out []interface{}
   300  	err := _Vaultextension.contract.Call(opts, &out, "balanceOf", token, account)
   301  
   302  	if err != nil {
   303  		return *new(*big.Int), err
   304  	}
   305  
   306  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   307  
   308  	return out0, err
   309  
   310  }
   311  
   312  // BalanceOf is a free data retrieval call binding the contract method 0xf7888aec.
   313  //
   314  // Solidity: function balanceOf(address token, address account) view returns(uint256)
   315  func (_Vaultextension *VaultextensionSession) BalanceOf(token common.Address, account common.Address) (*big.Int, error) {
   316  	return _Vaultextension.Contract.BalanceOf(&_Vaultextension.CallOpts, token, account)
   317  }
   318  
   319  // BalanceOf is a free data retrieval call binding the contract method 0xf7888aec.
   320  //
   321  // Solidity: function balanceOf(address token, address account) view returns(uint256)
   322  func (_Vaultextension *VaultextensionCallerSession) BalanceOf(token common.Address, account common.Address) (*big.Int, error) {
   323  	return _Vaultextension.Contract.BalanceOf(&_Vaultextension.CallOpts, token, account)
   324  }
   325  
   326  // ComputeDynamicSwapFeePercentage is a free data retrieval call binding the contract method 0x4d472bdd.
   327  //
   328  // Solidity: function computeDynamicSwapFeePercentage(address pool, (uint8,uint256,uint256[],uint256,uint256,address,bytes) swapParams) view returns(uint256 dynamicSwapFeePercentage)
   329  func (_Vaultextension *VaultextensionCaller) ComputeDynamicSwapFeePercentage(opts *bind.CallOpts, pool common.Address, swapParams PoolSwapParams) (*big.Int, error) {
   330  	var out []interface{}
   331  	err := _Vaultextension.contract.Call(opts, &out, "computeDynamicSwapFeePercentage", pool, swapParams)
   332  
   333  	if err != nil {
   334  		return *new(*big.Int), err
   335  	}
   336  
   337  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   338  
   339  	return out0, err
   340  
   341  }
   342  
   343  // ComputeDynamicSwapFeePercentage is a free data retrieval call binding the contract method 0x4d472bdd.
   344  //
   345  // Solidity: function computeDynamicSwapFeePercentage(address pool, (uint8,uint256,uint256[],uint256,uint256,address,bytes) swapParams) view returns(uint256 dynamicSwapFeePercentage)
   346  func (_Vaultextension *VaultextensionSession) ComputeDynamicSwapFeePercentage(pool common.Address, swapParams PoolSwapParams) (*big.Int, error) {
   347  	return _Vaultextension.Contract.ComputeDynamicSwapFeePercentage(&_Vaultextension.CallOpts, pool, swapParams)
   348  }
   349  
   350  // ComputeDynamicSwapFeePercentage is a free data retrieval call binding the contract method 0x4d472bdd.
   351  //
   352  // Solidity: function computeDynamicSwapFeePercentage(address pool, (uint8,uint256,uint256[],uint256,uint256,address,bytes) swapParams) view returns(uint256 dynamicSwapFeePercentage)
   353  func (_Vaultextension *VaultextensionCallerSession) ComputeDynamicSwapFeePercentage(pool common.Address, swapParams PoolSwapParams) (*big.Int, error) {
   354  	return _Vaultextension.Contract.ComputeDynamicSwapFeePercentage(&_Vaultextension.CallOpts, pool, swapParams)
   355  }
   356  
   357  // GetAddLiquidityCalledFlag is a free data retrieval call binding the contract method 0xace9b89b.
   358  //
   359  // Solidity: function getAddLiquidityCalledFlag(address pool) view returns(bool)
   360  func (_Vaultextension *VaultextensionCaller) GetAddLiquidityCalledFlag(opts *bind.CallOpts, pool common.Address) (bool, error) {
   361  	var out []interface{}
   362  	err := _Vaultextension.contract.Call(opts, &out, "getAddLiquidityCalledFlag", pool)
   363  
   364  	if err != nil {
   365  		return *new(bool), err
   366  	}
   367  
   368  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   369  
   370  	return out0, err
   371  
   372  }
   373  
   374  // GetAddLiquidityCalledFlag is a free data retrieval call binding the contract method 0xace9b89b.
   375  //
   376  // Solidity: function getAddLiquidityCalledFlag(address pool) view returns(bool)
   377  func (_Vaultextension *VaultextensionSession) GetAddLiquidityCalledFlag(pool common.Address) (bool, error) {
   378  	return _Vaultextension.Contract.GetAddLiquidityCalledFlag(&_Vaultextension.CallOpts, pool)
   379  }
   380  
   381  // GetAddLiquidityCalledFlag is a free data retrieval call binding the contract method 0xace9b89b.
   382  //
   383  // Solidity: function getAddLiquidityCalledFlag(address pool) view returns(bool)
   384  func (_Vaultextension *VaultextensionCallerSession) GetAddLiquidityCalledFlag(pool common.Address) (bool, error) {
   385  	return _Vaultextension.Contract.GetAddLiquidityCalledFlag(&_Vaultextension.CallOpts, pool)
   386  }
   387  
   388  // GetAggregateSwapFeeAmount is a free data retrieval call binding the contract method 0x85e0b999.
   389  //
   390  // Solidity: function getAggregateSwapFeeAmount(address pool, address token) view returns(uint256)
   391  func (_Vaultextension *VaultextensionCaller) GetAggregateSwapFeeAmount(opts *bind.CallOpts, pool common.Address, token common.Address) (*big.Int, error) {
   392  	var out []interface{}
   393  	err := _Vaultextension.contract.Call(opts, &out, "getAggregateSwapFeeAmount", pool, token)
   394  
   395  	if err != nil {
   396  		return *new(*big.Int), err
   397  	}
   398  
   399  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   400  
   401  	return out0, err
   402  
   403  }
   404  
   405  // GetAggregateSwapFeeAmount is a free data retrieval call binding the contract method 0x85e0b999.
   406  //
   407  // Solidity: function getAggregateSwapFeeAmount(address pool, address token) view returns(uint256)
   408  func (_Vaultextension *VaultextensionSession) GetAggregateSwapFeeAmount(pool common.Address, token common.Address) (*big.Int, error) {
   409  	return _Vaultextension.Contract.GetAggregateSwapFeeAmount(&_Vaultextension.CallOpts, pool, token)
   410  }
   411  
   412  // GetAggregateSwapFeeAmount is a free data retrieval call binding the contract method 0x85e0b999.
   413  //
   414  // Solidity: function getAggregateSwapFeeAmount(address pool, address token) view returns(uint256)
   415  func (_Vaultextension *VaultextensionCallerSession) GetAggregateSwapFeeAmount(pool common.Address, token common.Address) (*big.Int, error) {
   416  	return _Vaultextension.Contract.GetAggregateSwapFeeAmount(&_Vaultextension.CallOpts, pool, token)
   417  }
   418  
   419  // GetAggregateYieldFeeAmount is a free data retrieval call binding the contract method 0x00fdfa13.
   420  //
   421  // Solidity: function getAggregateYieldFeeAmount(address pool, address token) view returns(uint256)
   422  func (_Vaultextension *VaultextensionCaller) GetAggregateYieldFeeAmount(opts *bind.CallOpts, pool common.Address, token common.Address) (*big.Int, error) {
   423  	var out []interface{}
   424  	err := _Vaultextension.contract.Call(opts, &out, "getAggregateYieldFeeAmount", pool, token)
   425  
   426  	if err != nil {
   427  		return *new(*big.Int), err
   428  	}
   429  
   430  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   431  
   432  	return out0, err
   433  
   434  }
   435  
   436  // GetAggregateYieldFeeAmount is a free data retrieval call binding the contract method 0x00fdfa13.
   437  //
   438  // Solidity: function getAggregateYieldFeeAmount(address pool, address token) view returns(uint256)
   439  func (_Vaultextension *VaultextensionSession) GetAggregateYieldFeeAmount(pool common.Address, token common.Address) (*big.Int, error) {
   440  	return _Vaultextension.Contract.GetAggregateYieldFeeAmount(&_Vaultextension.CallOpts, pool, token)
   441  }
   442  
   443  // GetAggregateYieldFeeAmount is a free data retrieval call binding the contract method 0x00fdfa13.
   444  //
   445  // Solidity: function getAggregateYieldFeeAmount(address pool, address token) view returns(uint256)
   446  func (_Vaultextension *VaultextensionCallerSession) GetAggregateYieldFeeAmount(pool common.Address, token common.Address) (*big.Int, error) {
   447  	return _Vaultextension.Contract.GetAggregateYieldFeeAmount(&_Vaultextension.CallOpts, pool, token)
   448  }
   449  
   450  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   451  //
   452  // Solidity: function getAuthorizer() view returns(address)
   453  func (_Vaultextension *VaultextensionCaller) GetAuthorizer(opts *bind.CallOpts) (common.Address, error) {
   454  	var out []interface{}
   455  	err := _Vaultextension.contract.Call(opts, &out, "getAuthorizer")
   456  
   457  	if err != nil {
   458  		return *new(common.Address), err
   459  	}
   460  
   461  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   462  
   463  	return out0, err
   464  
   465  }
   466  
   467  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   468  //
   469  // Solidity: function getAuthorizer() view returns(address)
   470  func (_Vaultextension *VaultextensionSession) GetAuthorizer() (common.Address, error) {
   471  	return _Vaultextension.Contract.GetAuthorizer(&_Vaultextension.CallOpts)
   472  }
   473  
   474  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   475  //
   476  // Solidity: function getAuthorizer() view returns(address)
   477  func (_Vaultextension *VaultextensionCallerSession) GetAuthorizer() (common.Address, error) {
   478  	return _Vaultextension.Contract.GetAuthorizer(&_Vaultextension.CallOpts)
   479  }
   480  
   481  // GetBptRate is a free data retrieval call binding the contract method 0x4f037ee7.
   482  //
   483  // Solidity: function getBptRate(address pool) view returns(uint256 rate)
   484  func (_Vaultextension *VaultextensionCaller) GetBptRate(opts *bind.CallOpts, pool common.Address) (*big.Int, error) {
   485  	var out []interface{}
   486  	err := _Vaultextension.contract.Call(opts, &out, "getBptRate", pool)
   487  
   488  	if err != nil {
   489  		return *new(*big.Int), err
   490  	}
   491  
   492  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   493  
   494  	return out0, err
   495  
   496  }
   497  
   498  // GetBptRate is a free data retrieval call binding the contract method 0x4f037ee7.
   499  //
   500  // Solidity: function getBptRate(address pool) view returns(uint256 rate)
   501  func (_Vaultextension *VaultextensionSession) GetBptRate(pool common.Address) (*big.Int, error) {
   502  	return _Vaultextension.Contract.GetBptRate(&_Vaultextension.CallOpts, pool)
   503  }
   504  
   505  // GetBptRate is a free data retrieval call binding the contract method 0x4f037ee7.
   506  //
   507  // Solidity: function getBptRate(address pool) view returns(uint256 rate)
   508  func (_Vaultextension *VaultextensionCallerSession) GetBptRate(pool common.Address) (*big.Int, error) {
   509  	return _Vaultextension.Contract.GetBptRate(&_Vaultextension.CallOpts, pool)
   510  }
   511  
   512  // GetCurrentLiveBalances is a free data retrieval call binding the contract method 0x535cfd8a.
   513  //
   514  // Solidity: function getCurrentLiveBalances(address pool) view returns(uint256[] balancesLiveScaled18)
   515  func (_Vaultextension *VaultextensionCaller) GetCurrentLiveBalances(opts *bind.CallOpts, pool common.Address) ([]*big.Int, error) {
   516  	var out []interface{}
   517  	err := _Vaultextension.contract.Call(opts, &out, "getCurrentLiveBalances", pool)
   518  
   519  	if err != nil {
   520  		return *new([]*big.Int), err
   521  	}
   522  
   523  	out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
   524  
   525  	return out0, err
   526  
   527  }
   528  
   529  // GetCurrentLiveBalances is a free data retrieval call binding the contract method 0x535cfd8a.
   530  //
   531  // Solidity: function getCurrentLiveBalances(address pool) view returns(uint256[] balancesLiveScaled18)
   532  func (_Vaultextension *VaultextensionSession) GetCurrentLiveBalances(pool common.Address) ([]*big.Int, error) {
   533  	return _Vaultextension.Contract.GetCurrentLiveBalances(&_Vaultextension.CallOpts, pool)
   534  }
   535  
   536  // GetCurrentLiveBalances is a free data retrieval call binding the contract method 0x535cfd8a.
   537  //
   538  // Solidity: function getCurrentLiveBalances(address pool) view returns(uint256[] balancesLiveScaled18)
   539  func (_Vaultextension *VaultextensionCallerSession) GetCurrentLiveBalances(pool common.Address) ([]*big.Int, error) {
   540  	return _Vaultextension.Contract.GetCurrentLiveBalances(&_Vaultextension.CallOpts, pool)
   541  }
   542  
   543  // GetERC4626BufferAsset is a free data retrieval call binding the contract method 0x4afbaf5a.
   544  //
   545  // Solidity: function getERC4626BufferAsset(address wrappedToken) view returns(address asset)
   546  func (_Vaultextension *VaultextensionCaller) GetERC4626BufferAsset(opts *bind.CallOpts, wrappedToken common.Address) (common.Address, error) {
   547  	var out []interface{}
   548  	err := _Vaultextension.contract.Call(opts, &out, "getERC4626BufferAsset", wrappedToken)
   549  
   550  	if err != nil {
   551  		return *new(common.Address), err
   552  	}
   553  
   554  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   555  
   556  	return out0, err
   557  
   558  }
   559  
   560  // GetERC4626BufferAsset is a free data retrieval call binding the contract method 0x4afbaf5a.
   561  //
   562  // Solidity: function getERC4626BufferAsset(address wrappedToken) view returns(address asset)
   563  func (_Vaultextension *VaultextensionSession) GetERC4626BufferAsset(wrappedToken common.Address) (common.Address, error) {
   564  	return _Vaultextension.Contract.GetERC4626BufferAsset(&_Vaultextension.CallOpts, wrappedToken)
   565  }
   566  
   567  // GetERC4626BufferAsset is a free data retrieval call binding the contract method 0x4afbaf5a.
   568  //
   569  // Solidity: function getERC4626BufferAsset(address wrappedToken) view returns(address asset)
   570  func (_Vaultextension *VaultextensionCallerSession) GetERC4626BufferAsset(wrappedToken common.Address) (common.Address, error) {
   571  	return _Vaultextension.Contract.GetERC4626BufferAsset(&_Vaultextension.CallOpts, wrappedToken)
   572  }
   573  
   574  // GetHooksConfig is a free data retrieval call binding the contract method 0xce8630d4.
   575  //
   576  // Solidity: function getHooksConfig(address pool) view returns((bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))
   577  func (_Vaultextension *VaultextensionCaller) GetHooksConfig(opts *bind.CallOpts, pool common.Address) (HooksConfig, error) {
   578  	var out []interface{}
   579  	err := _Vaultextension.contract.Call(opts, &out, "getHooksConfig", pool)
   580  
   581  	if err != nil {
   582  		return *new(HooksConfig), err
   583  	}
   584  
   585  	out0 := *abi.ConvertType(out[0], new(HooksConfig)).(*HooksConfig)
   586  
   587  	return out0, err
   588  
   589  }
   590  
   591  // GetHooksConfig is a free data retrieval call binding the contract method 0xce8630d4.
   592  //
   593  // Solidity: function getHooksConfig(address pool) view returns((bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))
   594  func (_Vaultextension *VaultextensionSession) GetHooksConfig(pool common.Address) (HooksConfig, error) {
   595  	return _Vaultextension.Contract.GetHooksConfig(&_Vaultextension.CallOpts, pool)
   596  }
   597  
   598  // GetHooksConfig is a free data retrieval call binding the contract method 0xce8630d4.
   599  //
   600  // Solidity: function getHooksConfig(address pool) view returns((bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address))
   601  func (_Vaultextension *VaultextensionCallerSession) GetHooksConfig(pool common.Address) (HooksConfig, error) {
   602  	return _Vaultextension.Contract.GetHooksConfig(&_Vaultextension.CallOpts, pool)
   603  }
   604  
   605  // GetNonzeroDeltaCount is a free data retrieval call binding the contract method 0xdb817187.
   606  //
   607  // Solidity: function getNonzeroDeltaCount() view returns(uint256)
   608  func (_Vaultextension *VaultextensionCaller) GetNonzeroDeltaCount(opts *bind.CallOpts) (*big.Int, error) {
   609  	var out []interface{}
   610  	err := _Vaultextension.contract.Call(opts, &out, "getNonzeroDeltaCount")
   611  
   612  	if err != nil {
   613  		return *new(*big.Int), err
   614  	}
   615  
   616  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   617  
   618  	return out0, err
   619  
   620  }
   621  
   622  // GetNonzeroDeltaCount is a free data retrieval call binding the contract method 0xdb817187.
   623  //
   624  // Solidity: function getNonzeroDeltaCount() view returns(uint256)
   625  func (_Vaultextension *VaultextensionSession) GetNonzeroDeltaCount() (*big.Int, error) {
   626  	return _Vaultextension.Contract.GetNonzeroDeltaCount(&_Vaultextension.CallOpts)
   627  }
   628  
   629  // GetNonzeroDeltaCount is a free data retrieval call binding the contract method 0xdb817187.
   630  //
   631  // Solidity: function getNonzeroDeltaCount() view returns(uint256)
   632  func (_Vaultextension *VaultextensionCallerSession) GetNonzeroDeltaCount() (*big.Int, error) {
   633  	return _Vaultextension.Contract.GetNonzeroDeltaCount(&_Vaultextension.CallOpts)
   634  }
   635  
   636  // GetPoolConfig is a free data retrieval call binding the contract method 0xf29486a1.
   637  //
   638  // Solidity: function getPoolConfig(address pool) view returns(((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))
   639  func (_Vaultextension *VaultextensionCaller) GetPoolConfig(opts *bind.CallOpts, pool common.Address) (PoolConfig, error) {
   640  	var out []interface{}
   641  	err := _Vaultextension.contract.Call(opts, &out, "getPoolConfig", pool)
   642  
   643  	if err != nil {
   644  		return *new(PoolConfig), err
   645  	}
   646  
   647  	out0 := *abi.ConvertType(out[0], new(PoolConfig)).(*PoolConfig)
   648  
   649  	return out0, err
   650  
   651  }
   652  
   653  // GetPoolConfig is a free data retrieval call binding the contract method 0xf29486a1.
   654  //
   655  // Solidity: function getPoolConfig(address pool) view returns(((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))
   656  func (_Vaultextension *VaultextensionSession) GetPoolConfig(pool common.Address) (PoolConfig, error) {
   657  	return _Vaultextension.Contract.GetPoolConfig(&_Vaultextension.CallOpts, pool)
   658  }
   659  
   660  // GetPoolConfig is a free data retrieval call binding the contract method 0xf29486a1.
   661  //
   662  // Solidity: function getPoolConfig(address pool) view returns(((bool,bool,bool,bool),uint256,uint256,uint256,uint40,uint32,bool,bool,bool,bool))
   663  func (_Vaultextension *VaultextensionCallerSession) GetPoolConfig(pool common.Address) (PoolConfig, error) {
   664  	return _Vaultextension.Contract.GetPoolConfig(&_Vaultextension.CallOpts, pool)
   665  }
   666  
   667  // GetPoolData is a free data retrieval call binding the contract method 0x13d21cdf.
   668  //
   669  // Solidity: function getPoolData(address pool) view returns((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))
   670  func (_Vaultextension *VaultextensionCaller) GetPoolData(opts *bind.CallOpts, pool common.Address) (PoolData, error) {
   671  	var out []interface{}
   672  	err := _Vaultextension.contract.Call(opts, &out, "getPoolData", pool)
   673  
   674  	if err != nil {
   675  		return *new(PoolData), err
   676  	}
   677  
   678  	out0 := *abi.ConvertType(out[0], new(PoolData)).(*PoolData)
   679  
   680  	return out0, err
   681  
   682  }
   683  
   684  // GetPoolData is a free data retrieval call binding the contract method 0x13d21cdf.
   685  //
   686  // Solidity: function getPoolData(address pool) view returns((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))
   687  func (_Vaultextension *VaultextensionSession) GetPoolData(pool common.Address) (PoolData, error) {
   688  	return _Vaultextension.Contract.GetPoolData(&_Vaultextension.CallOpts, pool)
   689  }
   690  
   691  // GetPoolData is a free data retrieval call binding the contract method 0x13d21cdf.
   692  //
   693  // Solidity: function getPoolData(address pool) view returns((bytes32,address[],(uint8,address,bool)[],uint256[],uint256[],uint256[],uint256[]))
   694  func (_Vaultextension *VaultextensionCallerSession) GetPoolData(pool common.Address) (PoolData, error) {
   695  	return _Vaultextension.Contract.GetPoolData(&_Vaultextension.CallOpts, pool)
   696  }
   697  
   698  // GetPoolPausedState is a free data retrieval call binding the contract method 0x15e32046.
   699  //
   700  // Solidity: function getPoolPausedState(address pool) view returns(bool, uint32, uint32, address)
   701  func (_Vaultextension *VaultextensionCaller) GetPoolPausedState(opts *bind.CallOpts, pool common.Address) (bool, uint32, uint32, common.Address, error) {
   702  	var out []interface{}
   703  	err := _Vaultextension.contract.Call(opts, &out, "getPoolPausedState", pool)
   704  
   705  	if err != nil {
   706  		return *new(bool), *new(uint32), *new(uint32), *new(common.Address), err
   707  	}
   708  
   709  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   710  	out1 := *abi.ConvertType(out[1], new(uint32)).(*uint32)
   711  	out2 := *abi.ConvertType(out[2], new(uint32)).(*uint32)
   712  	out3 := *abi.ConvertType(out[3], new(common.Address)).(*common.Address)
   713  
   714  	return out0, out1, out2, out3, err
   715  
   716  }
   717  
   718  // GetPoolPausedState is a free data retrieval call binding the contract method 0x15e32046.
   719  //
   720  // Solidity: function getPoolPausedState(address pool) view returns(bool, uint32, uint32, address)
   721  func (_Vaultextension *VaultextensionSession) GetPoolPausedState(pool common.Address) (bool, uint32, uint32, common.Address, error) {
   722  	return _Vaultextension.Contract.GetPoolPausedState(&_Vaultextension.CallOpts, pool)
   723  }
   724  
   725  // GetPoolPausedState is a free data retrieval call binding the contract method 0x15e32046.
   726  //
   727  // Solidity: function getPoolPausedState(address pool) view returns(bool, uint32, uint32, address)
   728  func (_Vaultextension *VaultextensionCallerSession) GetPoolPausedState(pool common.Address) (bool, uint32, uint32, common.Address, error) {
   729  	return _Vaultextension.Contract.GetPoolPausedState(&_Vaultextension.CallOpts, pool)
   730  }
   731  
   732  // GetPoolRoleAccounts is a free data retrieval call binding the contract method 0xe9ddeb26.
   733  //
   734  // Solidity: function getPoolRoleAccounts(address pool) view returns((address,address,address))
   735  func (_Vaultextension *VaultextensionCaller) GetPoolRoleAccounts(opts *bind.CallOpts, pool common.Address) (PoolRoleAccounts, error) {
   736  	var out []interface{}
   737  	err := _Vaultextension.contract.Call(opts, &out, "getPoolRoleAccounts", pool)
   738  
   739  	if err != nil {
   740  		return *new(PoolRoleAccounts), err
   741  	}
   742  
   743  	out0 := *abi.ConvertType(out[0], new(PoolRoleAccounts)).(*PoolRoleAccounts)
   744  
   745  	return out0, err
   746  
   747  }
   748  
   749  // GetPoolRoleAccounts is a free data retrieval call binding the contract method 0xe9ddeb26.
   750  //
   751  // Solidity: function getPoolRoleAccounts(address pool) view returns((address,address,address))
   752  func (_Vaultextension *VaultextensionSession) GetPoolRoleAccounts(pool common.Address) (PoolRoleAccounts, error) {
   753  	return _Vaultextension.Contract.GetPoolRoleAccounts(&_Vaultextension.CallOpts, pool)
   754  }
   755  
   756  // GetPoolRoleAccounts is a free data retrieval call binding the contract method 0xe9ddeb26.
   757  //
   758  // Solidity: function getPoolRoleAccounts(address pool) view returns((address,address,address))
   759  func (_Vaultextension *VaultextensionCallerSession) GetPoolRoleAccounts(pool common.Address) (PoolRoleAccounts, error) {
   760  	return _Vaultextension.Contract.GetPoolRoleAccounts(&_Vaultextension.CallOpts, pool)
   761  }
   762  
   763  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0x67e0e076.
   764  //
   765  // Solidity: function getPoolTokenInfo(address pool) view returns(address[] tokens, (uint8,address,bool)[] tokenInfo, uint256[] balancesRaw, uint256[] lastBalancesLiveScaled18)
   766  func (_Vaultextension *VaultextensionCaller) GetPoolTokenInfo(opts *bind.CallOpts, pool common.Address) (struct {
   767  	Tokens                   []common.Address
   768  	TokenInfo                []TokenInfo
   769  	BalancesRaw              []*big.Int
   770  	LastBalancesLiveScaled18 []*big.Int
   771  }, error) {
   772  	var out []interface{}
   773  	err := _Vaultextension.contract.Call(opts, &out, "getPoolTokenInfo", pool)
   774  
   775  	outstruct := new(struct {
   776  		Tokens                   []common.Address
   777  		TokenInfo                []TokenInfo
   778  		BalancesRaw              []*big.Int
   779  		LastBalancesLiveScaled18 []*big.Int
   780  	})
   781  	if err != nil {
   782  		return *outstruct, err
   783  	}
   784  
   785  	outstruct.Tokens = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
   786  	outstruct.TokenInfo = *abi.ConvertType(out[1], new([]TokenInfo)).(*[]TokenInfo)
   787  	outstruct.BalancesRaw = *abi.ConvertType(out[2], new([]*big.Int)).(*[]*big.Int)
   788  	outstruct.LastBalancesLiveScaled18 = *abi.ConvertType(out[3], new([]*big.Int)).(*[]*big.Int)
   789  
   790  	return *outstruct, err
   791  
   792  }
   793  
   794  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0x67e0e076.
   795  //
   796  // Solidity: function getPoolTokenInfo(address pool) view returns(address[] tokens, (uint8,address,bool)[] tokenInfo, uint256[] balancesRaw, uint256[] lastBalancesLiveScaled18)
   797  func (_Vaultextension *VaultextensionSession) GetPoolTokenInfo(pool common.Address) (struct {
   798  	Tokens                   []common.Address
   799  	TokenInfo                []TokenInfo
   800  	BalancesRaw              []*big.Int
   801  	LastBalancesLiveScaled18 []*big.Int
   802  }, error) {
   803  	return _Vaultextension.Contract.GetPoolTokenInfo(&_Vaultextension.CallOpts, pool)
   804  }
   805  
   806  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0x67e0e076.
   807  //
   808  // Solidity: function getPoolTokenInfo(address pool) view returns(address[] tokens, (uint8,address,bool)[] tokenInfo, uint256[] balancesRaw, uint256[] lastBalancesLiveScaled18)
   809  func (_Vaultextension *VaultextensionCallerSession) GetPoolTokenInfo(pool common.Address) (struct {
   810  	Tokens                   []common.Address
   811  	TokenInfo                []TokenInfo
   812  	BalancesRaw              []*big.Int
   813  	LastBalancesLiveScaled18 []*big.Int
   814  }, error) {
   815  	return _Vaultextension.Contract.GetPoolTokenInfo(&_Vaultextension.CallOpts, pool)
   816  }
   817  
   818  // GetPoolTokenRates is a free data retrieval call binding the contract method 0x7e361bde.
   819  //
   820  // Solidity: function getPoolTokenRates(address pool) view returns(uint256[] decimalScalingFactors, uint256[] tokenRates)
   821  func (_Vaultextension *VaultextensionCaller) GetPoolTokenRates(opts *bind.CallOpts, pool common.Address) (struct {
   822  	DecimalScalingFactors []*big.Int
   823  	TokenRates            []*big.Int
   824  }, error) {
   825  	var out []interface{}
   826  	err := _Vaultextension.contract.Call(opts, &out, "getPoolTokenRates", pool)
   827  
   828  	outstruct := new(struct {
   829  		DecimalScalingFactors []*big.Int
   830  		TokenRates            []*big.Int
   831  	})
   832  	if err != nil {
   833  		return *outstruct, err
   834  	}
   835  
   836  	outstruct.DecimalScalingFactors = *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
   837  	outstruct.TokenRates = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
   838  
   839  	return *outstruct, err
   840  
   841  }
   842  
   843  // GetPoolTokenRates is a free data retrieval call binding the contract method 0x7e361bde.
   844  //
   845  // Solidity: function getPoolTokenRates(address pool) view returns(uint256[] decimalScalingFactors, uint256[] tokenRates)
   846  func (_Vaultextension *VaultextensionSession) GetPoolTokenRates(pool common.Address) (struct {
   847  	DecimalScalingFactors []*big.Int
   848  	TokenRates            []*big.Int
   849  }, error) {
   850  	return _Vaultextension.Contract.GetPoolTokenRates(&_Vaultextension.CallOpts, pool)
   851  }
   852  
   853  // GetPoolTokenRates is a free data retrieval call binding the contract method 0x7e361bde.
   854  //
   855  // Solidity: function getPoolTokenRates(address pool) view returns(uint256[] decimalScalingFactors, uint256[] tokenRates)
   856  func (_Vaultextension *VaultextensionCallerSession) GetPoolTokenRates(pool common.Address) (struct {
   857  	DecimalScalingFactors []*big.Int
   858  	TokenRates            []*big.Int
   859  }, error) {
   860  	return _Vaultextension.Contract.GetPoolTokenRates(&_Vaultextension.CallOpts, pool)
   861  }
   862  
   863  // GetPoolTokens is a free data retrieval call binding the contract method 0xca4f2803.
   864  //
   865  // Solidity: function getPoolTokens(address pool) view returns(address[] tokens)
   866  func (_Vaultextension *VaultextensionCaller) GetPoolTokens(opts *bind.CallOpts, pool common.Address) ([]common.Address, error) {
   867  	var out []interface{}
   868  	err := _Vaultextension.contract.Call(opts, &out, "getPoolTokens", pool)
   869  
   870  	if err != nil {
   871  		return *new([]common.Address), err
   872  	}
   873  
   874  	out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
   875  
   876  	return out0, err
   877  
   878  }
   879  
   880  // GetPoolTokens is a free data retrieval call binding the contract method 0xca4f2803.
   881  //
   882  // Solidity: function getPoolTokens(address pool) view returns(address[] tokens)
   883  func (_Vaultextension *VaultextensionSession) GetPoolTokens(pool common.Address) ([]common.Address, error) {
   884  	return _Vaultextension.Contract.GetPoolTokens(&_Vaultextension.CallOpts, pool)
   885  }
   886  
   887  // GetPoolTokens is a free data retrieval call binding the contract method 0xca4f2803.
   888  //
   889  // Solidity: function getPoolTokens(address pool) view returns(address[] tokens)
   890  func (_Vaultextension *VaultextensionCallerSession) GetPoolTokens(pool common.Address) ([]common.Address, error) {
   891  	return _Vaultextension.Contract.GetPoolTokens(&_Vaultextension.CallOpts, pool)
   892  }
   893  
   894  // GetProtocolFeeController is a free data retrieval call binding the contract method 0x85f2dbd4.
   895  //
   896  // Solidity: function getProtocolFeeController() view returns(address)
   897  func (_Vaultextension *VaultextensionCaller) GetProtocolFeeController(opts *bind.CallOpts) (common.Address, error) {
   898  	var out []interface{}
   899  	err := _Vaultextension.contract.Call(opts, &out, "getProtocolFeeController")
   900  
   901  	if err != nil {
   902  		return *new(common.Address), err
   903  	}
   904  
   905  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   906  
   907  	return out0, err
   908  
   909  }
   910  
   911  // GetProtocolFeeController is a free data retrieval call binding the contract method 0x85f2dbd4.
   912  //
   913  // Solidity: function getProtocolFeeController() view returns(address)
   914  func (_Vaultextension *VaultextensionSession) GetProtocolFeeController() (common.Address, error) {
   915  	return _Vaultextension.Contract.GetProtocolFeeController(&_Vaultextension.CallOpts)
   916  }
   917  
   918  // GetProtocolFeeController is a free data retrieval call binding the contract method 0x85f2dbd4.
   919  //
   920  // Solidity: function getProtocolFeeController() view returns(address)
   921  func (_Vaultextension *VaultextensionCallerSession) GetProtocolFeeController() (common.Address, error) {
   922  	return _Vaultextension.Contract.GetProtocolFeeController(&_Vaultextension.CallOpts)
   923  }
   924  
   925  // GetReservesOf is a free data retrieval call binding the contract method 0x96787092.
   926  //
   927  // Solidity: function getReservesOf(address token) view returns(uint256)
   928  func (_Vaultextension *VaultextensionCaller) GetReservesOf(opts *bind.CallOpts, token common.Address) (*big.Int, error) {
   929  	var out []interface{}
   930  	err := _Vaultextension.contract.Call(opts, &out, "getReservesOf", token)
   931  
   932  	if err != nil {
   933  		return *new(*big.Int), err
   934  	}
   935  
   936  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   937  
   938  	return out0, err
   939  
   940  }
   941  
   942  // GetReservesOf is a free data retrieval call binding the contract method 0x96787092.
   943  //
   944  // Solidity: function getReservesOf(address token) view returns(uint256)
   945  func (_Vaultextension *VaultextensionSession) GetReservesOf(token common.Address) (*big.Int, error) {
   946  	return _Vaultextension.Contract.GetReservesOf(&_Vaultextension.CallOpts, token)
   947  }
   948  
   949  // GetReservesOf is a free data retrieval call binding the contract method 0x96787092.
   950  //
   951  // Solidity: function getReservesOf(address token) view returns(uint256)
   952  func (_Vaultextension *VaultextensionCallerSession) GetReservesOf(token common.Address) (*big.Int, error) {
   953  	return _Vaultextension.Contract.GetReservesOf(&_Vaultextension.CallOpts, token)
   954  }
   955  
   956  // GetStaticSwapFeePercentage is a free data retrieval call binding the contract method 0xb45090f9.
   957  //
   958  // Solidity: function getStaticSwapFeePercentage(address pool) view returns(uint256)
   959  func (_Vaultextension *VaultextensionCaller) GetStaticSwapFeePercentage(opts *bind.CallOpts, pool common.Address) (*big.Int, error) {
   960  	var out []interface{}
   961  	err := _Vaultextension.contract.Call(opts, &out, "getStaticSwapFeePercentage", pool)
   962  
   963  	if err != nil {
   964  		return *new(*big.Int), err
   965  	}
   966  
   967  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   968  
   969  	return out0, err
   970  
   971  }
   972  
   973  // GetStaticSwapFeePercentage is a free data retrieval call binding the contract method 0xb45090f9.
   974  //
   975  // Solidity: function getStaticSwapFeePercentage(address pool) view returns(uint256)
   976  func (_Vaultextension *VaultextensionSession) GetStaticSwapFeePercentage(pool common.Address) (*big.Int, error) {
   977  	return _Vaultextension.Contract.GetStaticSwapFeePercentage(&_Vaultextension.CallOpts, pool)
   978  }
   979  
   980  // GetStaticSwapFeePercentage is a free data retrieval call binding the contract method 0xb45090f9.
   981  //
   982  // Solidity: function getStaticSwapFeePercentage(address pool) view returns(uint256)
   983  func (_Vaultextension *VaultextensionCallerSession) GetStaticSwapFeePercentage(pool common.Address) (*big.Int, error) {
   984  	return _Vaultextension.Contract.GetStaticSwapFeePercentage(&_Vaultextension.CallOpts, pool)
   985  }
   986  
   987  // GetTokenDelta is a free data retrieval call binding the contract method 0x9e825ff5.
   988  //
   989  // Solidity: function getTokenDelta(address token) view returns(int256)
   990  func (_Vaultextension *VaultextensionCaller) GetTokenDelta(opts *bind.CallOpts, token common.Address) (*big.Int, error) {
   991  	var out []interface{}
   992  	err := _Vaultextension.contract.Call(opts, &out, "getTokenDelta", token)
   993  
   994  	if err != nil {
   995  		return *new(*big.Int), err
   996  	}
   997  
   998  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   999  
  1000  	return out0, err
  1001  
  1002  }
  1003  
  1004  // GetTokenDelta is a free data retrieval call binding the contract method 0x9e825ff5.
  1005  //
  1006  // Solidity: function getTokenDelta(address token) view returns(int256)
  1007  func (_Vaultextension *VaultextensionSession) GetTokenDelta(token common.Address) (*big.Int, error) {
  1008  	return _Vaultextension.Contract.GetTokenDelta(&_Vaultextension.CallOpts, token)
  1009  }
  1010  
  1011  // GetTokenDelta is a free data retrieval call binding the contract method 0x9e825ff5.
  1012  //
  1013  // Solidity: function getTokenDelta(address token) view returns(int256)
  1014  func (_Vaultextension *VaultextensionCallerSession) GetTokenDelta(token common.Address) (*big.Int, error) {
  1015  	return _Vaultextension.Contract.GetTokenDelta(&_Vaultextension.CallOpts, token)
  1016  }
  1017  
  1018  // GetVaultAdmin is a free data retrieval call binding the contract method 0x1ba0ae45.
  1019  //
  1020  // Solidity: function getVaultAdmin() view returns(address)
  1021  func (_Vaultextension *VaultextensionCaller) GetVaultAdmin(opts *bind.CallOpts) (common.Address, error) {
  1022  	var out []interface{}
  1023  	err := _Vaultextension.contract.Call(opts, &out, "getVaultAdmin")
  1024  
  1025  	if err != nil {
  1026  		return *new(common.Address), err
  1027  	}
  1028  
  1029  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1030  
  1031  	return out0, err
  1032  
  1033  }
  1034  
  1035  // GetVaultAdmin is a free data retrieval call binding the contract method 0x1ba0ae45.
  1036  //
  1037  // Solidity: function getVaultAdmin() view returns(address)
  1038  func (_Vaultextension *VaultextensionSession) GetVaultAdmin() (common.Address, error) {
  1039  	return _Vaultextension.Contract.GetVaultAdmin(&_Vaultextension.CallOpts)
  1040  }
  1041  
  1042  // GetVaultAdmin is a free data retrieval call binding the contract method 0x1ba0ae45.
  1043  //
  1044  // Solidity: function getVaultAdmin() view returns(address)
  1045  func (_Vaultextension *VaultextensionCallerSession) GetVaultAdmin() (common.Address, error) {
  1046  	return _Vaultextension.Contract.GetVaultAdmin(&_Vaultextension.CallOpts)
  1047  }
  1048  
  1049  // IsERC4626BufferInitialized is a free data retrieval call binding the contract method 0x6844846b.
  1050  //
  1051  // Solidity: function isERC4626BufferInitialized(address wrappedToken) view returns(bool)
  1052  func (_Vaultextension *VaultextensionCaller) IsERC4626BufferInitialized(opts *bind.CallOpts, wrappedToken common.Address) (bool, error) {
  1053  	var out []interface{}
  1054  	err := _Vaultextension.contract.Call(opts, &out, "isERC4626BufferInitialized", wrappedToken)
  1055  
  1056  	if err != nil {
  1057  		return *new(bool), err
  1058  	}
  1059  
  1060  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1061  
  1062  	return out0, err
  1063  
  1064  }
  1065  
  1066  // IsERC4626BufferInitialized is a free data retrieval call binding the contract method 0x6844846b.
  1067  //
  1068  // Solidity: function isERC4626BufferInitialized(address wrappedToken) view returns(bool)
  1069  func (_Vaultextension *VaultextensionSession) IsERC4626BufferInitialized(wrappedToken common.Address) (bool, error) {
  1070  	return _Vaultextension.Contract.IsERC4626BufferInitialized(&_Vaultextension.CallOpts, wrappedToken)
  1071  }
  1072  
  1073  // IsERC4626BufferInitialized is a free data retrieval call binding the contract method 0x6844846b.
  1074  //
  1075  // Solidity: function isERC4626BufferInitialized(address wrappedToken) view returns(bool)
  1076  func (_Vaultextension *VaultextensionCallerSession) IsERC4626BufferInitialized(wrappedToken common.Address) (bool, error) {
  1077  	return _Vaultextension.Contract.IsERC4626BufferInitialized(&_Vaultextension.CallOpts, wrappedToken)
  1078  }
  1079  
  1080  // IsPoolInRecoveryMode is a free data retrieval call binding the contract method 0xbe7d628a.
  1081  //
  1082  // Solidity: function isPoolInRecoveryMode(address pool) view returns(bool)
  1083  func (_Vaultextension *VaultextensionCaller) IsPoolInRecoveryMode(opts *bind.CallOpts, pool common.Address) (bool, error) {
  1084  	var out []interface{}
  1085  	err := _Vaultextension.contract.Call(opts, &out, "isPoolInRecoveryMode", pool)
  1086  
  1087  	if err != nil {
  1088  		return *new(bool), err
  1089  	}
  1090  
  1091  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1092  
  1093  	return out0, err
  1094  
  1095  }
  1096  
  1097  // IsPoolInRecoveryMode is a free data retrieval call binding the contract method 0xbe7d628a.
  1098  //
  1099  // Solidity: function isPoolInRecoveryMode(address pool) view returns(bool)
  1100  func (_Vaultextension *VaultextensionSession) IsPoolInRecoveryMode(pool common.Address) (bool, error) {
  1101  	return _Vaultextension.Contract.IsPoolInRecoveryMode(&_Vaultextension.CallOpts, pool)
  1102  }
  1103  
  1104  // IsPoolInRecoveryMode is a free data retrieval call binding the contract method 0xbe7d628a.
  1105  //
  1106  // Solidity: function isPoolInRecoveryMode(address pool) view returns(bool)
  1107  func (_Vaultextension *VaultextensionCallerSession) IsPoolInRecoveryMode(pool common.Address) (bool, error) {
  1108  	return _Vaultextension.Contract.IsPoolInRecoveryMode(&_Vaultextension.CallOpts, pool)
  1109  }
  1110  
  1111  // IsPoolInitialized is a free data retrieval call binding the contract method 0x532cec7c.
  1112  //
  1113  // Solidity: function isPoolInitialized(address pool) view returns(bool)
  1114  func (_Vaultextension *VaultextensionCaller) IsPoolInitialized(opts *bind.CallOpts, pool common.Address) (bool, error) {
  1115  	var out []interface{}
  1116  	err := _Vaultextension.contract.Call(opts, &out, "isPoolInitialized", pool)
  1117  
  1118  	if err != nil {
  1119  		return *new(bool), err
  1120  	}
  1121  
  1122  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1123  
  1124  	return out0, err
  1125  
  1126  }
  1127  
  1128  // IsPoolInitialized is a free data retrieval call binding the contract method 0x532cec7c.
  1129  //
  1130  // Solidity: function isPoolInitialized(address pool) view returns(bool)
  1131  func (_Vaultextension *VaultextensionSession) IsPoolInitialized(pool common.Address) (bool, error) {
  1132  	return _Vaultextension.Contract.IsPoolInitialized(&_Vaultextension.CallOpts, pool)
  1133  }
  1134  
  1135  // IsPoolInitialized is a free data retrieval call binding the contract method 0x532cec7c.
  1136  //
  1137  // Solidity: function isPoolInitialized(address pool) view returns(bool)
  1138  func (_Vaultextension *VaultextensionCallerSession) IsPoolInitialized(pool common.Address) (bool, error) {
  1139  	return _Vaultextension.Contract.IsPoolInitialized(&_Vaultextension.CallOpts, pool)
  1140  }
  1141  
  1142  // IsPoolPaused is a free data retrieval call binding the contract method 0x6c9bc732.
  1143  //
  1144  // Solidity: function isPoolPaused(address pool) view returns(bool)
  1145  func (_Vaultextension *VaultextensionCaller) IsPoolPaused(opts *bind.CallOpts, pool common.Address) (bool, error) {
  1146  	var out []interface{}
  1147  	err := _Vaultextension.contract.Call(opts, &out, "isPoolPaused", pool)
  1148  
  1149  	if err != nil {
  1150  		return *new(bool), err
  1151  	}
  1152  
  1153  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1154  
  1155  	return out0, err
  1156  
  1157  }
  1158  
  1159  // IsPoolPaused is a free data retrieval call binding the contract method 0x6c9bc732.
  1160  //
  1161  // Solidity: function isPoolPaused(address pool) view returns(bool)
  1162  func (_Vaultextension *VaultextensionSession) IsPoolPaused(pool common.Address) (bool, error) {
  1163  	return _Vaultextension.Contract.IsPoolPaused(&_Vaultextension.CallOpts, pool)
  1164  }
  1165  
  1166  // IsPoolPaused is a free data retrieval call binding the contract method 0x6c9bc732.
  1167  //
  1168  // Solidity: function isPoolPaused(address pool) view returns(bool)
  1169  func (_Vaultextension *VaultextensionCallerSession) IsPoolPaused(pool common.Address) (bool, error) {
  1170  	return _Vaultextension.Contract.IsPoolPaused(&_Vaultextension.CallOpts, pool)
  1171  }
  1172  
  1173  // IsPoolRegistered is a free data retrieval call binding the contract method 0xc673bdaf.
  1174  //
  1175  // Solidity: function isPoolRegistered(address pool) view returns(bool)
  1176  func (_Vaultextension *VaultextensionCaller) IsPoolRegistered(opts *bind.CallOpts, pool common.Address) (bool, error) {
  1177  	var out []interface{}
  1178  	err := _Vaultextension.contract.Call(opts, &out, "isPoolRegistered", pool)
  1179  
  1180  	if err != nil {
  1181  		return *new(bool), err
  1182  	}
  1183  
  1184  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1185  
  1186  	return out0, err
  1187  
  1188  }
  1189  
  1190  // IsPoolRegistered is a free data retrieval call binding the contract method 0xc673bdaf.
  1191  //
  1192  // Solidity: function isPoolRegistered(address pool) view returns(bool)
  1193  func (_Vaultextension *VaultextensionSession) IsPoolRegistered(pool common.Address) (bool, error) {
  1194  	return _Vaultextension.Contract.IsPoolRegistered(&_Vaultextension.CallOpts, pool)
  1195  }
  1196  
  1197  // IsPoolRegistered is a free data retrieval call binding the contract method 0xc673bdaf.
  1198  //
  1199  // Solidity: function isPoolRegistered(address pool) view returns(bool)
  1200  func (_Vaultextension *VaultextensionCallerSession) IsPoolRegistered(pool common.Address) (bool, error) {
  1201  	return _Vaultextension.Contract.IsPoolRegistered(&_Vaultextension.CallOpts, pool)
  1202  }
  1203  
  1204  // IsQueryDisabled is a free data retrieval call binding the contract method 0xb4aef0ab.
  1205  //
  1206  // Solidity: function isQueryDisabled() view returns(bool)
  1207  func (_Vaultextension *VaultextensionCaller) IsQueryDisabled(opts *bind.CallOpts) (bool, error) {
  1208  	var out []interface{}
  1209  	err := _Vaultextension.contract.Call(opts, &out, "isQueryDisabled")
  1210  
  1211  	if err != nil {
  1212  		return *new(bool), err
  1213  	}
  1214  
  1215  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1216  
  1217  	return out0, err
  1218  
  1219  }
  1220  
  1221  // IsQueryDisabled is a free data retrieval call binding the contract method 0xb4aef0ab.
  1222  //
  1223  // Solidity: function isQueryDisabled() view returns(bool)
  1224  func (_Vaultextension *VaultextensionSession) IsQueryDisabled() (bool, error) {
  1225  	return _Vaultextension.Contract.IsQueryDisabled(&_Vaultextension.CallOpts)
  1226  }
  1227  
  1228  // IsQueryDisabled is a free data retrieval call binding the contract method 0xb4aef0ab.
  1229  //
  1230  // Solidity: function isQueryDisabled() view returns(bool)
  1231  func (_Vaultextension *VaultextensionCallerSession) IsQueryDisabled() (bool, error) {
  1232  	return _Vaultextension.Contract.IsQueryDisabled(&_Vaultextension.CallOpts)
  1233  }
  1234  
  1235  // IsQueryDisabledPermanently is a free data retrieval call binding the contract method 0x13ef8a5d.
  1236  //
  1237  // Solidity: function isQueryDisabledPermanently() view returns(bool)
  1238  func (_Vaultextension *VaultextensionCaller) IsQueryDisabledPermanently(opts *bind.CallOpts) (bool, error) {
  1239  	var out []interface{}
  1240  	err := _Vaultextension.contract.Call(opts, &out, "isQueryDisabledPermanently")
  1241  
  1242  	if err != nil {
  1243  		return *new(bool), err
  1244  	}
  1245  
  1246  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1247  
  1248  	return out0, err
  1249  
  1250  }
  1251  
  1252  // IsQueryDisabledPermanently is a free data retrieval call binding the contract method 0x13ef8a5d.
  1253  //
  1254  // Solidity: function isQueryDisabledPermanently() view returns(bool)
  1255  func (_Vaultextension *VaultextensionSession) IsQueryDisabledPermanently() (bool, error) {
  1256  	return _Vaultextension.Contract.IsQueryDisabledPermanently(&_Vaultextension.CallOpts)
  1257  }
  1258  
  1259  // IsQueryDisabledPermanently is a free data retrieval call binding the contract method 0x13ef8a5d.
  1260  //
  1261  // Solidity: function isQueryDisabledPermanently() view returns(bool)
  1262  func (_Vaultextension *VaultextensionCallerSession) IsQueryDisabledPermanently() (bool, error) {
  1263  	return _Vaultextension.Contract.IsQueryDisabledPermanently(&_Vaultextension.CallOpts)
  1264  }
  1265  
  1266  // IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7.
  1267  //
  1268  // Solidity: function isUnlocked() view returns(bool)
  1269  func (_Vaultextension *VaultextensionCaller) IsUnlocked(opts *bind.CallOpts) (bool, error) {
  1270  	var out []interface{}
  1271  	err := _Vaultextension.contract.Call(opts, &out, "isUnlocked")
  1272  
  1273  	if err != nil {
  1274  		return *new(bool), err
  1275  	}
  1276  
  1277  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1278  
  1279  	return out0, err
  1280  
  1281  }
  1282  
  1283  // IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7.
  1284  //
  1285  // Solidity: function isUnlocked() view returns(bool)
  1286  func (_Vaultextension *VaultextensionSession) IsUnlocked() (bool, error) {
  1287  	return _Vaultextension.Contract.IsUnlocked(&_Vaultextension.CallOpts)
  1288  }
  1289  
  1290  // IsUnlocked is a free data retrieval call binding the contract method 0x8380edb7.
  1291  //
  1292  // Solidity: function isUnlocked() view returns(bool)
  1293  func (_Vaultextension *VaultextensionCallerSession) IsUnlocked() (bool, error) {
  1294  	return _Vaultextension.Contract.IsUnlocked(&_Vaultextension.CallOpts)
  1295  }
  1296  
  1297  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
  1298  //
  1299  // Solidity: function reentrancyGuardEntered() view returns(bool)
  1300  func (_Vaultextension *VaultextensionCaller) ReentrancyGuardEntered(opts *bind.CallOpts) (bool, error) {
  1301  	var out []interface{}
  1302  	err := _Vaultextension.contract.Call(opts, &out, "reentrancyGuardEntered")
  1303  
  1304  	if err != nil {
  1305  		return *new(bool), err
  1306  	}
  1307  
  1308  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1309  
  1310  	return out0, err
  1311  
  1312  }
  1313  
  1314  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
  1315  //
  1316  // Solidity: function reentrancyGuardEntered() view returns(bool)
  1317  func (_Vaultextension *VaultextensionSession) ReentrancyGuardEntered() (bool, error) {
  1318  	return _Vaultextension.Contract.ReentrancyGuardEntered(&_Vaultextension.CallOpts)
  1319  }
  1320  
  1321  // ReentrancyGuardEntered is a free data retrieval call binding the contract method 0xd2c725e0.
  1322  //
  1323  // Solidity: function reentrancyGuardEntered() view returns(bool)
  1324  func (_Vaultextension *VaultextensionCallerSession) ReentrancyGuardEntered() (bool, error) {
  1325  	return _Vaultextension.Contract.ReentrancyGuardEntered(&_Vaultextension.CallOpts)
  1326  }
  1327  
  1328  // TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4.
  1329  //
  1330  // Solidity: function totalSupply(address token) view returns(uint256)
  1331  func (_Vaultextension *VaultextensionCaller) TotalSupply(opts *bind.CallOpts, token common.Address) (*big.Int, error) {
  1332  	var out []interface{}
  1333  	err := _Vaultextension.contract.Call(opts, &out, "totalSupply", token)
  1334  
  1335  	if err != nil {
  1336  		return *new(*big.Int), err
  1337  	}
  1338  
  1339  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1340  
  1341  	return out0, err
  1342  
  1343  }
  1344  
  1345  // TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4.
  1346  //
  1347  // Solidity: function totalSupply(address token) view returns(uint256)
  1348  func (_Vaultextension *VaultextensionSession) TotalSupply(token common.Address) (*big.Int, error) {
  1349  	return _Vaultextension.Contract.TotalSupply(&_Vaultextension.CallOpts, token)
  1350  }
  1351  
  1352  // TotalSupply is a free data retrieval call binding the contract method 0xe4dc2aa4.
  1353  //
  1354  // Solidity: function totalSupply(address token) view returns(uint256)
  1355  func (_Vaultextension *VaultextensionCallerSession) TotalSupply(token common.Address) (*big.Int, error) {
  1356  	return _Vaultextension.Contract.TotalSupply(&_Vaultextension.CallOpts, token)
  1357  }
  1358  
  1359  // Vault is a free data retrieval call binding the contract method 0xfbfa77cf.
  1360  //
  1361  // Solidity: function vault() view returns(address)
  1362  func (_Vaultextension *VaultextensionCaller) Vault(opts *bind.CallOpts) (common.Address, error) {
  1363  	var out []interface{}
  1364  	err := _Vaultextension.contract.Call(opts, &out, "vault")
  1365  
  1366  	if err != nil {
  1367  		return *new(common.Address), err
  1368  	}
  1369  
  1370  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1371  
  1372  	return out0, err
  1373  
  1374  }
  1375  
  1376  // Vault is a free data retrieval call binding the contract method 0xfbfa77cf.
  1377  //
  1378  // Solidity: function vault() view returns(address)
  1379  func (_Vaultextension *VaultextensionSession) Vault() (common.Address, error) {
  1380  	return _Vaultextension.Contract.Vault(&_Vaultextension.CallOpts)
  1381  }
  1382  
  1383  // Vault is a free data retrieval call binding the contract method 0xfbfa77cf.
  1384  //
  1385  // Solidity: function vault() view returns(address)
  1386  func (_Vaultextension *VaultextensionCallerSession) Vault() (common.Address, error) {
  1387  	return _Vaultextension.Contract.Vault(&_Vaultextension.CallOpts)
  1388  }
  1389  
  1390  // Approve is a paid mutator transaction binding the contract method 0xe1f21c67.
  1391  //
  1392  // Solidity: function approve(address owner, address spender, uint256 amount) returns(bool)
  1393  func (_Vaultextension *VaultextensionTransactor) Approve(opts *bind.TransactOpts, owner common.Address, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1394  	return _Vaultextension.contract.Transact(opts, "approve", owner, spender, amount)
  1395  }
  1396  
  1397  // Approve is a paid mutator transaction binding the contract method 0xe1f21c67.
  1398  //
  1399  // Solidity: function approve(address owner, address spender, uint256 amount) returns(bool)
  1400  func (_Vaultextension *VaultextensionSession) Approve(owner common.Address, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1401  	return _Vaultextension.Contract.Approve(&_Vaultextension.TransactOpts, owner, spender, amount)
  1402  }
  1403  
  1404  // Approve is a paid mutator transaction binding the contract method 0xe1f21c67.
  1405  //
  1406  // Solidity: function approve(address owner, address spender, uint256 amount) returns(bool)
  1407  func (_Vaultextension *VaultextensionTransactorSession) Approve(owner common.Address, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  1408  	return _Vaultextension.Contract.Approve(&_Vaultextension.TransactOpts, owner, spender, amount)
  1409  }
  1410  
  1411  // EmitAuxiliaryEvent is a paid mutator transaction binding the contract method 0xc8088247.
  1412  //
  1413  // Solidity: function emitAuxiliaryEvent(bytes32 eventKey, bytes eventData) returns()
  1414  func (_Vaultextension *VaultextensionTransactor) EmitAuxiliaryEvent(opts *bind.TransactOpts, eventKey [32]byte, eventData []byte) (*types.Transaction, error) {
  1415  	return _Vaultextension.contract.Transact(opts, "emitAuxiliaryEvent", eventKey, eventData)
  1416  }
  1417  
  1418  // EmitAuxiliaryEvent is a paid mutator transaction binding the contract method 0xc8088247.
  1419  //
  1420  // Solidity: function emitAuxiliaryEvent(bytes32 eventKey, bytes eventData) returns()
  1421  func (_Vaultextension *VaultextensionSession) EmitAuxiliaryEvent(eventKey [32]byte, eventData []byte) (*types.Transaction, error) {
  1422  	return _Vaultextension.Contract.EmitAuxiliaryEvent(&_Vaultextension.TransactOpts, eventKey, eventData)
  1423  }
  1424  
  1425  // EmitAuxiliaryEvent is a paid mutator transaction binding the contract method 0xc8088247.
  1426  //
  1427  // Solidity: function emitAuxiliaryEvent(bytes32 eventKey, bytes eventData) returns()
  1428  func (_Vaultextension *VaultextensionTransactorSession) EmitAuxiliaryEvent(eventKey [32]byte, eventData []byte) (*types.Transaction, error) {
  1429  	return _Vaultextension.Contract.EmitAuxiliaryEvent(&_Vaultextension.TransactOpts, eventKey, eventData)
  1430  }
  1431  
  1432  // Initialize is a paid mutator transaction binding the contract method 0xba8a2be0.
  1433  //
  1434  // Solidity: function initialize(address pool, address to, address[] tokens, uint256[] exactAmountsIn, uint256 minBptAmountOut, bytes userData) returns(uint256 bptAmountOut)
  1435  func (_Vaultextension *VaultextensionTransactor) Initialize(opts *bind.TransactOpts, pool common.Address, to common.Address, tokens []common.Address, exactAmountsIn []*big.Int, minBptAmountOut *big.Int, userData []byte) (*types.Transaction, error) {
  1436  	return _Vaultextension.contract.Transact(opts, "initialize", pool, to, tokens, exactAmountsIn, minBptAmountOut, userData)
  1437  }
  1438  
  1439  // Initialize is a paid mutator transaction binding the contract method 0xba8a2be0.
  1440  //
  1441  // Solidity: function initialize(address pool, address to, address[] tokens, uint256[] exactAmountsIn, uint256 minBptAmountOut, bytes userData) returns(uint256 bptAmountOut)
  1442  func (_Vaultextension *VaultextensionSession) Initialize(pool common.Address, to common.Address, tokens []common.Address, exactAmountsIn []*big.Int, minBptAmountOut *big.Int, userData []byte) (*types.Transaction, error) {
  1443  	return _Vaultextension.Contract.Initialize(&_Vaultextension.TransactOpts, pool, to, tokens, exactAmountsIn, minBptAmountOut, userData)
  1444  }
  1445  
  1446  // Initialize is a paid mutator transaction binding the contract method 0xba8a2be0.
  1447  //
  1448  // Solidity: function initialize(address pool, address to, address[] tokens, uint256[] exactAmountsIn, uint256 minBptAmountOut, bytes userData) returns(uint256 bptAmountOut)
  1449  func (_Vaultextension *VaultextensionTransactorSession) Initialize(pool common.Address, to common.Address, tokens []common.Address, exactAmountsIn []*big.Int, minBptAmountOut *big.Int, userData []byte) (*types.Transaction, error) {
  1450  	return _Vaultextension.Contract.Initialize(&_Vaultextension.TransactOpts, pool, to, tokens, exactAmountsIn, minBptAmountOut, userData)
  1451  }
  1452  
  1453  // Quote is a paid mutator transaction binding the contract method 0xedfa3568.
  1454  //
  1455  // Solidity: function quote(bytes data) returns(bytes result)
  1456  func (_Vaultextension *VaultextensionTransactor) Quote(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) {
  1457  	return _Vaultextension.contract.Transact(opts, "quote", data)
  1458  }
  1459  
  1460  // Quote is a paid mutator transaction binding the contract method 0xedfa3568.
  1461  //
  1462  // Solidity: function quote(bytes data) returns(bytes result)
  1463  func (_Vaultextension *VaultextensionSession) Quote(data []byte) (*types.Transaction, error) {
  1464  	return _Vaultextension.Contract.Quote(&_Vaultextension.TransactOpts, data)
  1465  }
  1466  
  1467  // Quote is a paid mutator transaction binding the contract method 0xedfa3568.
  1468  //
  1469  // Solidity: function quote(bytes data) returns(bytes result)
  1470  func (_Vaultextension *VaultextensionTransactorSession) Quote(data []byte) (*types.Transaction, error) {
  1471  	return _Vaultextension.Contract.Quote(&_Vaultextension.TransactOpts, data)
  1472  }
  1473  
  1474  // QuoteAndRevert is a paid mutator transaction binding the contract method 0x757d64b3.
  1475  //
  1476  // Solidity: function quoteAndRevert(bytes data) returns()
  1477  func (_Vaultextension *VaultextensionTransactor) QuoteAndRevert(opts *bind.TransactOpts, data []byte) (*types.Transaction, error) {
  1478  	return _Vaultextension.contract.Transact(opts, "quoteAndRevert", data)
  1479  }
  1480  
  1481  // QuoteAndRevert is a paid mutator transaction binding the contract method 0x757d64b3.
  1482  //
  1483  // Solidity: function quoteAndRevert(bytes data) returns()
  1484  func (_Vaultextension *VaultextensionSession) QuoteAndRevert(data []byte) (*types.Transaction, error) {
  1485  	return _Vaultextension.Contract.QuoteAndRevert(&_Vaultextension.TransactOpts, data)
  1486  }
  1487  
  1488  // QuoteAndRevert is a paid mutator transaction binding the contract method 0x757d64b3.
  1489  //
  1490  // Solidity: function quoteAndRevert(bytes data) returns()
  1491  func (_Vaultextension *VaultextensionTransactorSession) QuoteAndRevert(data []byte) (*types.Transaction, error) {
  1492  	return _Vaultextension.Contract.QuoteAndRevert(&_Vaultextension.TransactOpts, data)
  1493  }
  1494  
  1495  // RegisterPool is a paid mutator transaction binding the contract method 0xeeec802f.
  1496  //
  1497  // Solidity: function registerPool(address pool, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, bool protocolFeeExempt, (address,address,address) roleAccounts, address poolHooksContract, (bool,bool,bool,bool) liquidityManagement) returns()
  1498  func (_Vaultextension *VaultextensionTransactor) RegisterPool(opts *bind.TransactOpts, pool common.Address, tokenConfig []TokenConfig, swapFeePercentage *big.Int, pauseWindowEndTime uint32, protocolFeeExempt bool, roleAccounts PoolRoleAccounts, poolHooksContract common.Address, liquidityManagement LiquidityManagement) (*types.Transaction, error) {
  1499  	return _Vaultextension.contract.Transact(opts, "registerPool", pool, tokenConfig, swapFeePercentage, pauseWindowEndTime, protocolFeeExempt, roleAccounts, poolHooksContract, liquidityManagement)
  1500  }
  1501  
  1502  // RegisterPool is a paid mutator transaction binding the contract method 0xeeec802f.
  1503  //
  1504  // Solidity: function registerPool(address pool, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, bool protocolFeeExempt, (address,address,address) roleAccounts, address poolHooksContract, (bool,bool,bool,bool) liquidityManagement) returns()
  1505  func (_Vaultextension *VaultextensionSession) RegisterPool(pool common.Address, tokenConfig []TokenConfig, swapFeePercentage *big.Int, pauseWindowEndTime uint32, protocolFeeExempt bool, roleAccounts PoolRoleAccounts, poolHooksContract common.Address, liquidityManagement LiquidityManagement) (*types.Transaction, error) {
  1506  	return _Vaultextension.Contract.RegisterPool(&_Vaultextension.TransactOpts, pool, tokenConfig, swapFeePercentage, pauseWindowEndTime, protocolFeeExempt, roleAccounts, poolHooksContract, liquidityManagement)
  1507  }
  1508  
  1509  // RegisterPool is a paid mutator transaction binding the contract method 0xeeec802f.
  1510  //
  1511  // Solidity: function registerPool(address pool, (address,uint8,address,bool)[] tokenConfig, uint256 swapFeePercentage, uint32 pauseWindowEndTime, bool protocolFeeExempt, (address,address,address) roleAccounts, address poolHooksContract, (bool,bool,bool,bool) liquidityManagement) returns()
  1512  func (_Vaultextension *VaultextensionTransactorSession) RegisterPool(pool common.Address, tokenConfig []TokenConfig, swapFeePercentage *big.Int, pauseWindowEndTime uint32, protocolFeeExempt bool, roleAccounts PoolRoleAccounts, poolHooksContract common.Address, liquidityManagement LiquidityManagement) (*types.Transaction, error) {
  1513  	return _Vaultextension.Contract.RegisterPool(&_Vaultextension.TransactOpts, pool, tokenConfig, swapFeePercentage, pauseWindowEndTime, protocolFeeExempt, roleAccounts, poolHooksContract, liquidityManagement)
  1514  }
  1515  
  1516  // RemoveLiquidityRecovery is a paid mutator transaction binding the contract method 0xa07d6040.
  1517  //
  1518  // Solidity: function removeLiquidityRecovery(address pool, address from, uint256 exactBptAmountIn, uint256[] minAmountsOut) returns(uint256[] amountsOutRaw)
  1519  func (_Vaultextension *VaultextensionTransactor) RemoveLiquidityRecovery(opts *bind.TransactOpts, pool common.Address, from common.Address, exactBptAmountIn *big.Int, minAmountsOut []*big.Int) (*types.Transaction, error) {
  1520  	return _Vaultextension.contract.Transact(opts, "removeLiquidityRecovery", pool, from, exactBptAmountIn, minAmountsOut)
  1521  }
  1522  
  1523  // RemoveLiquidityRecovery is a paid mutator transaction binding the contract method 0xa07d6040.
  1524  //
  1525  // Solidity: function removeLiquidityRecovery(address pool, address from, uint256 exactBptAmountIn, uint256[] minAmountsOut) returns(uint256[] amountsOutRaw)
  1526  func (_Vaultextension *VaultextensionSession) RemoveLiquidityRecovery(pool common.Address, from common.Address, exactBptAmountIn *big.Int, minAmountsOut []*big.Int) (*types.Transaction, error) {
  1527  	return _Vaultextension.Contract.RemoveLiquidityRecovery(&_Vaultextension.TransactOpts, pool, from, exactBptAmountIn, minAmountsOut)
  1528  }
  1529  
  1530  // RemoveLiquidityRecovery is a paid mutator transaction binding the contract method 0xa07d6040.
  1531  //
  1532  // Solidity: function removeLiquidityRecovery(address pool, address from, uint256 exactBptAmountIn, uint256[] minAmountsOut) returns(uint256[] amountsOutRaw)
  1533  func (_Vaultextension *VaultextensionTransactorSession) RemoveLiquidityRecovery(pool common.Address, from common.Address, exactBptAmountIn *big.Int, minAmountsOut []*big.Int) (*types.Transaction, error) {
  1534  	return _Vaultextension.Contract.RemoveLiquidityRecovery(&_Vaultextension.TransactOpts, pool, from, exactBptAmountIn, minAmountsOut)
  1535  }
  1536  
  1537  // Fallback is a paid mutator transaction binding the contract fallback function.
  1538  //
  1539  // Solidity: fallback() payable returns()
  1540  func (_Vaultextension *VaultextensionTransactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) {
  1541  	return _Vaultextension.contract.RawTransact(opts, calldata)
  1542  }
  1543  
  1544  // Fallback is a paid mutator transaction binding the contract fallback function.
  1545  //
  1546  // Solidity: fallback() payable returns()
  1547  func (_Vaultextension *VaultextensionSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1548  	return _Vaultextension.Contract.Fallback(&_Vaultextension.TransactOpts, calldata)
  1549  }
  1550  
  1551  // Fallback is a paid mutator transaction binding the contract fallback function.
  1552  //
  1553  // Solidity: fallback() payable returns()
  1554  func (_Vaultextension *VaultextensionTransactorSession) Fallback(calldata []byte) (*types.Transaction, error) {
  1555  	return _Vaultextension.Contract.Fallback(&_Vaultextension.TransactOpts, calldata)
  1556  }
  1557  
  1558  // Receive is a paid mutator transaction binding the contract receive function.
  1559  //
  1560  // Solidity: receive() payable returns()
  1561  func (_Vaultextension *VaultextensionTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) {
  1562  	return _Vaultextension.contract.RawTransact(opts, nil) // calldata is disallowed for receive function
  1563  }
  1564  
  1565  // Receive is a paid mutator transaction binding the contract receive function.
  1566  //
  1567  // Solidity: receive() payable returns()
  1568  func (_Vaultextension *VaultextensionSession) Receive() (*types.Transaction, error) {
  1569  	return _Vaultextension.Contract.Receive(&_Vaultextension.TransactOpts)
  1570  }
  1571  
  1572  // Receive is a paid mutator transaction binding the contract receive function.
  1573  //
  1574  // Solidity: receive() payable returns()
  1575  func (_Vaultextension *VaultextensionTransactorSession) Receive() (*types.Transaction, error) {
  1576  	return _Vaultextension.Contract.Receive(&_Vaultextension.TransactOpts)
  1577  }
  1578  
  1579  // VaultextensionAggregateSwapFeePercentageChangedIterator is returned from FilterAggregateSwapFeePercentageChanged and is used to iterate over the raw logs and unpacked data for AggregateSwapFeePercentageChanged events raised by the Vaultextension contract.
  1580  type VaultextensionAggregateSwapFeePercentageChangedIterator struct {
  1581  	Event *VaultextensionAggregateSwapFeePercentageChanged // Event containing the contract specifics and raw log
  1582  
  1583  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1584  	event    string              // Event name to use for unpacking event data
  1585  
  1586  	logs chan types.Log        // Log channel receiving the found contract events
  1587  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1588  	done bool                  // Whether the subscription completed delivering logs
  1589  	fail error                 // Occurred error to stop iteration
  1590  }
  1591  
  1592  // Next advances the iterator to the subsequent event, returning whether there
  1593  // are any more events found. In case of a retrieval or parsing error, false is
  1594  // returned and Error() can be queried for the exact failure.
  1595  func (it *VaultextensionAggregateSwapFeePercentageChangedIterator) Next() bool {
  1596  	// If the iterator failed, stop iterating
  1597  	if it.fail != nil {
  1598  		return false
  1599  	}
  1600  	// If the iterator completed, deliver directly whatever's available
  1601  	if it.done {
  1602  		select {
  1603  		case log := <-it.logs:
  1604  			it.Event = new(VaultextensionAggregateSwapFeePercentageChanged)
  1605  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1606  				it.fail = err
  1607  				return false
  1608  			}
  1609  			it.Event.Raw = log
  1610  			return true
  1611  
  1612  		default:
  1613  			return false
  1614  		}
  1615  	}
  1616  	// Iterator still in progress, wait for either a data or an error event
  1617  	select {
  1618  	case log := <-it.logs:
  1619  		it.Event = new(VaultextensionAggregateSwapFeePercentageChanged)
  1620  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1621  			it.fail = err
  1622  			return false
  1623  		}
  1624  		it.Event.Raw = log
  1625  		return true
  1626  
  1627  	case err := <-it.sub.Err():
  1628  		it.done = true
  1629  		it.fail = err
  1630  		return it.Next()
  1631  	}
  1632  }
  1633  
  1634  // Error returns any retrieval or parsing error occurred during filtering.
  1635  func (it *VaultextensionAggregateSwapFeePercentageChangedIterator) Error() error {
  1636  	return it.fail
  1637  }
  1638  
  1639  // Close terminates the iteration process, releasing any pending underlying
  1640  // resources.
  1641  func (it *VaultextensionAggregateSwapFeePercentageChangedIterator) Close() error {
  1642  	it.sub.Unsubscribe()
  1643  	return nil
  1644  }
  1645  
  1646  // VaultextensionAggregateSwapFeePercentageChanged represents a AggregateSwapFeePercentageChanged event raised by the Vaultextension contract.
  1647  type VaultextensionAggregateSwapFeePercentageChanged struct {
  1648  	Pool                       common.Address
  1649  	AggregateSwapFeePercentage *big.Int
  1650  	Raw                        types.Log // Blockchain specific contextual infos
  1651  }
  1652  
  1653  // FilterAggregateSwapFeePercentageChanged is a free log retrieval operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
  1654  //
  1655  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
  1656  func (_Vaultextension *VaultextensionFilterer) FilterAggregateSwapFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionAggregateSwapFeePercentageChangedIterator, error) {
  1657  
  1658  	var poolRule []interface{}
  1659  	for _, poolItem := range pool {
  1660  		poolRule = append(poolRule, poolItem)
  1661  	}
  1662  
  1663  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "AggregateSwapFeePercentageChanged", poolRule)
  1664  	if err != nil {
  1665  		return nil, err
  1666  	}
  1667  	return &VaultextensionAggregateSwapFeePercentageChangedIterator{contract: _Vaultextension.contract, event: "AggregateSwapFeePercentageChanged", logs: logs, sub: sub}, nil
  1668  }
  1669  
  1670  // WatchAggregateSwapFeePercentageChanged is a free log subscription operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
  1671  //
  1672  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
  1673  func (_Vaultextension *VaultextensionFilterer) WatchAggregateSwapFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionAggregateSwapFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
  1674  
  1675  	var poolRule []interface{}
  1676  	for _, poolItem := range pool {
  1677  		poolRule = append(poolRule, poolItem)
  1678  	}
  1679  
  1680  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "AggregateSwapFeePercentageChanged", poolRule)
  1681  	if err != nil {
  1682  		return nil, err
  1683  	}
  1684  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1685  		defer sub.Unsubscribe()
  1686  		for {
  1687  			select {
  1688  			case log := <-logs:
  1689  				// New log arrived, parse the event and forward to the user
  1690  				event := new(VaultextensionAggregateSwapFeePercentageChanged)
  1691  				if err := _Vaultextension.contract.UnpackLog(event, "AggregateSwapFeePercentageChanged", log); err != nil {
  1692  					return err
  1693  				}
  1694  				event.Raw = log
  1695  
  1696  				select {
  1697  				case sink <- event:
  1698  				case err := <-sub.Err():
  1699  					return err
  1700  				case <-quit:
  1701  					return nil
  1702  				}
  1703  			case err := <-sub.Err():
  1704  				return err
  1705  			case <-quit:
  1706  				return nil
  1707  			}
  1708  		}
  1709  	}), nil
  1710  }
  1711  
  1712  // ParseAggregateSwapFeePercentageChanged is a log parse operation binding the contract event 0xe4d371097beea42453a37406e2aef4c04f3c548f84ac50e72578662c0dcd7354.
  1713  //
  1714  // Solidity: event AggregateSwapFeePercentageChanged(address indexed pool, uint256 aggregateSwapFeePercentage)
  1715  func (_Vaultextension *VaultextensionFilterer) ParseAggregateSwapFeePercentageChanged(log types.Log) (*VaultextensionAggregateSwapFeePercentageChanged, error) {
  1716  	event := new(VaultextensionAggregateSwapFeePercentageChanged)
  1717  	if err := _Vaultextension.contract.UnpackLog(event, "AggregateSwapFeePercentageChanged", log); err != nil {
  1718  		return nil, err
  1719  	}
  1720  	event.Raw = log
  1721  	return event, nil
  1722  }
  1723  
  1724  // VaultextensionAggregateYieldFeePercentageChangedIterator is returned from FilterAggregateYieldFeePercentageChanged and is used to iterate over the raw logs and unpacked data for AggregateYieldFeePercentageChanged events raised by the Vaultextension contract.
  1725  type VaultextensionAggregateYieldFeePercentageChangedIterator struct {
  1726  	Event *VaultextensionAggregateYieldFeePercentageChanged // Event containing the contract specifics and raw log
  1727  
  1728  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1729  	event    string              // Event name to use for unpacking event data
  1730  
  1731  	logs chan types.Log        // Log channel receiving the found contract events
  1732  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1733  	done bool                  // Whether the subscription completed delivering logs
  1734  	fail error                 // Occurred error to stop iteration
  1735  }
  1736  
  1737  // Next advances the iterator to the subsequent event, returning whether there
  1738  // are any more events found. In case of a retrieval or parsing error, false is
  1739  // returned and Error() can be queried for the exact failure.
  1740  func (it *VaultextensionAggregateYieldFeePercentageChangedIterator) Next() bool {
  1741  	// If the iterator failed, stop iterating
  1742  	if it.fail != nil {
  1743  		return false
  1744  	}
  1745  	// If the iterator completed, deliver directly whatever's available
  1746  	if it.done {
  1747  		select {
  1748  		case log := <-it.logs:
  1749  			it.Event = new(VaultextensionAggregateYieldFeePercentageChanged)
  1750  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1751  				it.fail = err
  1752  				return false
  1753  			}
  1754  			it.Event.Raw = log
  1755  			return true
  1756  
  1757  		default:
  1758  			return false
  1759  		}
  1760  	}
  1761  	// Iterator still in progress, wait for either a data or an error event
  1762  	select {
  1763  	case log := <-it.logs:
  1764  		it.Event = new(VaultextensionAggregateYieldFeePercentageChanged)
  1765  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1766  			it.fail = err
  1767  			return false
  1768  		}
  1769  		it.Event.Raw = log
  1770  		return true
  1771  
  1772  	case err := <-it.sub.Err():
  1773  		it.done = true
  1774  		it.fail = err
  1775  		return it.Next()
  1776  	}
  1777  }
  1778  
  1779  // Error returns any retrieval or parsing error occurred during filtering.
  1780  func (it *VaultextensionAggregateYieldFeePercentageChangedIterator) Error() error {
  1781  	return it.fail
  1782  }
  1783  
  1784  // Close terminates the iteration process, releasing any pending underlying
  1785  // resources.
  1786  func (it *VaultextensionAggregateYieldFeePercentageChangedIterator) Close() error {
  1787  	it.sub.Unsubscribe()
  1788  	return nil
  1789  }
  1790  
  1791  // VaultextensionAggregateYieldFeePercentageChanged represents a AggregateYieldFeePercentageChanged event raised by the Vaultextension contract.
  1792  type VaultextensionAggregateYieldFeePercentageChanged struct {
  1793  	Pool                        common.Address
  1794  	AggregateYieldFeePercentage *big.Int
  1795  	Raw                         types.Log // Blockchain specific contextual infos
  1796  }
  1797  
  1798  // FilterAggregateYieldFeePercentageChanged is a free log retrieval operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
  1799  //
  1800  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
  1801  func (_Vaultextension *VaultextensionFilterer) FilterAggregateYieldFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionAggregateYieldFeePercentageChangedIterator, error) {
  1802  
  1803  	var poolRule []interface{}
  1804  	for _, poolItem := range pool {
  1805  		poolRule = append(poolRule, poolItem)
  1806  	}
  1807  
  1808  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "AggregateYieldFeePercentageChanged", poolRule)
  1809  	if err != nil {
  1810  		return nil, err
  1811  	}
  1812  	return &VaultextensionAggregateYieldFeePercentageChangedIterator{contract: _Vaultextension.contract, event: "AggregateYieldFeePercentageChanged", logs: logs, sub: sub}, nil
  1813  }
  1814  
  1815  // WatchAggregateYieldFeePercentageChanged is a free log subscription operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
  1816  //
  1817  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
  1818  func (_Vaultextension *VaultextensionFilterer) WatchAggregateYieldFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionAggregateYieldFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
  1819  
  1820  	var poolRule []interface{}
  1821  	for _, poolItem := range pool {
  1822  		poolRule = append(poolRule, poolItem)
  1823  	}
  1824  
  1825  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "AggregateYieldFeePercentageChanged", poolRule)
  1826  	if err != nil {
  1827  		return nil, err
  1828  	}
  1829  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1830  		defer sub.Unsubscribe()
  1831  		for {
  1832  			select {
  1833  			case log := <-logs:
  1834  				// New log arrived, parse the event and forward to the user
  1835  				event := new(VaultextensionAggregateYieldFeePercentageChanged)
  1836  				if err := _Vaultextension.contract.UnpackLog(event, "AggregateYieldFeePercentageChanged", log); err != nil {
  1837  					return err
  1838  				}
  1839  				event.Raw = log
  1840  
  1841  				select {
  1842  				case sink <- event:
  1843  				case err := <-sub.Err():
  1844  					return err
  1845  				case <-quit:
  1846  					return nil
  1847  				}
  1848  			case err := <-sub.Err():
  1849  				return err
  1850  			case <-quit:
  1851  				return nil
  1852  			}
  1853  		}
  1854  	}), nil
  1855  }
  1856  
  1857  // ParseAggregateYieldFeePercentageChanged is a log parse operation binding the contract event 0x606eb97d83164bd6b200d638cd49c14c65d94d4f2c674cfd85e24e0e202c3ca5.
  1858  //
  1859  // Solidity: event AggregateYieldFeePercentageChanged(address indexed pool, uint256 aggregateYieldFeePercentage)
  1860  func (_Vaultextension *VaultextensionFilterer) ParseAggregateYieldFeePercentageChanged(log types.Log) (*VaultextensionAggregateYieldFeePercentageChanged, error) {
  1861  	event := new(VaultextensionAggregateYieldFeePercentageChanged)
  1862  	if err := _Vaultextension.contract.UnpackLog(event, "AggregateYieldFeePercentageChanged", log); err != nil {
  1863  		return nil, err
  1864  	}
  1865  	event.Raw = log
  1866  	return event, nil
  1867  }
  1868  
  1869  // VaultextensionApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the Vaultextension contract.
  1870  type VaultextensionApprovalIterator struct {
  1871  	Event *VaultextensionApproval // Event containing the contract specifics and raw log
  1872  
  1873  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1874  	event    string              // Event name to use for unpacking event data
  1875  
  1876  	logs chan types.Log        // Log channel receiving the found contract events
  1877  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1878  	done bool                  // Whether the subscription completed delivering logs
  1879  	fail error                 // Occurred error to stop iteration
  1880  }
  1881  
  1882  // Next advances the iterator to the subsequent event, returning whether there
  1883  // are any more events found. In case of a retrieval or parsing error, false is
  1884  // returned and Error() can be queried for the exact failure.
  1885  func (it *VaultextensionApprovalIterator) Next() bool {
  1886  	// If the iterator failed, stop iterating
  1887  	if it.fail != nil {
  1888  		return false
  1889  	}
  1890  	// If the iterator completed, deliver directly whatever's available
  1891  	if it.done {
  1892  		select {
  1893  		case log := <-it.logs:
  1894  			it.Event = new(VaultextensionApproval)
  1895  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1896  				it.fail = err
  1897  				return false
  1898  			}
  1899  			it.Event.Raw = log
  1900  			return true
  1901  
  1902  		default:
  1903  			return false
  1904  		}
  1905  	}
  1906  	// Iterator still in progress, wait for either a data or an error event
  1907  	select {
  1908  	case log := <-it.logs:
  1909  		it.Event = new(VaultextensionApproval)
  1910  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1911  			it.fail = err
  1912  			return false
  1913  		}
  1914  		it.Event.Raw = log
  1915  		return true
  1916  
  1917  	case err := <-it.sub.Err():
  1918  		it.done = true
  1919  		it.fail = err
  1920  		return it.Next()
  1921  	}
  1922  }
  1923  
  1924  // Error returns any retrieval or parsing error occurred during filtering.
  1925  func (it *VaultextensionApprovalIterator) Error() error {
  1926  	return it.fail
  1927  }
  1928  
  1929  // Close terminates the iteration process, releasing any pending underlying
  1930  // resources.
  1931  func (it *VaultextensionApprovalIterator) Close() error {
  1932  	it.sub.Unsubscribe()
  1933  	return nil
  1934  }
  1935  
  1936  // VaultextensionApproval represents a Approval event raised by the Vaultextension contract.
  1937  type VaultextensionApproval struct {
  1938  	Pool    common.Address
  1939  	Owner   common.Address
  1940  	Spender common.Address
  1941  	Value   *big.Int
  1942  	Raw     types.Log // Blockchain specific contextual infos
  1943  }
  1944  
  1945  // FilterApproval is a free log retrieval operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
  1946  //
  1947  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
  1948  func (_Vaultextension *VaultextensionFilterer) FilterApproval(opts *bind.FilterOpts, pool []common.Address, owner []common.Address, spender []common.Address) (*VaultextensionApprovalIterator, error) {
  1949  
  1950  	var poolRule []interface{}
  1951  	for _, poolItem := range pool {
  1952  		poolRule = append(poolRule, poolItem)
  1953  	}
  1954  	var ownerRule []interface{}
  1955  	for _, ownerItem := range owner {
  1956  		ownerRule = append(ownerRule, ownerItem)
  1957  	}
  1958  	var spenderRule []interface{}
  1959  	for _, spenderItem := range spender {
  1960  		spenderRule = append(spenderRule, spenderItem)
  1961  	}
  1962  
  1963  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "Approval", poolRule, ownerRule, spenderRule)
  1964  	if err != nil {
  1965  		return nil, err
  1966  	}
  1967  	return &VaultextensionApprovalIterator{contract: _Vaultextension.contract, event: "Approval", logs: logs, sub: sub}, nil
  1968  }
  1969  
  1970  // WatchApproval is a free log subscription operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
  1971  //
  1972  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
  1973  func (_Vaultextension *VaultextensionFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *VaultextensionApproval, pool []common.Address, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  1974  
  1975  	var poolRule []interface{}
  1976  	for _, poolItem := range pool {
  1977  		poolRule = append(poolRule, poolItem)
  1978  	}
  1979  	var ownerRule []interface{}
  1980  	for _, ownerItem := range owner {
  1981  		ownerRule = append(ownerRule, ownerItem)
  1982  	}
  1983  	var spenderRule []interface{}
  1984  	for _, spenderItem := range spender {
  1985  		spenderRule = append(spenderRule, spenderItem)
  1986  	}
  1987  
  1988  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "Approval", poolRule, ownerRule, spenderRule)
  1989  	if err != nil {
  1990  		return nil, err
  1991  	}
  1992  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1993  		defer sub.Unsubscribe()
  1994  		for {
  1995  			select {
  1996  			case log := <-logs:
  1997  				// New log arrived, parse the event and forward to the user
  1998  				event := new(VaultextensionApproval)
  1999  				if err := _Vaultextension.contract.UnpackLog(event, "Approval", log); err != nil {
  2000  					return err
  2001  				}
  2002  				event.Raw = log
  2003  
  2004  				select {
  2005  				case sink <- event:
  2006  				case err := <-sub.Err():
  2007  					return err
  2008  				case <-quit:
  2009  					return nil
  2010  				}
  2011  			case err := <-sub.Err():
  2012  				return err
  2013  			case <-quit:
  2014  				return nil
  2015  			}
  2016  		}
  2017  	}), nil
  2018  }
  2019  
  2020  // ParseApproval is a log parse operation binding the contract event 0xa0175360a15bca328baf7ea85c7b784d58b222a50d0ce760b10dba336d226a61.
  2021  //
  2022  // Solidity: event Approval(address indexed pool, address indexed owner, address indexed spender, uint256 value)
  2023  func (_Vaultextension *VaultextensionFilterer) ParseApproval(log types.Log) (*VaultextensionApproval, error) {
  2024  	event := new(VaultextensionApproval)
  2025  	if err := _Vaultextension.contract.UnpackLog(event, "Approval", log); err != nil {
  2026  		return nil, err
  2027  	}
  2028  	event.Raw = log
  2029  	return event, nil
  2030  }
  2031  
  2032  // VaultextensionAuthorizerChangedIterator is returned from FilterAuthorizerChanged and is used to iterate over the raw logs and unpacked data for AuthorizerChanged events raised by the Vaultextension contract.
  2033  type VaultextensionAuthorizerChangedIterator struct {
  2034  	Event *VaultextensionAuthorizerChanged // Event containing the contract specifics and raw log
  2035  
  2036  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2037  	event    string              // Event name to use for unpacking event data
  2038  
  2039  	logs chan types.Log        // Log channel receiving the found contract events
  2040  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2041  	done bool                  // Whether the subscription completed delivering logs
  2042  	fail error                 // Occurred error to stop iteration
  2043  }
  2044  
  2045  // Next advances the iterator to the subsequent event, returning whether there
  2046  // are any more events found. In case of a retrieval or parsing error, false is
  2047  // returned and Error() can be queried for the exact failure.
  2048  func (it *VaultextensionAuthorizerChangedIterator) Next() bool {
  2049  	// If the iterator failed, stop iterating
  2050  	if it.fail != nil {
  2051  		return false
  2052  	}
  2053  	// If the iterator completed, deliver directly whatever's available
  2054  	if it.done {
  2055  		select {
  2056  		case log := <-it.logs:
  2057  			it.Event = new(VaultextensionAuthorizerChanged)
  2058  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2059  				it.fail = err
  2060  				return false
  2061  			}
  2062  			it.Event.Raw = log
  2063  			return true
  2064  
  2065  		default:
  2066  			return false
  2067  		}
  2068  	}
  2069  	// Iterator still in progress, wait for either a data or an error event
  2070  	select {
  2071  	case log := <-it.logs:
  2072  		it.Event = new(VaultextensionAuthorizerChanged)
  2073  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2074  			it.fail = err
  2075  			return false
  2076  		}
  2077  		it.Event.Raw = log
  2078  		return true
  2079  
  2080  	case err := <-it.sub.Err():
  2081  		it.done = true
  2082  		it.fail = err
  2083  		return it.Next()
  2084  	}
  2085  }
  2086  
  2087  // Error returns any retrieval or parsing error occurred during filtering.
  2088  func (it *VaultextensionAuthorizerChangedIterator) Error() error {
  2089  	return it.fail
  2090  }
  2091  
  2092  // Close terminates the iteration process, releasing any pending underlying
  2093  // resources.
  2094  func (it *VaultextensionAuthorizerChangedIterator) Close() error {
  2095  	it.sub.Unsubscribe()
  2096  	return nil
  2097  }
  2098  
  2099  // VaultextensionAuthorizerChanged represents a AuthorizerChanged event raised by the Vaultextension contract.
  2100  type VaultextensionAuthorizerChanged struct {
  2101  	NewAuthorizer common.Address
  2102  	Raw           types.Log // Blockchain specific contextual infos
  2103  }
  2104  
  2105  // FilterAuthorizerChanged is a free log retrieval operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  2106  //
  2107  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  2108  func (_Vaultextension *VaultextensionFilterer) FilterAuthorizerChanged(opts *bind.FilterOpts, newAuthorizer []common.Address) (*VaultextensionAuthorizerChangedIterator, error) {
  2109  
  2110  	var newAuthorizerRule []interface{}
  2111  	for _, newAuthorizerItem := range newAuthorizer {
  2112  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  2113  	}
  2114  
  2115  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  2116  	if err != nil {
  2117  		return nil, err
  2118  	}
  2119  	return &VaultextensionAuthorizerChangedIterator{contract: _Vaultextension.contract, event: "AuthorizerChanged", logs: logs, sub: sub}, nil
  2120  }
  2121  
  2122  // WatchAuthorizerChanged is a free log subscription operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  2123  //
  2124  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  2125  func (_Vaultextension *VaultextensionFilterer) WatchAuthorizerChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionAuthorizerChanged, newAuthorizer []common.Address) (event.Subscription, error) {
  2126  
  2127  	var newAuthorizerRule []interface{}
  2128  	for _, newAuthorizerItem := range newAuthorizer {
  2129  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  2130  	}
  2131  
  2132  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  2133  	if err != nil {
  2134  		return nil, err
  2135  	}
  2136  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2137  		defer sub.Unsubscribe()
  2138  		for {
  2139  			select {
  2140  			case log := <-logs:
  2141  				// New log arrived, parse the event and forward to the user
  2142  				event := new(VaultextensionAuthorizerChanged)
  2143  				if err := _Vaultextension.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  2144  					return err
  2145  				}
  2146  				event.Raw = log
  2147  
  2148  				select {
  2149  				case sink <- event:
  2150  				case err := <-sub.Err():
  2151  					return err
  2152  				case <-quit:
  2153  					return nil
  2154  				}
  2155  			case err := <-sub.Err():
  2156  				return err
  2157  			case <-quit:
  2158  				return nil
  2159  			}
  2160  		}
  2161  	}), nil
  2162  }
  2163  
  2164  // ParseAuthorizerChanged is a log parse operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  2165  //
  2166  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  2167  func (_Vaultextension *VaultextensionFilterer) ParseAuthorizerChanged(log types.Log) (*VaultextensionAuthorizerChanged, error) {
  2168  	event := new(VaultextensionAuthorizerChanged)
  2169  	if err := _Vaultextension.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  2170  		return nil, err
  2171  	}
  2172  	event.Raw = log
  2173  	return event, nil
  2174  }
  2175  
  2176  // VaultextensionBufferSharesBurnedIterator is returned from FilterBufferSharesBurned and is used to iterate over the raw logs and unpacked data for BufferSharesBurned events raised by the Vaultextension contract.
  2177  type VaultextensionBufferSharesBurnedIterator struct {
  2178  	Event *VaultextensionBufferSharesBurned // Event containing the contract specifics and raw log
  2179  
  2180  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2181  	event    string              // Event name to use for unpacking event data
  2182  
  2183  	logs chan types.Log        // Log channel receiving the found contract events
  2184  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2185  	done bool                  // Whether the subscription completed delivering logs
  2186  	fail error                 // Occurred error to stop iteration
  2187  }
  2188  
  2189  // Next advances the iterator to the subsequent event, returning whether there
  2190  // are any more events found. In case of a retrieval or parsing error, false is
  2191  // returned and Error() can be queried for the exact failure.
  2192  func (it *VaultextensionBufferSharesBurnedIterator) Next() bool {
  2193  	// If the iterator failed, stop iterating
  2194  	if it.fail != nil {
  2195  		return false
  2196  	}
  2197  	// If the iterator completed, deliver directly whatever's available
  2198  	if it.done {
  2199  		select {
  2200  		case log := <-it.logs:
  2201  			it.Event = new(VaultextensionBufferSharesBurned)
  2202  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2203  				it.fail = err
  2204  				return false
  2205  			}
  2206  			it.Event.Raw = log
  2207  			return true
  2208  
  2209  		default:
  2210  			return false
  2211  		}
  2212  	}
  2213  	// Iterator still in progress, wait for either a data or an error event
  2214  	select {
  2215  	case log := <-it.logs:
  2216  		it.Event = new(VaultextensionBufferSharesBurned)
  2217  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2218  			it.fail = err
  2219  			return false
  2220  		}
  2221  		it.Event.Raw = log
  2222  		return true
  2223  
  2224  	case err := <-it.sub.Err():
  2225  		it.done = true
  2226  		it.fail = err
  2227  		return it.Next()
  2228  	}
  2229  }
  2230  
  2231  // Error returns any retrieval or parsing error occurred during filtering.
  2232  func (it *VaultextensionBufferSharesBurnedIterator) Error() error {
  2233  	return it.fail
  2234  }
  2235  
  2236  // Close terminates the iteration process, releasing any pending underlying
  2237  // resources.
  2238  func (it *VaultextensionBufferSharesBurnedIterator) Close() error {
  2239  	it.sub.Unsubscribe()
  2240  	return nil
  2241  }
  2242  
  2243  // VaultextensionBufferSharesBurned represents a BufferSharesBurned event raised by the Vaultextension contract.
  2244  type VaultextensionBufferSharesBurned struct {
  2245  	WrappedToken common.Address
  2246  	From         common.Address
  2247  	BurnedShares *big.Int
  2248  	Raw          types.Log // Blockchain specific contextual infos
  2249  }
  2250  
  2251  // FilterBufferSharesBurned is a free log retrieval operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  2252  //
  2253  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  2254  func (_Vaultextension *VaultextensionFilterer) FilterBufferSharesBurned(opts *bind.FilterOpts, wrappedToken []common.Address, from []common.Address) (*VaultextensionBufferSharesBurnedIterator, error) {
  2255  
  2256  	var wrappedTokenRule []interface{}
  2257  	for _, wrappedTokenItem := range wrappedToken {
  2258  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2259  	}
  2260  	var fromRule []interface{}
  2261  	for _, fromItem := range from {
  2262  		fromRule = append(fromRule, fromItem)
  2263  	}
  2264  
  2265  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "BufferSharesBurned", wrappedTokenRule, fromRule)
  2266  	if err != nil {
  2267  		return nil, err
  2268  	}
  2269  	return &VaultextensionBufferSharesBurnedIterator{contract: _Vaultextension.contract, event: "BufferSharesBurned", logs: logs, sub: sub}, nil
  2270  }
  2271  
  2272  // WatchBufferSharesBurned is a free log subscription operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  2273  //
  2274  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  2275  func (_Vaultextension *VaultextensionFilterer) WatchBufferSharesBurned(opts *bind.WatchOpts, sink chan<- *VaultextensionBufferSharesBurned, wrappedToken []common.Address, from []common.Address) (event.Subscription, error) {
  2276  
  2277  	var wrappedTokenRule []interface{}
  2278  	for _, wrappedTokenItem := range wrappedToken {
  2279  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2280  	}
  2281  	var fromRule []interface{}
  2282  	for _, fromItem := range from {
  2283  		fromRule = append(fromRule, fromItem)
  2284  	}
  2285  
  2286  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "BufferSharesBurned", wrappedTokenRule, fromRule)
  2287  	if err != nil {
  2288  		return nil, err
  2289  	}
  2290  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2291  		defer sub.Unsubscribe()
  2292  		for {
  2293  			select {
  2294  			case log := <-logs:
  2295  				// New log arrived, parse the event and forward to the user
  2296  				event := new(VaultextensionBufferSharesBurned)
  2297  				if err := _Vaultextension.contract.UnpackLog(event, "BufferSharesBurned", log); err != nil {
  2298  					return err
  2299  				}
  2300  				event.Raw = log
  2301  
  2302  				select {
  2303  				case sink <- event:
  2304  				case err := <-sub.Err():
  2305  					return err
  2306  				case <-quit:
  2307  					return nil
  2308  				}
  2309  			case err := <-sub.Err():
  2310  				return err
  2311  			case <-quit:
  2312  				return nil
  2313  			}
  2314  		}
  2315  	}), nil
  2316  }
  2317  
  2318  // ParseBufferSharesBurned is a log parse operation binding the contract event 0x4e09f7f7fc37ce2897800e2c2a9099565edb0a133d19d84a6871b3530af8846b.
  2319  //
  2320  // Solidity: event BufferSharesBurned(address indexed wrappedToken, address indexed from, uint256 burnedShares)
  2321  func (_Vaultextension *VaultextensionFilterer) ParseBufferSharesBurned(log types.Log) (*VaultextensionBufferSharesBurned, error) {
  2322  	event := new(VaultextensionBufferSharesBurned)
  2323  	if err := _Vaultextension.contract.UnpackLog(event, "BufferSharesBurned", log); err != nil {
  2324  		return nil, err
  2325  	}
  2326  	event.Raw = log
  2327  	return event, nil
  2328  }
  2329  
  2330  // VaultextensionBufferSharesMintedIterator is returned from FilterBufferSharesMinted and is used to iterate over the raw logs and unpacked data for BufferSharesMinted events raised by the Vaultextension contract.
  2331  type VaultextensionBufferSharesMintedIterator struct {
  2332  	Event *VaultextensionBufferSharesMinted // Event containing the contract specifics and raw log
  2333  
  2334  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2335  	event    string              // Event name to use for unpacking event data
  2336  
  2337  	logs chan types.Log        // Log channel receiving the found contract events
  2338  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2339  	done bool                  // Whether the subscription completed delivering logs
  2340  	fail error                 // Occurred error to stop iteration
  2341  }
  2342  
  2343  // Next advances the iterator to the subsequent event, returning whether there
  2344  // are any more events found. In case of a retrieval or parsing error, false is
  2345  // returned and Error() can be queried for the exact failure.
  2346  func (it *VaultextensionBufferSharesMintedIterator) Next() bool {
  2347  	// If the iterator failed, stop iterating
  2348  	if it.fail != nil {
  2349  		return false
  2350  	}
  2351  	// If the iterator completed, deliver directly whatever's available
  2352  	if it.done {
  2353  		select {
  2354  		case log := <-it.logs:
  2355  			it.Event = new(VaultextensionBufferSharesMinted)
  2356  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2357  				it.fail = err
  2358  				return false
  2359  			}
  2360  			it.Event.Raw = log
  2361  			return true
  2362  
  2363  		default:
  2364  			return false
  2365  		}
  2366  	}
  2367  	// Iterator still in progress, wait for either a data or an error event
  2368  	select {
  2369  	case log := <-it.logs:
  2370  		it.Event = new(VaultextensionBufferSharesMinted)
  2371  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2372  			it.fail = err
  2373  			return false
  2374  		}
  2375  		it.Event.Raw = log
  2376  		return true
  2377  
  2378  	case err := <-it.sub.Err():
  2379  		it.done = true
  2380  		it.fail = err
  2381  		return it.Next()
  2382  	}
  2383  }
  2384  
  2385  // Error returns any retrieval or parsing error occurred during filtering.
  2386  func (it *VaultextensionBufferSharesMintedIterator) Error() error {
  2387  	return it.fail
  2388  }
  2389  
  2390  // Close terminates the iteration process, releasing any pending underlying
  2391  // resources.
  2392  func (it *VaultextensionBufferSharesMintedIterator) Close() error {
  2393  	it.sub.Unsubscribe()
  2394  	return nil
  2395  }
  2396  
  2397  // VaultextensionBufferSharesMinted represents a BufferSharesMinted event raised by the Vaultextension contract.
  2398  type VaultextensionBufferSharesMinted struct {
  2399  	WrappedToken common.Address
  2400  	To           common.Address
  2401  	IssuedShares *big.Int
  2402  	Raw          types.Log // Blockchain specific contextual infos
  2403  }
  2404  
  2405  // FilterBufferSharesMinted is a free log retrieval operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  2406  //
  2407  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  2408  func (_Vaultextension *VaultextensionFilterer) FilterBufferSharesMinted(opts *bind.FilterOpts, wrappedToken []common.Address, to []common.Address) (*VaultextensionBufferSharesMintedIterator, error) {
  2409  
  2410  	var wrappedTokenRule []interface{}
  2411  	for _, wrappedTokenItem := range wrappedToken {
  2412  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2413  	}
  2414  	var toRule []interface{}
  2415  	for _, toItem := range to {
  2416  		toRule = append(toRule, toItem)
  2417  	}
  2418  
  2419  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "BufferSharesMinted", wrappedTokenRule, toRule)
  2420  	if err != nil {
  2421  		return nil, err
  2422  	}
  2423  	return &VaultextensionBufferSharesMintedIterator{contract: _Vaultextension.contract, event: "BufferSharesMinted", logs: logs, sub: sub}, nil
  2424  }
  2425  
  2426  // WatchBufferSharesMinted is a free log subscription operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  2427  //
  2428  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  2429  func (_Vaultextension *VaultextensionFilterer) WatchBufferSharesMinted(opts *bind.WatchOpts, sink chan<- *VaultextensionBufferSharesMinted, wrappedToken []common.Address, to []common.Address) (event.Subscription, error) {
  2430  
  2431  	var wrappedTokenRule []interface{}
  2432  	for _, wrappedTokenItem := range wrappedToken {
  2433  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2434  	}
  2435  	var toRule []interface{}
  2436  	for _, toItem := range to {
  2437  		toRule = append(toRule, toItem)
  2438  	}
  2439  
  2440  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "BufferSharesMinted", wrappedTokenRule, toRule)
  2441  	if err != nil {
  2442  		return nil, err
  2443  	}
  2444  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2445  		defer sub.Unsubscribe()
  2446  		for {
  2447  			select {
  2448  			case log := <-logs:
  2449  				// New log arrived, parse the event and forward to the user
  2450  				event := new(VaultextensionBufferSharesMinted)
  2451  				if err := _Vaultextension.contract.UnpackLog(event, "BufferSharesMinted", log); err != nil {
  2452  					return err
  2453  				}
  2454  				event.Raw = log
  2455  
  2456  				select {
  2457  				case sink <- event:
  2458  				case err := <-sub.Err():
  2459  					return err
  2460  				case <-quit:
  2461  					return nil
  2462  				}
  2463  			case err := <-sub.Err():
  2464  				return err
  2465  			case <-quit:
  2466  				return nil
  2467  			}
  2468  		}
  2469  	}), nil
  2470  }
  2471  
  2472  // ParseBufferSharesMinted is a log parse operation binding the contract event 0xd66f031d33381c6408f0b32c884461e5de3df8808399b6f3a3d86b1368f8ec34.
  2473  //
  2474  // Solidity: event BufferSharesMinted(address indexed wrappedToken, address indexed to, uint256 issuedShares)
  2475  func (_Vaultextension *VaultextensionFilterer) ParseBufferSharesMinted(log types.Log) (*VaultextensionBufferSharesMinted, error) {
  2476  	event := new(VaultextensionBufferSharesMinted)
  2477  	if err := _Vaultextension.contract.UnpackLog(event, "BufferSharesMinted", log); err != nil {
  2478  		return nil, err
  2479  	}
  2480  	event.Raw = log
  2481  	return event, nil
  2482  }
  2483  
  2484  // VaultextensionLiquidityAddedIterator is returned from FilterLiquidityAdded and is used to iterate over the raw logs and unpacked data for LiquidityAdded events raised by the Vaultextension contract.
  2485  type VaultextensionLiquidityAddedIterator struct {
  2486  	Event *VaultextensionLiquidityAdded // Event containing the contract specifics and raw log
  2487  
  2488  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2489  	event    string              // Event name to use for unpacking event data
  2490  
  2491  	logs chan types.Log        // Log channel receiving the found contract events
  2492  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2493  	done bool                  // Whether the subscription completed delivering logs
  2494  	fail error                 // Occurred error to stop iteration
  2495  }
  2496  
  2497  // Next advances the iterator to the subsequent event, returning whether there
  2498  // are any more events found. In case of a retrieval or parsing error, false is
  2499  // returned and Error() can be queried for the exact failure.
  2500  func (it *VaultextensionLiquidityAddedIterator) Next() bool {
  2501  	// If the iterator failed, stop iterating
  2502  	if it.fail != nil {
  2503  		return false
  2504  	}
  2505  	// If the iterator completed, deliver directly whatever's available
  2506  	if it.done {
  2507  		select {
  2508  		case log := <-it.logs:
  2509  			it.Event = new(VaultextensionLiquidityAdded)
  2510  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2511  				it.fail = err
  2512  				return false
  2513  			}
  2514  			it.Event.Raw = log
  2515  			return true
  2516  
  2517  		default:
  2518  			return false
  2519  		}
  2520  	}
  2521  	// Iterator still in progress, wait for either a data or an error event
  2522  	select {
  2523  	case log := <-it.logs:
  2524  		it.Event = new(VaultextensionLiquidityAdded)
  2525  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2526  			it.fail = err
  2527  			return false
  2528  		}
  2529  		it.Event.Raw = log
  2530  		return true
  2531  
  2532  	case err := <-it.sub.Err():
  2533  		it.done = true
  2534  		it.fail = err
  2535  		return it.Next()
  2536  	}
  2537  }
  2538  
  2539  // Error returns any retrieval or parsing error occurred during filtering.
  2540  func (it *VaultextensionLiquidityAddedIterator) Error() error {
  2541  	return it.fail
  2542  }
  2543  
  2544  // Close terminates the iteration process, releasing any pending underlying
  2545  // resources.
  2546  func (it *VaultextensionLiquidityAddedIterator) Close() error {
  2547  	it.sub.Unsubscribe()
  2548  	return nil
  2549  }
  2550  
  2551  // VaultextensionLiquidityAdded represents a LiquidityAdded event raised by the Vaultextension contract.
  2552  type VaultextensionLiquidityAdded struct {
  2553  	Pool              common.Address
  2554  	LiquidityProvider common.Address
  2555  	Kind              uint8
  2556  	TotalSupply       *big.Int
  2557  	AmountsAddedRaw   []*big.Int
  2558  	SwapFeeAmountsRaw []*big.Int
  2559  	Raw               types.Log // Blockchain specific contextual infos
  2560  }
  2561  
  2562  // FilterLiquidityAdded is a free log retrieval operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  2563  //
  2564  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  2565  func (_Vaultextension *VaultextensionFilterer) FilterLiquidityAdded(opts *bind.FilterOpts, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (*VaultextensionLiquidityAddedIterator, error) {
  2566  
  2567  	var poolRule []interface{}
  2568  	for _, poolItem := range pool {
  2569  		poolRule = append(poolRule, poolItem)
  2570  	}
  2571  	var liquidityProviderRule []interface{}
  2572  	for _, liquidityProviderItem := range liquidityProvider {
  2573  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  2574  	}
  2575  	var kindRule []interface{}
  2576  	for _, kindItem := range kind {
  2577  		kindRule = append(kindRule, kindItem)
  2578  	}
  2579  
  2580  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "LiquidityAdded", poolRule, liquidityProviderRule, kindRule)
  2581  	if err != nil {
  2582  		return nil, err
  2583  	}
  2584  	return &VaultextensionLiquidityAddedIterator{contract: _Vaultextension.contract, event: "LiquidityAdded", logs: logs, sub: sub}, nil
  2585  }
  2586  
  2587  // WatchLiquidityAdded is a free log subscription operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  2588  //
  2589  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  2590  func (_Vaultextension *VaultextensionFilterer) WatchLiquidityAdded(opts *bind.WatchOpts, sink chan<- *VaultextensionLiquidityAdded, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (event.Subscription, error) {
  2591  
  2592  	var poolRule []interface{}
  2593  	for _, poolItem := range pool {
  2594  		poolRule = append(poolRule, poolItem)
  2595  	}
  2596  	var liquidityProviderRule []interface{}
  2597  	for _, liquidityProviderItem := range liquidityProvider {
  2598  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  2599  	}
  2600  	var kindRule []interface{}
  2601  	for _, kindItem := range kind {
  2602  		kindRule = append(kindRule, kindItem)
  2603  	}
  2604  
  2605  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "LiquidityAdded", poolRule, liquidityProviderRule, kindRule)
  2606  	if err != nil {
  2607  		return nil, err
  2608  	}
  2609  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2610  		defer sub.Unsubscribe()
  2611  		for {
  2612  			select {
  2613  			case log := <-logs:
  2614  				// New log arrived, parse the event and forward to the user
  2615  				event := new(VaultextensionLiquidityAdded)
  2616  				if err := _Vaultextension.contract.UnpackLog(event, "LiquidityAdded", log); err != nil {
  2617  					return err
  2618  				}
  2619  				event.Raw = log
  2620  
  2621  				select {
  2622  				case sink <- event:
  2623  				case err := <-sub.Err():
  2624  					return err
  2625  				case <-quit:
  2626  					return nil
  2627  				}
  2628  			case err := <-sub.Err():
  2629  				return err
  2630  			case <-quit:
  2631  				return nil
  2632  			}
  2633  		}
  2634  	}), nil
  2635  }
  2636  
  2637  // ParseLiquidityAdded is a log parse operation binding the contract event 0xa26a52d8d53702bba7f137907b8e1f99ff87f6d450144270ca25e72481cca871.
  2638  //
  2639  // Solidity: event LiquidityAdded(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsAddedRaw, uint256[] swapFeeAmountsRaw)
  2640  func (_Vaultextension *VaultextensionFilterer) ParseLiquidityAdded(log types.Log) (*VaultextensionLiquidityAdded, error) {
  2641  	event := new(VaultextensionLiquidityAdded)
  2642  	if err := _Vaultextension.contract.UnpackLog(event, "LiquidityAdded", log); err != nil {
  2643  		return nil, err
  2644  	}
  2645  	event.Raw = log
  2646  	return event, nil
  2647  }
  2648  
  2649  // VaultextensionLiquidityAddedToBufferIterator is returned from FilterLiquidityAddedToBuffer and is used to iterate over the raw logs and unpacked data for LiquidityAddedToBuffer events raised by the Vaultextension contract.
  2650  type VaultextensionLiquidityAddedToBufferIterator struct {
  2651  	Event *VaultextensionLiquidityAddedToBuffer // Event containing the contract specifics and raw log
  2652  
  2653  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2654  	event    string              // Event name to use for unpacking event data
  2655  
  2656  	logs chan types.Log        // Log channel receiving the found contract events
  2657  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2658  	done bool                  // Whether the subscription completed delivering logs
  2659  	fail error                 // Occurred error to stop iteration
  2660  }
  2661  
  2662  // Next advances the iterator to the subsequent event, returning whether there
  2663  // are any more events found. In case of a retrieval or parsing error, false is
  2664  // returned and Error() can be queried for the exact failure.
  2665  func (it *VaultextensionLiquidityAddedToBufferIterator) Next() bool {
  2666  	// If the iterator failed, stop iterating
  2667  	if it.fail != nil {
  2668  		return false
  2669  	}
  2670  	// If the iterator completed, deliver directly whatever's available
  2671  	if it.done {
  2672  		select {
  2673  		case log := <-it.logs:
  2674  			it.Event = new(VaultextensionLiquidityAddedToBuffer)
  2675  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2676  				it.fail = err
  2677  				return false
  2678  			}
  2679  			it.Event.Raw = log
  2680  			return true
  2681  
  2682  		default:
  2683  			return false
  2684  		}
  2685  	}
  2686  	// Iterator still in progress, wait for either a data or an error event
  2687  	select {
  2688  	case log := <-it.logs:
  2689  		it.Event = new(VaultextensionLiquidityAddedToBuffer)
  2690  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2691  			it.fail = err
  2692  			return false
  2693  		}
  2694  		it.Event.Raw = log
  2695  		return true
  2696  
  2697  	case err := <-it.sub.Err():
  2698  		it.done = true
  2699  		it.fail = err
  2700  		return it.Next()
  2701  	}
  2702  }
  2703  
  2704  // Error returns any retrieval or parsing error occurred during filtering.
  2705  func (it *VaultextensionLiquidityAddedToBufferIterator) Error() error {
  2706  	return it.fail
  2707  }
  2708  
  2709  // Close terminates the iteration process, releasing any pending underlying
  2710  // resources.
  2711  func (it *VaultextensionLiquidityAddedToBufferIterator) Close() error {
  2712  	it.sub.Unsubscribe()
  2713  	return nil
  2714  }
  2715  
  2716  // VaultextensionLiquidityAddedToBuffer represents a LiquidityAddedToBuffer event raised by the Vaultextension contract.
  2717  type VaultextensionLiquidityAddedToBuffer struct {
  2718  	WrappedToken     common.Address
  2719  	AmountUnderlying *big.Int
  2720  	AmountWrapped    *big.Int
  2721  	BufferBalances   [32]byte
  2722  	Raw              types.Log // Blockchain specific contextual infos
  2723  }
  2724  
  2725  // FilterLiquidityAddedToBuffer is a free log retrieval operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  2726  //
  2727  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2728  func (_Vaultextension *VaultextensionFilterer) FilterLiquidityAddedToBuffer(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultextensionLiquidityAddedToBufferIterator, error) {
  2729  
  2730  	var wrappedTokenRule []interface{}
  2731  	for _, wrappedTokenItem := range wrappedToken {
  2732  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2733  	}
  2734  
  2735  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "LiquidityAddedToBuffer", wrappedTokenRule)
  2736  	if err != nil {
  2737  		return nil, err
  2738  	}
  2739  	return &VaultextensionLiquidityAddedToBufferIterator{contract: _Vaultextension.contract, event: "LiquidityAddedToBuffer", logs: logs, sub: sub}, nil
  2740  }
  2741  
  2742  // WatchLiquidityAddedToBuffer is a free log subscription operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  2743  //
  2744  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2745  func (_Vaultextension *VaultextensionFilterer) WatchLiquidityAddedToBuffer(opts *bind.WatchOpts, sink chan<- *VaultextensionLiquidityAddedToBuffer, wrappedToken []common.Address) (event.Subscription, error) {
  2746  
  2747  	var wrappedTokenRule []interface{}
  2748  	for _, wrappedTokenItem := range wrappedToken {
  2749  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  2750  	}
  2751  
  2752  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "LiquidityAddedToBuffer", wrappedTokenRule)
  2753  	if err != nil {
  2754  		return nil, err
  2755  	}
  2756  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2757  		defer sub.Unsubscribe()
  2758  		for {
  2759  			select {
  2760  			case log := <-logs:
  2761  				// New log arrived, parse the event and forward to the user
  2762  				event := new(VaultextensionLiquidityAddedToBuffer)
  2763  				if err := _Vaultextension.contract.UnpackLog(event, "LiquidityAddedToBuffer", log); err != nil {
  2764  					return err
  2765  				}
  2766  				event.Raw = log
  2767  
  2768  				select {
  2769  				case sink <- event:
  2770  				case err := <-sub.Err():
  2771  					return err
  2772  				case <-quit:
  2773  					return nil
  2774  				}
  2775  			case err := <-sub.Err():
  2776  				return err
  2777  			case <-quit:
  2778  				return nil
  2779  			}
  2780  		}
  2781  	}), nil
  2782  }
  2783  
  2784  // ParseLiquidityAddedToBuffer is a log parse operation binding the contract event 0x75c4dc5f23640eeba7d404d9165f515fc3d9e23a5c8b6e2d09b4b9da56ff00a9.
  2785  //
  2786  // Solidity: event LiquidityAddedToBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  2787  func (_Vaultextension *VaultextensionFilterer) ParseLiquidityAddedToBuffer(log types.Log) (*VaultextensionLiquidityAddedToBuffer, error) {
  2788  	event := new(VaultextensionLiquidityAddedToBuffer)
  2789  	if err := _Vaultextension.contract.UnpackLog(event, "LiquidityAddedToBuffer", log); err != nil {
  2790  		return nil, err
  2791  	}
  2792  	event.Raw = log
  2793  	return event, nil
  2794  }
  2795  
  2796  // VaultextensionLiquidityRemovedIterator is returned from FilterLiquidityRemoved and is used to iterate over the raw logs and unpacked data for LiquidityRemoved events raised by the Vaultextension contract.
  2797  type VaultextensionLiquidityRemovedIterator struct {
  2798  	Event *VaultextensionLiquidityRemoved // Event containing the contract specifics and raw log
  2799  
  2800  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2801  	event    string              // Event name to use for unpacking event data
  2802  
  2803  	logs chan types.Log        // Log channel receiving the found contract events
  2804  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2805  	done bool                  // Whether the subscription completed delivering logs
  2806  	fail error                 // Occurred error to stop iteration
  2807  }
  2808  
  2809  // Next advances the iterator to the subsequent event, returning whether there
  2810  // are any more events found. In case of a retrieval or parsing error, false is
  2811  // returned and Error() can be queried for the exact failure.
  2812  func (it *VaultextensionLiquidityRemovedIterator) Next() bool {
  2813  	// If the iterator failed, stop iterating
  2814  	if it.fail != nil {
  2815  		return false
  2816  	}
  2817  	// If the iterator completed, deliver directly whatever's available
  2818  	if it.done {
  2819  		select {
  2820  		case log := <-it.logs:
  2821  			it.Event = new(VaultextensionLiquidityRemoved)
  2822  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2823  				it.fail = err
  2824  				return false
  2825  			}
  2826  			it.Event.Raw = log
  2827  			return true
  2828  
  2829  		default:
  2830  			return false
  2831  		}
  2832  	}
  2833  	// Iterator still in progress, wait for either a data or an error event
  2834  	select {
  2835  	case log := <-it.logs:
  2836  		it.Event = new(VaultextensionLiquidityRemoved)
  2837  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2838  			it.fail = err
  2839  			return false
  2840  		}
  2841  		it.Event.Raw = log
  2842  		return true
  2843  
  2844  	case err := <-it.sub.Err():
  2845  		it.done = true
  2846  		it.fail = err
  2847  		return it.Next()
  2848  	}
  2849  }
  2850  
  2851  // Error returns any retrieval or parsing error occurred during filtering.
  2852  func (it *VaultextensionLiquidityRemovedIterator) Error() error {
  2853  	return it.fail
  2854  }
  2855  
  2856  // Close terminates the iteration process, releasing any pending underlying
  2857  // resources.
  2858  func (it *VaultextensionLiquidityRemovedIterator) Close() error {
  2859  	it.sub.Unsubscribe()
  2860  	return nil
  2861  }
  2862  
  2863  // VaultextensionLiquidityRemoved represents a LiquidityRemoved event raised by the Vaultextension contract.
  2864  type VaultextensionLiquidityRemoved struct {
  2865  	Pool              common.Address
  2866  	LiquidityProvider common.Address
  2867  	Kind              uint8
  2868  	TotalSupply       *big.Int
  2869  	AmountsRemovedRaw []*big.Int
  2870  	SwapFeeAmountsRaw []*big.Int
  2871  	Raw               types.Log // Blockchain specific contextual infos
  2872  }
  2873  
  2874  // FilterLiquidityRemoved is a free log retrieval operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  2875  //
  2876  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  2877  func (_Vaultextension *VaultextensionFilterer) FilterLiquidityRemoved(opts *bind.FilterOpts, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (*VaultextensionLiquidityRemovedIterator, error) {
  2878  
  2879  	var poolRule []interface{}
  2880  	for _, poolItem := range pool {
  2881  		poolRule = append(poolRule, poolItem)
  2882  	}
  2883  	var liquidityProviderRule []interface{}
  2884  	for _, liquidityProviderItem := range liquidityProvider {
  2885  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  2886  	}
  2887  	var kindRule []interface{}
  2888  	for _, kindItem := range kind {
  2889  		kindRule = append(kindRule, kindItem)
  2890  	}
  2891  
  2892  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "LiquidityRemoved", poolRule, liquidityProviderRule, kindRule)
  2893  	if err != nil {
  2894  		return nil, err
  2895  	}
  2896  	return &VaultextensionLiquidityRemovedIterator{contract: _Vaultextension.contract, event: "LiquidityRemoved", logs: logs, sub: sub}, nil
  2897  }
  2898  
  2899  // WatchLiquidityRemoved is a free log subscription operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  2900  //
  2901  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  2902  func (_Vaultextension *VaultextensionFilterer) WatchLiquidityRemoved(opts *bind.WatchOpts, sink chan<- *VaultextensionLiquidityRemoved, pool []common.Address, liquidityProvider []common.Address, kind []uint8) (event.Subscription, error) {
  2903  
  2904  	var poolRule []interface{}
  2905  	for _, poolItem := range pool {
  2906  		poolRule = append(poolRule, poolItem)
  2907  	}
  2908  	var liquidityProviderRule []interface{}
  2909  	for _, liquidityProviderItem := range liquidityProvider {
  2910  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  2911  	}
  2912  	var kindRule []interface{}
  2913  	for _, kindItem := range kind {
  2914  		kindRule = append(kindRule, kindItem)
  2915  	}
  2916  
  2917  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "LiquidityRemoved", poolRule, liquidityProviderRule, kindRule)
  2918  	if err != nil {
  2919  		return nil, err
  2920  	}
  2921  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2922  		defer sub.Unsubscribe()
  2923  		for {
  2924  			select {
  2925  			case log := <-logs:
  2926  				// New log arrived, parse the event and forward to the user
  2927  				event := new(VaultextensionLiquidityRemoved)
  2928  				if err := _Vaultextension.contract.UnpackLog(event, "LiquidityRemoved", log); err != nil {
  2929  					return err
  2930  				}
  2931  				event.Raw = log
  2932  
  2933  				select {
  2934  				case sink <- event:
  2935  				case err := <-sub.Err():
  2936  					return err
  2937  				case <-quit:
  2938  					return nil
  2939  				}
  2940  			case err := <-sub.Err():
  2941  				return err
  2942  			case <-quit:
  2943  				return nil
  2944  			}
  2945  		}
  2946  	}), nil
  2947  }
  2948  
  2949  // ParseLiquidityRemoved is a log parse operation binding the contract event 0xfbe5b0d79fb94f1e81c0a92bf86ae9d3a19e9d1bf6202c0d3e75120f65d5d8a5.
  2950  //
  2951  // Solidity: event LiquidityRemoved(address indexed pool, address indexed liquidityProvider, uint8 indexed kind, uint256 totalSupply, uint256[] amountsRemovedRaw, uint256[] swapFeeAmountsRaw)
  2952  func (_Vaultextension *VaultextensionFilterer) ParseLiquidityRemoved(log types.Log) (*VaultextensionLiquidityRemoved, error) {
  2953  	event := new(VaultextensionLiquidityRemoved)
  2954  	if err := _Vaultextension.contract.UnpackLog(event, "LiquidityRemoved", log); err != nil {
  2955  		return nil, err
  2956  	}
  2957  	event.Raw = log
  2958  	return event, nil
  2959  }
  2960  
  2961  // VaultextensionLiquidityRemovedFromBufferIterator is returned from FilterLiquidityRemovedFromBuffer and is used to iterate over the raw logs and unpacked data for LiquidityRemovedFromBuffer events raised by the Vaultextension contract.
  2962  type VaultextensionLiquidityRemovedFromBufferIterator struct {
  2963  	Event *VaultextensionLiquidityRemovedFromBuffer // Event containing the contract specifics and raw log
  2964  
  2965  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2966  	event    string              // Event name to use for unpacking event data
  2967  
  2968  	logs chan types.Log        // Log channel receiving the found contract events
  2969  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2970  	done bool                  // Whether the subscription completed delivering logs
  2971  	fail error                 // Occurred error to stop iteration
  2972  }
  2973  
  2974  // Next advances the iterator to the subsequent event, returning whether there
  2975  // are any more events found. In case of a retrieval or parsing error, false is
  2976  // returned and Error() can be queried for the exact failure.
  2977  func (it *VaultextensionLiquidityRemovedFromBufferIterator) Next() bool {
  2978  	// If the iterator failed, stop iterating
  2979  	if it.fail != nil {
  2980  		return false
  2981  	}
  2982  	// If the iterator completed, deliver directly whatever's available
  2983  	if it.done {
  2984  		select {
  2985  		case log := <-it.logs:
  2986  			it.Event = new(VaultextensionLiquidityRemovedFromBuffer)
  2987  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2988  				it.fail = err
  2989  				return false
  2990  			}
  2991  			it.Event.Raw = log
  2992  			return true
  2993  
  2994  		default:
  2995  			return false
  2996  		}
  2997  	}
  2998  	// Iterator still in progress, wait for either a data or an error event
  2999  	select {
  3000  	case log := <-it.logs:
  3001  		it.Event = new(VaultextensionLiquidityRemovedFromBuffer)
  3002  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3003  			it.fail = err
  3004  			return false
  3005  		}
  3006  		it.Event.Raw = log
  3007  		return true
  3008  
  3009  	case err := <-it.sub.Err():
  3010  		it.done = true
  3011  		it.fail = err
  3012  		return it.Next()
  3013  	}
  3014  }
  3015  
  3016  // Error returns any retrieval or parsing error occurred during filtering.
  3017  func (it *VaultextensionLiquidityRemovedFromBufferIterator) Error() error {
  3018  	return it.fail
  3019  }
  3020  
  3021  // Close terminates the iteration process, releasing any pending underlying
  3022  // resources.
  3023  func (it *VaultextensionLiquidityRemovedFromBufferIterator) Close() error {
  3024  	it.sub.Unsubscribe()
  3025  	return nil
  3026  }
  3027  
  3028  // VaultextensionLiquidityRemovedFromBuffer represents a LiquidityRemovedFromBuffer event raised by the Vaultextension contract.
  3029  type VaultextensionLiquidityRemovedFromBuffer struct {
  3030  	WrappedToken     common.Address
  3031  	AmountUnderlying *big.Int
  3032  	AmountWrapped    *big.Int
  3033  	BufferBalances   [32]byte
  3034  	Raw              types.Log // Blockchain specific contextual infos
  3035  }
  3036  
  3037  // FilterLiquidityRemovedFromBuffer is a free log retrieval operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  3038  //
  3039  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  3040  func (_Vaultextension *VaultextensionFilterer) FilterLiquidityRemovedFromBuffer(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultextensionLiquidityRemovedFromBufferIterator, error) {
  3041  
  3042  	var wrappedTokenRule []interface{}
  3043  	for _, wrappedTokenItem := range wrappedToken {
  3044  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  3045  	}
  3046  
  3047  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "LiquidityRemovedFromBuffer", wrappedTokenRule)
  3048  	if err != nil {
  3049  		return nil, err
  3050  	}
  3051  	return &VaultextensionLiquidityRemovedFromBufferIterator{contract: _Vaultextension.contract, event: "LiquidityRemovedFromBuffer", logs: logs, sub: sub}, nil
  3052  }
  3053  
  3054  // WatchLiquidityRemovedFromBuffer is a free log subscription operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  3055  //
  3056  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  3057  func (_Vaultextension *VaultextensionFilterer) WatchLiquidityRemovedFromBuffer(opts *bind.WatchOpts, sink chan<- *VaultextensionLiquidityRemovedFromBuffer, wrappedToken []common.Address) (event.Subscription, error) {
  3058  
  3059  	var wrappedTokenRule []interface{}
  3060  	for _, wrappedTokenItem := range wrappedToken {
  3061  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  3062  	}
  3063  
  3064  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "LiquidityRemovedFromBuffer", wrappedTokenRule)
  3065  	if err != nil {
  3066  		return nil, err
  3067  	}
  3068  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3069  		defer sub.Unsubscribe()
  3070  		for {
  3071  			select {
  3072  			case log := <-logs:
  3073  				// New log arrived, parse the event and forward to the user
  3074  				event := new(VaultextensionLiquidityRemovedFromBuffer)
  3075  				if err := _Vaultextension.contract.UnpackLog(event, "LiquidityRemovedFromBuffer", log); err != nil {
  3076  					return err
  3077  				}
  3078  				event.Raw = log
  3079  
  3080  				select {
  3081  				case sink <- event:
  3082  				case err := <-sub.Err():
  3083  					return err
  3084  				case <-quit:
  3085  					return nil
  3086  				}
  3087  			case err := <-sub.Err():
  3088  				return err
  3089  			case <-quit:
  3090  				return nil
  3091  			}
  3092  		}
  3093  	}), nil
  3094  }
  3095  
  3096  // ParseLiquidityRemovedFromBuffer is a log parse operation binding the contract event 0x44d97b36e99b590b3d2875aad3b167b1d7fb1e063f3f1325a1eeac76caee5113.
  3097  //
  3098  // Solidity: event LiquidityRemovedFromBuffer(address indexed wrappedToken, uint256 amountUnderlying, uint256 amountWrapped, bytes32 bufferBalances)
  3099  func (_Vaultextension *VaultextensionFilterer) ParseLiquidityRemovedFromBuffer(log types.Log) (*VaultextensionLiquidityRemovedFromBuffer, error) {
  3100  	event := new(VaultextensionLiquidityRemovedFromBuffer)
  3101  	if err := _Vaultextension.contract.UnpackLog(event, "LiquidityRemovedFromBuffer", log); err != nil {
  3102  		return nil, err
  3103  	}
  3104  	event.Raw = log
  3105  	return event, nil
  3106  }
  3107  
  3108  // VaultextensionPoolInitializedIterator is returned from FilterPoolInitialized and is used to iterate over the raw logs and unpacked data for PoolInitialized events raised by the Vaultextension contract.
  3109  type VaultextensionPoolInitializedIterator struct {
  3110  	Event *VaultextensionPoolInitialized // Event containing the contract specifics and raw log
  3111  
  3112  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3113  	event    string              // Event name to use for unpacking event data
  3114  
  3115  	logs chan types.Log        // Log channel receiving the found contract events
  3116  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3117  	done bool                  // Whether the subscription completed delivering logs
  3118  	fail error                 // Occurred error to stop iteration
  3119  }
  3120  
  3121  // Next advances the iterator to the subsequent event, returning whether there
  3122  // are any more events found. In case of a retrieval or parsing error, false is
  3123  // returned and Error() can be queried for the exact failure.
  3124  func (it *VaultextensionPoolInitializedIterator) Next() bool {
  3125  	// If the iterator failed, stop iterating
  3126  	if it.fail != nil {
  3127  		return false
  3128  	}
  3129  	// If the iterator completed, deliver directly whatever's available
  3130  	if it.done {
  3131  		select {
  3132  		case log := <-it.logs:
  3133  			it.Event = new(VaultextensionPoolInitialized)
  3134  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3135  				it.fail = err
  3136  				return false
  3137  			}
  3138  			it.Event.Raw = log
  3139  			return true
  3140  
  3141  		default:
  3142  			return false
  3143  		}
  3144  	}
  3145  	// Iterator still in progress, wait for either a data or an error event
  3146  	select {
  3147  	case log := <-it.logs:
  3148  		it.Event = new(VaultextensionPoolInitialized)
  3149  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3150  			it.fail = err
  3151  			return false
  3152  		}
  3153  		it.Event.Raw = log
  3154  		return true
  3155  
  3156  	case err := <-it.sub.Err():
  3157  		it.done = true
  3158  		it.fail = err
  3159  		return it.Next()
  3160  	}
  3161  }
  3162  
  3163  // Error returns any retrieval or parsing error occurred during filtering.
  3164  func (it *VaultextensionPoolInitializedIterator) Error() error {
  3165  	return it.fail
  3166  }
  3167  
  3168  // Close terminates the iteration process, releasing any pending underlying
  3169  // resources.
  3170  func (it *VaultextensionPoolInitializedIterator) Close() error {
  3171  	it.sub.Unsubscribe()
  3172  	return nil
  3173  }
  3174  
  3175  // VaultextensionPoolInitialized represents a PoolInitialized event raised by the Vaultextension contract.
  3176  type VaultextensionPoolInitialized struct {
  3177  	Pool common.Address
  3178  	Raw  types.Log // Blockchain specific contextual infos
  3179  }
  3180  
  3181  // FilterPoolInitialized is a free log retrieval operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  3182  //
  3183  // Solidity: event PoolInitialized(address indexed pool)
  3184  func (_Vaultextension *VaultextensionFilterer) FilterPoolInitialized(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionPoolInitializedIterator, error) {
  3185  
  3186  	var poolRule []interface{}
  3187  	for _, poolItem := range pool {
  3188  		poolRule = append(poolRule, poolItem)
  3189  	}
  3190  
  3191  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "PoolInitialized", poolRule)
  3192  	if err != nil {
  3193  		return nil, err
  3194  	}
  3195  	return &VaultextensionPoolInitializedIterator{contract: _Vaultextension.contract, event: "PoolInitialized", logs: logs, sub: sub}, nil
  3196  }
  3197  
  3198  // WatchPoolInitialized is a free log subscription operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  3199  //
  3200  // Solidity: event PoolInitialized(address indexed pool)
  3201  func (_Vaultextension *VaultextensionFilterer) WatchPoolInitialized(opts *bind.WatchOpts, sink chan<- *VaultextensionPoolInitialized, pool []common.Address) (event.Subscription, error) {
  3202  
  3203  	var poolRule []interface{}
  3204  	for _, poolItem := range pool {
  3205  		poolRule = append(poolRule, poolItem)
  3206  	}
  3207  
  3208  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "PoolInitialized", poolRule)
  3209  	if err != nil {
  3210  		return nil, err
  3211  	}
  3212  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3213  		defer sub.Unsubscribe()
  3214  		for {
  3215  			select {
  3216  			case log := <-logs:
  3217  				// New log arrived, parse the event and forward to the user
  3218  				event := new(VaultextensionPoolInitialized)
  3219  				if err := _Vaultextension.contract.UnpackLog(event, "PoolInitialized", log); err != nil {
  3220  					return err
  3221  				}
  3222  				event.Raw = log
  3223  
  3224  				select {
  3225  				case sink <- event:
  3226  				case err := <-sub.Err():
  3227  					return err
  3228  				case <-quit:
  3229  					return nil
  3230  				}
  3231  			case err := <-sub.Err():
  3232  				return err
  3233  			case <-quit:
  3234  				return nil
  3235  			}
  3236  		}
  3237  	}), nil
  3238  }
  3239  
  3240  // ParsePoolInitialized is a log parse operation binding the contract event 0xcad8c9d32507393b6508ca4a888b81979919b477510585bde8488f153072d6f3.
  3241  //
  3242  // Solidity: event PoolInitialized(address indexed pool)
  3243  func (_Vaultextension *VaultextensionFilterer) ParsePoolInitialized(log types.Log) (*VaultextensionPoolInitialized, error) {
  3244  	event := new(VaultextensionPoolInitialized)
  3245  	if err := _Vaultextension.contract.UnpackLog(event, "PoolInitialized", log); err != nil {
  3246  		return nil, err
  3247  	}
  3248  	event.Raw = log
  3249  	return event, nil
  3250  }
  3251  
  3252  // VaultextensionPoolPausedStateChangedIterator is returned from FilterPoolPausedStateChanged and is used to iterate over the raw logs and unpacked data for PoolPausedStateChanged events raised by the Vaultextension contract.
  3253  type VaultextensionPoolPausedStateChangedIterator struct {
  3254  	Event *VaultextensionPoolPausedStateChanged // Event containing the contract specifics and raw log
  3255  
  3256  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3257  	event    string              // Event name to use for unpacking event data
  3258  
  3259  	logs chan types.Log        // Log channel receiving the found contract events
  3260  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3261  	done bool                  // Whether the subscription completed delivering logs
  3262  	fail error                 // Occurred error to stop iteration
  3263  }
  3264  
  3265  // Next advances the iterator to the subsequent event, returning whether there
  3266  // are any more events found. In case of a retrieval or parsing error, false is
  3267  // returned and Error() can be queried for the exact failure.
  3268  func (it *VaultextensionPoolPausedStateChangedIterator) Next() bool {
  3269  	// If the iterator failed, stop iterating
  3270  	if it.fail != nil {
  3271  		return false
  3272  	}
  3273  	// If the iterator completed, deliver directly whatever's available
  3274  	if it.done {
  3275  		select {
  3276  		case log := <-it.logs:
  3277  			it.Event = new(VaultextensionPoolPausedStateChanged)
  3278  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3279  				it.fail = err
  3280  				return false
  3281  			}
  3282  			it.Event.Raw = log
  3283  			return true
  3284  
  3285  		default:
  3286  			return false
  3287  		}
  3288  	}
  3289  	// Iterator still in progress, wait for either a data or an error event
  3290  	select {
  3291  	case log := <-it.logs:
  3292  		it.Event = new(VaultextensionPoolPausedStateChanged)
  3293  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3294  			it.fail = err
  3295  			return false
  3296  		}
  3297  		it.Event.Raw = log
  3298  		return true
  3299  
  3300  	case err := <-it.sub.Err():
  3301  		it.done = true
  3302  		it.fail = err
  3303  		return it.Next()
  3304  	}
  3305  }
  3306  
  3307  // Error returns any retrieval or parsing error occurred during filtering.
  3308  func (it *VaultextensionPoolPausedStateChangedIterator) Error() error {
  3309  	return it.fail
  3310  }
  3311  
  3312  // Close terminates the iteration process, releasing any pending underlying
  3313  // resources.
  3314  func (it *VaultextensionPoolPausedStateChangedIterator) Close() error {
  3315  	it.sub.Unsubscribe()
  3316  	return nil
  3317  }
  3318  
  3319  // VaultextensionPoolPausedStateChanged represents a PoolPausedStateChanged event raised by the Vaultextension contract.
  3320  type VaultextensionPoolPausedStateChanged struct {
  3321  	Pool   common.Address
  3322  	Paused bool
  3323  	Raw    types.Log // Blockchain specific contextual infos
  3324  }
  3325  
  3326  // FilterPoolPausedStateChanged is a free log retrieval operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  3327  //
  3328  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  3329  func (_Vaultextension *VaultextensionFilterer) FilterPoolPausedStateChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionPoolPausedStateChangedIterator, error) {
  3330  
  3331  	var poolRule []interface{}
  3332  	for _, poolItem := range pool {
  3333  		poolRule = append(poolRule, poolItem)
  3334  	}
  3335  
  3336  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "PoolPausedStateChanged", poolRule)
  3337  	if err != nil {
  3338  		return nil, err
  3339  	}
  3340  	return &VaultextensionPoolPausedStateChangedIterator{contract: _Vaultextension.contract, event: "PoolPausedStateChanged", logs: logs, sub: sub}, nil
  3341  }
  3342  
  3343  // WatchPoolPausedStateChanged is a free log subscription operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  3344  //
  3345  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  3346  func (_Vaultextension *VaultextensionFilterer) WatchPoolPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionPoolPausedStateChanged, pool []common.Address) (event.Subscription, error) {
  3347  
  3348  	var poolRule []interface{}
  3349  	for _, poolItem := range pool {
  3350  		poolRule = append(poolRule, poolItem)
  3351  	}
  3352  
  3353  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "PoolPausedStateChanged", poolRule)
  3354  	if err != nil {
  3355  		return nil, err
  3356  	}
  3357  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3358  		defer sub.Unsubscribe()
  3359  		for {
  3360  			select {
  3361  			case log := <-logs:
  3362  				// New log arrived, parse the event and forward to the user
  3363  				event := new(VaultextensionPoolPausedStateChanged)
  3364  				if err := _Vaultextension.contract.UnpackLog(event, "PoolPausedStateChanged", log); err != nil {
  3365  					return err
  3366  				}
  3367  				event.Raw = log
  3368  
  3369  				select {
  3370  				case sink <- event:
  3371  				case err := <-sub.Err():
  3372  					return err
  3373  				case <-quit:
  3374  					return nil
  3375  				}
  3376  			case err := <-sub.Err():
  3377  				return err
  3378  			case <-quit:
  3379  				return nil
  3380  			}
  3381  		}
  3382  	}), nil
  3383  }
  3384  
  3385  // ParsePoolPausedStateChanged is a log parse operation binding the contract event 0x57e20448028297190122571be7cb6c1b1ef85730c673f7c72f533c8662419aa7.
  3386  //
  3387  // Solidity: event PoolPausedStateChanged(address indexed pool, bool paused)
  3388  func (_Vaultextension *VaultextensionFilterer) ParsePoolPausedStateChanged(log types.Log) (*VaultextensionPoolPausedStateChanged, error) {
  3389  	event := new(VaultextensionPoolPausedStateChanged)
  3390  	if err := _Vaultextension.contract.UnpackLog(event, "PoolPausedStateChanged", log); err != nil {
  3391  		return nil, err
  3392  	}
  3393  	event.Raw = log
  3394  	return event, nil
  3395  }
  3396  
  3397  // VaultextensionPoolRecoveryModeStateChangedIterator is returned from FilterPoolRecoveryModeStateChanged and is used to iterate over the raw logs and unpacked data for PoolRecoveryModeStateChanged events raised by the Vaultextension contract.
  3398  type VaultextensionPoolRecoveryModeStateChangedIterator struct {
  3399  	Event *VaultextensionPoolRecoveryModeStateChanged // Event containing the contract specifics and raw log
  3400  
  3401  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3402  	event    string              // Event name to use for unpacking event data
  3403  
  3404  	logs chan types.Log        // Log channel receiving the found contract events
  3405  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3406  	done bool                  // Whether the subscription completed delivering logs
  3407  	fail error                 // Occurred error to stop iteration
  3408  }
  3409  
  3410  // Next advances the iterator to the subsequent event, returning whether there
  3411  // are any more events found. In case of a retrieval or parsing error, false is
  3412  // returned and Error() can be queried for the exact failure.
  3413  func (it *VaultextensionPoolRecoveryModeStateChangedIterator) Next() bool {
  3414  	// If the iterator failed, stop iterating
  3415  	if it.fail != nil {
  3416  		return false
  3417  	}
  3418  	// If the iterator completed, deliver directly whatever's available
  3419  	if it.done {
  3420  		select {
  3421  		case log := <-it.logs:
  3422  			it.Event = new(VaultextensionPoolRecoveryModeStateChanged)
  3423  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3424  				it.fail = err
  3425  				return false
  3426  			}
  3427  			it.Event.Raw = log
  3428  			return true
  3429  
  3430  		default:
  3431  			return false
  3432  		}
  3433  	}
  3434  	// Iterator still in progress, wait for either a data or an error event
  3435  	select {
  3436  	case log := <-it.logs:
  3437  		it.Event = new(VaultextensionPoolRecoveryModeStateChanged)
  3438  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3439  			it.fail = err
  3440  			return false
  3441  		}
  3442  		it.Event.Raw = log
  3443  		return true
  3444  
  3445  	case err := <-it.sub.Err():
  3446  		it.done = true
  3447  		it.fail = err
  3448  		return it.Next()
  3449  	}
  3450  }
  3451  
  3452  // Error returns any retrieval or parsing error occurred during filtering.
  3453  func (it *VaultextensionPoolRecoveryModeStateChangedIterator) Error() error {
  3454  	return it.fail
  3455  }
  3456  
  3457  // Close terminates the iteration process, releasing any pending underlying
  3458  // resources.
  3459  func (it *VaultextensionPoolRecoveryModeStateChangedIterator) Close() error {
  3460  	it.sub.Unsubscribe()
  3461  	return nil
  3462  }
  3463  
  3464  // VaultextensionPoolRecoveryModeStateChanged represents a PoolRecoveryModeStateChanged event raised by the Vaultextension contract.
  3465  type VaultextensionPoolRecoveryModeStateChanged struct {
  3466  	Pool         common.Address
  3467  	RecoveryMode bool
  3468  	Raw          types.Log // Blockchain specific contextual infos
  3469  }
  3470  
  3471  // FilterPoolRecoveryModeStateChanged is a free log retrieval operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  3472  //
  3473  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  3474  func (_Vaultextension *VaultextensionFilterer) FilterPoolRecoveryModeStateChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionPoolRecoveryModeStateChangedIterator, error) {
  3475  
  3476  	var poolRule []interface{}
  3477  	for _, poolItem := range pool {
  3478  		poolRule = append(poolRule, poolItem)
  3479  	}
  3480  
  3481  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "PoolRecoveryModeStateChanged", poolRule)
  3482  	if err != nil {
  3483  		return nil, err
  3484  	}
  3485  	return &VaultextensionPoolRecoveryModeStateChangedIterator{contract: _Vaultextension.contract, event: "PoolRecoveryModeStateChanged", logs: logs, sub: sub}, nil
  3486  }
  3487  
  3488  // WatchPoolRecoveryModeStateChanged is a free log subscription operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  3489  //
  3490  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  3491  func (_Vaultextension *VaultextensionFilterer) WatchPoolRecoveryModeStateChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionPoolRecoveryModeStateChanged, pool []common.Address) (event.Subscription, error) {
  3492  
  3493  	var poolRule []interface{}
  3494  	for _, poolItem := range pool {
  3495  		poolRule = append(poolRule, poolItem)
  3496  	}
  3497  
  3498  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "PoolRecoveryModeStateChanged", poolRule)
  3499  	if err != nil {
  3500  		return nil, err
  3501  	}
  3502  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3503  		defer sub.Unsubscribe()
  3504  		for {
  3505  			select {
  3506  			case log := <-logs:
  3507  				// New log arrived, parse the event and forward to the user
  3508  				event := new(VaultextensionPoolRecoveryModeStateChanged)
  3509  				if err := _Vaultextension.contract.UnpackLog(event, "PoolRecoveryModeStateChanged", log); err != nil {
  3510  					return err
  3511  				}
  3512  				event.Raw = log
  3513  
  3514  				select {
  3515  				case sink <- event:
  3516  				case err := <-sub.Err():
  3517  					return err
  3518  				case <-quit:
  3519  					return nil
  3520  				}
  3521  			case err := <-sub.Err():
  3522  				return err
  3523  			case <-quit:
  3524  				return nil
  3525  			}
  3526  		}
  3527  	}), nil
  3528  }
  3529  
  3530  // ParsePoolRecoveryModeStateChanged is a log parse operation binding the contract event 0xc2354cc2f78ea57777e55ddd43a7f22b112ce98868596880edaeb22b4f9c73a9.
  3531  //
  3532  // Solidity: event PoolRecoveryModeStateChanged(address indexed pool, bool recoveryMode)
  3533  func (_Vaultextension *VaultextensionFilterer) ParsePoolRecoveryModeStateChanged(log types.Log) (*VaultextensionPoolRecoveryModeStateChanged, error) {
  3534  	event := new(VaultextensionPoolRecoveryModeStateChanged)
  3535  	if err := _Vaultextension.contract.UnpackLog(event, "PoolRecoveryModeStateChanged", log); err != nil {
  3536  		return nil, err
  3537  	}
  3538  	event.Raw = log
  3539  	return event, nil
  3540  }
  3541  
  3542  // VaultextensionPoolRegisteredIterator is returned from FilterPoolRegistered and is used to iterate over the raw logs and unpacked data for PoolRegistered events raised by the Vaultextension contract.
  3543  type VaultextensionPoolRegisteredIterator struct {
  3544  	Event *VaultextensionPoolRegistered // Event containing the contract specifics and raw log
  3545  
  3546  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3547  	event    string              // Event name to use for unpacking event data
  3548  
  3549  	logs chan types.Log        // Log channel receiving the found contract events
  3550  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3551  	done bool                  // Whether the subscription completed delivering logs
  3552  	fail error                 // Occurred error to stop iteration
  3553  }
  3554  
  3555  // Next advances the iterator to the subsequent event, returning whether there
  3556  // are any more events found. In case of a retrieval or parsing error, false is
  3557  // returned and Error() can be queried for the exact failure.
  3558  func (it *VaultextensionPoolRegisteredIterator) Next() bool {
  3559  	// If the iterator failed, stop iterating
  3560  	if it.fail != nil {
  3561  		return false
  3562  	}
  3563  	// If the iterator completed, deliver directly whatever's available
  3564  	if it.done {
  3565  		select {
  3566  		case log := <-it.logs:
  3567  			it.Event = new(VaultextensionPoolRegistered)
  3568  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3569  				it.fail = err
  3570  				return false
  3571  			}
  3572  			it.Event.Raw = log
  3573  			return true
  3574  
  3575  		default:
  3576  			return false
  3577  		}
  3578  	}
  3579  	// Iterator still in progress, wait for either a data or an error event
  3580  	select {
  3581  	case log := <-it.logs:
  3582  		it.Event = new(VaultextensionPoolRegistered)
  3583  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3584  			it.fail = err
  3585  			return false
  3586  		}
  3587  		it.Event.Raw = log
  3588  		return true
  3589  
  3590  	case err := <-it.sub.Err():
  3591  		it.done = true
  3592  		it.fail = err
  3593  		return it.Next()
  3594  	}
  3595  }
  3596  
  3597  // Error returns any retrieval or parsing error occurred during filtering.
  3598  func (it *VaultextensionPoolRegisteredIterator) Error() error {
  3599  	return it.fail
  3600  }
  3601  
  3602  // Close terminates the iteration process, releasing any pending underlying
  3603  // resources.
  3604  func (it *VaultextensionPoolRegisteredIterator) Close() error {
  3605  	it.sub.Unsubscribe()
  3606  	return nil
  3607  }
  3608  
  3609  // VaultextensionPoolRegistered represents a PoolRegistered event raised by the Vaultextension contract.
  3610  type VaultextensionPoolRegistered struct {
  3611  	Pool                common.Address
  3612  	Factory             common.Address
  3613  	TokenConfig         []TokenConfig
  3614  	SwapFeePercentage   *big.Int
  3615  	PauseWindowEndTime  uint32
  3616  	RoleAccounts        PoolRoleAccounts
  3617  	HooksConfig         HooksConfig
  3618  	LiquidityManagement LiquidityManagement
  3619  	Raw                 types.Log // Blockchain specific contextual infos
  3620  }
  3621  
  3622  // FilterPoolRegistered is a free log retrieval operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  3623  //
  3624  // 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)
  3625  func (_Vaultextension *VaultextensionFilterer) FilterPoolRegistered(opts *bind.FilterOpts, pool []common.Address, factory []common.Address) (*VaultextensionPoolRegisteredIterator, error) {
  3626  
  3627  	var poolRule []interface{}
  3628  	for _, poolItem := range pool {
  3629  		poolRule = append(poolRule, poolItem)
  3630  	}
  3631  	var factoryRule []interface{}
  3632  	for _, factoryItem := range factory {
  3633  		factoryRule = append(factoryRule, factoryItem)
  3634  	}
  3635  
  3636  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "PoolRegistered", poolRule, factoryRule)
  3637  	if err != nil {
  3638  		return nil, err
  3639  	}
  3640  	return &VaultextensionPoolRegisteredIterator{contract: _Vaultextension.contract, event: "PoolRegistered", logs: logs, sub: sub}, nil
  3641  }
  3642  
  3643  // WatchPoolRegistered is a free log subscription operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  3644  //
  3645  // 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)
  3646  func (_Vaultextension *VaultextensionFilterer) WatchPoolRegistered(opts *bind.WatchOpts, sink chan<- *VaultextensionPoolRegistered, pool []common.Address, factory []common.Address) (event.Subscription, error) {
  3647  
  3648  	var poolRule []interface{}
  3649  	for _, poolItem := range pool {
  3650  		poolRule = append(poolRule, poolItem)
  3651  	}
  3652  	var factoryRule []interface{}
  3653  	for _, factoryItem := range factory {
  3654  		factoryRule = append(factoryRule, factoryItem)
  3655  	}
  3656  
  3657  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "PoolRegistered", poolRule, factoryRule)
  3658  	if err != nil {
  3659  		return nil, err
  3660  	}
  3661  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3662  		defer sub.Unsubscribe()
  3663  		for {
  3664  			select {
  3665  			case log := <-logs:
  3666  				// New log arrived, parse the event and forward to the user
  3667  				event := new(VaultextensionPoolRegistered)
  3668  				if err := _Vaultextension.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  3669  					return err
  3670  				}
  3671  				event.Raw = log
  3672  
  3673  				select {
  3674  				case sink <- event:
  3675  				case err := <-sub.Err():
  3676  					return err
  3677  				case <-quit:
  3678  					return nil
  3679  				}
  3680  			case err := <-sub.Err():
  3681  				return err
  3682  			case <-quit:
  3683  				return nil
  3684  			}
  3685  		}
  3686  	}), nil
  3687  }
  3688  
  3689  // ParsePoolRegistered is a log parse operation binding the contract event 0xbc1561eeab9f40962e2fb827a7ff9c7cdb47a9d7c84caeefa4ed90e043842dad.
  3690  //
  3691  // 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)
  3692  func (_Vaultextension *VaultextensionFilterer) ParsePoolRegistered(log types.Log) (*VaultextensionPoolRegistered, error) {
  3693  	event := new(VaultextensionPoolRegistered)
  3694  	if err := _Vaultextension.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  3695  		return nil, err
  3696  	}
  3697  	event.Raw = log
  3698  	return event, nil
  3699  }
  3700  
  3701  // VaultextensionProtocolFeeControllerChangedIterator is returned from FilterProtocolFeeControllerChanged and is used to iterate over the raw logs and unpacked data for ProtocolFeeControllerChanged events raised by the Vaultextension contract.
  3702  type VaultextensionProtocolFeeControllerChangedIterator struct {
  3703  	Event *VaultextensionProtocolFeeControllerChanged // Event containing the contract specifics and raw log
  3704  
  3705  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3706  	event    string              // Event name to use for unpacking event data
  3707  
  3708  	logs chan types.Log        // Log channel receiving the found contract events
  3709  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3710  	done bool                  // Whether the subscription completed delivering logs
  3711  	fail error                 // Occurred error to stop iteration
  3712  }
  3713  
  3714  // Next advances the iterator to the subsequent event, returning whether there
  3715  // are any more events found. In case of a retrieval or parsing error, false is
  3716  // returned and Error() can be queried for the exact failure.
  3717  func (it *VaultextensionProtocolFeeControllerChangedIterator) Next() bool {
  3718  	// If the iterator failed, stop iterating
  3719  	if it.fail != nil {
  3720  		return false
  3721  	}
  3722  	// If the iterator completed, deliver directly whatever's available
  3723  	if it.done {
  3724  		select {
  3725  		case log := <-it.logs:
  3726  			it.Event = new(VaultextensionProtocolFeeControllerChanged)
  3727  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3728  				it.fail = err
  3729  				return false
  3730  			}
  3731  			it.Event.Raw = log
  3732  			return true
  3733  
  3734  		default:
  3735  			return false
  3736  		}
  3737  	}
  3738  	// Iterator still in progress, wait for either a data or an error event
  3739  	select {
  3740  	case log := <-it.logs:
  3741  		it.Event = new(VaultextensionProtocolFeeControllerChanged)
  3742  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3743  			it.fail = err
  3744  			return false
  3745  		}
  3746  		it.Event.Raw = log
  3747  		return true
  3748  
  3749  	case err := <-it.sub.Err():
  3750  		it.done = true
  3751  		it.fail = err
  3752  		return it.Next()
  3753  	}
  3754  }
  3755  
  3756  // Error returns any retrieval or parsing error occurred during filtering.
  3757  func (it *VaultextensionProtocolFeeControllerChangedIterator) Error() error {
  3758  	return it.fail
  3759  }
  3760  
  3761  // Close terminates the iteration process, releasing any pending underlying
  3762  // resources.
  3763  func (it *VaultextensionProtocolFeeControllerChangedIterator) Close() error {
  3764  	it.sub.Unsubscribe()
  3765  	return nil
  3766  }
  3767  
  3768  // VaultextensionProtocolFeeControllerChanged represents a ProtocolFeeControllerChanged event raised by the Vaultextension contract.
  3769  type VaultextensionProtocolFeeControllerChanged struct {
  3770  	NewProtocolFeeController common.Address
  3771  	Raw                      types.Log // Blockchain specific contextual infos
  3772  }
  3773  
  3774  // FilterProtocolFeeControllerChanged is a free log retrieval operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  3775  //
  3776  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  3777  func (_Vaultextension *VaultextensionFilterer) FilterProtocolFeeControllerChanged(opts *bind.FilterOpts, newProtocolFeeController []common.Address) (*VaultextensionProtocolFeeControllerChangedIterator, error) {
  3778  
  3779  	var newProtocolFeeControllerRule []interface{}
  3780  	for _, newProtocolFeeControllerItem := range newProtocolFeeController {
  3781  		newProtocolFeeControllerRule = append(newProtocolFeeControllerRule, newProtocolFeeControllerItem)
  3782  	}
  3783  
  3784  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "ProtocolFeeControllerChanged", newProtocolFeeControllerRule)
  3785  	if err != nil {
  3786  		return nil, err
  3787  	}
  3788  	return &VaultextensionProtocolFeeControllerChangedIterator{contract: _Vaultextension.contract, event: "ProtocolFeeControllerChanged", logs: logs, sub: sub}, nil
  3789  }
  3790  
  3791  // WatchProtocolFeeControllerChanged is a free log subscription operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  3792  //
  3793  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  3794  func (_Vaultextension *VaultextensionFilterer) WatchProtocolFeeControllerChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionProtocolFeeControllerChanged, newProtocolFeeController []common.Address) (event.Subscription, error) {
  3795  
  3796  	var newProtocolFeeControllerRule []interface{}
  3797  	for _, newProtocolFeeControllerItem := range newProtocolFeeController {
  3798  		newProtocolFeeControllerRule = append(newProtocolFeeControllerRule, newProtocolFeeControllerItem)
  3799  	}
  3800  
  3801  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "ProtocolFeeControllerChanged", newProtocolFeeControllerRule)
  3802  	if err != nil {
  3803  		return nil, err
  3804  	}
  3805  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3806  		defer sub.Unsubscribe()
  3807  		for {
  3808  			select {
  3809  			case log := <-logs:
  3810  				// New log arrived, parse the event and forward to the user
  3811  				event := new(VaultextensionProtocolFeeControllerChanged)
  3812  				if err := _Vaultextension.contract.UnpackLog(event, "ProtocolFeeControllerChanged", log); err != nil {
  3813  					return err
  3814  				}
  3815  				event.Raw = log
  3816  
  3817  				select {
  3818  				case sink <- event:
  3819  				case err := <-sub.Err():
  3820  					return err
  3821  				case <-quit:
  3822  					return nil
  3823  				}
  3824  			case err := <-sub.Err():
  3825  				return err
  3826  			case <-quit:
  3827  				return nil
  3828  			}
  3829  		}
  3830  	}), nil
  3831  }
  3832  
  3833  // ParseProtocolFeeControllerChanged is a log parse operation binding the contract event 0x280a60b1e63c1774d397d35cce80eb80e51408ead755fb446e6f744ce98e5df0.
  3834  //
  3835  // Solidity: event ProtocolFeeControllerChanged(address indexed newProtocolFeeController)
  3836  func (_Vaultextension *VaultextensionFilterer) ParseProtocolFeeControllerChanged(log types.Log) (*VaultextensionProtocolFeeControllerChanged, error) {
  3837  	event := new(VaultextensionProtocolFeeControllerChanged)
  3838  	if err := _Vaultextension.contract.UnpackLog(event, "ProtocolFeeControllerChanged", log); err != nil {
  3839  		return nil, err
  3840  	}
  3841  	event.Raw = log
  3842  	return event, nil
  3843  }
  3844  
  3845  // VaultextensionSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the Vaultextension contract.
  3846  type VaultextensionSwapIterator struct {
  3847  	Event *VaultextensionSwap // Event containing the contract specifics and raw log
  3848  
  3849  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3850  	event    string              // Event name to use for unpacking event data
  3851  
  3852  	logs chan types.Log        // Log channel receiving the found contract events
  3853  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3854  	done bool                  // Whether the subscription completed delivering logs
  3855  	fail error                 // Occurred error to stop iteration
  3856  }
  3857  
  3858  // Next advances the iterator to the subsequent event, returning whether there
  3859  // are any more events found. In case of a retrieval or parsing error, false is
  3860  // returned and Error() can be queried for the exact failure.
  3861  func (it *VaultextensionSwapIterator) Next() bool {
  3862  	// If the iterator failed, stop iterating
  3863  	if it.fail != nil {
  3864  		return false
  3865  	}
  3866  	// If the iterator completed, deliver directly whatever's available
  3867  	if it.done {
  3868  		select {
  3869  		case log := <-it.logs:
  3870  			it.Event = new(VaultextensionSwap)
  3871  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3872  				it.fail = err
  3873  				return false
  3874  			}
  3875  			it.Event.Raw = log
  3876  			return true
  3877  
  3878  		default:
  3879  			return false
  3880  		}
  3881  	}
  3882  	// Iterator still in progress, wait for either a data or an error event
  3883  	select {
  3884  	case log := <-it.logs:
  3885  		it.Event = new(VaultextensionSwap)
  3886  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3887  			it.fail = err
  3888  			return false
  3889  		}
  3890  		it.Event.Raw = log
  3891  		return true
  3892  
  3893  	case err := <-it.sub.Err():
  3894  		it.done = true
  3895  		it.fail = err
  3896  		return it.Next()
  3897  	}
  3898  }
  3899  
  3900  // Error returns any retrieval or parsing error occurred during filtering.
  3901  func (it *VaultextensionSwapIterator) Error() error {
  3902  	return it.fail
  3903  }
  3904  
  3905  // Close terminates the iteration process, releasing any pending underlying
  3906  // resources.
  3907  func (it *VaultextensionSwapIterator) Close() error {
  3908  	it.sub.Unsubscribe()
  3909  	return nil
  3910  }
  3911  
  3912  // VaultextensionSwap represents a Swap event raised by the Vaultextension contract.
  3913  type VaultextensionSwap struct {
  3914  	Pool              common.Address
  3915  	TokenIn           common.Address
  3916  	TokenOut          common.Address
  3917  	AmountIn          *big.Int
  3918  	AmountOut         *big.Int
  3919  	SwapFeePercentage *big.Int
  3920  	SwapFeeAmount     *big.Int
  3921  	Raw               types.Log // Blockchain specific contextual infos
  3922  }
  3923  
  3924  // FilterSwap is a free log retrieval operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  3925  //
  3926  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  3927  func (_Vaultextension *VaultextensionFilterer) FilterSwap(opts *bind.FilterOpts, pool []common.Address, tokenIn []common.Address, tokenOut []common.Address) (*VaultextensionSwapIterator, error) {
  3928  
  3929  	var poolRule []interface{}
  3930  	for _, poolItem := range pool {
  3931  		poolRule = append(poolRule, poolItem)
  3932  	}
  3933  	var tokenInRule []interface{}
  3934  	for _, tokenInItem := range tokenIn {
  3935  		tokenInRule = append(tokenInRule, tokenInItem)
  3936  	}
  3937  	var tokenOutRule []interface{}
  3938  	for _, tokenOutItem := range tokenOut {
  3939  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  3940  	}
  3941  
  3942  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "Swap", poolRule, tokenInRule, tokenOutRule)
  3943  	if err != nil {
  3944  		return nil, err
  3945  	}
  3946  	return &VaultextensionSwapIterator{contract: _Vaultextension.contract, event: "Swap", logs: logs, sub: sub}, nil
  3947  }
  3948  
  3949  // WatchSwap is a free log subscription operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  3950  //
  3951  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  3952  func (_Vaultextension *VaultextensionFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *VaultextensionSwap, pool []common.Address, tokenIn []common.Address, tokenOut []common.Address) (event.Subscription, error) {
  3953  
  3954  	var poolRule []interface{}
  3955  	for _, poolItem := range pool {
  3956  		poolRule = append(poolRule, poolItem)
  3957  	}
  3958  	var tokenInRule []interface{}
  3959  	for _, tokenInItem := range tokenIn {
  3960  		tokenInRule = append(tokenInRule, tokenInItem)
  3961  	}
  3962  	var tokenOutRule []interface{}
  3963  	for _, tokenOutItem := range tokenOut {
  3964  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  3965  	}
  3966  
  3967  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "Swap", poolRule, tokenInRule, tokenOutRule)
  3968  	if err != nil {
  3969  		return nil, err
  3970  	}
  3971  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3972  		defer sub.Unsubscribe()
  3973  		for {
  3974  			select {
  3975  			case log := <-logs:
  3976  				// New log arrived, parse the event and forward to the user
  3977  				event := new(VaultextensionSwap)
  3978  				if err := _Vaultextension.contract.UnpackLog(event, "Swap", log); err != nil {
  3979  					return err
  3980  				}
  3981  				event.Raw = log
  3982  
  3983  				select {
  3984  				case sink <- event:
  3985  				case err := <-sub.Err():
  3986  					return err
  3987  				case <-quit:
  3988  					return nil
  3989  				}
  3990  			case err := <-sub.Err():
  3991  				return err
  3992  			case <-quit:
  3993  				return nil
  3994  			}
  3995  		}
  3996  	}), nil
  3997  }
  3998  
  3999  // ParseSwap is a log parse operation binding the contract event 0x0874b2d545cb271cdbda4e093020c452328b24af12382ed62c4d00f5c26709db.
  4000  //
  4001  // Solidity: event Swap(address indexed pool, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, uint256 swapFeePercentage, uint256 swapFeeAmount)
  4002  func (_Vaultextension *VaultextensionFilterer) ParseSwap(log types.Log) (*VaultextensionSwap, error) {
  4003  	event := new(VaultextensionSwap)
  4004  	if err := _Vaultextension.contract.UnpackLog(event, "Swap", log); err != nil {
  4005  		return nil, err
  4006  	}
  4007  	event.Raw = log
  4008  	return event, nil
  4009  }
  4010  
  4011  // VaultextensionSwapFeePercentageChangedIterator is returned from FilterSwapFeePercentageChanged and is used to iterate over the raw logs and unpacked data for SwapFeePercentageChanged events raised by the Vaultextension contract.
  4012  type VaultextensionSwapFeePercentageChangedIterator struct {
  4013  	Event *VaultextensionSwapFeePercentageChanged // Event containing the contract specifics and raw log
  4014  
  4015  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4016  	event    string              // Event name to use for unpacking event data
  4017  
  4018  	logs chan types.Log        // Log channel receiving the found contract events
  4019  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4020  	done bool                  // Whether the subscription completed delivering logs
  4021  	fail error                 // Occurred error to stop iteration
  4022  }
  4023  
  4024  // Next advances the iterator to the subsequent event, returning whether there
  4025  // are any more events found. In case of a retrieval or parsing error, false is
  4026  // returned and Error() can be queried for the exact failure.
  4027  func (it *VaultextensionSwapFeePercentageChangedIterator) Next() bool {
  4028  	// If the iterator failed, stop iterating
  4029  	if it.fail != nil {
  4030  		return false
  4031  	}
  4032  	// If the iterator completed, deliver directly whatever's available
  4033  	if it.done {
  4034  		select {
  4035  		case log := <-it.logs:
  4036  			it.Event = new(VaultextensionSwapFeePercentageChanged)
  4037  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4038  				it.fail = err
  4039  				return false
  4040  			}
  4041  			it.Event.Raw = log
  4042  			return true
  4043  
  4044  		default:
  4045  			return false
  4046  		}
  4047  	}
  4048  	// Iterator still in progress, wait for either a data or an error event
  4049  	select {
  4050  	case log := <-it.logs:
  4051  		it.Event = new(VaultextensionSwapFeePercentageChanged)
  4052  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4053  			it.fail = err
  4054  			return false
  4055  		}
  4056  		it.Event.Raw = log
  4057  		return true
  4058  
  4059  	case err := <-it.sub.Err():
  4060  		it.done = true
  4061  		it.fail = err
  4062  		return it.Next()
  4063  	}
  4064  }
  4065  
  4066  // Error returns any retrieval or parsing error occurred during filtering.
  4067  func (it *VaultextensionSwapFeePercentageChangedIterator) Error() error {
  4068  	return it.fail
  4069  }
  4070  
  4071  // Close terminates the iteration process, releasing any pending underlying
  4072  // resources.
  4073  func (it *VaultextensionSwapFeePercentageChangedIterator) Close() error {
  4074  	it.sub.Unsubscribe()
  4075  	return nil
  4076  }
  4077  
  4078  // VaultextensionSwapFeePercentageChanged represents a SwapFeePercentageChanged event raised by the Vaultextension contract.
  4079  type VaultextensionSwapFeePercentageChanged struct {
  4080  	Pool              common.Address
  4081  	SwapFeePercentage *big.Int
  4082  	Raw               types.Log // Blockchain specific contextual infos
  4083  }
  4084  
  4085  // FilterSwapFeePercentageChanged is a free log retrieval operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  4086  //
  4087  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  4088  func (_Vaultextension *VaultextensionFilterer) FilterSwapFeePercentageChanged(opts *bind.FilterOpts, pool []common.Address) (*VaultextensionSwapFeePercentageChangedIterator, error) {
  4089  
  4090  	var poolRule []interface{}
  4091  	for _, poolItem := range pool {
  4092  		poolRule = append(poolRule, poolItem)
  4093  	}
  4094  
  4095  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "SwapFeePercentageChanged", poolRule)
  4096  	if err != nil {
  4097  		return nil, err
  4098  	}
  4099  	return &VaultextensionSwapFeePercentageChangedIterator{contract: _Vaultextension.contract, event: "SwapFeePercentageChanged", logs: logs, sub: sub}, nil
  4100  }
  4101  
  4102  // WatchSwapFeePercentageChanged is a free log subscription operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  4103  //
  4104  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  4105  func (_Vaultextension *VaultextensionFilterer) WatchSwapFeePercentageChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionSwapFeePercentageChanged, pool []common.Address) (event.Subscription, error) {
  4106  
  4107  	var poolRule []interface{}
  4108  	for _, poolItem := range pool {
  4109  		poolRule = append(poolRule, poolItem)
  4110  	}
  4111  
  4112  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "SwapFeePercentageChanged", poolRule)
  4113  	if err != nil {
  4114  		return nil, err
  4115  	}
  4116  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4117  		defer sub.Unsubscribe()
  4118  		for {
  4119  			select {
  4120  			case log := <-logs:
  4121  				// New log arrived, parse the event and forward to the user
  4122  				event := new(VaultextensionSwapFeePercentageChanged)
  4123  				if err := _Vaultextension.contract.UnpackLog(event, "SwapFeePercentageChanged", log); err != nil {
  4124  					return err
  4125  				}
  4126  				event.Raw = log
  4127  
  4128  				select {
  4129  				case sink <- event:
  4130  				case err := <-sub.Err():
  4131  					return err
  4132  				case <-quit:
  4133  					return nil
  4134  				}
  4135  			case err := <-sub.Err():
  4136  				return err
  4137  			case <-quit:
  4138  				return nil
  4139  			}
  4140  		}
  4141  	}), nil
  4142  }
  4143  
  4144  // ParseSwapFeePercentageChanged is a log parse operation binding the contract event 0x89d41522342fabac1471ca6073a5623e5caf367b03ca6e9a001478d0cf8be4a1.
  4145  //
  4146  // Solidity: event SwapFeePercentageChanged(address indexed pool, uint256 swapFeePercentage)
  4147  func (_Vaultextension *VaultextensionFilterer) ParseSwapFeePercentageChanged(log types.Log) (*VaultextensionSwapFeePercentageChanged, error) {
  4148  	event := new(VaultextensionSwapFeePercentageChanged)
  4149  	if err := _Vaultextension.contract.UnpackLog(event, "SwapFeePercentageChanged", log); err != nil {
  4150  		return nil, err
  4151  	}
  4152  	event.Raw = log
  4153  	return event, nil
  4154  }
  4155  
  4156  // VaultextensionTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the Vaultextension contract.
  4157  type VaultextensionTransferIterator struct {
  4158  	Event *VaultextensionTransfer // Event containing the contract specifics and raw log
  4159  
  4160  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4161  	event    string              // Event name to use for unpacking event data
  4162  
  4163  	logs chan types.Log        // Log channel receiving the found contract events
  4164  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4165  	done bool                  // Whether the subscription completed delivering logs
  4166  	fail error                 // Occurred error to stop iteration
  4167  }
  4168  
  4169  // Next advances the iterator to the subsequent event, returning whether there
  4170  // are any more events found. In case of a retrieval or parsing error, false is
  4171  // returned and Error() can be queried for the exact failure.
  4172  func (it *VaultextensionTransferIterator) Next() bool {
  4173  	// If the iterator failed, stop iterating
  4174  	if it.fail != nil {
  4175  		return false
  4176  	}
  4177  	// If the iterator completed, deliver directly whatever's available
  4178  	if it.done {
  4179  		select {
  4180  		case log := <-it.logs:
  4181  			it.Event = new(VaultextensionTransfer)
  4182  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4183  				it.fail = err
  4184  				return false
  4185  			}
  4186  			it.Event.Raw = log
  4187  			return true
  4188  
  4189  		default:
  4190  			return false
  4191  		}
  4192  	}
  4193  	// Iterator still in progress, wait for either a data or an error event
  4194  	select {
  4195  	case log := <-it.logs:
  4196  		it.Event = new(VaultextensionTransfer)
  4197  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4198  			it.fail = err
  4199  			return false
  4200  		}
  4201  		it.Event.Raw = log
  4202  		return true
  4203  
  4204  	case err := <-it.sub.Err():
  4205  		it.done = true
  4206  		it.fail = err
  4207  		return it.Next()
  4208  	}
  4209  }
  4210  
  4211  // Error returns any retrieval or parsing error occurred during filtering.
  4212  func (it *VaultextensionTransferIterator) Error() error {
  4213  	return it.fail
  4214  }
  4215  
  4216  // Close terminates the iteration process, releasing any pending underlying
  4217  // resources.
  4218  func (it *VaultextensionTransferIterator) Close() error {
  4219  	it.sub.Unsubscribe()
  4220  	return nil
  4221  }
  4222  
  4223  // VaultextensionTransfer represents a Transfer event raised by the Vaultextension contract.
  4224  type VaultextensionTransfer struct {
  4225  	Pool  common.Address
  4226  	From  common.Address
  4227  	To    common.Address
  4228  	Value *big.Int
  4229  	Raw   types.Log // Blockchain specific contextual infos
  4230  }
  4231  
  4232  // FilterTransfer is a free log retrieval operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  4233  //
  4234  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  4235  func (_Vaultextension *VaultextensionFilterer) FilterTransfer(opts *bind.FilterOpts, pool []common.Address, from []common.Address, to []common.Address) (*VaultextensionTransferIterator, error) {
  4236  
  4237  	var poolRule []interface{}
  4238  	for _, poolItem := range pool {
  4239  		poolRule = append(poolRule, poolItem)
  4240  	}
  4241  	var fromRule []interface{}
  4242  	for _, fromItem := range from {
  4243  		fromRule = append(fromRule, fromItem)
  4244  	}
  4245  	var toRule []interface{}
  4246  	for _, toItem := range to {
  4247  		toRule = append(toRule, toItem)
  4248  	}
  4249  
  4250  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "Transfer", poolRule, fromRule, toRule)
  4251  	if err != nil {
  4252  		return nil, err
  4253  	}
  4254  	return &VaultextensionTransferIterator{contract: _Vaultextension.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4255  }
  4256  
  4257  // WatchTransfer is a free log subscription operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  4258  //
  4259  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  4260  func (_Vaultextension *VaultextensionFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *VaultextensionTransfer, pool []common.Address, from []common.Address, to []common.Address) (event.Subscription, error) {
  4261  
  4262  	var poolRule []interface{}
  4263  	for _, poolItem := range pool {
  4264  		poolRule = append(poolRule, poolItem)
  4265  	}
  4266  	var fromRule []interface{}
  4267  	for _, fromItem := range from {
  4268  		fromRule = append(fromRule, fromItem)
  4269  	}
  4270  	var toRule []interface{}
  4271  	for _, toItem := range to {
  4272  		toRule = append(toRule, toItem)
  4273  	}
  4274  
  4275  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "Transfer", poolRule, fromRule, toRule)
  4276  	if err != nil {
  4277  		return nil, err
  4278  	}
  4279  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4280  		defer sub.Unsubscribe()
  4281  		for {
  4282  			select {
  4283  			case log := <-logs:
  4284  				// New log arrived, parse the event and forward to the user
  4285  				event := new(VaultextensionTransfer)
  4286  				if err := _Vaultextension.contract.UnpackLog(event, "Transfer", log); err != nil {
  4287  					return err
  4288  				}
  4289  				event.Raw = log
  4290  
  4291  				select {
  4292  				case sink <- event:
  4293  				case err := <-sub.Err():
  4294  					return err
  4295  				case <-quit:
  4296  					return nil
  4297  				}
  4298  			case err := <-sub.Err():
  4299  				return err
  4300  			case <-quit:
  4301  				return nil
  4302  			}
  4303  		}
  4304  	}), nil
  4305  }
  4306  
  4307  // ParseTransfer is a log parse operation binding the contract event 0xd1398bee19313d6bf672ccb116e51f4a1a947e91c757907f51fbb5b5e56c698f.
  4308  //
  4309  // Solidity: event Transfer(address indexed pool, address indexed from, address indexed to, uint256 value)
  4310  func (_Vaultextension *VaultextensionFilterer) ParseTransfer(log types.Log) (*VaultextensionTransfer, error) {
  4311  	event := new(VaultextensionTransfer)
  4312  	if err := _Vaultextension.contract.UnpackLog(event, "Transfer", log); err != nil {
  4313  		return nil, err
  4314  	}
  4315  	event.Raw = log
  4316  	return event, nil
  4317  }
  4318  
  4319  // VaultextensionUnwrapIterator is returned from FilterUnwrap and is used to iterate over the raw logs and unpacked data for Unwrap events raised by the Vaultextension contract.
  4320  type VaultextensionUnwrapIterator struct {
  4321  	Event *VaultextensionUnwrap // Event containing the contract specifics and raw log
  4322  
  4323  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4324  	event    string              // Event name to use for unpacking event data
  4325  
  4326  	logs chan types.Log        // Log channel receiving the found contract events
  4327  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4328  	done bool                  // Whether the subscription completed delivering logs
  4329  	fail error                 // Occurred error to stop iteration
  4330  }
  4331  
  4332  // Next advances the iterator to the subsequent event, returning whether there
  4333  // are any more events found. In case of a retrieval or parsing error, false is
  4334  // returned and Error() can be queried for the exact failure.
  4335  func (it *VaultextensionUnwrapIterator) Next() bool {
  4336  	// If the iterator failed, stop iterating
  4337  	if it.fail != nil {
  4338  		return false
  4339  	}
  4340  	// If the iterator completed, deliver directly whatever's available
  4341  	if it.done {
  4342  		select {
  4343  		case log := <-it.logs:
  4344  			it.Event = new(VaultextensionUnwrap)
  4345  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4346  				it.fail = err
  4347  				return false
  4348  			}
  4349  			it.Event.Raw = log
  4350  			return true
  4351  
  4352  		default:
  4353  			return false
  4354  		}
  4355  	}
  4356  	// Iterator still in progress, wait for either a data or an error event
  4357  	select {
  4358  	case log := <-it.logs:
  4359  		it.Event = new(VaultextensionUnwrap)
  4360  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4361  			it.fail = err
  4362  			return false
  4363  		}
  4364  		it.Event.Raw = log
  4365  		return true
  4366  
  4367  	case err := <-it.sub.Err():
  4368  		it.done = true
  4369  		it.fail = err
  4370  		return it.Next()
  4371  	}
  4372  }
  4373  
  4374  // Error returns any retrieval or parsing error occurred during filtering.
  4375  func (it *VaultextensionUnwrapIterator) Error() error {
  4376  	return it.fail
  4377  }
  4378  
  4379  // Close terminates the iteration process, releasing any pending underlying
  4380  // resources.
  4381  func (it *VaultextensionUnwrapIterator) Close() error {
  4382  	it.sub.Unsubscribe()
  4383  	return nil
  4384  }
  4385  
  4386  // VaultextensionUnwrap represents a Unwrap event raised by the Vaultextension contract.
  4387  type VaultextensionUnwrap struct {
  4388  	WrappedToken        common.Address
  4389  	BurnedShares        *big.Int
  4390  	WithdrawnUnderlying *big.Int
  4391  	BufferBalances      [32]byte
  4392  	Raw                 types.Log // Blockchain specific contextual infos
  4393  }
  4394  
  4395  // FilterUnwrap is a free log retrieval operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  4396  //
  4397  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  4398  func (_Vaultextension *VaultextensionFilterer) FilterUnwrap(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultextensionUnwrapIterator, error) {
  4399  
  4400  	var wrappedTokenRule []interface{}
  4401  	for _, wrappedTokenItem := range wrappedToken {
  4402  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  4403  	}
  4404  
  4405  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "Unwrap", wrappedTokenRule)
  4406  	if err != nil {
  4407  		return nil, err
  4408  	}
  4409  	return &VaultextensionUnwrapIterator{contract: _Vaultextension.contract, event: "Unwrap", logs: logs, sub: sub}, nil
  4410  }
  4411  
  4412  // WatchUnwrap is a free log subscription operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  4413  //
  4414  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  4415  func (_Vaultextension *VaultextensionFilterer) WatchUnwrap(opts *bind.WatchOpts, sink chan<- *VaultextensionUnwrap, wrappedToken []common.Address) (event.Subscription, error) {
  4416  
  4417  	var wrappedTokenRule []interface{}
  4418  	for _, wrappedTokenItem := range wrappedToken {
  4419  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  4420  	}
  4421  
  4422  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "Unwrap", wrappedTokenRule)
  4423  	if err != nil {
  4424  		return nil, err
  4425  	}
  4426  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4427  		defer sub.Unsubscribe()
  4428  		for {
  4429  			select {
  4430  			case log := <-logs:
  4431  				// New log arrived, parse the event and forward to the user
  4432  				event := new(VaultextensionUnwrap)
  4433  				if err := _Vaultextension.contract.UnpackLog(event, "Unwrap", log); err != nil {
  4434  					return err
  4435  				}
  4436  				event.Raw = log
  4437  
  4438  				select {
  4439  				case sink <- event:
  4440  				case err := <-sub.Err():
  4441  					return err
  4442  				case <-quit:
  4443  					return nil
  4444  				}
  4445  			case err := <-sub.Err():
  4446  				return err
  4447  			case <-quit:
  4448  				return nil
  4449  			}
  4450  		}
  4451  	}), nil
  4452  }
  4453  
  4454  // ParseUnwrap is a log parse operation binding the contract event 0xeeb740c90bf2b18c9532eb7d473137767036d893dff3e009f32718f821b2a4c0.
  4455  //
  4456  // Solidity: event Unwrap(address indexed wrappedToken, uint256 burnedShares, uint256 withdrawnUnderlying, bytes32 bufferBalances)
  4457  func (_Vaultextension *VaultextensionFilterer) ParseUnwrap(log types.Log) (*VaultextensionUnwrap, error) {
  4458  	event := new(VaultextensionUnwrap)
  4459  	if err := _Vaultextension.contract.UnpackLog(event, "Unwrap", log); err != nil {
  4460  		return nil, err
  4461  	}
  4462  	event.Raw = log
  4463  	return event, nil
  4464  }
  4465  
  4466  // VaultextensionVaultAuxiliaryIterator is returned from FilterVaultAuxiliary and is used to iterate over the raw logs and unpacked data for VaultAuxiliary events raised by the Vaultextension contract.
  4467  type VaultextensionVaultAuxiliaryIterator struct {
  4468  	Event *VaultextensionVaultAuxiliary // Event containing the contract specifics and raw log
  4469  
  4470  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4471  	event    string              // Event name to use for unpacking event data
  4472  
  4473  	logs chan types.Log        // Log channel receiving the found contract events
  4474  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4475  	done bool                  // Whether the subscription completed delivering logs
  4476  	fail error                 // Occurred error to stop iteration
  4477  }
  4478  
  4479  // Next advances the iterator to the subsequent event, returning whether there
  4480  // are any more events found. In case of a retrieval or parsing error, false is
  4481  // returned and Error() can be queried for the exact failure.
  4482  func (it *VaultextensionVaultAuxiliaryIterator) Next() bool {
  4483  	// If the iterator failed, stop iterating
  4484  	if it.fail != nil {
  4485  		return false
  4486  	}
  4487  	// If the iterator completed, deliver directly whatever's available
  4488  	if it.done {
  4489  		select {
  4490  		case log := <-it.logs:
  4491  			it.Event = new(VaultextensionVaultAuxiliary)
  4492  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4493  				it.fail = err
  4494  				return false
  4495  			}
  4496  			it.Event.Raw = log
  4497  			return true
  4498  
  4499  		default:
  4500  			return false
  4501  		}
  4502  	}
  4503  	// Iterator still in progress, wait for either a data or an error event
  4504  	select {
  4505  	case log := <-it.logs:
  4506  		it.Event = new(VaultextensionVaultAuxiliary)
  4507  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4508  			it.fail = err
  4509  			return false
  4510  		}
  4511  		it.Event.Raw = log
  4512  		return true
  4513  
  4514  	case err := <-it.sub.Err():
  4515  		it.done = true
  4516  		it.fail = err
  4517  		return it.Next()
  4518  	}
  4519  }
  4520  
  4521  // Error returns any retrieval or parsing error occurred during filtering.
  4522  func (it *VaultextensionVaultAuxiliaryIterator) Error() error {
  4523  	return it.fail
  4524  }
  4525  
  4526  // Close terminates the iteration process, releasing any pending underlying
  4527  // resources.
  4528  func (it *VaultextensionVaultAuxiliaryIterator) Close() error {
  4529  	it.sub.Unsubscribe()
  4530  	return nil
  4531  }
  4532  
  4533  // VaultextensionVaultAuxiliary represents a VaultAuxiliary event raised by the Vaultextension contract.
  4534  type VaultextensionVaultAuxiliary struct {
  4535  	Pool      common.Address
  4536  	EventKey  [32]byte
  4537  	EventData []byte
  4538  	Raw       types.Log // Blockchain specific contextual infos
  4539  }
  4540  
  4541  // FilterVaultAuxiliary is a free log retrieval operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  4542  //
  4543  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  4544  func (_Vaultextension *VaultextensionFilterer) FilterVaultAuxiliary(opts *bind.FilterOpts, pool []common.Address, eventKey [][32]byte) (*VaultextensionVaultAuxiliaryIterator, error) {
  4545  
  4546  	var poolRule []interface{}
  4547  	for _, poolItem := range pool {
  4548  		poolRule = append(poolRule, poolItem)
  4549  	}
  4550  	var eventKeyRule []interface{}
  4551  	for _, eventKeyItem := range eventKey {
  4552  		eventKeyRule = append(eventKeyRule, eventKeyItem)
  4553  	}
  4554  
  4555  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "VaultAuxiliary", poolRule, eventKeyRule)
  4556  	if err != nil {
  4557  		return nil, err
  4558  	}
  4559  	return &VaultextensionVaultAuxiliaryIterator{contract: _Vaultextension.contract, event: "VaultAuxiliary", logs: logs, sub: sub}, nil
  4560  }
  4561  
  4562  // WatchVaultAuxiliary is a free log subscription operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  4563  //
  4564  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  4565  func (_Vaultextension *VaultextensionFilterer) WatchVaultAuxiliary(opts *bind.WatchOpts, sink chan<- *VaultextensionVaultAuxiliary, pool []common.Address, eventKey [][32]byte) (event.Subscription, error) {
  4566  
  4567  	var poolRule []interface{}
  4568  	for _, poolItem := range pool {
  4569  		poolRule = append(poolRule, poolItem)
  4570  	}
  4571  	var eventKeyRule []interface{}
  4572  	for _, eventKeyItem := range eventKey {
  4573  		eventKeyRule = append(eventKeyRule, eventKeyItem)
  4574  	}
  4575  
  4576  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "VaultAuxiliary", poolRule, eventKeyRule)
  4577  	if err != nil {
  4578  		return nil, err
  4579  	}
  4580  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4581  		defer sub.Unsubscribe()
  4582  		for {
  4583  			select {
  4584  			case log := <-logs:
  4585  				// New log arrived, parse the event and forward to the user
  4586  				event := new(VaultextensionVaultAuxiliary)
  4587  				if err := _Vaultextension.contract.UnpackLog(event, "VaultAuxiliary", log); err != nil {
  4588  					return err
  4589  				}
  4590  				event.Raw = log
  4591  
  4592  				select {
  4593  				case sink <- event:
  4594  				case err := <-sub.Err():
  4595  					return err
  4596  				case <-quit:
  4597  					return nil
  4598  				}
  4599  			case err := <-sub.Err():
  4600  				return err
  4601  			case <-quit:
  4602  				return nil
  4603  			}
  4604  		}
  4605  	}), nil
  4606  }
  4607  
  4608  // ParseVaultAuxiliary is a log parse operation binding the contract event 0x4bc4412e210115456903c65b5277d299a505e79f2eb852b92b1ca52d85856428.
  4609  //
  4610  // Solidity: event VaultAuxiliary(address indexed pool, bytes32 indexed eventKey, bytes eventData)
  4611  func (_Vaultextension *VaultextensionFilterer) ParseVaultAuxiliary(log types.Log) (*VaultextensionVaultAuxiliary, error) {
  4612  	event := new(VaultextensionVaultAuxiliary)
  4613  	if err := _Vaultextension.contract.UnpackLog(event, "VaultAuxiliary", log); err != nil {
  4614  		return nil, err
  4615  	}
  4616  	event.Raw = log
  4617  	return event, nil
  4618  }
  4619  
  4620  // VaultextensionVaultBuffersPausedStateChangedIterator is returned from FilterVaultBuffersPausedStateChanged and is used to iterate over the raw logs and unpacked data for VaultBuffersPausedStateChanged events raised by the Vaultextension contract.
  4621  type VaultextensionVaultBuffersPausedStateChangedIterator struct {
  4622  	Event *VaultextensionVaultBuffersPausedStateChanged // Event containing the contract specifics and raw log
  4623  
  4624  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4625  	event    string              // Event name to use for unpacking event data
  4626  
  4627  	logs chan types.Log        // Log channel receiving the found contract events
  4628  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4629  	done bool                  // Whether the subscription completed delivering logs
  4630  	fail error                 // Occurred error to stop iteration
  4631  }
  4632  
  4633  // Next advances the iterator to the subsequent event, returning whether there
  4634  // are any more events found. In case of a retrieval or parsing error, false is
  4635  // returned and Error() can be queried for the exact failure.
  4636  func (it *VaultextensionVaultBuffersPausedStateChangedIterator) Next() bool {
  4637  	// If the iterator failed, stop iterating
  4638  	if it.fail != nil {
  4639  		return false
  4640  	}
  4641  	// If the iterator completed, deliver directly whatever's available
  4642  	if it.done {
  4643  		select {
  4644  		case log := <-it.logs:
  4645  			it.Event = new(VaultextensionVaultBuffersPausedStateChanged)
  4646  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4647  				it.fail = err
  4648  				return false
  4649  			}
  4650  			it.Event.Raw = log
  4651  			return true
  4652  
  4653  		default:
  4654  			return false
  4655  		}
  4656  	}
  4657  	// Iterator still in progress, wait for either a data or an error event
  4658  	select {
  4659  	case log := <-it.logs:
  4660  		it.Event = new(VaultextensionVaultBuffersPausedStateChanged)
  4661  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4662  			it.fail = err
  4663  			return false
  4664  		}
  4665  		it.Event.Raw = log
  4666  		return true
  4667  
  4668  	case err := <-it.sub.Err():
  4669  		it.done = true
  4670  		it.fail = err
  4671  		return it.Next()
  4672  	}
  4673  }
  4674  
  4675  // Error returns any retrieval or parsing error occurred during filtering.
  4676  func (it *VaultextensionVaultBuffersPausedStateChangedIterator) Error() error {
  4677  	return it.fail
  4678  }
  4679  
  4680  // Close terminates the iteration process, releasing any pending underlying
  4681  // resources.
  4682  func (it *VaultextensionVaultBuffersPausedStateChangedIterator) Close() error {
  4683  	it.sub.Unsubscribe()
  4684  	return nil
  4685  }
  4686  
  4687  // VaultextensionVaultBuffersPausedStateChanged represents a VaultBuffersPausedStateChanged event raised by the Vaultextension contract.
  4688  type VaultextensionVaultBuffersPausedStateChanged struct {
  4689  	Paused bool
  4690  	Raw    types.Log // Blockchain specific contextual infos
  4691  }
  4692  
  4693  // FilterVaultBuffersPausedStateChanged is a free log retrieval operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  4694  //
  4695  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  4696  func (_Vaultextension *VaultextensionFilterer) FilterVaultBuffersPausedStateChanged(opts *bind.FilterOpts) (*VaultextensionVaultBuffersPausedStateChangedIterator, error) {
  4697  
  4698  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "VaultBuffersPausedStateChanged")
  4699  	if err != nil {
  4700  		return nil, err
  4701  	}
  4702  	return &VaultextensionVaultBuffersPausedStateChangedIterator{contract: _Vaultextension.contract, event: "VaultBuffersPausedStateChanged", logs: logs, sub: sub}, nil
  4703  }
  4704  
  4705  // WatchVaultBuffersPausedStateChanged is a free log subscription operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  4706  //
  4707  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  4708  func (_Vaultextension *VaultextensionFilterer) WatchVaultBuffersPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionVaultBuffersPausedStateChanged) (event.Subscription, error) {
  4709  
  4710  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "VaultBuffersPausedStateChanged")
  4711  	if err != nil {
  4712  		return nil, err
  4713  	}
  4714  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4715  		defer sub.Unsubscribe()
  4716  		for {
  4717  			select {
  4718  			case log := <-logs:
  4719  				// New log arrived, parse the event and forward to the user
  4720  				event := new(VaultextensionVaultBuffersPausedStateChanged)
  4721  				if err := _Vaultextension.contract.UnpackLog(event, "VaultBuffersPausedStateChanged", log); err != nil {
  4722  					return err
  4723  				}
  4724  				event.Raw = log
  4725  
  4726  				select {
  4727  				case sink <- event:
  4728  				case err := <-sub.Err():
  4729  					return err
  4730  				case <-quit:
  4731  					return nil
  4732  				}
  4733  			case err := <-sub.Err():
  4734  				return err
  4735  			case <-quit:
  4736  				return nil
  4737  			}
  4738  		}
  4739  	}), nil
  4740  }
  4741  
  4742  // ParseVaultBuffersPausedStateChanged is a log parse operation binding the contract event 0x300c7ca619eb846386aa0a6e5916ac2a41406448b0a2e99ba9ccafeb899015a5.
  4743  //
  4744  // Solidity: event VaultBuffersPausedStateChanged(bool paused)
  4745  func (_Vaultextension *VaultextensionFilterer) ParseVaultBuffersPausedStateChanged(log types.Log) (*VaultextensionVaultBuffersPausedStateChanged, error) {
  4746  	event := new(VaultextensionVaultBuffersPausedStateChanged)
  4747  	if err := _Vaultextension.contract.UnpackLog(event, "VaultBuffersPausedStateChanged", log); err != nil {
  4748  		return nil, err
  4749  	}
  4750  	event.Raw = log
  4751  	return event, nil
  4752  }
  4753  
  4754  // VaultextensionVaultPausedStateChangedIterator is returned from FilterVaultPausedStateChanged and is used to iterate over the raw logs and unpacked data for VaultPausedStateChanged events raised by the Vaultextension contract.
  4755  type VaultextensionVaultPausedStateChangedIterator struct {
  4756  	Event *VaultextensionVaultPausedStateChanged // Event containing the contract specifics and raw log
  4757  
  4758  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4759  	event    string              // Event name to use for unpacking event data
  4760  
  4761  	logs chan types.Log        // Log channel receiving the found contract events
  4762  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4763  	done bool                  // Whether the subscription completed delivering logs
  4764  	fail error                 // Occurred error to stop iteration
  4765  }
  4766  
  4767  // Next advances the iterator to the subsequent event, returning whether there
  4768  // are any more events found. In case of a retrieval or parsing error, false is
  4769  // returned and Error() can be queried for the exact failure.
  4770  func (it *VaultextensionVaultPausedStateChangedIterator) Next() bool {
  4771  	// If the iterator failed, stop iterating
  4772  	if it.fail != nil {
  4773  		return false
  4774  	}
  4775  	// If the iterator completed, deliver directly whatever's available
  4776  	if it.done {
  4777  		select {
  4778  		case log := <-it.logs:
  4779  			it.Event = new(VaultextensionVaultPausedStateChanged)
  4780  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4781  				it.fail = err
  4782  				return false
  4783  			}
  4784  			it.Event.Raw = log
  4785  			return true
  4786  
  4787  		default:
  4788  			return false
  4789  		}
  4790  	}
  4791  	// Iterator still in progress, wait for either a data or an error event
  4792  	select {
  4793  	case log := <-it.logs:
  4794  		it.Event = new(VaultextensionVaultPausedStateChanged)
  4795  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4796  			it.fail = err
  4797  			return false
  4798  		}
  4799  		it.Event.Raw = log
  4800  		return true
  4801  
  4802  	case err := <-it.sub.Err():
  4803  		it.done = true
  4804  		it.fail = err
  4805  		return it.Next()
  4806  	}
  4807  }
  4808  
  4809  // Error returns any retrieval or parsing error occurred during filtering.
  4810  func (it *VaultextensionVaultPausedStateChangedIterator) Error() error {
  4811  	return it.fail
  4812  }
  4813  
  4814  // Close terminates the iteration process, releasing any pending underlying
  4815  // resources.
  4816  func (it *VaultextensionVaultPausedStateChangedIterator) Close() error {
  4817  	it.sub.Unsubscribe()
  4818  	return nil
  4819  }
  4820  
  4821  // VaultextensionVaultPausedStateChanged represents a VaultPausedStateChanged event raised by the Vaultextension contract.
  4822  type VaultextensionVaultPausedStateChanged struct {
  4823  	Paused bool
  4824  	Raw    types.Log // Blockchain specific contextual infos
  4825  }
  4826  
  4827  // FilterVaultPausedStateChanged is a free log retrieval operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  4828  //
  4829  // Solidity: event VaultPausedStateChanged(bool paused)
  4830  func (_Vaultextension *VaultextensionFilterer) FilterVaultPausedStateChanged(opts *bind.FilterOpts) (*VaultextensionVaultPausedStateChangedIterator, error) {
  4831  
  4832  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "VaultPausedStateChanged")
  4833  	if err != nil {
  4834  		return nil, err
  4835  	}
  4836  	return &VaultextensionVaultPausedStateChangedIterator{contract: _Vaultextension.contract, event: "VaultPausedStateChanged", logs: logs, sub: sub}, nil
  4837  }
  4838  
  4839  // WatchVaultPausedStateChanged is a free log subscription operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  4840  //
  4841  // Solidity: event VaultPausedStateChanged(bool paused)
  4842  func (_Vaultextension *VaultextensionFilterer) WatchVaultPausedStateChanged(opts *bind.WatchOpts, sink chan<- *VaultextensionVaultPausedStateChanged) (event.Subscription, error) {
  4843  
  4844  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "VaultPausedStateChanged")
  4845  	if err != nil {
  4846  		return nil, err
  4847  	}
  4848  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4849  		defer sub.Unsubscribe()
  4850  		for {
  4851  			select {
  4852  			case log := <-logs:
  4853  				// New log arrived, parse the event and forward to the user
  4854  				event := new(VaultextensionVaultPausedStateChanged)
  4855  				if err := _Vaultextension.contract.UnpackLog(event, "VaultPausedStateChanged", log); err != nil {
  4856  					return err
  4857  				}
  4858  				event.Raw = log
  4859  
  4860  				select {
  4861  				case sink <- event:
  4862  				case err := <-sub.Err():
  4863  					return err
  4864  				case <-quit:
  4865  					return nil
  4866  				}
  4867  			case err := <-sub.Err():
  4868  				return err
  4869  			case <-quit:
  4870  				return nil
  4871  			}
  4872  		}
  4873  	}), nil
  4874  }
  4875  
  4876  // ParseVaultPausedStateChanged is a log parse operation binding the contract event 0xe0629fe656e45ad7fd63a24b899da368690024c07043b88e57aee5095b1d3d02.
  4877  //
  4878  // Solidity: event VaultPausedStateChanged(bool paused)
  4879  func (_Vaultextension *VaultextensionFilterer) ParseVaultPausedStateChanged(log types.Log) (*VaultextensionVaultPausedStateChanged, error) {
  4880  	event := new(VaultextensionVaultPausedStateChanged)
  4881  	if err := _Vaultextension.contract.UnpackLog(event, "VaultPausedStateChanged", log); err != nil {
  4882  		return nil, err
  4883  	}
  4884  	event.Raw = log
  4885  	return event, nil
  4886  }
  4887  
  4888  // VaultextensionVaultQueriesDisabledIterator is returned from FilterVaultQueriesDisabled and is used to iterate over the raw logs and unpacked data for VaultQueriesDisabled events raised by the Vaultextension contract.
  4889  type VaultextensionVaultQueriesDisabledIterator struct {
  4890  	Event *VaultextensionVaultQueriesDisabled // Event containing the contract specifics and raw log
  4891  
  4892  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4893  	event    string              // Event name to use for unpacking event data
  4894  
  4895  	logs chan types.Log        // Log channel receiving the found contract events
  4896  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4897  	done bool                  // Whether the subscription completed delivering logs
  4898  	fail error                 // Occurred error to stop iteration
  4899  }
  4900  
  4901  // Next advances the iterator to the subsequent event, returning whether there
  4902  // are any more events found. In case of a retrieval or parsing error, false is
  4903  // returned and Error() can be queried for the exact failure.
  4904  func (it *VaultextensionVaultQueriesDisabledIterator) Next() bool {
  4905  	// If the iterator failed, stop iterating
  4906  	if it.fail != nil {
  4907  		return false
  4908  	}
  4909  	// If the iterator completed, deliver directly whatever's available
  4910  	if it.done {
  4911  		select {
  4912  		case log := <-it.logs:
  4913  			it.Event = new(VaultextensionVaultQueriesDisabled)
  4914  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4915  				it.fail = err
  4916  				return false
  4917  			}
  4918  			it.Event.Raw = log
  4919  			return true
  4920  
  4921  		default:
  4922  			return false
  4923  		}
  4924  	}
  4925  	// Iterator still in progress, wait for either a data or an error event
  4926  	select {
  4927  	case log := <-it.logs:
  4928  		it.Event = new(VaultextensionVaultQueriesDisabled)
  4929  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4930  			it.fail = err
  4931  			return false
  4932  		}
  4933  		it.Event.Raw = log
  4934  		return true
  4935  
  4936  	case err := <-it.sub.Err():
  4937  		it.done = true
  4938  		it.fail = err
  4939  		return it.Next()
  4940  	}
  4941  }
  4942  
  4943  // Error returns any retrieval or parsing error occurred during filtering.
  4944  func (it *VaultextensionVaultQueriesDisabledIterator) Error() error {
  4945  	return it.fail
  4946  }
  4947  
  4948  // Close terminates the iteration process, releasing any pending underlying
  4949  // resources.
  4950  func (it *VaultextensionVaultQueriesDisabledIterator) Close() error {
  4951  	it.sub.Unsubscribe()
  4952  	return nil
  4953  }
  4954  
  4955  // VaultextensionVaultQueriesDisabled represents a VaultQueriesDisabled event raised by the Vaultextension contract.
  4956  type VaultextensionVaultQueriesDisabled struct {
  4957  	Raw types.Log // Blockchain specific contextual infos
  4958  }
  4959  
  4960  // FilterVaultQueriesDisabled is a free log retrieval operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  4961  //
  4962  // Solidity: event VaultQueriesDisabled()
  4963  func (_Vaultextension *VaultextensionFilterer) FilterVaultQueriesDisabled(opts *bind.FilterOpts) (*VaultextensionVaultQueriesDisabledIterator, error) {
  4964  
  4965  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "VaultQueriesDisabled")
  4966  	if err != nil {
  4967  		return nil, err
  4968  	}
  4969  	return &VaultextensionVaultQueriesDisabledIterator{contract: _Vaultextension.contract, event: "VaultQueriesDisabled", logs: logs, sub: sub}, nil
  4970  }
  4971  
  4972  // WatchVaultQueriesDisabled is a free log subscription operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  4973  //
  4974  // Solidity: event VaultQueriesDisabled()
  4975  func (_Vaultextension *VaultextensionFilterer) WatchVaultQueriesDisabled(opts *bind.WatchOpts, sink chan<- *VaultextensionVaultQueriesDisabled) (event.Subscription, error) {
  4976  
  4977  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "VaultQueriesDisabled")
  4978  	if err != nil {
  4979  		return nil, err
  4980  	}
  4981  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4982  		defer sub.Unsubscribe()
  4983  		for {
  4984  			select {
  4985  			case log := <-logs:
  4986  				// New log arrived, parse the event and forward to the user
  4987  				event := new(VaultextensionVaultQueriesDisabled)
  4988  				if err := _Vaultextension.contract.UnpackLog(event, "VaultQueriesDisabled", log); err != nil {
  4989  					return err
  4990  				}
  4991  				event.Raw = log
  4992  
  4993  				select {
  4994  				case sink <- event:
  4995  				case err := <-sub.Err():
  4996  					return err
  4997  				case <-quit:
  4998  					return nil
  4999  				}
  5000  			case err := <-sub.Err():
  5001  				return err
  5002  			case <-quit:
  5003  				return nil
  5004  			}
  5005  		}
  5006  	}), nil
  5007  }
  5008  
  5009  // ParseVaultQueriesDisabled is a log parse operation binding the contract event 0xbd204090fd387f08e3076528bf09b4fc99d8100d749eace96c06002d3fedc625.
  5010  //
  5011  // Solidity: event VaultQueriesDisabled()
  5012  func (_Vaultextension *VaultextensionFilterer) ParseVaultQueriesDisabled(log types.Log) (*VaultextensionVaultQueriesDisabled, error) {
  5013  	event := new(VaultextensionVaultQueriesDisabled)
  5014  	if err := _Vaultextension.contract.UnpackLog(event, "VaultQueriesDisabled", log); err != nil {
  5015  		return nil, err
  5016  	}
  5017  	event.Raw = log
  5018  	return event, nil
  5019  }
  5020  
  5021  // VaultextensionVaultQueriesEnabledIterator is returned from FilterVaultQueriesEnabled and is used to iterate over the raw logs and unpacked data for VaultQueriesEnabled events raised by the Vaultextension contract.
  5022  type VaultextensionVaultQueriesEnabledIterator struct {
  5023  	Event *VaultextensionVaultQueriesEnabled // Event containing the contract specifics and raw log
  5024  
  5025  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5026  	event    string              // Event name to use for unpacking event data
  5027  
  5028  	logs chan types.Log        // Log channel receiving the found contract events
  5029  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5030  	done bool                  // Whether the subscription completed delivering logs
  5031  	fail error                 // Occurred error to stop iteration
  5032  }
  5033  
  5034  // Next advances the iterator to the subsequent event, returning whether there
  5035  // are any more events found. In case of a retrieval or parsing error, false is
  5036  // returned and Error() can be queried for the exact failure.
  5037  func (it *VaultextensionVaultQueriesEnabledIterator) Next() bool {
  5038  	// If the iterator failed, stop iterating
  5039  	if it.fail != nil {
  5040  		return false
  5041  	}
  5042  	// If the iterator completed, deliver directly whatever's available
  5043  	if it.done {
  5044  		select {
  5045  		case log := <-it.logs:
  5046  			it.Event = new(VaultextensionVaultQueriesEnabled)
  5047  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5048  				it.fail = err
  5049  				return false
  5050  			}
  5051  			it.Event.Raw = log
  5052  			return true
  5053  
  5054  		default:
  5055  			return false
  5056  		}
  5057  	}
  5058  	// Iterator still in progress, wait for either a data or an error event
  5059  	select {
  5060  	case log := <-it.logs:
  5061  		it.Event = new(VaultextensionVaultQueriesEnabled)
  5062  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5063  			it.fail = err
  5064  			return false
  5065  		}
  5066  		it.Event.Raw = log
  5067  		return true
  5068  
  5069  	case err := <-it.sub.Err():
  5070  		it.done = true
  5071  		it.fail = err
  5072  		return it.Next()
  5073  	}
  5074  }
  5075  
  5076  // Error returns any retrieval or parsing error occurred during filtering.
  5077  func (it *VaultextensionVaultQueriesEnabledIterator) Error() error {
  5078  	return it.fail
  5079  }
  5080  
  5081  // Close terminates the iteration process, releasing any pending underlying
  5082  // resources.
  5083  func (it *VaultextensionVaultQueriesEnabledIterator) Close() error {
  5084  	it.sub.Unsubscribe()
  5085  	return nil
  5086  }
  5087  
  5088  // VaultextensionVaultQueriesEnabled represents a VaultQueriesEnabled event raised by the Vaultextension contract.
  5089  type VaultextensionVaultQueriesEnabled struct {
  5090  	Raw types.Log // Blockchain specific contextual infos
  5091  }
  5092  
  5093  // FilterVaultQueriesEnabled is a free log retrieval operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  5094  //
  5095  // Solidity: event VaultQueriesEnabled()
  5096  func (_Vaultextension *VaultextensionFilterer) FilterVaultQueriesEnabled(opts *bind.FilterOpts) (*VaultextensionVaultQueriesEnabledIterator, error) {
  5097  
  5098  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "VaultQueriesEnabled")
  5099  	if err != nil {
  5100  		return nil, err
  5101  	}
  5102  	return &VaultextensionVaultQueriesEnabledIterator{contract: _Vaultextension.contract, event: "VaultQueriesEnabled", logs: logs, sub: sub}, nil
  5103  }
  5104  
  5105  // WatchVaultQueriesEnabled is a free log subscription operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  5106  //
  5107  // Solidity: event VaultQueriesEnabled()
  5108  func (_Vaultextension *VaultextensionFilterer) WatchVaultQueriesEnabled(opts *bind.WatchOpts, sink chan<- *VaultextensionVaultQueriesEnabled) (event.Subscription, error) {
  5109  
  5110  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "VaultQueriesEnabled")
  5111  	if err != nil {
  5112  		return nil, err
  5113  	}
  5114  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5115  		defer sub.Unsubscribe()
  5116  		for {
  5117  			select {
  5118  			case log := <-logs:
  5119  				// New log arrived, parse the event and forward to the user
  5120  				event := new(VaultextensionVaultQueriesEnabled)
  5121  				if err := _Vaultextension.contract.UnpackLog(event, "VaultQueriesEnabled", log); err != nil {
  5122  					return err
  5123  				}
  5124  				event.Raw = log
  5125  
  5126  				select {
  5127  				case sink <- event:
  5128  				case err := <-sub.Err():
  5129  					return err
  5130  				case <-quit:
  5131  					return nil
  5132  				}
  5133  			case err := <-sub.Err():
  5134  				return err
  5135  			case <-quit:
  5136  				return nil
  5137  			}
  5138  		}
  5139  	}), nil
  5140  }
  5141  
  5142  // ParseVaultQueriesEnabled is a log parse operation binding the contract event 0x91d7478835f2b5adc315f5aad920f4a7f0a02f7fddf3042d17b2c80168ea17f5.
  5143  //
  5144  // Solidity: event VaultQueriesEnabled()
  5145  func (_Vaultextension *VaultextensionFilterer) ParseVaultQueriesEnabled(log types.Log) (*VaultextensionVaultQueriesEnabled, error) {
  5146  	event := new(VaultextensionVaultQueriesEnabled)
  5147  	if err := _Vaultextension.contract.UnpackLog(event, "VaultQueriesEnabled", log); err != nil {
  5148  		return nil, err
  5149  	}
  5150  	event.Raw = log
  5151  	return event, nil
  5152  }
  5153  
  5154  // VaultextensionWrapIterator is returned from FilterWrap and is used to iterate over the raw logs and unpacked data for Wrap events raised by the Vaultextension contract.
  5155  type VaultextensionWrapIterator struct {
  5156  	Event *VaultextensionWrap // Event containing the contract specifics and raw log
  5157  
  5158  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5159  	event    string              // Event name to use for unpacking event data
  5160  
  5161  	logs chan types.Log        // Log channel receiving the found contract events
  5162  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5163  	done bool                  // Whether the subscription completed delivering logs
  5164  	fail error                 // Occurred error to stop iteration
  5165  }
  5166  
  5167  // Next advances the iterator to the subsequent event, returning whether there
  5168  // are any more events found. In case of a retrieval or parsing error, false is
  5169  // returned and Error() can be queried for the exact failure.
  5170  func (it *VaultextensionWrapIterator) Next() bool {
  5171  	// If the iterator failed, stop iterating
  5172  	if it.fail != nil {
  5173  		return false
  5174  	}
  5175  	// If the iterator completed, deliver directly whatever's available
  5176  	if it.done {
  5177  		select {
  5178  		case log := <-it.logs:
  5179  			it.Event = new(VaultextensionWrap)
  5180  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5181  				it.fail = err
  5182  				return false
  5183  			}
  5184  			it.Event.Raw = log
  5185  			return true
  5186  
  5187  		default:
  5188  			return false
  5189  		}
  5190  	}
  5191  	// Iterator still in progress, wait for either a data or an error event
  5192  	select {
  5193  	case log := <-it.logs:
  5194  		it.Event = new(VaultextensionWrap)
  5195  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5196  			it.fail = err
  5197  			return false
  5198  		}
  5199  		it.Event.Raw = log
  5200  		return true
  5201  
  5202  	case err := <-it.sub.Err():
  5203  		it.done = true
  5204  		it.fail = err
  5205  		return it.Next()
  5206  	}
  5207  }
  5208  
  5209  // Error returns any retrieval or parsing error occurred during filtering.
  5210  func (it *VaultextensionWrapIterator) Error() error {
  5211  	return it.fail
  5212  }
  5213  
  5214  // Close terminates the iteration process, releasing any pending underlying
  5215  // resources.
  5216  func (it *VaultextensionWrapIterator) Close() error {
  5217  	it.sub.Unsubscribe()
  5218  	return nil
  5219  }
  5220  
  5221  // VaultextensionWrap represents a Wrap event raised by the Vaultextension contract.
  5222  type VaultextensionWrap struct {
  5223  	WrappedToken        common.Address
  5224  	DepositedUnderlying *big.Int
  5225  	MintedShares        *big.Int
  5226  	BufferBalances      [32]byte
  5227  	Raw                 types.Log // Blockchain specific contextual infos
  5228  }
  5229  
  5230  // FilterWrap is a free log retrieval operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  5231  //
  5232  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  5233  func (_Vaultextension *VaultextensionFilterer) FilterWrap(opts *bind.FilterOpts, wrappedToken []common.Address) (*VaultextensionWrapIterator, error) {
  5234  
  5235  	var wrappedTokenRule []interface{}
  5236  	for _, wrappedTokenItem := range wrappedToken {
  5237  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  5238  	}
  5239  
  5240  	logs, sub, err := _Vaultextension.contract.FilterLogs(opts, "Wrap", wrappedTokenRule)
  5241  	if err != nil {
  5242  		return nil, err
  5243  	}
  5244  	return &VaultextensionWrapIterator{contract: _Vaultextension.contract, event: "Wrap", logs: logs, sub: sub}, nil
  5245  }
  5246  
  5247  // WatchWrap is a free log subscription operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  5248  //
  5249  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  5250  func (_Vaultextension *VaultextensionFilterer) WatchWrap(opts *bind.WatchOpts, sink chan<- *VaultextensionWrap, wrappedToken []common.Address) (event.Subscription, error) {
  5251  
  5252  	var wrappedTokenRule []interface{}
  5253  	for _, wrappedTokenItem := range wrappedToken {
  5254  		wrappedTokenRule = append(wrappedTokenRule, wrappedTokenItem)
  5255  	}
  5256  
  5257  	logs, sub, err := _Vaultextension.contract.WatchLogs(opts, "Wrap", wrappedTokenRule)
  5258  	if err != nil {
  5259  		return nil, err
  5260  	}
  5261  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5262  		defer sub.Unsubscribe()
  5263  		for {
  5264  			select {
  5265  			case log := <-logs:
  5266  				// New log arrived, parse the event and forward to the user
  5267  				event := new(VaultextensionWrap)
  5268  				if err := _Vaultextension.contract.UnpackLog(event, "Wrap", log); err != nil {
  5269  					return err
  5270  				}
  5271  				event.Raw = log
  5272  
  5273  				select {
  5274  				case sink <- event:
  5275  				case err := <-sub.Err():
  5276  					return err
  5277  				case <-quit:
  5278  					return nil
  5279  				}
  5280  			case err := <-sub.Err():
  5281  				return err
  5282  			case <-quit:
  5283  				return nil
  5284  			}
  5285  		}
  5286  	}), nil
  5287  }
  5288  
  5289  // ParseWrap is a log parse operation binding the contract event 0x3771d13c67011e31e12031c54bb59b0bf544a80b81d280a3711e172aa8b7f47b.
  5290  //
  5291  // Solidity: event Wrap(address indexed wrappedToken, uint256 depositedUnderlying, uint256 mintedShares, bytes32 bufferBalances)
  5292  func (_Vaultextension *VaultextensionFilterer) ParseWrap(log types.Log) (*VaultextensionWrap, error) {
  5293  	event := new(VaultextensionWrap)
  5294  	if err := _Vaultextension.contract.UnpackLog(event, "Wrap", log); err != nil {
  5295  		return nil, err
  5296  	}
  5297  	event.Raw = log
  5298  	return event, nil
  5299  }