github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/balancerv2/vault/BalancerVault.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 balancervault
     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  )
    30  
    31  // IVaultBatchSwapStep is an auto generated low-level Go binding around an user-defined struct.
    32  type IVaultBatchSwapStep struct {
    33  	PoolId        [32]byte
    34  	AssetInIndex  *big.Int
    35  	AssetOutIndex *big.Int
    36  	Amount        *big.Int
    37  	UserData      []byte
    38  }
    39  
    40  // IVaultExitPoolRequest is an auto generated low-level Go binding around an user-defined struct.
    41  type IVaultExitPoolRequest struct {
    42  	Assets            []common.Address
    43  	MinAmountsOut     []*big.Int
    44  	UserData          []byte
    45  	ToInternalBalance bool
    46  }
    47  
    48  // IVaultFundManagement is an auto generated low-level Go binding around an user-defined struct.
    49  type IVaultFundManagement struct {
    50  	Sender              common.Address
    51  	FromInternalBalance bool
    52  	Recipient           common.Address
    53  	ToInternalBalance   bool
    54  }
    55  
    56  // IVaultJoinPoolRequest is an auto generated low-level Go binding around an user-defined struct.
    57  type IVaultJoinPoolRequest struct {
    58  	Assets              []common.Address
    59  	MaxAmountsIn        []*big.Int
    60  	UserData            []byte
    61  	FromInternalBalance bool
    62  }
    63  
    64  // IVaultPoolBalanceOp is an auto generated low-level Go binding around an user-defined struct.
    65  type IVaultPoolBalanceOp struct {
    66  	Kind   uint8
    67  	PoolId [32]byte
    68  	Token  common.Address
    69  	Amount *big.Int
    70  }
    71  
    72  // IVaultSingleSwap is an auto generated low-level Go binding around an user-defined struct.
    73  type IVaultSingleSwap struct {
    74  	PoolId   [32]byte
    75  	Kind     uint8
    76  	AssetIn  common.Address
    77  	AssetOut common.Address
    78  	Amount   *big.Int
    79  	UserData []byte
    80  }
    81  
    82  // IVaultUserBalanceOp is an auto generated low-level Go binding around an user-defined struct.
    83  type IVaultUserBalanceOp struct {
    84  	Kind      uint8
    85  	Asset     common.Address
    86  	Amount    *big.Int
    87  	Sender    common.Address
    88  	Recipient common.Address
    89  }
    90  
    91  // BalancerVaultMetaData contains all meta data concerning the BalancerVault contract.
    92  var BalancerVaultMetaData = &bind.MetaData{
    93  	ABI: "[{\"inputs\":[{\"internalType\":\"contractIAuthorizer\",\"name\":\"authorizer\",\"type\":\"address\"},{\"internalType\":\"contractIWETH\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enumIVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"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\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contractIWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumIVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structIVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contractIAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"structIVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contractIAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"structIVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contractIAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enumIVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contractProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contractIAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"structIVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enumIVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structIVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enumIVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contractIAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"structIVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumIVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structIVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contractIAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"structIVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enumIVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enumIVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contractIAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contractIAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"structIVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"structIVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCalculated\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
    94  }
    95  
    96  // BalancerVaultABI is the input ABI used to generate the binding from.
    97  // Deprecated: Use BalancerVaultMetaData.ABI instead.
    98  var BalancerVaultABI = BalancerVaultMetaData.ABI
    99  
   100  // BalancerVault is an auto generated Go binding around an Ethereum contract.
   101  type BalancerVault struct {
   102  	BalancerVaultCaller     // Read-only binding to the contract
   103  	BalancerVaultTransactor // Write-only binding to the contract
   104  	BalancerVaultFilterer   // Log filterer for contract events
   105  }
   106  
   107  // BalancerVaultCaller is an auto generated read-only Go binding around an Ethereum contract.
   108  type BalancerVaultCaller struct {
   109  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   110  }
   111  
   112  // BalancerVaultTransactor is an auto generated write-only Go binding around an Ethereum contract.
   113  type BalancerVaultTransactor struct {
   114  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   115  }
   116  
   117  // BalancerVaultFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   118  type BalancerVaultFilterer struct {
   119  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   120  }
   121  
   122  // BalancerVaultSession is an auto generated Go binding around an Ethereum contract,
   123  // with pre-set call and transact options.
   124  type BalancerVaultSession struct {
   125  	Contract     *BalancerVault    // Generic contract binding to set the session for
   126  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   127  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   128  }
   129  
   130  // BalancerVaultCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   131  // with pre-set call options.
   132  type BalancerVaultCallerSession struct {
   133  	Contract *BalancerVaultCaller // Generic contract caller binding to set the session for
   134  	CallOpts bind.CallOpts        // Call options to use throughout this session
   135  }
   136  
   137  // BalancerVaultTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   138  // with pre-set transact options.
   139  type BalancerVaultTransactorSession struct {
   140  	Contract     *BalancerVaultTransactor // Generic contract transactor binding to set the session for
   141  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
   142  }
   143  
   144  // BalancerVaultRaw is an auto generated low-level Go binding around an Ethereum contract.
   145  type BalancerVaultRaw struct {
   146  	Contract *BalancerVault // Generic contract binding to access the raw methods on
   147  }
   148  
   149  // BalancerVaultCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   150  type BalancerVaultCallerRaw struct {
   151  	Contract *BalancerVaultCaller // Generic read-only contract binding to access the raw methods on
   152  }
   153  
   154  // BalancerVaultTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   155  type BalancerVaultTransactorRaw struct {
   156  	Contract *BalancerVaultTransactor // Generic write-only contract binding to access the raw methods on
   157  }
   158  
   159  // NewBalancerVault creates a new instance of BalancerVault, bound to a specific deployed contract.
   160  func NewBalancerVault(address common.Address, backend bind.ContractBackend) (*BalancerVault, error) {
   161  	contract, err := bindBalancerVault(address, backend, backend, backend)
   162  	if err != nil {
   163  		return nil, err
   164  	}
   165  	return &BalancerVault{BalancerVaultCaller: BalancerVaultCaller{contract: contract}, BalancerVaultTransactor: BalancerVaultTransactor{contract: contract}, BalancerVaultFilterer: BalancerVaultFilterer{contract: contract}}, nil
   166  }
   167  
   168  // NewBalancerVaultCaller creates a new read-only instance of BalancerVault, bound to a specific deployed contract.
   169  func NewBalancerVaultCaller(address common.Address, caller bind.ContractCaller) (*BalancerVaultCaller, error) {
   170  	contract, err := bindBalancerVault(address, caller, nil, nil)
   171  	if err != nil {
   172  		return nil, err
   173  	}
   174  	return &BalancerVaultCaller{contract: contract}, nil
   175  }
   176  
   177  // NewBalancerVaultTransactor creates a new write-only instance of BalancerVault, bound to a specific deployed contract.
   178  func NewBalancerVaultTransactor(address common.Address, transactor bind.ContractTransactor) (*BalancerVaultTransactor, error) {
   179  	contract, err := bindBalancerVault(address, nil, transactor, nil)
   180  	if err != nil {
   181  		return nil, err
   182  	}
   183  	return &BalancerVaultTransactor{contract: contract}, nil
   184  }
   185  
   186  // NewBalancerVaultFilterer creates a new log filterer instance of BalancerVault, bound to a specific deployed contract.
   187  func NewBalancerVaultFilterer(address common.Address, filterer bind.ContractFilterer) (*BalancerVaultFilterer, error) {
   188  	contract, err := bindBalancerVault(address, nil, nil, filterer)
   189  	if err != nil {
   190  		return nil, err
   191  	}
   192  	return &BalancerVaultFilterer{contract: contract}, nil
   193  }
   194  
   195  // bindBalancerVault binds a generic wrapper to an already deployed contract.
   196  func bindBalancerVault(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   197  	parsed, err := abi.JSON(strings.NewReader(BalancerVaultABI))
   198  	if err != nil {
   199  		return nil, err
   200  	}
   201  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   202  }
   203  
   204  // Call invokes the (constant) contract method with params as input values and
   205  // sets the output to result. The result type might be a single field for simple
   206  // returns, a slice of interfaces for anonymous returns and a struct for named
   207  // returns.
   208  func (_BalancerVault *BalancerVaultRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   209  	return _BalancerVault.Contract.BalancerVaultCaller.contract.Call(opts, result, method, params...)
   210  }
   211  
   212  // Transfer initiates a plain transaction to move funds to the contract, calling
   213  // its default method if one is available.
   214  func (_BalancerVault *BalancerVaultRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   215  	return _BalancerVault.Contract.BalancerVaultTransactor.contract.Transfer(opts)
   216  }
   217  
   218  // Transact invokes the (paid) contract method with params as input values.
   219  func (_BalancerVault *BalancerVaultRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   220  	return _BalancerVault.Contract.BalancerVaultTransactor.contract.Transact(opts, method, params...)
   221  }
   222  
   223  // Call invokes the (constant) contract method with params as input values and
   224  // sets the output to result. The result type might be a single field for simple
   225  // returns, a slice of interfaces for anonymous returns and a struct for named
   226  // returns.
   227  func (_BalancerVault *BalancerVaultCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   228  	return _BalancerVault.Contract.contract.Call(opts, result, method, params...)
   229  }
   230  
   231  // Transfer initiates a plain transaction to move funds to the contract, calling
   232  // its default method if one is available.
   233  func (_BalancerVault *BalancerVaultTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   234  	return _BalancerVault.Contract.contract.Transfer(opts)
   235  }
   236  
   237  // Transact invokes the (paid) contract method with params as input values.
   238  func (_BalancerVault *BalancerVaultTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   239  	return _BalancerVault.Contract.contract.Transact(opts, method, params...)
   240  }
   241  
   242  // WETH is a free data retrieval call binding the contract method 0xad5c4648.
   243  //
   244  // Solidity: function WETH() view returns(address)
   245  func (_BalancerVault *BalancerVaultCaller) WETH(opts *bind.CallOpts) (common.Address, error) {
   246  	var out []interface{}
   247  	err := _BalancerVault.contract.Call(opts, &out, "WETH")
   248  
   249  	if err != nil {
   250  		return *new(common.Address), err
   251  	}
   252  
   253  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   254  
   255  	return out0, err
   256  
   257  }
   258  
   259  // WETH is a free data retrieval call binding the contract method 0xad5c4648.
   260  //
   261  // Solidity: function WETH() view returns(address)
   262  func (_BalancerVault *BalancerVaultSession) WETH() (common.Address, error) {
   263  	return _BalancerVault.Contract.WETH(&_BalancerVault.CallOpts)
   264  }
   265  
   266  // WETH is a free data retrieval call binding the contract method 0xad5c4648.
   267  //
   268  // Solidity: function WETH() view returns(address)
   269  func (_BalancerVault *BalancerVaultCallerSession) WETH() (common.Address, error) {
   270  	return _BalancerVault.Contract.WETH(&_BalancerVault.CallOpts)
   271  }
   272  
   273  // GetActionId is a free data retrieval call binding the contract method 0x851c1bb3.
   274  //
   275  // Solidity: function getActionId(bytes4 selector) view returns(bytes32)
   276  func (_BalancerVault *BalancerVaultCaller) GetActionId(opts *bind.CallOpts, selector [4]byte) ([32]byte, error) {
   277  	var out []interface{}
   278  	err := _BalancerVault.contract.Call(opts, &out, "getActionId", selector)
   279  
   280  	if err != nil {
   281  		return *new([32]byte), err
   282  	}
   283  
   284  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   285  
   286  	return out0, err
   287  
   288  }
   289  
   290  // GetActionId is a free data retrieval call binding the contract method 0x851c1bb3.
   291  //
   292  // Solidity: function getActionId(bytes4 selector) view returns(bytes32)
   293  func (_BalancerVault *BalancerVaultSession) GetActionId(selector [4]byte) ([32]byte, error) {
   294  	return _BalancerVault.Contract.GetActionId(&_BalancerVault.CallOpts, selector)
   295  }
   296  
   297  // GetActionId is a free data retrieval call binding the contract method 0x851c1bb3.
   298  //
   299  // Solidity: function getActionId(bytes4 selector) view returns(bytes32)
   300  func (_BalancerVault *BalancerVaultCallerSession) GetActionId(selector [4]byte) ([32]byte, error) {
   301  	return _BalancerVault.Contract.GetActionId(&_BalancerVault.CallOpts, selector)
   302  }
   303  
   304  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   305  //
   306  // Solidity: function getAuthorizer() view returns(address)
   307  func (_BalancerVault *BalancerVaultCaller) GetAuthorizer(opts *bind.CallOpts) (common.Address, error) {
   308  	var out []interface{}
   309  	err := _BalancerVault.contract.Call(opts, &out, "getAuthorizer")
   310  
   311  	if err != nil {
   312  		return *new(common.Address), err
   313  	}
   314  
   315  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   316  
   317  	return out0, err
   318  
   319  }
   320  
   321  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   322  //
   323  // Solidity: function getAuthorizer() view returns(address)
   324  func (_BalancerVault *BalancerVaultSession) GetAuthorizer() (common.Address, error) {
   325  	return _BalancerVault.Contract.GetAuthorizer(&_BalancerVault.CallOpts)
   326  }
   327  
   328  // GetAuthorizer is a free data retrieval call binding the contract method 0xaaabadc5.
   329  //
   330  // Solidity: function getAuthorizer() view returns(address)
   331  func (_BalancerVault *BalancerVaultCallerSession) GetAuthorizer() (common.Address, error) {
   332  	return _BalancerVault.Contract.GetAuthorizer(&_BalancerVault.CallOpts)
   333  }
   334  
   335  // GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d.
   336  //
   337  // Solidity: function getDomainSeparator() view returns(bytes32)
   338  func (_BalancerVault *BalancerVaultCaller) GetDomainSeparator(opts *bind.CallOpts) ([32]byte, error) {
   339  	var out []interface{}
   340  	err := _BalancerVault.contract.Call(opts, &out, "getDomainSeparator")
   341  
   342  	if err != nil {
   343  		return *new([32]byte), err
   344  	}
   345  
   346  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   347  
   348  	return out0, err
   349  
   350  }
   351  
   352  // GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d.
   353  //
   354  // Solidity: function getDomainSeparator() view returns(bytes32)
   355  func (_BalancerVault *BalancerVaultSession) GetDomainSeparator() ([32]byte, error) {
   356  	return _BalancerVault.Contract.GetDomainSeparator(&_BalancerVault.CallOpts)
   357  }
   358  
   359  // GetDomainSeparator is a free data retrieval call binding the contract method 0xed24911d.
   360  //
   361  // Solidity: function getDomainSeparator() view returns(bytes32)
   362  func (_BalancerVault *BalancerVaultCallerSession) GetDomainSeparator() ([32]byte, error) {
   363  	return _BalancerVault.Contract.GetDomainSeparator(&_BalancerVault.CallOpts)
   364  }
   365  
   366  // GetInternalBalance is a free data retrieval call binding the contract method 0x0f5a6efa.
   367  //
   368  // Solidity: function getInternalBalance(address user, address[] tokens) view returns(uint256[] balances)
   369  func (_BalancerVault *BalancerVaultCaller) GetInternalBalance(opts *bind.CallOpts, user common.Address, tokens []common.Address) ([]*big.Int, error) {
   370  	var out []interface{}
   371  	err := _BalancerVault.contract.Call(opts, &out, "getInternalBalance", user, tokens)
   372  
   373  	if err != nil {
   374  		return *new([]*big.Int), err
   375  	}
   376  
   377  	out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
   378  
   379  	return out0, err
   380  
   381  }
   382  
   383  // GetInternalBalance is a free data retrieval call binding the contract method 0x0f5a6efa.
   384  //
   385  // Solidity: function getInternalBalance(address user, address[] tokens) view returns(uint256[] balances)
   386  func (_BalancerVault *BalancerVaultSession) GetInternalBalance(user common.Address, tokens []common.Address) ([]*big.Int, error) {
   387  	return _BalancerVault.Contract.GetInternalBalance(&_BalancerVault.CallOpts, user, tokens)
   388  }
   389  
   390  // GetInternalBalance is a free data retrieval call binding the contract method 0x0f5a6efa.
   391  //
   392  // Solidity: function getInternalBalance(address user, address[] tokens) view returns(uint256[] balances)
   393  func (_BalancerVault *BalancerVaultCallerSession) GetInternalBalance(user common.Address, tokens []common.Address) ([]*big.Int, error) {
   394  	return _BalancerVault.Contract.GetInternalBalance(&_BalancerVault.CallOpts, user, tokens)
   395  }
   396  
   397  // GetNextNonce is a free data retrieval call binding the contract method 0x90193b7c.
   398  //
   399  // Solidity: function getNextNonce(address user) view returns(uint256)
   400  func (_BalancerVault *BalancerVaultCaller) GetNextNonce(opts *bind.CallOpts, user common.Address) (*big.Int, error) {
   401  	var out []interface{}
   402  	err := _BalancerVault.contract.Call(opts, &out, "getNextNonce", user)
   403  
   404  	if err != nil {
   405  		return *new(*big.Int), err
   406  	}
   407  
   408  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   409  
   410  	return out0, err
   411  
   412  }
   413  
   414  // GetNextNonce is a free data retrieval call binding the contract method 0x90193b7c.
   415  //
   416  // Solidity: function getNextNonce(address user) view returns(uint256)
   417  func (_BalancerVault *BalancerVaultSession) GetNextNonce(user common.Address) (*big.Int, error) {
   418  	return _BalancerVault.Contract.GetNextNonce(&_BalancerVault.CallOpts, user)
   419  }
   420  
   421  // GetNextNonce is a free data retrieval call binding the contract method 0x90193b7c.
   422  //
   423  // Solidity: function getNextNonce(address user) view returns(uint256)
   424  func (_BalancerVault *BalancerVaultCallerSession) GetNextNonce(user common.Address) (*big.Int, error) {
   425  	return _BalancerVault.Contract.GetNextNonce(&_BalancerVault.CallOpts, user)
   426  }
   427  
   428  // GetPausedState is a free data retrieval call binding the contract method 0x1c0de051.
   429  //
   430  // Solidity: function getPausedState() view returns(bool paused, uint256 pauseWindowEndTime, uint256 bufferPeriodEndTime)
   431  func (_BalancerVault *BalancerVaultCaller) GetPausedState(opts *bind.CallOpts) (struct {
   432  	Paused              bool
   433  	PauseWindowEndTime  *big.Int
   434  	BufferPeriodEndTime *big.Int
   435  }, error) {
   436  	var out []interface{}
   437  	err := _BalancerVault.contract.Call(opts, &out, "getPausedState")
   438  
   439  	outstruct := new(struct {
   440  		Paused              bool
   441  		PauseWindowEndTime  *big.Int
   442  		BufferPeriodEndTime *big.Int
   443  	})
   444  	if err != nil {
   445  		return *outstruct, err
   446  	}
   447  
   448  	outstruct.Paused = *abi.ConvertType(out[0], new(bool)).(*bool)
   449  	outstruct.PauseWindowEndTime = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   450  	outstruct.BufferPeriodEndTime = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   451  
   452  	return *outstruct, err
   453  
   454  }
   455  
   456  // GetPausedState is a free data retrieval call binding the contract method 0x1c0de051.
   457  //
   458  // Solidity: function getPausedState() view returns(bool paused, uint256 pauseWindowEndTime, uint256 bufferPeriodEndTime)
   459  func (_BalancerVault *BalancerVaultSession) GetPausedState() (struct {
   460  	Paused              bool
   461  	PauseWindowEndTime  *big.Int
   462  	BufferPeriodEndTime *big.Int
   463  }, error) {
   464  	return _BalancerVault.Contract.GetPausedState(&_BalancerVault.CallOpts)
   465  }
   466  
   467  // GetPausedState is a free data retrieval call binding the contract method 0x1c0de051.
   468  //
   469  // Solidity: function getPausedState() view returns(bool paused, uint256 pauseWindowEndTime, uint256 bufferPeriodEndTime)
   470  func (_BalancerVault *BalancerVaultCallerSession) GetPausedState() (struct {
   471  	Paused              bool
   472  	PauseWindowEndTime  *big.Int
   473  	BufferPeriodEndTime *big.Int
   474  }, error) {
   475  	return _BalancerVault.Contract.GetPausedState(&_BalancerVault.CallOpts)
   476  }
   477  
   478  // GetPool is a free data retrieval call binding the contract method 0xf6c00927.
   479  //
   480  // Solidity: function getPool(bytes32 poolId) view returns(address, uint8)
   481  func (_BalancerVault *BalancerVaultCaller) GetPool(opts *bind.CallOpts, poolId [32]byte) (common.Address, uint8, error) {
   482  	var out []interface{}
   483  	err := _BalancerVault.contract.Call(opts, &out, "getPool", poolId)
   484  
   485  	if err != nil {
   486  		return *new(common.Address), *new(uint8), err
   487  	}
   488  
   489  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   490  	out1 := *abi.ConvertType(out[1], new(uint8)).(*uint8)
   491  
   492  	return out0, out1, err
   493  
   494  }
   495  
   496  // GetPool is a free data retrieval call binding the contract method 0xf6c00927.
   497  //
   498  // Solidity: function getPool(bytes32 poolId) view returns(address, uint8)
   499  func (_BalancerVault *BalancerVaultSession) GetPool(poolId [32]byte) (common.Address, uint8, error) {
   500  	return _BalancerVault.Contract.GetPool(&_BalancerVault.CallOpts, poolId)
   501  }
   502  
   503  // GetPool is a free data retrieval call binding the contract method 0xf6c00927.
   504  //
   505  // Solidity: function getPool(bytes32 poolId) view returns(address, uint8)
   506  func (_BalancerVault *BalancerVaultCallerSession) GetPool(poolId [32]byte) (common.Address, uint8, error) {
   507  	return _BalancerVault.Contract.GetPool(&_BalancerVault.CallOpts, poolId)
   508  }
   509  
   510  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0xb05f8e48.
   511  //
   512  // Solidity: function getPoolTokenInfo(bytes32 poolId, address token) view returns(uint256 cash, uint256 managed, uint256 lastChangeBlock, address assetManager)
   513  func (_BalancerVault *BalancerVaultCaller) GetPoolTokenInfo(opts *bind.CallOpts, poolId [32]byte, token common.Address) (struct {
   514  	Cash            *big.Int
   515  	Managed         *big.Int
   516  	LastChangeBlock *big.Int
   517  	AssetManager    common.Address
   518  }, error) {
   519  	var out []interface{}
   520  	err := _BalancerVault.contract.Call(opts, &out, "getPoolTokenInfo", poolId, token)
   521  
   522  	outstruct := new(struct {
   523  		Cash            *big.Int
   524  		Managed         *big.Int
   525  		LastChangeBlock *big.Int
   526  		AssetManager    common.Address
   527  	})
   528  	if err != nil {
   529  		return *outstruct, err
   530  	}
   531  
   532  	outstruct.Cash = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   533  	outstruct.Managed = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   534  	outstruct.LastChangeBlock = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   535  	outstruct.AssetManager = *abi.ConvertType(out[3], new(common.Address)).(*common.Address)
   536  
   537  	return *outstruct, err
   538  
   539  }
   540  
   541  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0xb05f8e48.
   542  //
   543  // Solidity: function getPoolTokenInfo(bytes32 poolId, address token) view returns(uint256 cash, uint256 managed, uint256 lastChangeBlock, address assetManager)
   544  func (_BalancerVault *BalancerVaultSession) GetPoolTokenInfo(poolId [32]byte, token common.Address) (struct {
   545  	Cash            *big.Int
   546  	Managed         *big.Int
   547  	LastChangeBlock *big.Int
   548  	AssetManager    common.Address
   549  }, error) {
   550  	return _BalancerVault.Contract.GetPoolTokenInfo(&_BalancerVault.CallOpts, poolId, token)
   551  }
   552  
   553  // GetPoolTokenInfo is a free data retrieval call binding the contract method 0xb05f8e48.
   554  //
   555  // Solidity: function getPoolTokenInfo(bytes32 poolId, address token) view returns(uint256 cash, uint256 managed, uint256 lastChangeBlock, address assetManager)
   556  func (_BalancerVault *BalancerVaultCallerSession) GetPoolTokenInfo(poolId [32]byte, token common.Address) (struct {
   557  	Cash            *big.Int
   558  	Managed         *big.Int
   559  	LastChangeBlock *big.Int
   560  	AssetManager    common.Address
   561  }, error) {
   562  	return _BalancerVault.Contract.GetPoolTokenInfo(&_BalancerVault.CallOpts, poolId, token)
   563  }
   564  
   565  // GetPoolTokens is a free data retrieval call binding the contract method 0xf94d4668.
   566  //
   567  // Solidity: function getPoolTokens(bytes32 poolId) view returns(address[] tokens, uint256[] balances, uint256 lastChangeBlock)
   568  func (_BalancerVault *BalancerVaultCaller) GetPoolTokens(opts *bind.CallOpts, poolId [32]byte) (struct {
   569  	Tokens          []common.Address
   570  	Balances        []*big.Int
   571  	LastChangeBlock *big.Int
   572  }, error) {
   573  	var out []interface{}
   574  	err := _BalancerVault.contract.Call(opts, &out, "getPoolTokens", poolId)
   575  
   576  	outstruct := new(struct {
   577  		Tokens          []common.Address
   578  		Balances        []*big.Int
   579  		LastChangeBlock *big.Int
   580  	})
   581  	if err != nil {
   582  		return *outstruct, err
   583  	}
   584  
   585  	outstruct.Tokens = *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
   586  	outstruct.Balances = *abi.ConvertType(out[1], new([]*big.Int)).(*[]*big.Int)
   587  	outstruct.LastChangeBlock = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   588  
   589  	return *outstruct, err
   590  
   591  }
   592  
   593  // GetPoolTokens is a free data retrieval call binding the contract method 0xf94d4668.
   594  //
   595  // Solidity: function getPoolTokens(bytes32 poolId) view returns(address[] tokens, uint256[] balances, uint256 lastChangeBlock)
   596  func (_BalancerVault *BalancerVaultSession) GetPoolTokens(poolId [32]byte) (struct {
   597  	Tokens          []common.Address
   598  	Balances        []*big.Int
   599  	LastChangeBlock *big.Int
   600  }, error) {
   601  	return _BalancerVault.Contract.GetPoolTokens(&_BalancerVault.CallOpts, poolId)
   602  }
   603  
   604  // GetPoolTokens is a free data retrieval call binding the contract method 0xf94d4668.
   605  //
   606  // Solidity: function getPoolTokens(bytes32 poolId) view returns(address[] tokens, uint256[] balances, uint256 lastChangeBlock)
   607  func (_BalancerVault *BalancerVaultCallerSession) GetPoolTokens(poolId [32]byte) (struct {
   608  	Tokens          []common.Address
   609  	Balances        []*big.Int
   610  	LastChangeBlock *big.Int
   611  }, error) {
   612  	return _BalancerVault.Contract.GetPoolTokens(&_BalancerVault.CallOpts, poolId)
   613  }
   614  
   615  // GetProtocolFeesCollector is a free data retrieval call binding the contract method 0xd2946c2b.
   616  //
   617  // Solidity: function getProtocolFeesCollector() view returns(address)
   618  func (_BalancerVault *BalancerVaultCaller) GetProtocolFeesCollector(opts *bind.CallOpts) (common.Address, error) {
   619  	var out []interface{}
   620  	err := _BalancerVault.contract.Call(opts, &out, "getProtocolFeesCollector")
   621  
   622  	if err != nil {
   623  		return *new(common.Address), err
   624  	}
   625  
   626  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   627  
   628  	return out0, err
   629  
   630  }
   631  
   632  // GetProtocolFeesCollector is a free data retrieval call binding the contract method 0xd2946c2b.
   633  //
   634  // Solidity: function getProtocolFeesCollector() view returns(address)
   635  func (_BalancerVault *BalancerVaultSession) GetProtocolFeesCollector() (common.Address, error) {
   636  	return _BalancerVault.Contract.GetProtocolFeesCollector(&_BalancerVault.CallOpts)
   637  }
   638  
   639  // GetProtocolFeesCollector is a free data retrieval call binding the contract method 0xd2946c2b.
   640  //
   641  // Solidity: function getProtocolFeesCollector() view returns(address)
   642  func (_BalancerVault *BalancerVaultCallerSession) GetProtocolFeesCollector() (common.Address, error) {
   643  	return _BalancerVault.Contract.GetProtocolFeesCollector(&_BalancerVault.CallOpts)
   644  }
   645  
   646  // HasApprovedRelayer is a free data retrieval call binding the contract method 0xfec90d72.
   647  //
   648  // Solidity: function hasApprovedRelayer(address user, address relayer) view returns(bool)
   649  func (_BalancerVault *BalancerVaultCaller) HasApprovedRelayer(opts *bind.CallOpts, user common.Address, relayer common.Address) (bool, error) {
   650  	var out []interface{}
   651  	err := _BalancerVault.contract.Call(opts, &out, "hasApprovedRelayer", user, relayer)
   652  
   653  	if err != nil {
   654  		return *new(bool), err
   655  	}
   656  
   657  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   658  
   659  	return out0, err
   660  
   661  }
   662  
   663  // HasApprovedRelayer is a free data retrieval call binding the contract method 0xfec90d72.
   664  //
   665  // Solidity: function hasApprovedRelayer(address user, address relayer) view returns(bool)
   666  func (_BalancerVault *BalancerVaultSession) HasApprovedRelayer(user common.Address, relayer common.Address) (bool, error) {
   667  	return _BalancerVault.Contract.HasApprovedRelayer(&_BalancerVault.CallOpts, user, relayer)
   668  }
   669  
   670  // HasApprovedRelayer is a free data retrieval call binding the contract method 0xfec90d72.
   671  //
   672  // Solidity: function hasApprovedRelayer(address user, address relayer) view returns(bool)
   673  func (_BalancerVault *BalancerVaultCallerSession) HasApprovedRelayer(user common.Address, relayer common.Address) (bool, error) {
   674  	return _BalancerVault.Contract.HasApprovedRelayer(&_BalancerVault.CallOpts, user, relayer)
   675  }
   676  
   677  // BatchSwap is a paid mutator transaction binding the contract method 0x945bcec9.
   678  //
   679  // Solidity: function batchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds, int256[] limits, uint256 deadline) payable returns(int256[] assetDeltas)
   680  func (_BalancerVault *BalancerVaultTransactor) BatchSwap(opts *bind.TransactOpts, kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement, limits []*big.Int, deadline *big.Int) (*types.Transaction, error) {
   681  	return _BalancerVault.contract.Transact(opts, "batchSwap", kind, swaps, assets, funds, limits, deadline)
   682  }
   683  
   684  // BatchSwap is a paid mutator transaction binding the contract method 0x945bcec9.
   685  //
   686  // Solidity: function batchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds, int256[] limits, uint256 deadline) payable returns(int256[] assetDeltas)
   687  func (_BalancerVault *BalancerVaultSession) BatchSwap(kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement, limits []*big.Int, deadline *big.Int) (*types.Transaction, error) {
   688  	return _BalancerVault.Contract.BatchSwap(&_BalancerVault.TransactOpts, kind, swaps, assets, funds, limits, deadline)
   689  }
   690  
   691  // BatchSwap is a paid mutator transaction binding the contract method 0x945bcec9.
   692  //
   693  // Solidity: function batchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds, int256[] limits, uint256 deadline) payable returns(int256[] assetDeltas)
   694  func (_BalancerVault *BalancerVaultTransactorSession) BatchSwap(kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement, limits []*big.Int, deadline *big.Int) (*types.Transaction, error) {
   695  	return _BalancerVault.Contract.BatchSwap(&_BalancerVault.TransactOpts, kind, swaps, assets, funds, limits, deadline)
   696  }
   697  
   698  // DeregisterTokens is a paid mutator transaction binding the contract method 0x7d3aeb96.
   699  //
   700  // Solidity: function deregisterTokens(bytes32 poolId, address[] tokens) returns()
   701  func (_BalancerVault *BalancerVaultTransactor) DeregisterTokens(opts *bind.TransactOpts, poolId [32]byte, tokens []common.Address) (*types.Transaction, error) {
   702  	return _BalancerVault.contract.Transact(opts, "deregisterTokens", poolId, tokens)
   703  }
   704  
   705  // DeregisterTokens is a paid mutator transaction binding the contract method 0x7d3aeb96.
   706  //
   707  // Solidity: function deregisterTokens(bytes32 poolId, address[] tokens) returns()
   708  func (_BalancerVault *BalancerVaultSession) DeregisterTokens(poolId [32]byte, tokens []common.Address) (*types.Transaction, error) {
   709  	return _BalancerVault.Contract.DeregisterTokens(&_BalancerVault.TransactOpts, poolId, tokens)
   710  }
   711  
   712  // DeregisterTokens is a paid mutator transaction binding the contract method 0x7d3aeb96.
   713  //
   714  // Solidity: function deregisterTokens(bytes32 poolId, address[] tokens) returns()
   715  func (_BalancerVault *BalancerVaultTransactorSession) DeregisterTokens(poolId [32]byte, tokens []common.Address) (*types.Transaction, error) {
   716  	return _BalancerVault.Contract.DeregisterTokens(&_BalancerVault.TransactOpts, poolId, tokens)
   717  }
   718  
   719  // ExitPool is a paid mutator transaction binding the contract method 0x8bdb3913.
   720  //
   721  // Solidity: function exitPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) returns()
   722  func (_BalancerVault *BalancerVaultTransactor) ExitPool(opts *bind.TransactOpts, poolId [32]byte, sender common.Address, recipient common.Address, request IVaultExitPoolRequest) (*types.Transaction, error) {
   723  	return _BalancerVault.contract.Transact(opts, "exitPool", poolId, sender, recipient, request)
   724  }
   725  
   726  // ExitPool is a paid mutator transaction binding the contract method 0x8bdb3913.
   727  //
   728  // Solidity: function exitPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) returns()
   729  func (_BalancerVault *BalancerVaultSession) ExitPool(poolId [32]byte, sender common.Address, recipient common.Address, request IVaultExitPoolRequest) (*types.Transaction, error) {
   730  	return _BalancerVault.Contract.ExitPool(&_BalancerVault.TransactOpts, poolId, sender, recipient, request)
   731  }
   732  
   733  // ExitPool is a paid mutator transaction binding the contract method 0x8bdb3913.
   734  //
   735  // Solidity: function exitPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) returns()
   736  func (_BalancerVault *BalancerVaultTransactorSession) ExitPool(poolId [32]byte, sender common.Address, recipient common.Address, request IVaultExitPoolRequest) (*types.Transaction, error) {
   737  	return _BalancerVault.Contract.ExitPool(&_BalancerVault.TransactOpts, poolId, sender, recipient, request)
   738  }
   739  
   740  // FlashLoan is a paid mutator transaction binding the contract method 0x5c38449e.
   741  //
   742  // Solidity: function flashLoan(address recipient, address[] tokens, uint256[] amounts, bytes userData) returns()
   743  func (_BalancerVault *BalancerVaultTransactor) FlashLoan(opts *bind.TransactOpts, recipient common.Address, tokens []common.Address, amounts []*big.Int, userData []byte) (*types.Transaction, error) {
   744  	return _BalancerVault.contract.Transact(opts, "flashLoan", recipient, tokens, amounts, userData)
   745  }
   746  
   747  // FlashLoan is a paid mutator transaction binding the contract method 0x5c38449e.
   748  //
   749  // Solidity: function flashLoan(address recipient, address[] tokens, uint256[] amounts, bytes userData) returns()
   750  func (_BalancerVault *BalancerVaultSession) FlashLoan(recipient common.Address, tokens []common.Address, amounts []*big.Int, userData []byte) (*types.Transaction, error) {
   751  	return _BalancerVault.Contract.FlashLoan(&_BalancerVault.TransactOpts, recipient, tokens, amounts, userData)
   752  }
   753  
   754  // FlashLoan is a paid mutator transaction binding the contract method 0x5c38449e.
   755  //
   756  // Solidity: function flashLoan(address recipient, address[] tokens, uint256[] amounts, bytes userData) returns()
   757  func (_BalancerVault *BalancerVaultTransactorSession) FlashLoan(recipient common.Address, tokens []common.Address, amounts []*big.Int, userData []byte) (*types.Transaction, error) {
   758  	return _BalancerVault.Contract.FlashLoan(&_BalancerVault.TransactOpts, recipient, tokens, amounts, userData)
   759  }
   760  
   761  // JoinPool is a paid mutator transaction binding the contract method 0xb95cac28.
   762  //
   763  // Solidity: function joinPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) payable returns()
   764  func (_BalancerVault *BalancerVaultTransactor) JoinPool(opts *bind.TransactOpts, poolId [32]byte, sender common.Address, recipient common.Address, request IVaultJoinPoolRequest) (*types.Transaction, error) {
   765  	return _BalancerVault.contract.Transact(opts, "joinPool", poolId, sender, recipient, request)
   766  }
   767  
   768  // JoinPool is a paid mutator transaction binding the contract method 0xb95cac28.
   769  //
   770  // Solidity: function joinPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) payable returns()
   771  func (_BalancerVault *BalancerVaultSession) JoinPool(poolId [32]byte, sender common.Address, recipient common.Address, request IVaultJoinPoolRequest) (*types.Transaction, error) {
   772  	return _BalancerVault.Contract.JoinPool(&_BalancerVault.TransactOpts, poolId, sender, recipient, request)
   773  }
   774  
   775  // JoinPool is a paid mutator transaction binding the contract method 0xb95cac28.
   776  //
   777  // Solidity: function joinPool(bytes32 poolId, address sender, address recipient, (address[],uint256[],bytes,bool) request) payable returns()
   778  func (_BalancerVault *BalancerVaultTransactorSession) JoinPool(poolId [32]byte, sender common.Address, recipient common.Address, request IVaultJoinPoolRequest) (*types.Transaction, error) {
   779  	return _BalancerVault.Contract.JoinPool(&_BalancerVault.TransactOpts, poolId, sender, recipient, request)
   780  }
   781  
   782  // ManagePoolBalance is a paid mutator transaction binding the contract method 0xe6c46092.
   783  //
   784  // Solidity: function managePoolBalance((uint8,bytes32,address,uint256)[] ops) returns()
   785  func (_BalancerVault *BalancerVaultTransactor) ManagePoolBalance(opts *bind.TransactOpts, ops []IVaultPoolBalanceOp) (*types.Transaction, error) {
   786  	return _BalancerVault.contract.Transact(opts, "managePoolBalance", ops)
   787  }
   788  
   789  // ManagePoolBalance is a paid mutator transaction binding the contract method 0xe6c46092.
   790  //
   791  // Solidity: function managePoolBalance((uint8,bytes32,address,uint256)[] ops) returns()
   792  func (_BalancerVault *BalancerVaultSession) ManagePoolBalance(ops []IVaultPoolBalanceOp) (*types.Transaction, error) {
   793  	return _BalancerVault.Contract.ManagePoolBalance(&_BalancerVault.TransactOpts, ops)
   794  }
   795  
   796  // ManagePoolBalance is a paid mutator transaction binding the contract method 0xe6c46092.
   797  //
   798  // Solidity: function managePoolBalance((uint8,bytes32,address,uint256)[] ops) returns()
   799  func (_BalancerVault *BalancerVaultTransactorSession) ManagePoolBalance(ops []IVaultPoolBalanceOp) (*types.Transaction, error) {
   800  	return _BalancerVault.Contract.ManagePoolBalance(&_BalancerVault.TransactOpts, ops)
   801  }
   802  
   803  // ManageUserBalance is a paid mutator transaction binding the contract method 0x0e8e3e84.
   804  //
   805  // Solidity: function manageUserBalance((uint8,address,uint256,address,address)[] ops) payable returns()
   806  func (_BalancerVault *BalancerVaultTransactor) ManageUserBalance(opts *bind.TransactOpts, ops []IVaultUserBalanceOp) (*types.Transaction, error) {
   807  	return _BalancerVault.contract.Transact(opts, "manageUserBalance", ops)
   808  }
   809  
   810  // ManageUserBalance is a paid mutator transaction binding the contract method 0x0e8e3e84.
   811  //
   812  // Solidity: function manageUserBalance((uint8,address,uint256,address,address)[] ops) payable returns()
   813  func (_BalancerVault *BalancerVaultSession) ManageUserBalance(ops []IVaultUserBalanceOp) (*types.Transaction, error) {
   814  	return _BalancerVault.Contract.ManageUserBalance(&_BalancerVault.TransactOpts, ops)
   815  }
   816  
   817  // ManageUserBalance is a paid mutator transaction binding the contract method 0x0e8e3e84.
   818  //
   819  // Solidity: function manageUserBalance((uint8,address,uint256,address,address)[] ops) payable returns()
   820  func (_BalancerVault *BalancerVaultTransactorSession) ManageUserBalance(ops []IVaultUserBalanceOp) (*types.Transaction, error) {
   821  	return _BalancerVault.Contract.ManageUserBalance(&_BalancerVault.TransactOpts, ops)
   822  }
   823  
   824  // QueryBatchSwap is a paid mutator transaction binding the contract method 0xf84d066e.
   825  //
   826  // Solidity: function queryBatchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds) returns(int256[])
   827  func (_BalancerVault *BalancerVaultTransactor) QueryBatchSwap(opts *bind.TransactOpts, kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement) (*types.Transaction, error) {
   828  	return _BalancerVault.contract.Transact(opts, "queryBatchSwap", kind, swaps, assets, funds)
   829  }
   830  
   831  // QueryBatchSwap is a paid mutator transaction binding the contract method 0xf84d066e.
   832  //
   833  // Solidity: function queryBatchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds) returns(int256[])
   834  func (_BalancerVault *BalancerVaultSession) QueryBatchSwap(kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement) (*types.Transaction, error) {
   835  	return _BalancerVault.Contract.QueryBatchSwap(&_BalancerVault.TransactOpts, kind, swaps, assets, funds)
   836  }
   837  
   838  // QueryBatchSwap is a paid mutator transaction binding the contract method 0xf84d066e.
   839  //
   840  // Solidity: function queryBatchSwap(uint8 kind, (bytes32,uint256,uint256,uint256,bytes)[] swaps, address[] assets, (address,bool,address,bool) funds) returns(int256[])
   841  func (_BalancerVault *BalancerVaultTransactorSession) QueryBatchSwap(kind uint8, swaps []IVaultBatchSwapStep, assets []common.Address, funds IVaultFundManagement) (*types.Transaction, error) {
   842  	return _BalancerVault.Contract.QueryBatchSwap(&_BalancerVault.TransactOpts, kind, swaps, assets, funds)
   843  }
   844  
   845  // RegisterPool is a paid mutator transaction binding the contract method 0x09b2760f.
   846  //
   847  // Solidity: function registerPool(uint8 specialization) returns(bytes32)
   848  func (_BalancerVault *BalancerVaultTransactor) RegisterPool(opts *bind.TransactOpts, specialization uint8) (*types.Transaction, error) {
   849  	return _BalancerVault.contract.Transact(opts, "registerPool", specialization)
   850  }
   851  
   852  // RegisterPool is a paid mutator transaction binding the contract method 0x09b2760f.
   853  //
   854  // Solidity: function registerPool(uint8 specialization) returns(bytes32)
   855  func (_BalancerVault *BalancerVaultSession) RegisterPool(specialization uint8) (*types.Transaction, error) {
   856  	return _BalancerVault.Contract.RegisterPool(&_BalancerVault.TransactOpts, specialization)
   857  }
   858  
   859  // RegisterPool is a paid mutator transaction binding the contract method 0x09b2760f.
   860  //
   861  // Solidity: function registerPool(uint8 specialization) returns(bytes32)
   862  func (_BalancerVault *BalancerVaultTransactorSession) RegisterPool(specialization uint8) (*types.Transaction, error) {
   863  	return _BalancerVault.Contract.RegisterPool(&_BalancerVault.TransactOpts, specialization)
   864  }
   865  
   866  // RegisterTokens is a paid mutator transaction binding the contract method 0x66a9c7d2.
   867  //
   868  // Solidity: function registerTokens(bytes32 poolId, address[] tokens, address[] assetManagers) returns()
   869  func (_BalancerVault *BalancerVaultTransactor) RegisterTokens(opts *bind.TransactOpts, poolId [32]byte, tokens []common.Address, assetManagers []common.Address) (*types.Transaction, error) {
   870  	return _BalancerVault.contract.Transact(opts, "registerTokens", poolId, tokens, assetManagers)
   871  }
   872  
   873  // RegisterTokens is a paid mutator transaction binding the contract method 0x66a9c7d2.
   874  //
   875  // Solidity: function registerTokens(bytes32 poolId, address[] tokens, address[] assetManagers) returns()
   876  func (_BalancerVault *BalancerVaultSession) RegisterTokens(poolId [32]byte, tokens []common.Address, assetManagers []common.Address) (*types.Transaction, error) {
   877  	return _BalancerVault.Contract.RegisterTokens(&_BalancerVault.TransactOpts, poolId, tokens, assetManagers)
   878  }
   879  
   880  // RegisterTokens is a paid mutator transaction binding the contract method 0x66a9c7d2.
   881  //
   882  // Solidity: function registerTokens(bytes32 poolId, address[] tokens, address[] assetManagers) returns()
   883  func (_BalancerVault *BalancerVaultTransactorSession) RegisterTokens(poolId [32]byte, tokens []common.Address, assetManagers []common.Address) (*types.Transaction, error) {
   884  	return _BalancerVault.Contract.RegisterTokens(&_BalancerVault.TransactOpts, poolId, tokens, assetManagers)
   885  }
   886  
   887  // SetAuthorizer is a paid mutator transaction binding the contract method 0x058a628f.
   888  //
   889  // Solidity: function setAuthorizer(address newAuthorizer) returns()
   890  func (_BalancerVault *BalancerVaultTransactor) SetAuthorizer(opts *bind.TransactOpts, newAuthorizer common.Address) (*types.Transaction, error) {
   891  	return _BalancerVault.contract.Transact(opts, "setAuthorizer", newAuthorizer)
   892  }
   893  
   894  // SetAuthorizer is a paid mutator transaction binding the contract method 0x058a628f.
   895  //
   896  // Solidity: function setAuthorizer(address newAuthorizer) returns()
   897  func (_BalancerVault *BalancerVaultSession) SetAuthorizer(newAuthorizer common.Address) (*types.Transaction, error) {
   898  	return _BalancerVault.Contract.SetAuthorizer(&_BalancerVault.TransactOpts, newAuthorizer)
   899  }
   900  
   901  // SetAuthorizer is a paid mutator transaction binding the contract method 0x058a628f.
   902  //
   903  // Solidity: function setAuthorizer(address newAuthorizer) returns()
   904  func (_BalancerVault *BalancerVaultTransactorSession) SetAuthorizer(newAuthorizer common.Address) (*types.Transaction, error) {
   905  	return _BalancerVault.Contract.SetAuthorizer(&_BalancerVault.TransactOpts, newAuthorizer)
   906  }
   907  
   908  // SetPaused is a paid mutator transaction binding the contract method 0x16c38b3c.
   909  //
   910  // Solidity: function setPaused(bool paused) returns()
   911  func (_BalancerVault *BalancerVaultTransactor) SetPaused(opts *bind.TransactOpts, paused bool) (*types.Transaction, error) {
   912  	return _BalancerVault.contract.Transact(opts, "setPaused", paused)
   913  }
   914  
   915  // SetPaused is a paid mutator transaction binding the contract method 0x16c38b3c.
   916  //
   917  // Solidity: function setPaused(bool paused) returns()
   918  func (_BalancerVault *BalancerVaultSession) SetPaused(paused bool) (*types.Transaction, error) {
   919  	return _BalancerVault.Contract.SetPaused(&_BalancerVault.TransactOpts, paused)
   920  }
   921  
   922  // SetPaused is a paid mutator transaction binding the contract method 0x16c38b3c.
   923  //
   924  // Solidity: function setPaused(bool paused) returns()
   925  func (_BalancerVault *BalancerVaultTransactorSession) SetPaused(paused bool) (*types.Transaction, error) {
   926  	return _BalancerVault.Contract.SetPaused(&_BalancerVault.TransactOpts, paused)
   927  }
   928  
   929  // SetRelayerApproval is a paid mutator transaction binding the contract method 0xfa6e671d.
   930  //
   931  // Solidity: function setRelayerApproval(address sender, address relayer, bool approved) returns()
   932  func (_BalancerVault *BalancerVaultTransactor) SetRelayerApproval(opts *bind.TransactOpts, sender common.Address, relayer common.Address, approved bool) (*types.Transaction, error) {
   933  	return _BalancerVault.contract.Transact(opts, "setRelayerApproval", sender, relayer, approved)
   934  }
   935  
   936  // SetRelayerApproval is a paid mutator transaction binding the contract method 0xfa6e671d.
   937  //
   938  // Solidity: function setRelayerApproval(address sender, address relayer, bool approved) returns()
   939  func (_BalancerVault *BalancerVaultSession) SetRelayerApproval(sender common.Address, relayer common.Address, approved bool) (*types.Transaction, error) {
   940  	return _BalancerVault.Contract.SetRelayerApproval(&_BalancerVault.TransactOpts, sender, relayer, approved)
   941  }
   942  
   943  // SetRelayerApproval is a paid mutator transaction binding the contract method 0xfa6e671d.
   944  //
   945  // Solidity: function setRelayerApproval(address sender, address relayer, bool approved) returns()
   946  func (_BalancerVault *BalancerVaultTransactorSession) SetRelayerApproval(sender common.Address, relayer common.Address, approved bool) (*types.Transaction, error) {
   947  	return _BalancerVault.Contract.SetRelayerApproval(&_BalancerVault.TransactOpts, sender, relayer, approved)
   948  }
   949  
   950  // Swap is a paid mutator transaction binding the contract method 0x52bbbe29.
   951  //
   952  // Solidity: function swap((bytes32,uint8,address,address,uint256,bytes) singleSwap, (address,bool,address,bool) funds, uint256 limit, uint256 deadline) payable returns(uint256 amountCalculated)
   953  func (_BalancerVault *BalancerVaultTransactor) Swap(opts *bind.TransactOpts, singleSwap IVaultSingleSwap, funds IVaultFundManagement, limit *big.Int, deadline *big.Int) (*types.Transaction, error) {
   954  	return _BalancerVault.contract.Transact(opts, "swap", singleSwap, funds, limit, deadline)
   955  }
   956  
   957  // Swap is a paid mutator transaction binding the contract method 0x52bbbe29.
   958  //
   959  // Solidity: function swap((bytes32,uint8,address,address,uint256,bytes) singleSwap, (address,bool,address,bool) funds, uint256 limit, uint256 deadline) payable returns(uint256 amountCalculated)
   960  func (_BalancerVault *BalancerVaultSession) Swap(singleSwap IVaultSingleSwap, funds IVaultFundManagement, limit *big.Int, deadline *big.Int) (*types.Transaction, error) {
   961  	return _BalancerVault.Contract.Swap(&_BalancerVault.TransactOpts, singleSwap, funds, limit, deadline)
   962  }
   963  
   964  // Swap is a paid mutator transaction binding the contract method 0x52bbbe29.
   965  //
   966  // Solidity: function swap((bytes32,uint8,address,address,uint256,bytes) singleSwap, (address,bool,address,bool) funds, uint256 limit, uint256 deadline) payable returns(uint256 amountCalculated)
   967  func (_BalancerVault *BalancerVaultTransactorSession) Swap(singleSwap IVaultSingleSwap, funds IVaultFundManagement, limit *big.Int, deadline *big.Int) (*types.Transaction, error) {
   968  	return _BalancerVault.Contract.Swap(&_BalancerVault.TransactOpts, singleSwap, funds, limit, deadline)
   969  }
   970  
   971  // Receive is a paid mutator transaction binding the contract receive function.
   972  //
   973  // Solidity: receive() payable returns()
   974  func (_BalancerVault *BalancerVaultTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) {
   975  	return _BalancerVault.contract.RawTransact(opts, nil) // calldata is disallowed for receive function
   976  }
   977  
   978  // Receive is a paid mutator transaction binding the contract receive function.
   979  //
   980  // Solidity: receive() payable returns()
   981  func (_BalancerVault *BalancerVaultSession) Receive() (*types.Transaction, error) {
   982  	return _BalancerVault.Contract.Receive(&_BalancerVault.TransactOpts)
   983  }
   984  
   985  // Receive is a paid mutator transaction binding the contract receive function.
   986  //
   987  // Solidity: receive() payable returns()
   988  func (_BalancerVault *BalancerVaultTransactorSession) Receive() (*types.Transaction, error) {
   989  	return _BalancerVault.Contract.Receive(&_BalancerVault.TransactOpts)
   990  }
   991  
   992  // BalancerVaultAuthorizerChangedIterator is returned from FilterAuthorizerChanged and is used to iterate over the raw logs and unpacked data for AuthorizerChanged events raised by the BalancerVault contract.
   993  type BalancerVaultAuthorizerChangedIterator struct {
   994  	Event *BalancerVaultAuthorizerChanged // Event containing the contract specifics and raw log
   995  
   996  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   997  	event    string              // Event name to use for unpacking event data
   998  
   999  	logs chan types.Log        // Log channel receiving the found contract events
  1000  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1001  	done bool                  // Whether the subscription completed delivering logs
  1002  	fail error                 // Occurred error to stop iteration
  1003  }
  1004  
  1005  // Next advances the iterator to the subsequent event, returning whether there
  1006  // are any more events found. In case of a retrieval or parsing error, false is
  1007  // returned and Error() can be queried for the exact failure.
  1008  func (it *BalancerVaultAuthorizerChangedIterator) Next() bool {
  1009  	// If the iterator failed, stop iterating
  1010  	if it.fail != nil {
  1011  		return false
  1012  	}
  1013  	// If the iterator completed, deliver directly whatever's available
  1014  	if it.done {
  1015  		select {
  1016  		case log := <-it.logs:
  1017  			it.Event = new(BalancerVaultAuthorizerChanged)
  1018  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1019  				it.fail = err
  1020  				return false
  1021  			}
  1022  			it.Event.Raw = log
  1023  			return true
  1024  
  1025  		default:
  1026  			return false
  1027  		}
  1028  	}
  1029  	// Iterator still in progress, wait for either a data or an error event
  1030  	select {
  1031  	case log := <-it.logs:
  1032  		it.Event = new(BalancerVaultAuthorizerChanged)
  1033  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1034  			it.fail = err
  1035  			return false
  1036  		}
  1037  		it.Event.Raw = log
  1038  		return true
  1039  
  1040  	case err := <-it.sub.Err():
  1041  		it.done = true
  1042  		it.fail = err
  1043  		return it.Next()
  1044  	}
  1045  }
  1046  
  1047  // Error returns any retrieval or parsing error occurred during filtering.
  1048  func (it *BalancerVaultAuthorizerChangedIterator) Error() error {
  1049  	return it.fail
  1050  }
  1051  
  1052  // Close terminates the iteration process, releasing any pending underlying
  1053  // resources.
  1054  func (it *BalancerVaultAuthorizerChangedIterator) Close() error {
  1055  	it.sub.Unsubscribe()
  1056  	return nil
  1057  }
  1058  
  1059  // BalancerVaultAuthorizerChanged represents a AuthorizerChanged event raised by the BalancerVault contract.
  1060  type BalancerVaultAuthorizerChanged struct {
  1061  	NewAuthorizer common.Address
  1062  	Raw           types.Log // Blockchain specific contextual infos
  1063  }
  1064  
  1065  // FilterAuthorizerChanged is a free log retrieval operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1066  //
  1067  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1068  func (_BalancerVault *BalancerVaultFilterer) FilterAuthorizerChanged(opts *bind.FilterOpts, newAuthorizer []common.Address) (*BalancerVaultAuthorizerChangedIterator, error) {
  1069  
  1070  	var newAuthorizerRule []interface{}
  1071  	for _, newAuthorizerItem := range newAuthorizer {
  1072  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  1073  	}
  1074  
  1075  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  1076  	if err != nil {
  1077  		return nil, err
  1078  	}
  1079  	return &BalancerVaultAuthorizerChangedIterator{contract: _BalancerVault.contract, event: "AuthorizerChanged", logs: logs, sub: sub}, nil
  1080  }
  1081  
  1082  // WatchAuthorizerChanged is a free log subscription operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1083  //
  1084  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1085  func (_BalancerVault *BalancerVaultFilterer) WatchAuthorizerChanged(opts *bind.WatchOpts, sink chan<- *BalancerVaultAuthorizerChanged, newAuthorizer []common.Address) (event.Subscription, error) {
  1086  
  1087  	var newAuthorizerRule []interface{}
  1088  	for _, newAuthorizerItem := range newAuthorizer {
  1089  		newAuthorizerRule = append(newAuthorizerRule, newAuthorizerItem)
  1090  	}
  1091  
  1092  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "AuthorizerChanged", newAuthorizerRule)
  1093  	if err != nil {
  1094  		return nil, err
  1095  	}
  1096  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1097  		defer sub.Unsubscribe()
  1098  		for {
  1099  			select {
  1100  			case log := <-logs:
  1101  				// New log arrived, parse the event and forward to the user
  1102  				event := new(BalancerVaultAuthorizerChanged)
  1103  				if err := _BalancerVault.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  1104  					return err
  1105  				}
  1106  				event.Raw = log
  1107  
  1108  				select {
  1109  				case sink <- event:
  1110  				case err := <-sub.Err():
  1111  					return err
  1112  				case <-quit:
  1113  					return nil
  1114  				}
  1115  			case err := <-sub.Err():
  1116  				return err
  1117  			case <-quit:
  1118  				return nil
  1119  			}
  1120  		}
  1121  	}), nil
  1122  }
  1123  
  1124  // ParseAuthorizerChanged is a log parse operation binding the contract event 0x94b979b6831a51293e2641426f97747feed46f17779fed9cd18d1ecefcfe92ef.
  1125  //
  1126  // Solidity: event AuthorizerChanged(address indexed newAuthorizer)
  1127  func (_BalancerVault *BalancerVaultFilterer) ParseAuthorizerChanged(log types.Log) (*BalancerVaultAuthorizerChanged, error) {
  1128  	event := new(BalancerVaultAuthorizerChanged)
  1129  	if err := _BalancerVault.contract.UnpackLog(event, "AuthorizerChanged", log); err != nil {
  1130  		return nil, err
  1131  	}
  1132  	event.Raw = log
  1133  	return event, nil
  1134  }
  1135  
  1136  // BalancerVaultExternalBalanceTransferIterator is returned from FilterExternalBalanceTransfer and is used to iterate over the raw logs and unpacked data for ExternalBalanceTransfer events raised by the BalancerVault contract.
  1137  type BalancerVaultExternalBalanceTransferIterator struct {
  1138  	Event *BalancerVaultExternalBalanceTransfer // Event containing the contract specifics and raw log
  1139  
  1140  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1141  	event    string              // Event name to use for unpacking event data
  1142  
  1143  	logs chan types.Log        // Log channel receiving the found contract events
  1144  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1145  	done bool                  // Whether the subscription completed delivering logs
  1146  	fail error                 // Occurred error to stop iteration
  1147  }
  1148  
  1149  // Next advances the iterator to the subsequent event, returning whether there
  1150  // are any more events found. In case of a retrieval or parsing error, false is
  1151  // returned and Error() can be queried for the exact failure.
  1152  func (it *BalancerVaultExternalBalanceTransferIterator) Next() bool {
  1153  	// If the iterator failed, stop iterating
  1154  	if it.fail != nil {
  1155  		return false
  1156  	}
  1157  	// If the iterator completed, deliver directly whatever's available
  1158  	if it.done {
  1159  		select {
  1160  		case log := <-it.logs:
  1161  			it.Event = new(BalancerVaultExternalBalanceTransfer)
  1162  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1163  				it.fail = err
  1164  				return false
  1165  			}
  1166  			it.Event.Raw = log
  1167  			return true
  1168  
  1169  		default:
  1170  			return false
  1171  		}
  1172  	}
  1173  	// Iterator still in progress, wait for either a data or an error event
  1174  	select {
  1175  	case log := <-it.logs:
  1176  		it.Event = new(BalancerVaultExternalBalanceTransfer)
  1177  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1178  			it.fail = err
  1179  			return false
  1180  		}
  1181  		it.Event.Raw = log
  1182  		return true
  1183  
  1184  	case err := <-it.sub.Err():
  1185  		it.done = true
  1186  		it.fail = err
  1187  		return it.Next()
  1188  	}
  1189  }
  1190  
  1191  // Error returns any retrieval or parsing error occurred during filtering.
  1192  func (it *BalancerVaultExternalBalanceTransferIterator) Error() error {
  1193  	return it.fail
  1194  }
  1195  
  1196  // Close terminates the iteration process, releasing any pending underlying
  1197  // resources.
  1198  func (it *BalancerVaultExternalBalanceTransferIterator) Close() error {
  1199  	it.sub.Unsubscribe()
  1200  	return nil
  1201  }
  1202  
  1203  // BalancerVaultExternalBalanceTransfer represents a ExternalBalanceTransfer event raised by the BalancerVault contract.
  1204  type BalancerVaultExternalBalanceTransfer struct {
  1205  	Token     common.Address
  1206  	Sender    common.Address
  1207  	Recipient common.Address
  1208  	Amount    *big.Int
  1209  	Raw       types.Log // Blockchain specific contextual infos
  1210  }
  1211  
  1212  // FilterExternalBalanceTransfer is a free log retrieval operation binding the contract event 0x540a1a3f28340caec336c81d8d7b3df139ee5cdc1839a4f283d7ebb7eaae2d5c.
  1213  //
  1214  // Solidity: event ExternalBalanceTransfer(address indexed token, address indexed sender, address recipient, uint256 amount)
  1215  func (_BalancerVault *BalancerVaultFilterer) FilterExternalBalanceTransfer(opts *bind.FilterOpts, token []common.Address, sender []common.Address) (*BalancerVaultExternalBalanceTransferIterator, error) {
  1216  
  1217  	var tokenRule []interface{}
  1218  	for _, tokenItem := range token {
  1219  		tokenRule = append(tokenRule, tokenItem)
  1220  	}
  1221  	var senderRule []interface{}
  1222  	for _, senderItem := range sender {
  1223  		senderRule = append(senderRule, senderItem)
  1224  	}
  1225  
  1226  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "ExternalBalanceTransfer", tokenRule, senderRule)
  1227  	if err != nil {
  1228  		return nil, err
  1229  	}
  1230  	return &BalancerVaultExternalBalanceTransferIterator{contract: _BalancerVault.contract, event: "ExternalBalanceTransfer", logs: logs, sub: sub}, nil
  1231  }
  1232  
  1233  // WatchExternalBalanceTransfer is a free log subscription operation binding the contract event 0x540a1a3f28340caec336c81d8d7b3df139ee5cdc1839a4f283d7ebb7eaae2d5c.
  1234  //
  1235  // Solidity: event ExternalBalanceTransfer(address indexed token, address indexed sender, address recipient, uint256 amount)
  1236  func (_BalancerVault *BalancerVaultFilterer) WatchExternalBalanceTransfer(opts *bind.WatchOpts, sink chan<- *BalancerVaultExternalBalanceTransfer, token []common.Address, sender []common.Address) (event.Subscription, error) {
  1237  
  1238  	var tokenRule []interface{}
  1239  	for _, tokenItem := range token {
  1240  		tokenRule = append(tokenRule, tokenItem)
  1241  	}
  1242  	var senderRule []interface{}
  1243  	for _, senderItem := range sender {
  1244  		senderRule = append(senderRule, senderItem)
  1245  	}
  1246  
  1247  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "ExternalBalanceTransfer", tokenRule, senderRule)
  1248  	if err != nil {
  1249  		return nil, err
  1250  	}
  1251  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1252  		defer sub.Unsubscribe()
  1253  		for {
  1254  			select {
  1255  			case log := <-logs:
  1256  				// New log arrived, parse the event and forward to the user
  1257  				event := new(BalancerVaultExternalBalanceTransfer)
  1258  				if err := _BalancerVault.contract.UnpackLog(event, "ExternalBalanceTransfer", log); err != nil {
  1259  					return err
  1260  				}
  1261  				event.Raw = log
  1262  
  1263  				select {
  1264  				case sink <- event:
  1265  				case err := <-sub.Err():
  1266  					return err
  1267  				case <-quit:
  1268  					return nil
  1269  				}
  1270  			case err := <-sub.Err():
  1271  				return err
  1272  			case <-quit:
  1273  				return nil
  1274  			}
  1275  		}
  1276  	}), nil
  1277  }
  1278  
  1279  // ParseExternalBalanceTransfer is a log parse operation binding the contract event 0x540a1a3f28340caec336c81d8d7b3df139ee5cdc1839a4f283d7ebb7eaae2d5c.
  1280  //
  1281  // Solidity: event ExternalBalanceTransfer(address indexed token, address indexed sender, address recipient, uint256 amount)
  1282  func (_BalancerVault *BalancerVaultFilterer) ParseExternalBalanceTransfer(log types.Log) (*BalancerVaultExternalBalanceTransfer, error) {
  1283  	event := new(BalancerVaultExternalBalanceTransfer)
  1284  	if err := _BalancerVault.contract.UnpackLog(event, "ExternalBalanceTransfer", log); err != nil {
  1285  		return nil, err
  1286  	}
  1287  	event.Raw = log
  1288  	return event, nil
  1289  }
  1290  
  1291  // BalancerVaultFlashLoanIterator is returned from FilterFlashLoan and is used to iterate over the raw logs and unpacked data for FlashLoan events raised by the BalancerVault contract.
  1292  type BalancerVaultFlashLoanIterator struct {
  1293  	Event *BalancerVaultFlashLoan // Event containing the contract specifics and raw log
  1294  
  1295  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1296  	event    string              // Event name to use for unpacking event data
  1297  
  1298  	logs chan types.Log        // Log channel receiving the found contract events
  1299  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1300  	done bool                  // Whether the subscription completed delivering logs
  1301  	fail error                 // Occurred error to stop iteration
  1302  }
  1303  
  1304  // Next advances the iterator to the subsequent event, returning whether there
  1305  // are any more events found. In case of a retrieval or parsing error, false is
  1306  // returned and Error() can be queried for the exact failure.
  1307  func (it *BalancerVaultFlashLoanIterator) Next() bool {
  1308  	// If the iterator failed, stop iterating
  1309  	if it.fail != nil {
  1310  		return false
  1311  	}
  1312  	// If the iterator completed, deliver directly whatever's available
  1313  	if it.done {
  1314  		select {
  1315  		case log := <-it.logs:
  1316  			it.Event = new(BalancerVaultFlashLoan)
  1317  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1318  				it.fail = err
  1319  				return false
  1320  			}
  1321  			it.Event.Raw = log
  1322  			return true
  1323  
  1324  		default:
  1325  			return false
  1326  		}
  1327  	}
  1328  	// Iterator still in progress, wait for either a data or an error event
  1329  	select {
  1330  	case log := <-it.logs:
  1331  		it.Event = new(BalancerVaultFlashLoan)
  1332  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1333  			it.fail = err
  1334  			return false
  1335  		}
  1336  		it.Event.Raw = log
  1337  		return true
  1338  
  1339  	case err := <-it.sub.Err():
  1340  		it.done = true
  1341  		it.fail = err
  1342  		return it.Next()
  1343  	}
  1344  }
  1345  
  1346  // Error returns any retrieval or parsing error occurred during filtering.
  1347  func (it *BalancerVaultFlashLoanIterator) Error() error {
  1348  	return it.fail
  1349  }
  1350  
  1351  // Close terminates the iteration process, releasing any pending underlying
  1352  // resources.
  1353  func (it *BalancerVaultFlashLoanIterator) Close() error {
  1354  	it.sub.Unsubscribe()
  1355  	return nil
  1356  }
  1357  
  1358  // BalancerVaultFlashLoan represents a FlashLoan event raised by the BalancerVault contract.
  1359  type BalancerVaultFlashLoan struct {
  1360  	Recipient common.Address
  1361  	Token     common.Address
  1362  	Amount    *big.Int
  1363  	FeeAmount *big.Int
  1364  	Raw       types.Log // Blockchain specific contextual infos
  1365  }
  1366  
  1367  // FilterFlashLoan is a free log retrieval operation binding the contract event 0x0d7d75e01ab95780d3cd1c8ec0dd6c2ce19e3a20427eec8bf53283b6fb8e95f0.
  1368  //
  1369  // Solidity: event FlashLoan(address indexed recipient, address indexed token, uint256 amount, uint256 feeAmount)
  1370  func (_BalancerVault *BalancerVaultFilterer) FilterFlashLoan(opts *bind.FilterOpts, recipient []common.Address, token []common.Address) (*BalancerVaultFlashLoanIterator, error) {
  1371  
  1372  	var recipientRule []interface{}
  1373  	for _, recipientItem := range recipient {
  1374  		recipientRule = append(recipientRule, recipientItem)
  1375  	}
  1376  	var tokenRule []interface{}
  1377  	for _, tokenItem := range token {
  1378  		tokenRule = append(tokenRule, tokenItem)
  1379  	}
  1380  
  1381  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "FlashLoan", recipientRule, tokenRule)
  1382  	if err != nil {
  1383  		return nil, err
  1384  	}
  1385  	return &BalancerVaultFlashLoanIterator{contract: _BalancerVault.contract, event: "FlashLoan", logs: logs, sub: sub}, nil
  1386  }
  1387  
  1388  // WatchFlashLoan is a free log subscription operation binding the contract event 0x0d7d75e01ab95780d3cd1c8ec0dd6c2ce19e3a20427eec8bf53283b6fb8e95f0.
  1389  //
  1390  // Solidity: event FlashLoan(address indexed recipient, address indexed token, uint256 amount, uint256 feeAmount)
  1391  func (_BalancerVault *BalancerVaultFilterer) WatchFlashLoan(opts *bind.WatchOpts, sink chan<- *BalancerVaultFlashLoan, recipient []common.Address, token []common.Address) (event.Subscription, error) {
  1392  
  1393  	var recipientRule []interface{}
  1394  	for _, recipientItem := range recipient {
  1395  		recipientRule = append(recipientRule, recipientItem)
  1396  	}
  1397  	var tokenRule []interface{}
  1398  	for _, tokenItem := range token {
  1399  		tokenRule = append(tokenRule, tokenItem)
  1400  	}
  1401  
  1402  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "FlashLoan", recipientRule, tokenRule)
  1403  	if err != nil {
  1404  		return nil, err
  1405  	}
  1406  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1407  		defer sub.Unsubscribe()
  1408  		for {
  1409  			select {
  1410  			case log := <-logs:
  1411  				// New log arrived, parse the event and forward to the user
  1412  				event := new(BalancerVaultFlashLoan)
  1413  				if err := _BalancerVault.contract.UnpackLog(event, "FlashLoan", log); err != nil {
  1414  					return err
  1415  				}
  1416  				event.Raw = log
  1417  
  1418  				select {
  1419  				case sink <- event:
  1420  				case err := <-sub.Err():
  1421  					return err
  1422  				case <-quit:
  1423  					return nil
  1424  				}
  1425  			case err := <-sub.Err():
  1426  				return err
  1427  			case <-quit:
  1428  				return nil
  1429  			}
  1430  		}
  1431  	}), nil
  1432  }
  1433  
  1434  // ParseFlashLoan is a log parse operation binding the contract event 0x0d7d75e01ab95780d3cd1c8ec0dd6c2ce19e3a20427eec8bf53283b6fb8e95f0.
  1435  //
  1436  // Solidity: event FlashLoan(address indexed recipient, address indexed token, uint256 amount, uint256 feeAmount)
  1437  func (_BalancerVault *BalancerVaultFilterer) ParseFlashLoan(log types.Log) (*BalancerVaultFlashLoan, error) {
  1438  	event := new(BalancerVaultFlashLoan)
  1439  	if err := _BalancerVault.contract.UnpackLog(event, "FlashLoan", log); err != nil {
  1440  		return nil, err
  1441  	}
  1442  	event.Raw = log
  1443  	return event, nil
  1444  }
  1445  
  1446  // BalancerVaultInternalBalanceChangedIterator is returned from FilterInternalBalanceChanged and is used to iterate over the raw logs and unpacked data for InternalBalanceChanged events raised by the BalancerVault contract.
  1447  type BalancerVaultInternalBalanceChangedIterator struct {
  1448  	Event *BalancerVaultInternalBalanceChanged // Event containing the contract specifics and raw log
  1449  
  1450  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1451  	event    string              // Event name to use for unpacking event data
  1452  
  1453  	logs chan types.Log        // Log channel receiving the found contract events
  1454  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1455  	done bool                  // Whether the subscription completed delivering logs
  1456  	fail error                 // Occurred error to stop iteration
  1457  }
  1458  
  1459  // Next advances the iterator to the subsequent event, returning whether there
  1460  // are any more events found. In case of a retrieval or parsing error, false is
  1461  // returned and Error() can be queried for the exact failure.
  1462  func (it *BalancerVaultInternalBalanceChangedIterator) Next() bool {
  1463  	// If the iterator failed, stop iterating
  1464  	if it.fail != nil {
  1465  		return false
  1466  	}
  1467  	// If the iterator completed, deliver directly whatever's available
  1468  	if it.done {
  1469  		select {
  1470  		case log := <-it.logs:
  1471  			it.Event = new(BalancerVaultInternalBalanceChanged)
  1472  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1473  				it.fail = err
  1474  				return false
  1475  			}
  1476  			it.Event.Raw = log
  1477  			return true
  1478  
  1479  		default:
  1480  			return false
  1481  		}
  1482  	}
  1483  	// Iterator still in progress, wait for either a data or an error event
  1484  	select {
  1485  	case log := <-it.logs:
  1486  		it.Event = new(BalancerVaultInternalBalanceChanged)
  1487  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1488  			it.fail = err
  1489  			return false
  1490  		}
  1491  		it.Event.Raw = log
  1492  		return true
  1493  
  1494  	case err := <-it.sub.Err():
  1495  		it.done = true
  1496  		it.fail = err
  1497  		return it.Next()
  1498  	}
  1499  }
  1500  
  1501  // Error returns any retrieval or parsing error occurred during filtering.
  1502  func (it *BalancerVaultInternalBalanceChangedIterator) Error() error {
  1503  	return it.fail
  1504  }
  1505  
  1506  // Close terminates the iteration process, releasing any pending underlying
  1507  // resources.
  1508  func (it *BalancerVaultInternalBalanceChangedIterator) Close() error {
  1509  	it.sub.Unsubscribe()
  1510  	return nil
  1511  }
  1512  
  1513  // BalancerVaultInternalBalanceChanged represents a InternalBalanceChanged event raised by the BalancerVault contract.
  1514  type BalancerVaultInternalBalanceChanged struct {
  1515  	User  common.Address
  1516  	Token common.Address
  1517  	Delta *big.Int
  1518  	Raw   types.Log // Blockchain specific contextual infos
  1519  }
  1520  
  1521  // FilterInternalBalanceChanged is a free log retrieval operation binding the contract event 0x18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42.
  1522  //
  1523  // Solidity: event InternalBalanceChanged(address indexed user, address indexed token, int256 delta)
  1524  func (_BalancerVault *BalancerVaultFilterer) FilterInternalBalanceChanged(opts *bind.FilterOpts, user []common.Address, token []common.Address) (*BalancerVaultInternalBalanceChangedIterator, error) {
  1525  
  1526  	var userRule []interface{}
  1527  	for _, userItem := range user {
  1528  		userRule = append(userRule, userItem)
  1529  	}
  1530  	var tokenRule []interface{}
  1531  	for _, tokenItem := range token {
  1532  		tokenRule = append(tokenRule, tokenItem)
  1533  	}
  1534  
  1535  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "InternalBalanceChanged", userRule, tokenRule)
  1536  	if err != nil {
  1537  		return nil, err
  1538  	}
  1539  	return &BalancerVaultInternalBalanceChangedIterator{contract: _BalancerVault.contract, event: "InternalBalanceChanged", logs: logs, sub: sub}, nil
  1540  }
  1541  
  1542  // WatchInternalBalanceChanged is a free log subscription operation binding the contract event 0x18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42.
  1543  //
  1544  // Solidity: event InternalBalanceChanged(address indexed user, address indexed token, int256 delta)
  1545  func (_BalancerVault *BalancerVaultFilterer) WatchInternalBalanceChanged(opts *bind.WatchOpts, sink chan<- *BalancerVaultInternalBalanceChanged, user []common.Address, token []common.Address) (event.Subscription, error) {
  1546  
  1547  	var userRule []interface{}
  1548  	for _, userItem := range user {
  1549  		userRule = append(userRule, userItem)
  1550  	}
  1551  	var tokenRule []interface{}
  1552  	for _, tokenItem := range token {
  1553  		tokenRule = append(tokenRule, tokenItem)
  1554  	}
  1555  
  1556  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "InternalBalanceChanged", userRule, tokenRule)
  1557  	if err != nil {
  1558  		return nil, err
  1559  	}
  1560  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1561  		defer sub.Unsubscribe()
  1562  		for {
  1563  			select {
  1564  			case log := <-logs:
  1565  				// New log arrived, parse the event and forward to the user
  1566  				event := new(BalancerVaultInternalBalanceChanged)
  1567  				if err := _BalancerVault.contract.UnpackLog(event, "InternalBalanceChanged", log); err != nil {
  1568  					return err
  1569  				}
  1570  				event.Raw = log
  1571  
  1572  				select {
  1573  				case sink <- event:
  1574  				case err := <-sub.Err():
  1575  					return err
  1576  				case <-quit:
  1577  					return nil
  1578  				}
  1579  			case err := <-sub.Err():
  1580  				return err
  1581  			case <-quit:
  1582  				return nil
  1583  			}
  1584  		}
  1585  	}), nil
  1586  }
  1587  
  1588  // ParseInternalBalanceChanged is a log parse operation binding the contract event 0x18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42.
  1589  //
  1590  // Solidity: event InternalBalanceChanged(address indexed user, address indexed token, int256 delta)
  1591  func (_BalancerVault *BalancerVaultFilterer) ParseInternalBalanceChanged(log types.Log) (*BalancerVaultInternalBalanceChanged, error) {
  1592  	event := new(BalancerVaultInternalBalanceChanged)
  1593  	if err := _BalancerVault.contract.UnpackLog(event, "InternalBalanceChanged", log); err != nil {
  1594  		return nil, err
  1595  	}
  1596  	event.Raw = log
  1597  	return event, nil
  1598  }
  1599  
  1600  // BalancerVaultPausedStateChangedIterator is returned from FilterPausedStateChanged and is used to iterate over the raw logs and unpacked data for PausedStateChanged events raised by the BalancerVault contract.
  1601  type BalancerVaultPausedStateChangedIterator struct {
  1602  	Event *BalancerVaultPausedStateChanged // Event containing the contract specifics and raw log
  1603  
  1604  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1605  	event    string              // Event name to use for unpacking event data
  1606  
  1607  	logs chan types.Log        // Log channel receiving the found contract events
  1608  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1609  	done bool                  // Whether the subscription completed delivering logs
  1610  	fail error                 // Occurred error to stop iteration
  1611  }
  1612  
  1613  // Next advances the iterator to the subsequent event, returning whether there
  1614  // are any more events found. In case of a retrieval or parsing error, false is
  1615  // returned and Error() can be queried for the exact failure.
  1616  func (it *BalancerVaultPausedStateChangedIterator) Next() bool {
  1617  	// If the iterator failed, stop iterating
  1618  	if it.fail != nil {
  1619  		return false
  1620  	}
  1621  	// If the iterator completed, deliver directly whatever's available
  1622  	if it.done {
  1623  		select {
  1624  		case log := <-it.logs:
  1625  			it.Event = new(BalancerVaultPausedStateChanged)
  1626  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1627  				it.fail = err
  1628  				return false
  1629  			}
  1630  			it.Event.Raw = log
  1631  			return true
  1632  
  1633  		default:
  1634  			return false
  1635  		}
  1636  	}
  1637  	// Iterator still in progress, wait for either a data or an error event
  1638  	select {
  1639  	case log := <-it.logs:
  1640  		it.Event = new(BalancerVaultPausedStateChanged)
  1641  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1642  			it.fail = err
  1643  			return false
  1644  		}
  1645  		it.Event.Raw = log
  1646  		return true
  1647  
  1648  	case err := <-it.sub.Err():
  1649  		it.done = true
  1650  		it.fail = err
  1651  		return it.Next()
  1652  	}
  1653  }
  1654  
  1655  // Error returns any retrieval or parsing error occurred during filtering.
  1656  func (it *BalancerVaultPausedStateChangedIterator) Error() error {
  1657  	return it.fail
  1658  }
  1659  
  1660  // Close terminates the iteration process, releasing any pending underlying
  1661  // resources.
  1662  func (it *BalancerVaultPausedStateChangedIterator) Close() error {
  1663  	it.sub.Unsubscribe()
  1664  	return nil
  1665  }
  1666  
  1667  // BalancerVaultPausedStateChanged represents a PausedStateChanged event raised by the BalancerVault contract.
  1668  type BalancerVaultPausedStateChanged struct {
  1669  	Paused bool
  1670  	Raw    types.Log // Blockchain specific contextual infos
  1671  }
  1672  
  1673  // FilterPausedStateChanged is a free log retrieval operation binding the contract event 0x9e3a5e37224532dea67b89face185703738a228a6e8a23dee546960180d3be64.
  1674  //
  1675  // Solidity: event PausedStateChanged(bool paused)
  1676  func (_BalancerVault *BalancerVaultFilterer) FilterPausedStateChanged(opts *bind.FilterOpts) (*BalancerVaultPausedStateChangedIterator, error) {
  1677  
  1678  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "PausedStateChanged")
  1679  	if err != nil {
  1680  		return nil, err
  1681  	}
  1682  	return &BalancerVaultPausedStateChangedIterator{contract: _BalancerVault.contract, event: "PausedStateChanged", logs: logs, sub: sub}, nil
  1683  }
  1684  
  1685  // WatchPausedStateChanged is a free log subscription operation binding the contract event 0x9e3a5e37224532dea67b89face185703738a228a6e8a23dee546960180d3be64.
  1686  //
  1687  // Solidity: event PausedStateChanged(bool paused)
  1688  func (_BalancerVault *BalancerVaultFilterer) WatchPausedStateChanged(opts *bind.WatchOpts, sink chan<- *BalancerVaultPausedStateChanged) (event.Subscription, error) {
  1689  
  1690  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "PausedStateChanged")
  1691  	if err != nil {
  1692  		return nil, err
  1693  	}
  1694  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1695  		defer sub.Unsubscribe()
  1696  		for {
  1697  			select {
  1698  			case log := <-logs:
  1699  				// New log arrived, parse the event and forward to the user
  1700  				event := new(BalancerVaultPausedStateChanged)
  1701  				if err := _BalancerVault.contract.UnpackLog(event, "PausedStateChanged", log); err != nil {
  1702  					return err
  1703  				}
  1704  				event.Raw = log
  1705  
  1706  				select {
  1707  				case sink <- event:
  1708  				case err := <-sub.Err():
  1709  					return err
  1710  				case <-quit:
  1711  					return nil
  1712  				}
  1713  			case err := <-sub.Err():
  1714  				return err
  1715  			case <-quit:
  1716  				return nil
  1717  			}
  1718  		}
  1719  	}), nil
  1720  }
  1721  
  1722  // ParsePausedStateChanged is a log parse operation binding the contract event 0x9e3a5e37224532dea67b89face185703738a228a6e8a23dee546960180d3be64.
  1723  //
  1724  // Solidity: event PausedStateChanged(bool paused)
  1725  func (_BalancerVault *BalancerVaultFilterer) ParsePausedStateChanged(log types.Log) (*BalancerVaultPausedStateChanged, error) {
  1726  	event := new(BalancerVaultPausedStateChanged)
  1727  	if err := _BalancerVault.contract.UnpackLog(event, "PausedStateChanged", log); err != nil {
  1728  		return nil, err
  1729  	}
  1730  	event.Raw = log
  1731  	return event, nil
  1732  }
  1733  
  1734  // BalancerVaultPoolBalanceChangedIterator is returned from FilterPoolBalanceChanged and is used to iterate over the raw logs and unpacked data for PoolBalanceChanged events raised by the BalancerVault contract.
  1735  type BalancerVaultPoolBalanceChangedIterator struct {
  1736  	Event *BalancerVaultPoolBalanceChanged // Event containing the contract specifics and raw log
  1737  
  1738  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1739  	event    string              // Event name to use for unpacking event data
  1740  
  1741  	logs chan types.Log        // Log channel receiving the found contract events
  1742  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1743  	done bool                  // Whether the subscription completed delivering logs
  1744  	fail error                 // Occurred error to stop iteration
  1745  }
  1746  
  1747  // Next advances the iterator to the subsequent event, returning whether there
  1748  // are any more events found. In case of a retrieval or parsing error, false is
  1749  // returned and Error() can be queried for the exact failure.
  1750  func (it *BalancerVaultPoolBalanceChangedIterator) Next() bool {
  1751  	// If the iterator failed, stop iterating
  1752  	if it.fail != nil {
  1753  		return false
  1754  	}
  1755  	// If the iterator completed, deliver directly whatever's available
  1756  	if it.done {
  1757  		select {
  1758  		case log := <-it.logs:
  1759  			it.Event = new(BalancerVaultPoolBalanceChanged)
  1760  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1761  				it.fail = err
  1762  				return false
  1763  			}
  1764  			it.Event.Raw = log
  1765  			return true
  1766  
  1767  		default:
  1768  			return false
  1769  		}
  1770  	}
  1771  	// Iterator still in progress, wait for either a data or an error event
  1772  	select {
  1773  	case log := <-it.logs:
  1774  		it.Event = new(BalancerVaultPoolBalanceChanged)
  1775  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1776  			it.fail = err
  1777  			return false
  1778  		}
  1779  		it.Event.Raw = log
  1780  		return true
  1781  
  1782  	case err := <-it.sub.Err():
  1783  		it.done = true
  1784  		it.fail = err
  1785  		return it.Next()
  1786  	}
  1787  }
  1788  
  1789  // Error returns any retrieval or parsing error occurred during filtering.
  1790  func (it *BalancerVaultPoolBalanceChangedIterator) Error() error {
  1791  	return it.fail
  1792  }
  1793  
  1794  // Close terminates the iteration process, releasing any pending underlying
  1795  // resources.
  1796  func (it *BalancerVaultPoolBalanceChangedIterator) Close() error {
  1797  	it.sub.Unsubscribe()
  1798  	return nil
  1799  }
  1800  
  1801  // BalancerVaultPoolBalanceChanged represents a PoolBalanceChanged event raised by the BalancerVault contract.
  1802  type BalancerVaultPoolBalanceChanged struct {
  1803  	PoolId             [32]byte
  1804  	LiquidityProvider  common.Address
  1805  	Tokens             []common.Address
  1806  	Deltas             []*big.Int
  1807  	ProtocolFeeAmounts []*big.Int
  1808  	Raw                types.Log // Blockchain specific contextual infos
  1809  }
  1810  
  1811  // FilterPoolBalanceChanged is a free log retrieval operation binding the contract event 0xe5ce249087ce04f05a957192435400fd97868dba0e6a4b4c049abf8af80dae78.
  1812  //
  1813  // Solidity: event PoolBalanceChanged(bytes32 indexed poolId, address indexed liquidityProvider, address[] tokens, int256[] deltas, uint256[] protocolFeeAmounts)
  1814  func (_BalancerVault *BalancerVaultFilterer) FilterPoolBalanceChanged(opts *bind.FilterOpts, poolId [][32]byte, liquidityProvider []common.Address) (*BalancerVaultPoolBalanceChangedIterator, error) {
  1815  
  1816  	var poolIdRule []interface{}
  1817  	for _, poolIdItem := range poolId {
  1818  		poolIdRule = append(poolIdRule, poolIdItem)
  1819  	}
  1820  	var liquidityProviderRule []interface{}
  1821  	for _, liquidityProviderItem := range liquidityProvider {
  1822  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1823  	}
  1824  
  1825  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "PoolBalanceChanged", poolIdRule, liquidityProviderRule)
  1826  	if err != nil {
  1827  		return nil, err
  1828  	}
  1829  	return &BalancerVaultPoolBalanceChangedIterator{contract: _BalancerVault.contract, event: "PoolBalanceChanged", logs: logs, sub: sub}, nil
  1830  }
  1831  
  1832  // WatchPoolBalanceChanged is a free log subscription operation binding the contract event 0xe5ce249087ce04f05a957192435400fd97868dba0e6a4b4c049abf8af80dae78.
  1833  //
  1834  // Solidity: event PoolBalanceChanged(bytes32 indexed poolId, address indexed liquidityProvider, address[] tokens, int256[] deltas, uint256[] protocolFeeAmounts)
  1835  func (_BalancerVault *BalancerVaultFilterer) WatchPoolBalanceChanged(opts *bind.WatchOpts, sink chan<- *BalancerVaultPoolBalanceChanged, poolId [][32]byte, liquidityProvider []common.Address) (event.Subscription, error) {
  1836  
  1837  	var poolIdRule []interface{}
  1838  	for _, poolIdItem := range poolId {
  1839  		poolIdRule = append(poolIdRule, poolIdItem)
  1840  	}
  1841  	var liquidityProviderRule []interface{}
  1842  	for _, liquidityProviderItem := range liquidityProvider {
  1843  		liquidityProviderRule = append(liquidityProviderRule, liquidityProviderItem)
  1844  	}
  1845  
  1846  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "PoolBalanceChanged", poolIdRule, liquidityProviderRule)
  1847  	if err != nil {
  1848  		return nil, err
  1849  	}
  1850  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1851  		defer sub.Unsubscribe()
  1852  		for {
  1853  			select {
  1854  			case log := <-logs:
  1855  				// New log arrived, parse the event and forward to the user
  1856  				event := new(BalancerVaultPoolBalanceChanged)
  1857  				if err := _BalancerVault.contract.UnpackLog(event, "PoolBalanceChanged", log); err != nil {
  1858  					return err
  1859  				}
  1860  				event.Raw = log
  1861  
  1862  				select {
  1863  				case sink <- event:
  1864  				case err := <-sub.Err():
  1865  					return err
  1866  				case <-quit:
  1867  					return nil
  1868  				}
  1869  			case err := <-sub.Err():
  1870  				return err
  1871  			case <-quit:
  1872  				return nil
  1873  			}
  1874  		}
  1875  	}), nil
  1876  }
  1877  
  1878  // ParsePoolBalanceChanged is a log parse operation binding the contract event 0xe5ce249087ce04f05a957192435400fd97868dba0e6a4b4c049abf8af80dae78.
  1879  //
  1880  // Solidity: event PoolBalanceChanged(bytes32 indexed poolId, address indexed liquidityProvider, address[] tokens, int256[] deltas, uint256[] protocolFeeAmounts)
  1881  func (_BalancerVault *BalancerVaultFilterer) ParsePoolBalanceChanged(log types.Log) (*BalancerVaultPoolBalanceChanged, error) {
  1882  	event := new(BalancerVaultPoolBalanceChanged)
  1883  	if err := _BalancerVault.contract.UnpackLog(event, "PoolBalanceChanged", log); err != nil {
  1884  		return nil, err
  1885  	}
  1886  	event.Raw = log
  1887  	return event, nil
  1888  }
  1889  
  1890  // BalancerVaultPoolBalanceManagedIterator is returned from FilterPoolBalanceManaged and is used to iterate over the raw logs and unpacked data for PoolBalanceManaged events raised by the BalancerVault contract.
  1891  type BalancerVaultPoolBalanceManagedIterator struct {
  1892  	Event *BalancerVaultPoolBalanceManaged // Event containing the contract specifics and raw log
  1893  
  1894  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1895  	event    string              // Event name to use for unpacking event data
  1896  
  1897  	logs chan types.Log        // Log channel receiving the found contract events
  1898  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1899  	done bool                  // Whether the subscription completed delivering logs
  1900  	fail error                 // Occurred error to stop iteration
  1901  }
  1902  
  1903  // Next advances the iterator to the subsequent event, returning whether there
  1904  // are any more events found. In case of a retrieval or parsing error, false is
  1905  // returned and Error() can be queried for the exact failure.
  1906  func (it *BalancerVaultPoolBalanceManagedIterator) Next() bool {
  1907  	// If the iterator failed, stop iterating
  1908  	if it.fail != nil {
  1909  		return false
  1910  	}
  1911  	// If the iterator completed, deliver directly whatever's available
  1912  	if it.done {
  1913  		select {
  1914  		case log := <-it.logs:
  1915  			it.Event = new(BalancerVaultPoolBalanceManaged)
  1916  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1917  				it.fail = err
  1918  				return false
  1919  			}
  1920  			it.Event.Raw = log
  1921  			return true
  1922  
  1923  		default:
  1924  			return false
  1925  		}
  1926  	}
  1927  	// Iterator still in progress, wait for either a data or an error event
  1928  	select {
  1929  	case log := <-it.logs:
  1930  		it.Event = new(BalancerVaultPoolBalanceManaged)
  1931  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1932  			it.fail = err
  1933  			return false
  1934  		}
  1935  		it.Event.Raw = log
  1936  		return true
  1937  
  1938  	case err := <-it.sub.Err():
  1939  		it.done = true
  1940  		it.fail = err
  1941  		return it.Next()
  1942  	}
  1943  }
  1944  
  1945  // Error returns any retrieval or parsing error occurred during filtering.
  1946  func (it *BalancerVaultPoolBalanceManagedIterator) Error() error {
  1947  	return it.fail
  1948  }
  1949  
  1950  // Close terminates the iteration process, releasing any pending underlying
  1951  // resources.
  1952  func (it *BalancerVaultPoolBalanceManagedIterator) Close() error {
  1953  	it.sub.Unsubscribe()
  1954  	return nil
  1955  }
  1956  
  1957  // BalancerVaultPoolBalanceManaged represents a PoolBalanceManaged event raised by the BalancerVault contract.
  1958  type BalancerVaultPoolBalanceManaged struct {
  1959  	PoolId       [32]byte
  1960  	AssetManager common.Address
  1961  	Token        common.Address
  1962  	CashDelta    *big.Int
  1963  	ManagedDelta *big.Int
  1964  	Raw          types.Log // Blockchain specific contextual infos
  1965  }
  1966  
  1967  // FilterPoolBalanceManaged is a free log retrieval operation binding the contract event 0x6edcaf6241105b4c94c2efdbf3a6b12458eb3d07be3a0e81d24b13c44045fe7a.
  1968  //
  1969  // Solidity: event PoolBalanceManaged(bytes32 indexed poolId, address indexed assetManager, address indexed token, int256 cashDelta, int256 managedDelta)
  1970  func (_BalancerVault *BalancerVaultFilterer) FilterPoolBalanceManaged(opts *bind.FilterOpts, poolId [][32]byte, assetManager []common.Address, token []common.Address) (*BalancerVaultPoolBalanceManagedIterator, error) {
  1971  
  1972  	var poolIdRule []interface{}
  1973  	for _, poolIdItem := range poolId {
  1974  		poolIdRule = append(poolIdRule, poolIdItem)
  1975  	}
  1976  	var assetManagerRule []interface{}
  1977  	for _, assetManagerItem := range assetManager {
  1978  		assetManagerRule = append(assetManagerRule, assetManagerItem)
  1979  	}
  1980  	var tokenRule []interface{}
  1981  	for _, tokenItem := range token {
  1982  		tokenRule = append(tokenRule, tokenItem)
  1983  	}
  1984  
  1985  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "PoolBalanceManaged", poolIdRule, assetManagerRule, tokenRule)
  1986  	if err != nil {
  1987  		return nil, err
  1988  	}
  1989  	return &BalancerVaultPoolBalanceManagedIterator{contract: _BalancerVault.contract, event: "PoolBalanceManaged", logs: logs, sub: sub}, nil
  1990  }
  1991  
  1992  // WatchPoolBalanceManaged is a free log subscription operation binding the contract event 0x6edcaf6241105b4c94c2efdbf3a6b12458eb3d07be3a0e81d24b13c44045fe7a.
  1993  //
  1994  // Solidity: event PoolBalanceManaged(bytes32 indexed poolId, address indexed assetManager, address indexed token, int256 cashDelta, int256 managedDelta)
  1995  func (_BalancerVault *BalancerVaultFilterer) WatchPoolBalanceManaged(opts *bind.WatchOpts, sink chan<- *BalancerVaultPoolBalanceManaged, poolId [][32]byte, assetManager []common.Address, token []common.Address) (event.Subscription, error) {
  1996  
  1997  	var poolIdRule []interface{}
  1998  	for _, poolIdItem := range poolId {
  1999  		poolIdRule = append(poolIdRule, poolIdItem)
  2000  	}
  2001  	var assetManagerRule []interface{}
  2002  	for _, assetManagerItem := range assetManager {
  2003  		assetManagerRule = append(assetManagerRule, assetManagerItem)
  2004  	}
  2005  	var tokenRule []interface{}
  2006  	for _, tokenItem := range token {
  2007  		tokenRule = append(tokenRule, tokenItem)
  2008  	}
  2009  
  2010  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "PoolBalanceManaged", poolIdRule, assetManagerRule, tokenRule)
  2011  	if err != nil {
  2012  		return nil, err
  2013  	}
  2014  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2015  		defer sub.Unsubscribe()
  2016  		for {
  2017  			select {
  2018  			case log := <-logs:
  2019  				// New log arrived, parse the event and forward to the user
  2020  				event := new(BalancerVaultPoolBalanceManaged)
  2021  				if err := _BalancerVault.contract.UnpackLog(event, "PoolBalanceManaged", log); err != nil {
  2022  					return err
  2023  				}
  2024  				event.Raw = log
  2025  
  2026  				select {
  2027  				case sink <- event:
  2028  				case err := <-sub.Err():
  2029  					return err
  2030  				case <-quit:
  2031  					return nil
  2032  				}
  2033  			case err := <-sub.Err():
  2034  				return err
  2035  			case <-quit:
  2036  				return nil
  2037  			}
  2038  		}
  2039  	}), nil
  2040  }
  2041  
  2042  // ParsePoolBalanceManaged is a log parse operation binding the contract event 0x6edcaf6241105b4c94c2efdbf3a6b12458eb3d07be3a0e81d24b13c44045fe7a.
  2043  //
  2044  // Solidity: event PoolBalanceManaged(bytes32 indexed poolId, address indexed assetManager, address indexed token, int256 cashDelta, int256 managedDelta)
  2045  func (_BalancerVault *BalancerVaultFilterer) ParsePoolBalanceManaged(log types.Log) (*BalancerVaultPoolBalanceManaged, error) {
  2046  	event := new(BalancerVaultPoolBalanceManaged)
  2047  	if err := _BalancerVault.contract.UnpackLog(event, "PoolBalanceManaged", log); err != nil {
  2048  		return nil, err
  2049  	}
  2050  	event.Raw = log
  2051  	return event, nil
  2052  }
  2053  
  2054  // BalancerVaultPoolRegisteredIterator is returned from FilterPoolRegistered and is used to iterate over the raw logs and unpacked data for PoolRegistered events raised by the BalancerVault contract.
  2055  type BalancerVaultPoolRegisteredIterator struct {
  2056  	Event *BalancerVaultPoolRegistered // Event containing the contract specifics and raw log
  2057  
  2058  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2059  	event    string              // Event name to use for unpacking event data
  2060  
  2061  	logs chan types.Log        // Log channel receiving the found contract events
  2062  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2063  	done bool                  // Whether the subscription completed delivering logs
  2064  	fail error                 // Occurred error to stop iteration
  2065  }
  2066  
  2067  // Next advances the iterator to the subsequent event, returning whether there
  2068  // are any more events found. In case of a retrieval or parsing error, false is
  2069  // returned and Error() can be queried for the exact failure.
  2070  func (it *BalancerVaultPoolRegisteredIterator) Next() bool {
  2071  	// If the iterator failed, stop iterating
  2072  	if it.fail != nil {
  2073  		return false
  2074  	}
  2075  	// If the iterator completed, deliver directly whatever's available
  2076  	if it.done {
  2077  		select {
  2078  		case log := <-it.logs:
  2079  			it.Event = new(BalancerVaultPoolRegistered)
  2080  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2081  				it.fail = err
  2082  				return false
  2083  			}
  2084  			it.Event.Raw = log
  2085  			return true
  2086  
  2087  		default:
  2088  			return false
  2089  		}
  2090  	}
  2091  	// Iterator still in progress, wait for either a data or an error event
  2092  	select {
  2093  	case log := <-it.logs:
  2094  		it.Event = new(BalancerVaultPoolRegistered)
  2095  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2096  			it.fail = err
  2097  			return false
  2098  		}
  2099  		it.Event.Raw = log
  2100  		return true
  2101  
  2102  	case err := <-it.sub.Err():
  2103  		it.done = true
  2104  		it.fail = err
  2105  		return it.Next()
  2106  	}
  2107  }
  2108  
  2109  // Error returns any retrieval or parsing error occurred during filtering.
  2110  func (it *BalancerVaultPoolRegisteredIterator) Error() error {
  2111  	return it.fail
  2112  }
  2113  
  2114  // Close terminates the iteration process, releasing any pending underlying
  2115  // resources.
  2116  func (it *BalancerVaultPoolRegisteredIterator) Close() error {
  2117  	it.sub.Unsubscribe()
  2118  	return nil
  2119  }
  2120  
  2121  // BalancerVaultPoolRegistered represents a PoolRegistered event raised by the BalancerVault contract.
  2122  type BalancerVaultPoolRegistered struct {
  2123  	PoolId         [32]byte
  2124  	PoolAddress    common.Address
  2125  	Specialization uint8
  2126  	Raw            types.Log // Blockchain specific contextual infos
  2127  }
  2128  
  2129  // FilterPoolRegistered is a free log retrieval operation binding the contract event 0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e.
  2130  //
  2131  // Solidity: event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, uint8 specialization)
  2132  func (_BalancerVault *BalancerVaultFilterer) FilterPoolRegistered(opts *bind.FilterOpts, poolId [][32]byte, poolAddress []common.Address) (*BalancerVaultPoolRegisteredIterator, error) {
  2133  
  2134  	var poolIdRule []interface{}
  2135  	for _, poolIdItem := range poolId {
  2136  		poolIdRule = append(poolIdRule, poolIdItem)
  2137  	}
  2138  	var poolAddressRule []interface{}
  2139  	for _, poolAddressItem := range poolAddress {
  2140  		poolAddressRule = append(poolAddressRule, poolAddressItem)
  2141  	}
  2142  
  2143  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "PoolRegistered", poolIdRule, poolAddressRule)
  2144  	if err != nil {
  2145  		return nil, err
  2146  	}
  2147  	return &BalancerVaultPoolRegisteredIterator{contract: _BalancerVault.contract, event: "PoolRegistered", logs: logs, sub: sub}, nil
  2148  }
  2149  
  2150  // WatchPoolRegistered is a free log subscription operation binding the contract event 0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e.
  2151  //
  2152  // Solidity: event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, uint8 specialization)
  2153  func (_BalancerVault *BalancerVaultFilterer) WatchPoolRegistered(opts *bind.WatchOpts, sink chan<- *BalancerVaultPoolRegistered, poolId [][32]byte, poolAddress []common.Address) (event.Subscription, error) {
  2154  
  2155  	var poolIdRule []interface{}
  2156  	for _, poolIdItem := range poolId {
  2157  		poolIdRule = append(poolIdRule, poolIdItem)
  2158  	}
  2159  	var poolAddressRule []interface{}
  2160  	for _, poolAddressItem := range poolAddress {
  2161  		poolAddressRule = append(poolAddressRule, poolAddressItem)
  2162  	}
  2163  
  2164  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "PoolRegistered", poolIdRule, poolAddressRule)
  2165  	if err != nil {
  2166  		return nil, err
  2167  	}
  2168  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2169  		defer sub.Unsubscribe()
  2170  		for {
  2171  			select {
  2172  			case log := <-logs:
  2173  				// New log arrived, parse the event and forward to the user
  2174  				event := new(BalancerVaultPoolRegistered)
  2175  				if err := _BalancerVault.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  2176  					return err
  2177  				}
  2178  				event.Raw = log
  2179  
  2180  				select {
  2181  				case sink <- event:
  2182  				case err := <-sub.Err():
  2183  					return err
  2184  				case <-quit:
  2185  					return nil
  2186  				}
  2187  			case err := <-sub.Err():
  2188  				return err
  2189  			case <-quit:
  2190  				return nil
  2191  			}
  2192  		}
  2193  	}), nil
  2194  }
  2195  
  2196  // ParsePoolRegistered is a log parse operation binding the contract event 0x3c13bc30b8e878c53fd2a36b679409c073afd75950be43d8858768e956fbc20e.
  2197  //
  2198  // Solidity: event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, uint8 specialization)
  2199  func (_BalancerVault *BalancerVaultFilterer) ParsePoolRegistered(log types.Log) (*BalancerVaultPoolRegistered, error) {
  2200  	event := new(BalancerVaultPoolRegistered)
  2201  	if err := _BalancerVault.contract.UnpackLog(event, "PoolRegistered", log); err != nil {
  2202  		return nil, err
  2203  	}
  2204  	event.Raw = log
  2205  	return event, nil
  2206  }
  2207  
  2208  // BalancerVaultRelayerApprovalChangedIterator is returned from FilterRelayerApprovalChanged and is used to iterate over the raw logs and unpacked data for RelayerApprovalChanged events raised by the BalancerVault contract.
  2209  type BalancerVaultRelayerApprovalChangedIterator struct {
  2210  	Event *BalancerVaultRelayerApprovalChanged // Event containing the contract specifics and raw log
  2211  
  2212  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2213  	event    string              // Event name to use for unpacking event data
  2214  
  2215  	logs chan types.Log        // Log channel receiving the found contract events
  2216  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2217  	done bool                  // Whether the subscription completed delivering logs
  2218  	fail error                 // Occurred error to stop iteration
  2219  }
  2220  
  2221  // Next advances the iterator to the subsequent event, returning whether there
  2222  // are any more events found. In case of a retrieval or parsing error, false is
  2223  // returned and Error() can be queried for the exact failure.
  2224  func (it *BalancerVaultRelayerApprovalChangedIterator) Next() bool {
  2225  	// If the iterator failed, stop iterating
  2226  	if it.fail != nil {
  2227  		return false
  2228  	}
  2229  	// If the iterator completed, deliver directly whatever's available
  2230  	if it.done {
  2231  		select {
  2232  		case log := <-it.logs:
  2233  			it.Event = new(BalancerVaultRelayerApprovalChanged)
  2234  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2235  				it.fail = err
  2236  				return false
  2237  			}
  2238  			it.Event.Raw = log
  2239  			return true
  2240  
  2241  		default:
  2242  			return false
  2243  		}
  2244  	}
  2245  	// Iterator still in progress, wait for either a data or an error event
  2246  	select {
  2247  	case log := <-it.logs:
  2248  		it.Event = new(BalancerVaultRelayerApprovalChanged)
  2249  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2250  			it.fail = err
  2251  			return false
  2252  		}
  2253  		it.Event.Raw = log
  2254  		return true
  2255  
  2256  	case err := <-it.sub.Err():
  2257  		it.done = true
  2258  		it.fail = err
  2259  		return it.Next()
  2260  	}
  2261  }
  2262  
  2263  // Error returns any retrieval or parsing error occurred during filtering.
  2264  func (it *BalancerVaultRelayerApprovalChangedIterator) Error() error {
  2265  	return it.fail
  2266  }
  2267  
  2268  // Close terminates the iteration process, releasing any pending underlying
  2269  // resources.
  2270  func (it *BalancerVaultRelayerApprovalChangedIterator) Close() error {
  2271  	it.sub.Unsubscribe()
  2272  	return nil
  2273  }
  2274  
  2275  // BalancerVaultRelayerApprovalChanged represents a RelayerApprovalChanged event raised by the BalancerVault contract.
  2276  type BalancerVaultRelayerApprovalChanged struct {
  2277  	Relayer  common.Address
  2278  	Sender   common.Address
  2279  	Approved bool
  2280  	Raw      types.Log // Blockchain specific contextual infos
  2281  }
  2282  
  2283  // FilterRelayerApprovalChanged is a free log retrieval operation binding the contract event 0x46961fdb4502b646d5095fba7600486a8ac05041d55cdf0f16ed677180b5cad8.
  2284  //
  2285  // Solidity: event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved)
  2286  func (_BalancerVault *BalancerVaultFilterer) FilterRelayerApprovalChanged(opts *bind.FilterOpts, relayer []common.Address, sender []common.Address) (*BalancerVaultRelayerApprovalChangedIterator, error) {
  2287  
  2288  	var relayerRule []interface{}
  2289  	for _, relayerItem := range relayer {
  2290  		relayerRule = append(relayerRule, relayerItem)
  2291  	}
  2292  	var senderRule []interface{}
  2293  	for _, senderItem := range sender {
  2294  		senderRule = append(senderRule, senderItem)
  2295  	}
  2296  
  2297  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "RelayerApprovalChanged", relayerRule, senderRule)
  2298  	if err != nil {
  2299  		return nil, err
  2300  	}
  2301  	return &BalancerVaultRelayerApprovalChangedIterator{contract: _BalancerVault.contract, event: "RelayerApprovalChanged", logs: logs, sub: sub}, nil
  2302  }
  2303  
  2304  // WatchRelayerApprovalChanged is a free log subscription operation binding the contract event 0x46961fdb4502b646d5095fba7600486a8ac05041d55cdf0f16ed677180b5cad8.
  2305  //
  2306  // Solidity: event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved)
  2307  func (_BalancerVault *BalancerVaultFilterer) WatchRelayerApprovalChanged(opts *bind.WatchOpts, sink chan<- *BalancerVaultRelayerApprovalChanged, relayer []common.Address, sender []common.Address) (event.Subscription, error) {
  2308  
  2309  	var relayerRule []interface{}
  2310  	for _, relayerItem := range relayer {
  2311  		relayerRule = append(relayerRule, relayerItem)
  2312  	}
  2313  	var senderRule []interface{}
  2314  	for _, senderItem := range sender {
  2315  		senderRule = append(senderRule, senderItem)
  2316  	}
  2317  
  2318  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "RelayerApprovalChanged", relayerRule, senderRule)
  2319  	if err != nil {
  2320  		return nil, err
  2321  	}
  2322  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2323  		defer sub.Unsubscribe()
  2324  		for {
  2325  			select {
  2326  			case log := <-logs:
  2327  				// New log arrived, parse the event and forward to the user
  2328  				event := new(BalancerVaultRelayerApprovalChanged)
  2329  				if err := _BalancerVault.contract.UnpackLog(event, "RelayerApprovalChanged", log); err != nil {
  2330  					return err
  2331  				}
  2332  				event.Raw = log
  2333  
  2334  				select {
  2335  				case sink <- event:
  2336  				case err := <-sub.Err():
  2337  					return err
  2338  				case <-quit:
  2339  					return nil
  2340  				}
  2341  			case err := <-sub.Err():
  2342  				return err
  2343  			case <-quit:
  2344  				return nil
  2345  			}
  2346  		}
  2347  	}), nil
  2348  }
  2349  
  2350  // ParseRelayerApprovalChanged is a log parse operation binding the contract event 0x46961fdb4502b646d5095fba7600486a8ac05041d55cdf0f16ed677180b5cad8.
  2351  //
  2352  // Solidity: event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved)
  2353  func (_BalancerVault *BalancerVaultFilterer) ParseRelayerApprovalChanged(log types.Log) (*BalancerVaultRelayerApprovalChanged, error) {
  2354  	event := new(BalancerVaultRelayerApprovalChanged)
  2355  	if err := _BalancerVault.contract.UnpackLog(event, "RelayerApprovalChanged", log); err != nil {
  2356  		return nil, err
  2357  	}
  2358  	event.Raw = log
  2359  	return event, nil
  2360  }
  2361  
  2362  // BalancerVaultSwapIterator is returned from FilterSwap and is used to iterate over the raw logs and unpacked data for Swap events raised by the BalancerVault contract.
  2363  type BalancerVaultSwapIterator struct {
  2364  	Event *BalancerVaultSwap // Event containing the contract specifics and raw log
  2365  
  2366  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2367  	event    string              // Event name to use for unpacking event data
  2368  
  2369  	logs chan types.Log        // Log channel receiving the found contract events
  2370  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2371  	done bool                  // Whether the subscription completed delivering logs
  2372  	fail error                 // Occurred error to stop iteration
  2373  }
  2374  
  2375  // Next advances the iterator to the subsequent event, returning whether there
  2376  // are any more events found. In case of a retrieval or parsing error, false is
  2377  // returned and Error() can be queried for the exact failure.
  2378  func (it *BalancerVaultSwapIterator) Next() bool {
  2379  	// If the iterator failed, stop iterating
  2380  	if it.fail != nil {
  2381  		return false
  2382  	}
  2383  	// If the iterator completed, deliver directly whatever's available
  2384  	if it.done {
  2385  		select {
  2386  		case log := <-it.logs:
  2387  			it.Event = new(BalancerVaultSwap)
  2388  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2389  				it.fail = err
  2390  				return false
  2391  			}
  2392  			it.Event.Raw = log
  2393  			return true
  2394  
  2395  		default:
  2396  			return false
  2397  		}
  2398  	}
  2399  	// Iterator still in progress, wait for either a data or an error event
  2400  	select {
  2401  	case log := <-it.logs:
  2402  		it.Event = new(BalancerVaultSwap)
  2403  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2404  			it.fail = err
  2405  			return false
  2406  		}
  2407  		it.Event.Raw = log
  2408  		return true
  2409  
  2410  	case err := <-it.sub.Err():
  2411  		it.done = true
  2412  		it.fail = err
  2413  		return it.Next()
  2414  	}
  2415  }
  2416  
  2417  // Error returns any retrieval or parsing error occurred during filtering.
  2418  func (it *BalancerVaultSwapIterator) Error() error {
  2419  	return it.fail
  2420  }
  2421  
  2422  // Close terminates the iteration process, releasing any pending underlying
  2423  // resources.
  2424  func (it *BalancerVaultSwapIterator) Close() error {
  2425  	it.sub.Unsubscribe()
  2426  	return nil
  2427  }
  2428  
  2429  // BalancerVaultSwap represents a Swap event raised by the BalancerVault contract.
  2430  type BalancerVaultSwap struct {
  2431  	PoolId    [32]byte
  2432  	TokenIn   common.Address
  2433  	TokenOut  common.Address
  2434  	AmountIn  *big.Int
  2435  	AmountOut *big.Int
  2436  	Raw       types.Log // Blockchain specific contextual infos
  2437  }
  2438  
  2439  // FilterSwap is a free log retrieval operation binding the contract event 0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b.
  2440  //
  2441  // Solidity: event Swap(bytes32 indexed poolId, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
  2442  func (_BalancerVault *BalancerVaultFilterer) FilterSwap(opts *bind.FilterOpts, poolId [][32]byte, tokenIn []common.Address, tokenOut []common.Address) (*BalancerVaultSwapIterator, error) {
  2443  
  2444  	var poolIdRule []interface{}
  2445  	for _, poolIdItem := range poolId {
  2446  		poolIdRule = append(poolIdRule, poolIdItem)
  2447  	}
  2448  	var tokenInRule []interface{}
  2449  	for _, tokenInItem := range tokenIn {
  2450  		tokenInRule = append(tokenInRule, tokenInItem)
  2451  	}
  2452  	var tokenOutRule []interface{}
  2453  	for _, tokenOutItem := range tokenOut {
  2454  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  2455  	}
  2456  
  2457  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "Swap", poolIdRule, tokenInRule, tokenOutRule)
  2458  	if err != nil {
  2459  		return nil, err
  2460  	}
  2461  	return &BalancerVaultSwapIterator{contract: _BalancerVault.contract, event: "Swap", logs: logs, sub: sub}, nil
  2462  }
  2463  
  2464  // WatchSwap is a free log subscription operation binding the contract event 0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b.
  2465  //
  2466  // Solidity: event Swap(bytes32 indexed poolId, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
  2467  func (_BalancerVault *BalancerVaultFilterer) WatchSwap(opts *bind.WatchOpts, sink chan<- *BalancerVaultSwap, poolId [][32]byte, tokenIn []common.Address, tokenOut []common.Address) (event.Subscription, error) {
  2468  
  2469  	var poolIdRule []interface{}
  2470  	for _, poolIdItem := range poolId {
  2471  		poolIdRule = append(poolIdRule, poolIdItem)
  2472  	}
  2473  	var tokenInRule []interface{}
  2474  	for _, tokenInItem := range tokenIn {
  2475  		tokenInRule = append(tokenInRule, tokenInItem)
  2476  	}
  2477  	var tokenOutRule []interface{}
  2478  	for _, tokenOutItem := range tokenOut {
  2479  		tokenOutRule = append(tokenOutRule, tokenOutItem)
  2480  	}
  2481  
  2482  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "Swap", poolIdRule, tokenInRule, tokenOutRule)
  2483  	if err != nil {
  2484  		return nil, err
  2485  	}
  2486  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2487  		defer sub.Unsubscribe()
  2488  		for {
  2489  			select {
  2490  			case log := <-logs:
  2491  				// New log arrived, parse the event and forward to the user
  2492  				event := new(BalancerVaultSwap)
  2493  				if err := _BalancerVault.contract.UnpackLog(event, "Swap", log); err != nil {
  2494  					return err
  2495  				}
  2496  				event.Raw = log
  2497  
  2498  				select {
  2499  				case sink <- event:
  2500  				case err := <-sub.Err():
  2501  					return err
  2502  				case <-quit:
  2503  					return nil
  2504  				}
  2505  			case err := <-sub.Err():
  2506  				return err
  2507  			case <-quit:
  2508  				return nil
  2509  			}
  2510  		}
  2511  	}), nil
  2512  }
  2513  
  2514  // ParseSwap is a log parse operation binding the contract event 0x2170c741c41531aec20e7c107c24eecfdd15e69c9bb0a8dd37b1840b9e0b207b.
  2515  //
  2516  // Solidity: event Swap(bytes32 indexed poolId, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
  2517  func (_BalancerVault *BalancerVaultFilterer) ParseSwap(log types.Log) (*BalancerVaultSwap, error) {
  2518  	event := new(BalancerVaultSwap)
  2519  	if err := _BalancerVault.contract.UnpackLog(event, "Swap", log); err != nil {
  2520  		return nil, err
  2521  	}
  2522  	event.Raw = log
  2523  	return event, nil
  2524  }
  2525  
  2526  // BalancerVaultTokensDeregisteredIterator is returned from FilterTokensDeregistered and is used to iterate over the raw logs and unpacked data for TokensDeregistered events raised by the BalancerVault contract.
  2527  type BalancerVaultTokensDeregisteredIterator struct {
  2528  	Event *BalancerVaultTokensDeregistered // Event containing the contract specifics and raw log
  2529  
  2530  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2531  	event    string              // Event name to use for unpacking event data
  2532  
  2533  	logs chan types.Log        // Log channel receiving the found contract events
  2534  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2535  	done bool                  // Whether the subscription completed delivering logs
  2536  	fail error                 // Occurred error to stop iteration
  2537  }
  2538  
  2539  // Next advances the iterator to the subsequent event, returning whether there
  2540  // are any more events found. In case of a retrieval or parsing error, false is
  2541  // returned and Error() can be queried for the exact failure.
  2542  func (it *BalancerVaultTokensDeregisteredIterator) Next() bool {
  2543  	// If the iterator failed, stop iterating
  2544  	if it.fail != nil {
  2545  		return false
  2546  	}
  2547  	// If the iterator completed, deliver directly whatever's available
  2548  	if it.done {
  2549  		select {
  2550  		case log := <-it.logs:
  2551  			it.Event = new(BalancerVaultTokensDeregistered)
  2552  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2553  				it.fail = err
  2554  				return false
  2555  			}
  2556  			it.Event.Raw = log
  2557  			return true
  2558  
  2559  		default:
  2560  			return false
  2561  		}
  2562  	}
  2563  	// Iterator still in progress, wait for either a data or an error event
  2564  	select {
  2565  	case log := <-it.logs:
  2566  		it.Event = new(BalancerVaultTokensDeregistered)
  2567  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2568  			it.fail = err
  2569  			return false
  2570  		}
  2571  		it.Event.Raw = log
  2572  		return true
  2573  
  2574  	case err := <-it.sub.Err():
  2575  		it.done = true
  2576  		it.fail = err
  2577  		return it.Next()
  2578  	}
  2579  }
  2580  
  2581  // Error returns any retrieval or parsing error occurred during filtering.
  2582  func (it *BalancerVaultTokensDeregisteredIterator) Error() error {
  2583  	return it.fail
  2584  }
  2585  
  2586  // Close terminates the iteration process, releasing any pending underlying
  2587  // resources.
  2588  func (it *BalancerVaultTokensDeregisteredIterator) Close() error {
  2589  	it.sub.Unsubscribe()
  2590  	return nil
  2591  }
  2592  
  2593  // BalancerVaultTokensDeregistered represents a TokensDeregistered event raised by the BalancerVault contract.
  2594  type BalancerVaultTokensDeregistered struct {
  2595  	PoolId [32]byte
  2596  	Tokens []common.Address
  2597  	Raw    types.Log // Blockchain specific contextual infos
  2598  }
  2599  
  2600  // FilterTokensDeregistered is a free log retrieval operation binding the contract event 0x7dcdc6d02ef40c7c1a7046a011b058bd7f988fa14e20a66344f9d4e60657d610.
  2601  //
  2602  // Solidity: event TokensDeregistered(bytes32 indexed poolId, address[] tokens)
  2603  func (_BalancerVault *BalancerVaultFilterer) FilterTokensDeregistered(opts *bind.FilterOpts, poolId [][32]byte) (*BalancerVaultTokensDeregisteredIterator, error) {
  2604  
  2605  	var poolIdRule []interface{}
  2606  	for _, poolIdItem := range poolId {
  2607  		poolIdRule = append(poolIdRule, poolIdItem)
  2608  	}
  2609  
  2610  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "TokensDeregistered", poolIdRule)
  2611  	if err != nil {
  2612  		return nil, err
  2613  	}
  2614  	return &BalancerVaultTokensDeregisteredIterator{contract: _BalancerVault.contract, event: "TokensDeregistered", logs: logs, sub: sub}, nil
  2615  }
  2616  
  2617  // WatchTokensDeregistered is a free log subscription operation binding the contract event 0x7dcdc6d02ef40c7c1a7046a011b058bd7f988fa14e20a66344f9d4e60657d610.
  2618  //
  2619  // Solidity: event TokensDeregistered(bytes32 indexed poolId, address[] tokens)
  2620  func (_BalancerVault *BalancerVaultFilterer) WatchTokensDeregistered(opts *bind.WatchOpts, sink chan<- *BalancerVaultTokensDeregistered, poolId [][32]byte) (event.Subscription, error) {
  2621  
  2622  	var poolIdRule []interface{}
  2623  	for _, poolIdItem := range poolId {
  2624  		poolIdRule = append(poolIdRule, poolIdItem)
  2625  	}
  2626  
  2627  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "TokensDeregistered", poolIdRule)
  2628  	if err != nil {
  2629  		return nil, err
  2630  	}
  2631  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2632  		defer sub.Unsubscribe()
  2633  		for {
  2634  			select {
  2635  			case log := <-logs:
  2636  				// New log arrived, parse the event and forward to the user
  2637  				event := new(BalancerVaultTokensDeregistered)
  2638  				if err := _BalancerVault.contract.UnpackLog(event, "TokensDeregistered", log); err != nil {
  2639  					return err
  2640  				}
  2641  				event.Raw = log
  2642  
  2643  				select {
  2644  				case sink <- event:
  2645  				case err := <-sub.Err():
  2646  					return err
  2647  				case <-quit:
  2648  					return nil
  2649  				}
  2650  			case err := <-sub.Err():
  2651  				return err
  2652  			case <-quit:
  2653  				return nil
  2654  			}
  2655  		}
  2656  	}), nil
  2657  }
  2658  
  2659  // ParseTokensDeregistered is a log parse operation binding the contract event 0x7dcdc6d02ef40c7c1a7046a011b058bd7f988fa14e20a66344f9d4e60657d610.
  2660  //
  2661  // Solidity: event TokensDeregistered(bytes32 indexed poolId, address[] tokens)
  2662  func (_BalancerVault *BalancerVaultFilterer) ParseTokensDeregistered(log types.Log) (*BalancerVaultTokensDeregistered, error) {
  2663  	event := new(BalancerVaultTokensDeregistered)
  2664  	if err := _BalancerVault.contract.UnpackLog(event, "TokensDeregistered", log); err != nil {
  2665  		return nil, err
  2666  	}
  2667  	event.Raw = log
  2668  	return event, nil
  2669  }
  2670  
  2671  // BalancerVaultTokensRegisteredIterator is returned from FilterTokensRegistered and is used to iterate over the raw logs and unpacked data for TokensRegistered events raised by the BalancerVault contract.
  2672  type BalancerVaultTokensRegisteredIterator struct {
  2673  	Event *BalancerVaultTokensRegistered // Event containing the contract specifics and raw log
  2674  
  2675  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2676  	event    string              // Event name to use for unpacking event data
  2677  
  2678  	logs chan types.Log        // Log channel receiving the found contract events
  2679  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2680  	done bool                  // Whether the subscription completed delivering logs
  2681  	fail error                 // Occurred error to stop iteration
  2682  }
  2683  
  2684  // Next advances the iterator to the subsequent event, returning whether there
  2685  // are any more events found. In case of a retrieval or parsing error, false is
  2686  // returned and Error() can be queried for the exact failure.
  2687  func (it *BalancerVaultTokensRegisteredIterator) Next() bool {
  2688  	// If the iterator failed, stop iterating
  2689  	if it.fail != nil {
  2690  		return false
  2691  	}
  2692  	// If the iterator completed, deliver directly whatever's available
  2693  	if it.done {
  2694  		select {
  2695  		case log := <-it.logs:
  2696  			it.Event = new(BalancerVaultTokensRegistered)
  2697  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2698  				it.fail = err
  2699  				return false
  2700  			}
  2701  			it.Event.Raw = log
  2702  			return true
  2703  
  2704  		default:
  2705  			return false
  2706  		}
  2707  	}
  2708  	// Iterator still in progress, wait for either a data or an error event
  2709  	select {
  2710  	case log := <-it.logs:
  2711  		it.Event = new(BalancerVaultTokensRegistered)
  2712  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2713  			it.fail = err
  2714  			return false
  2715  		}
  2716  		it.Event.Raw = log
  2717  		return true
  2718  
  2719  	case err := <-it.sub.Err():
  2720  		it.done = true
  2721  		it.fail = err
  2722  		return it.Next()
  2723  	}
  2724  }
  2725  
  2726  // Error returns any retrieval or parsing error occurred during filtering.
  2727  func (it *BalancerVaultTokensRegisteredIterator) Error() error {
  2728  	return it.fail
  2729  }
  2730  
  2731  // Close terminates the iteration process, releasing any pending underlying
  2732  // resources.
  2733  func (it *BalancerVaultTokensRegisteredIterator) Close() error {
  2734  	it.sub.Unsubscribe()
  2735  	return nil
  2736  }
  2737  
  2738  // BalancerVaultTokensRegistered represents a TokensRegistered event raised by the BalancerVault contract.
  2739  type BalancerVaultTokensRegistered struct {
  2740  	PoolId        [32]byte
  2741  	Tokens        []common.Address
  2742  	AssetManagers []common.Address
  2743  	Raw           types.Log // Blockchain specific contextual infos
  2744  }
  2745  
  2746  // FilterTokensRegistered is a free log retrieval operation binding the contract event 0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4.
  2747  //
  2748  // Solidity: event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)
  2749  func (_BalancerVault *BalancerVaultFilterer) FilterTokensRegistered(opts *bind.FilterOpts, poolId [][32]byte) (*BalancerVaultTokensRegisteredIterator, error) {
  2750  
  2751  	var poolIdRule []interface{}
  2752  	for _, poolIdItem := range poolId {
  2753  		poolIdRule = append(poolIdRule, poolIdItem)
  2754  	}
  2755  
  2756  	logs, sub, err := _BalancerVault.contract.FilterLogs(opts, "TokensRegistered", poolIdRule)
  2757  	if err != nil {
  2758  		return nil, err
  2759  	}
  2760  	return &BalancerVaultTokensRegisteredIterator{contract: _BalancerVault.contract, event: "TokensRegistered", logs: logs, sub: sub}, nil
  2761  }
  2762  
  2763  // WatchTokensRegistered is a free log subscription operation binding the contract event 0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4.
  2764  //
  2765  // Solidity: event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)
  2766  func (_BalancerVault *BalancerVaultFilterer) WatchTokensRegistered(opts *bind.WatchOpts, sink chan<- *BalancerVaultTokensRegistered, poolId [][32]byte) (event.Subscription, error) {
  2767  
  2768  	var poolIdRule []interface{}
  2769  	for _, poolIdItem := range poolId {
  2770  		poolIdRule = append(poolIdRule, poolIdItem)
  2771  	}
  2772  
  2773  	logs, sub, err := _BalancerVault.contract.WatchLogs(opts, "TokensRegistered", poolIdRule)
  2774  	if err != nil {
  2775  		return nil, err
  2776  	}
  2777  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2778  		defer sub.Unsubscribe()
  2779  		for {
  2780  			select {
  2781  			case log := <-logs:
  2782  				// New log arrived, parse the event and forward to the user
  2783  				event := new(BalancerVaultTokensRegistered)
  2784  				if err := _BalancerVault.contract.UnpackLog(event, "TokensRegistered", log); err != nil {
  2785  					return err
  2786  				}
  2787  				event.Raw = log
  2788  
  2789  				select {
  2790  				case sink <- event:
  2791  				case err := <-sub.Err():
  2792  					return err
  2793  				case <-quit:
  2794  					return nil
  2795  				}
  2796  			case err := <-sub.Err():
  2797  				return err
  2798  			case <-quit:
  2799  				return nil
  2800  			}
  2801  		}
  2802  	}), nil
  2803  }
  2804  
  2805  // ParseTokensRegistered is a log parse operation binding the contract event 0xf5847d3f2197b16cdcd2098ec95d0905cd1abdaf415f07bb7cef2bba8ac5dec4.
  2806  //
  2807  // Solidity: event TokensRegistered(bytes32 indexed poolId, address[] tokens, address[] assetManagers)
  2808  func (_BalancerVault *BalancerVaultFilterer) ParseTokensRegistered(log types.Log) (*BalancerVaultTokensRegistered, error) {
  2809  	event := new(BalancerVaultTokensRegistered)
  2810  	if err := _BalancerVault.contract.UnpackLog(event, "TokensRegistered", log); err != nil {
  2811  		return nil, err
  2812  	}
  2813  	event.Raw = log
  2814  	return event, nil
  2815  }