github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/curvefimeta/curvefimeta.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 curvefimeta
     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  // CurvefimetaMetaData contains all meta data concerning the Curvefimeta contract.
    32  var CurvefimetaMetaData = &bind.MetaData{
    33  	ABI: "[{\"name\":\"BasePoolAdded\",\"inputs\":[{\"name\":\"base_pool\",\"type\":\"address\",\"indexed\":false}],\"anonymous\":false,\"type\":\"event\"},{\"name\":\"PlainPoolDeployed\",\"inputs\":[{\"name\":\"coins\",\"type\":\"address[4]\",\"indexed\":false},{\"name\":\"A\",\"type\":\"uint256\",\"indexed\":false},{\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"name\":\"deployer\",\"type\":\"address\",\"indexed\":false}],\"anonymous\":false,\"type\":\"event\"},{\"name\":\"MetaPoolDeployed\",\"inputs\":[{\"name\":\"coin\",\"type\":\"address\",\"indexed\":false},{\"name\":\"base_pool\",\"type\":\"address\",\"indexed\":false},{\"name\":\"A\",\"type\":\"uint256\",\"indexed\":false},{\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"name\":\"deployer\",\"type\":\"address\",\"indexed\":false}],\"anonymous\":false,\"type\":\"event\"},{\"name\":\"LiquidityGaugeDeployed\",\"inputs\":[{\"name\":\"pool\",\"type\":\"address\",\"indexed\":false},{\"name\":\"gauge\",\"type\":\"address\",\"indexed\":false}],\"anonymous\":false,\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"inputs\":[{\"name\":\"_fee_receiver\",\"type\":\"address\"}],\"outputs\":[]},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"metapool_implementations\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[10]\"}],\"gas\":21716},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"find_pool_for_coins\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"find_pool_for_coins\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"i\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_base_pool\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2663},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_n_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":2699},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_meta_n_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":5201},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[4]\"}],\"gas\":9164},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[8]\"}],\"gas\":21345},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_decimals\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[4]\"}],\"gas\":20185},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_decimals\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":19730},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_metapool_rates\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[2]\"}],\"gas\":5281},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[4]\"}],\"gas\":20435},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":39733},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_A\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":3135},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_fees\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":5821},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_admin_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[4]\"}],\"gas\":13535},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coin_indices\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"int128\"},{\"name\":\"\",\"type\":\"int128\"},{\"name\":\"\",\"type\":\"bool\"}],\"gas\":33407},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_gauge\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3089},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_implementation_address\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3119},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"is_meta\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"gas\":3152},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_pool_asset_type\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":5450},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_fee_receiver\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":5480},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_plain_pool\",\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_symbol\",\"type\":\"string\"},{\"name\":\"_coins\",\"type\":\"address[4]\"},{\"name\":\"_A\",\"type\":\"uint256\"},{\"name\":\"_fee\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_plain_pool\",\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_symbol\",\"type\":\"string\"},{\"name\":\"_coins\",\"type\":\"address[4]\"},{\"name\":\"_A\",\"type\":\"uint256\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_asset_type\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_plain_pool\",\"inputs\":[{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_symbol\",\"type\":\"string\"},{\"name\":\"_coins\",\"type\":\"address[4]\"},{\"name\":\"_A\",\"type\":\"uint256\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_asset_type\",\"type\":\"uint256\"},{\"name\":\"_implementation_idx\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_metapool\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_symbol\",\"type\":\"string\"},{\"name\":\"_coin\",\"type\":\"address\"},{\"name\":\"_A\",\"type\":\"uint256\"},{\"name\":\"_fee\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_metapool\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_symbol\",\"type\":\"string\"},{\"name\":\"_coin\",\"type\":\"address\"},{\"name\":\"_A\",\"type\":\"uint256\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_implementation_idx\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deploy_gauge\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":93079},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_base_pool\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"},{\"name\":\"_fee_receiver\",\"type\":\"address\"},{\"name\":\"_asset_type\",\"type\":\"uint256\"},{\"name\":\"_implementations\",\"type\":\"address[10]\"}],\"outputs\":[],\"gas\":1206132},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_metapool_implementations\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"},{\"name\":\"_implementations\",\"type\":\"address[10]\"}],\"outputs\":[],\"gas\":382072},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_plain_implementations\",\"inputs\":[{\"name\":\"_n_coins\",\"type\":\"uint256\"},{\"name\":\"_implementations\",\"type\":\"address[10]\"}],\"outputs\":[],\"gas\":379687},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_gauge_implementation\",\"inputs\":[{\"name\":\"_gauge_implementation\",\"type\":\"address\"}],\"outputs\":[],\"gas\":38355},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"batch_set_pool_asset_type\",\"inputs\":[{\"name\":\"_pools\",\"type\":\"address[32]\"},{\"name\":\"_asset_types\",\"type\":\"uint256[32]\"}],\"outputs\":[],\"gas\":1139545},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"commit_transfer_ownership\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"outputs\":[],\"gas\":38415},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"accept_transfer_ownership\",\"inputs\":[],\"outputs\":[],\"gas\":58366},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_manager\",\"inputs\":[{\"name\":\"_manager\",\"type\":\"address\"}],\"outputs\":[],\"gas\":40996},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_fee_receiver\",\"inputs\":[{\"name\":\"_base_pool\",\"type\":\"address\"},{\"name\":\"_fee_receiver\",\"type\":\"address\"}],\"outputs\":[],\"gas\":38770},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"convert_metapool_fees\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"gas\":12880},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_existing_metapools\",\"inputs\":[{\"name\":\"_pools\",\"type\":\"address[10]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"gas\":8610792},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3438},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"future_admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3468},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"manager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3498},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pool_list\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3573},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pool_count\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":3558},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"base_pool_list\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3633},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"base_pool_count\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":3618},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"base_pool_assets\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"gas\":3863},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"plain_implementations\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"uint256\"},{\"name\":\"arg1\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3838},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"gauge_implementation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":3708}]",
    34  }
    35  
    36  // CurvefimetaABI is the input ABI used to generate the binding from.
    37  // Deprecated: Use CurvefimetaMetaData.ABI instead.
    38  var CurvefimetaABI = CurvefimetaMetaData.ABI
    39  
    40  // Curvefimeta is an auto generated Go binding around an Ethereum contract.
    41  type Curvefimeta struct {
    42  	CurvefimetaCaller     // Read-only binding to the contract
    43  	CurvefimetaTransactor // Write-only binding to the contract
    44  	CurvefimetaFilterer   // Log filterer for contract events
    45  }
    46  
    47  // CurvefimetaCaller is an auto generated read-only Go binding around an Ethereum contract.
    48  type CurvefimetaCaller struct {
    49  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    50  }
    51  
    52  // CurvefimetaTransactor is an auto generated write-only Go binding around an Ethereum contract.
    53  type CurvefimetaTransactor struct {
    54  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    55  }
    56  
    57  // CurvefimetaFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    58  type CurvefimetaFilterer struct {
    59  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    60  }
    61  
    62  // CurvefimetaSession is an auto generated Go binding around an Ethereum contract,
    63  // with pre-set call and transact options.
    64  type CurvefimetaSession struct {
    65  	Contract     *Curvefimeta      // Generic contract binding to set the session for
    66  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    67  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    68  }
    69  
    70  // CurvefimetaCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    71  // with pre-set call options.
    72  type CurvefimetaCallerSession struct {
    73  	Contract *CurvefimetaCaller // Generic contract caller binding to set the session for
    74  	CallOpts bind.CallOpts      // Call options to use throughout this session
    75  }
    76  
    77  // CurvefimetaTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    78  // with pre-set transact options.
    79  type CurvefimetaTransactorSession struct {
    80  	Contract     *CurvefimetaTransactor // Generic contract transactor binding to set the session for
    81  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
    82  }
    83  
    84  // CurvefimetaRaw is an auto generated low-level Go binding around an Ethereum contract.
    85  type CurvefimetaRaw struct {
    86  	Contract *Curvefimeta // Generic contract binding to access the raw methods on
    87  }
    88  
    89  // CurvefimetaCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    90  type CurvefimetaCallerRaw struct {
    91  	Contract *CurvefimetaCaller // Generic read-only contract binding to access the raw methods on
    92  }
    93  
    94  // CurvefimetaTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    95  type CurvefimetaTransactorRaw struct {
    96  	Contract *CurvefimetaTransactor // Generic write-only contract binding to access the raw methods on
    97  }
    98  
    99  // NewCurvefimeta creates a new instance of Curvefimeta, bound to a specific deployed contract.
   100  func NewCurvefimeta(address common.Address, backend bind.ContractBackend) (*Curvefimeta, error) {
   101  	contract, err := bindCurvefimeta(address, backend, backend, backend)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  	return &Curvefimeta{CurvefimetaCaller: CurvefimetaCaller{contract: contract}, CurvefimetaTransactor: CurvefimetaTransactor{contract: contract}, CurvefimetaFilterer: CurvefimetaFilterer{contract: contract}}, nil
   106  }
   107  
   108  // NewCurvefimetaCaller creates a new read-only instance of Curvefimeta, bound to a specific deployed contract.
   109  func NewCurvefimetaCaller(address common.Address, caller bind.ContractCaller) (*CurvefimetaCaller, error) {
   110  	contract, err := bindCurvefimeta(address, caller, nil, nil)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  	return &CurvefimetaCaller{contract: contract}, nil
   115  }
   116  
   117  // NewCurvefimetaTransactor creates a new write-only instance of Curvefimeta, bound to a specific deployed contract.
   118  func NewCurvefimetaTransactor(address common.Address, transactor bind.ContractTransactor) (*CurvefimetaTransactor, error) {
   119  	contract, err := bindCurvefimeta(address, nil, transactor, nil)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  	return &CurvefimetaTransactor{contract: contract}, nil
   124  }
   125  
   126  // NewCurvefimetaFilterer creates a new log filterer instance of Curvefimeta, bound to a specific deployed contract.
   127  func NewCurvefimetaFilterer(address common.Address, filterer bind.ContractFilterer) (*CurvefimetaFilterer, error) {
   128  	contract, err := bindCurvefimeta(address, nil, nil, filterer)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	return &CurvefimetaFilterer{contract: contract}, nil
   133  }
   134  
   135  // bindCurvefimeta binds a generic wrapper to an already deployed contract.
   136  func bindCurvefimeta(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   137  	parsed, err := abi.JSON(strings.NewReader(CurvefimetaABI))
   138  	if err != nil {
   139  		return nil, err
   140  	}
   141  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   142  }
   143  
   144  // Call invokes the (constant) contract method with params as input values and
   145  // sets the output to result. The result type might be a single field for simple
   146  // returns, a slice of interfaces for anonymous returns and a struct for named
   147  // returns.
   148  func (_Curvefimeta *CurvefimetaRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   149  	return _Curvefimeta.Contract.CurvefimetaCaller.contract.Call(opts, result, method, params...)
   150  }
   151  
   152  // Transfer initiates a plain transaction to move funds to the contract, calling
   153  // its default method if one is available.
   154  func (_Curvefimeta *CurvefimetaRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   155  	return _Curvefimeta.Contract.CurvefimetaTransactor.contract.Transfer(opts)
   156  }
   157  
   158  // Transact invokes the (paid) contract method with params as input values.
   159  func (_Curvefimeta *CurvefimetaRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   160  	return _Curvefimeta.Contract.CurvefimetaTransactor.contract.Transact(opts, method, params...)
   161  }
   162  
   163  // Call invokes the (constant) contract method with params as input values and
   164  // sets the output to result. The result type might be a single field for simple
   165  // returns, a slice of interfaces for anonymous returns and a struct for named
   166  // returns.
   167  func (_Curvefimeta *CurvefimetaCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   168  	return _Curvefimeta.Contract.contract.Call(opts, result, method, params...)
   169  }
   170  
   171  // Transfer initiates a plain transaction to move funds to the contract, calling
   172  // its default method if one is available.
   173  func (_Curvefimeta *CurvefimetaTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   174  	return _Curvefimeta.Contract.contract.Transfer(opts)
   175  }
   176  
   177  // Transact invokes the (paid) contract method with params as input values.
   178  func (_Curvefimeta *CurvefimetaTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   179  	return _Curvefimeta.Contract.contract.Transact(opts, method, params...)
   180  }
   181  
   182  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   183  //
   184  // Solidity: function admin() view returns(address)
   185  func (_Curvefimeta *CurvefimetaCaller) Admin(opts *bind.CallOpts) (common.Address, error) {
   186  	var out []interface{}
   187  	err := _Curvefimeta.contract.Call(opts, &out, "admin")
   188  
   189  	if err != nil {
   190  		return *new(common.Address), err
   191  	}
   192  
   193  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   194  
   195  	return out0, err
   196  
   197  }
   198  
   199  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   200  //
   201  // Solidity: function admin() view returns(address)
   202  func (_Curvefimeta *CurvefimetaSession) Admin() (common.Address, error) {
   203  	return _Curvefimeta.Contract.Admin(&_Curvefimeta.CallOpts)
   204  }
   205  
   206  // Admin is a free data retrieval call binding the contract method 0xf851a440.
   207  //
   208  // Solidity: function admin() view returns(address)
   209  func (_Curvefimeta *CurvefimetaCallerSession) Admin() (common.Address, error) {
   210  	return _Curvefimeta.Contract.Admin(&_Curvefimeta.CallOpts)
   211  }
   212  
   213  // BasePoolAssets is a free data retrieval call binding the contract method 0x10a002df.
   214  //
   215  // Solidity: function base_pool_assets(address arg0) view returns(bool)
   216  func (_Curvefimeta *CurvefimetaCaller) BasePoolAssets(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
   217  	var out []interface{}
   218  	err := _Curvefimeta.contract.Call(opts, &out, "base_pool_assets", arg0)
   219  
   220  	if err != nil {
   221  		return *new(bool), err
   222  	}
   223  
   224  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   225  
   226  	return out0, err
   227  
   228  }
   229  
   230  // BasePoolAssets is a free data retrieval call binding the contract method 0x10a002df.
   231  //
   232  // Solidity: function base_pool_assets(address arg0) view returns(bool)
   233  func (_Curvefimeta *CurvefimetaSession) BasePoolAssets(arg0 common.Address) (bool, error) {
   234  	return _Curvefimeta.Contract.BasePoolAssets(&_Curvefimeta.CallOpts, arg0)
   235  }
   236  
   237  // BasePoolAssets is a free data retrieval call binding the contract method 0x10a002df.
   238  //
   239  // Solidity: function base_pool_assets(address arg0) view returns(bool)
   240  func (_Curvefimeta *CurvefimetaCallerSession) BasePoolAssets(arg0 common.Address) (bool, error) {
   241  	return _Curvefimeta.Contract.BasePoolAssets(&_Curvefimeta.CallOpts, arg0)
   242  }
   243  
   244  // BasePoolCount is a free data retrieval call binding the contract method 0xde5e4a3b.
   245  //
   246  // Solidity: function base_pool_count() view returns(uint256)
   247  func (_Curvefimeta *CurvefimetaCaller) BasePoolCount(opts *bind.CallOpts) (*big.Int, error) {
   248  	var out []interface{}
   249  	err := _Curvefimeta.contract.Call(opts, &out, "base_pool_count")
   250  
   251  	if err != nil {
   252  		return *new(*big.Int), err
   253  	}
   254  
   255  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   256  
   257  	return out0, err
   258  
   259  }
   260  
   261  // BasePoolCount is a free data retrieval call binding the contract method 0xde5e4a3b.
   262  //
   263  // Solidity: function base_pool_count() view returns(uint256)
   264  func (_Curvefimeta *CurvefimetaSession) BasePoolCount() (*big.Int, error) {
   265  	return _Curvefimeta.Contract.BasePoolCount(&_Curvefimeta.CallOpts)
   266  }
   267  
   268  // BasePoolCount is a free data retrieval call binding the contract method 0xde5e4a3b.
   269  //
   270  // Solidity: function base_pool_count() view returns(uint256)
   271  func (_Curvefimeta *CurvefimetaCallerSession) BasePoolCount() (*big.Int, error) {
   272  	return _Curvefimeta.Contract.BasePoolCount(&_Curvefimeta.CallOpts)
   273  }
   274  
   275  // BasePoolList is a free data retrieval call binding the contract method 0x22fe5671.
   276  //
   277  // Solidity: function base_pool_list(uint256 arg0) view returns(address)
   278  func (_Curvefimeta *CurvefimetaCaller) BasePoolList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   279  	var out []interface{}
   280  	err := _Curvefimeta.contract.Call(opts, &out, "base_pool_list", arg0)
   281  
   282  	if err != nil {
   283  		return *new(common.Address), err
   284  	}
   285  
   286  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   287  
   288  	return out0, err
   289  
   290  }
   291  
   292  // BasePoolList is a free data retrieval call binding the contract method 0x22fe5671.
   293  //
   294  // Solidity: function base_pool_list(uint256 arg0) view returns(address)
   295  func (_Curvefimeta *CurvefimetaSession) BasePoolList(arg0 *big.Int) (common.Address, error) {
   296  	return _Curvefimeta.Contract.BasePoolList(&_Curvefimeta.CallOpts, arg0)
   297  }
   298  
   299  // BasePoolList is a free data retrieval call binding the contract method 0x22fe5671.
   300  //
   301  // Solidity: function base_pool_list(uint256 arg0) view returns(address)
   302  func (_Curvefimeta *CurvefimetaCallerSession) BasePoolList(arg0 *big.Int) (common.Address, error) {
   303  	return _Curvefimeta.Contract.BasePoolList(&_Curvefimeta.CallOpts, arg0)
   304  }
   305  
   306  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   307  //
   308  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   309  func (_Curvefimeta *CurvefimetaCaller) FindPoolForCoins(opts *bind.CallOpts, _from common.Address, _to common.Address) (common.Address, error) {
   310  	var out []interface{}
   311  	err := _Curvefimeta.contract.Call(opts, &out, "find_pool_for_coins", _from, _to)
   312  
   313  	if err != nil {
   314  		return *new(common.Address), err
   315  	}
   316  
   317  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   318  
   319  	return out0, err
   320  
   321  }
   322  
   323  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   324  //
   325  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   326  func (_Curvefimeta *CurvefimetaSession) FindPoolForCoins(_from common.Address, _to common.Address) (common.Address, error) {
   327  	return _Curvefimeta.Contract.FindPoolForCoins(&_Curvefimeta.CallOpts, _from, _to)
   328  }
   329  
   330  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   331  //
   332  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   333  func (_Curvefimeta *CurvefimetaCallerSession) FindPoolForCoins(_from common.Address, _to common.Address) (common.Address, error) {
   334  	return _Curvefimeta.Contract.FindPoolForCoins(&_Curvefimeta.CallOpts, _from, _to)
   335  }
   336  
   337  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   338  //
   339  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   340  func (_Curvefimeta *CurvefimetaCaller) FindPoolForCoins0(opts *bind.CallOpts, _from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   341  	var out []interface{}
   342  	err := _Curvefimeta.contract.Call(opts, &out, "find_pool_for_coins0", _from, _to, i)
   343  
   344  	if err != nil {
   345  		return *new(common.Address), err
   346  	}
   347  
   348  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   349  
   350  	return out0, err
   351  
   352  }
   353  
   354  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   355  //
   356  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   357  func (_Curvefimeta *CurvefimetaSession) FindPoolForCoins0(_from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   358  	return _Curvefimeta.Contract.FindPoolForCoins0(&_Curvefimeta.CallOpts, _from, _to, i)
   359  }
   360  
   361  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   362  //
   363  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   364  func (_Curvefimeta *CurvefimetaCallerSession) FindPoolForCoins0(_from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   365  	return _Curvefimeta.Contract.FindPoolForCoins0(&_Curvefimeta.CallOpts, _from, _to, i)
   366  }
   367  
   368  // FutureAdmin is a free data retrieval call binding the contract method 0x17f7182a.
   369  //
   370  // Solidity: function future_admin() view returns(address)
   371  func (_Curvefimeta *CurvefimetaCaller) FutureAdmin(opts *bind.CallOpts) (common.Address, error) {
   372  	var out []interface{}
   373  	err := _Curvefimeta.contract.Call(opts, &out, "future_admin")
   374  
   375  	if err != nil {
   376  		return *new(common.Address), err
   377  	}
   378  
   379  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   380  
   381  	return out0, err
   382  
   383  }
   384  
   385  // FutureAdmin is a free data retrieval call binding the contract method 0x17f7182a.
   386  //
   387  // Solidity: function future_admin() view returns(address)
   388  func (_Curvefimeta *CurvefimetaSession) FutureAdmin() (common.Address, error) {
   389  	return _Curvefimeta.Contract.FutureAdmin(&_Curvefimeta.CallOpts)
   390  }
   391  
   392  // FutureAdmin is a free data retrieval call binding the contract method 0x17f7182a.
   393  //
   394  // Solidity: function future_admin() view returns(address)
   395  func (_Curvefimeta *CurvefimetaCallerSession) FutureAdmin() (common.Address, error) {
   396  	return _Curvefimeta.Contract.FutureAdmin(&_Curvefimeta.CallOpts)
   397  }
   398  
   399  // GaugeImplementation is a free data retrieval call binding the contract method 0x8df24207.
   400  //
   401  // Solidity: function gauge_implementation() view returns(address)
   402  func (_Curvefimeta *CurvefimetaCaller) GaugeImplementation(opts *bind.CallOpts) (common.Address, error) {
   403  	var out []interface{}
   404  	err := _Curvefimeta.contract.Call(opts, &out, "gauge_implementation")
   405  
   406  	if err != nil {
   407  		return *new(common.Address), err
   408  	}
   409  
   410  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   411  
   412  	return out0, err
   413  
   414  }
   415  
   416  // GaugeImplementation is a free data retrieval call binding the contract method 0x8df24207.
   417  //
   418  // Solidity: function gauge_implementation() view returns(address)
   419  func (_Curvefimeta *CurvefimetaSession) GaugeImplementation() (common.Address, error) {
   420  	return _Curvefimeta.Contract.GaugeImplementation(&_Curvefimeta.CallOpts)
   421  }
   422  
   423  // GaugeImplementation is a free data retrieval call binding the contract method 0x8df24207.
   424  //
   425  // Solidity: function gauge_implementation() view returns(address)
   426  func (_Curvefimeta *CurvefimetaCallerSession) GaugeImplementation() (common.Address, error) {
   427  	return _Curvefimeta.Contract.GaugeImplementation(&_Curvefimeta.CallOpts)
   428  }
   429  
   430  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   431  //
   432  // Solidity: function get_A(address _pool) view returns(uint256)
   433  func (_Curvefimeta *CurvefimetaCaller) GetA(opts *bind.CallOpts, _pool common.Address) (*big.Int, error) {
   434  	var out []interface{}
   435  	err := _Curvefimeta.contract.Call(opts, &out, "get_A", _pool)
   436  
   437  	if err != nil {
   438  		return *new(*big.Int), err
   439  	}
   440  
   441  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   442  
   443  	return out0, err
   444  
   445  }
   446  
   447  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   448  //
   449  // Solidity: function get_A(address _pool) view returns(uint256)
   450  func (_Curvefimeta *CurvefimetaSession) GetA(_pool common.Address) (*big.Int, error) {
   451  	return _Curvefimeta.Contract.GetA(&_Curvefimeta.CallOpts, _pool)
   452  }
   453  
   454  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   455  //
   456  // Solidity: function get_A(address _pool) view returns(uint256)
   457  func (_Curvefimeta *CurvefimetaCallerSession) GetA(_pool common.Address) (*big.Int, error) {
   458  	return _Curvefimeta.Contract.GetA(&_Curvefimeta.CallOpts, _pool)
   459  }
   460  
   461  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   462  //
   463  // Solidity: function get_admin_balances(address _pool) view returns(uint256[4])
   464  func (_Curvefimeta *CurvefimetaCaller) GetAdminBalances(opts *bind.CallOpts, _pool common.Address) ([4]*big.Int, error) {
   465  	var out []interface{}
   466  	err := _Curvefimeta.contract.Call(opts, &out, "get_admin_balances", _pool)
   467  
   468  	if err != nil {
   469  		return *new([4]*big.Int), err
   470  	}
   471  
   472  	out0 := *abi.ConvertType(out[0], new([4]*big.Int)).(*[4]*big.Int)
   473  
   474  	return out0, err
   475  
   476  }
   477  
   478  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   479  //
   480  // Solidity: function get_admin_balances(address _pool) view returns(uint256[4])
   481  func (_Curvefimeta *CurvefimetaSession) GetAdminBalances(_pool common.Address) ([4]*big.Int, error) {
   482  	return _Curvefimeta.Contract.GetAdminBalances(&_Curvefimeta.CallOpts, _pool)
   483  }
   484  
   485  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   486  //
   487  // Solidity: function get_admin_balances(address _pool) view returns(uint256[4])
   488  func (_Curvefimeta *CurvefimetaCallerSession) GetAdminBalances(_pool common.Address) ([4]*big.Int, error) {
   489  	return _Curvefimeta.Contract.GetAdminBalances(&_Curvefimeta.CallOpts, _pool)
   490  }
   491  
   492  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   493  //
   494  // Solidity: function get_balances(address _pool) view returns(uint256[4])
   495  func (_Curvefimeta *CurvefimetaCaller) GetBalances(opts *bind.CallOpts, _pool common.Address) ([4]*big.Int, error) {
   496  	var out []interface{}
   497  	err := _Curvefimeta.contract.Call(opts, &out, "get_balances", _pool)
   498  
   499  	if err != nil {
   500  		return *new([4]*big.Int), err
   501  	}
   502  
   503  	out0 := *abi.ConvertType(out[0], new([4]*big.Int)).(*[4]*big.Int)
   504  
   505  	return out0, err
   506  
   507  }
   508  
   509  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   510  //
   511  // Solidity: function get_balances(address _pool) view returns(uint256[4])
   512  func (_Curvefimeta *CurvefimetaSession) GetBalances(_pool common.Address) ([4]*big.Int, error) {
   513  	return _Curvefimeta.Contract.GetBalances(&_Curvefimeta.CallOpts, _pool)
   514  }
   515  
   516  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   517  //
   518  // Solidity: function get_balances(address _pool) view returns(uint256[4])
   519  func (_Curvefimeta *CurvefimetaCallerSession) GetBalances(_pool common.Address) ([4]*big.Int, error) {
   520  	return _Curvefimeta.Contract.GetBalances(&_Curvefimeta.CallOpts, _pool)
   521  }
   522  
   523  // GetBasePool is a free data retrieval call binding the contract method 0x6f20d6dd.
   524  //
   525  // Solidity: function get_base_pool(address _pool) view returns(address)
   526  func (_Curvefimeta *CurvefimetaCaller) GetBasePool(opts *bind.CallOpts, _pool common.Address) (common.Address, error) {
   527  	var out []interface{}
   528  	err := _Curvefimeta.contract.Call(opts, &out, "get_base_pool", _pool)
   529  
   530  	if err != nil {
   531  		return *new(common.Address), err
   532  	}
   533  
   534  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   535  
   536  	return out0, err
   537  
   538  }
   539  
   540  // GetBasePool is a free data retrieval call binding the contract method 0x6f20d6dd.
   541  //
   542  // Solidity: function get_base_pool(address _pool) view returns(address)
   543  func (_Curvefimeta *CurvefimetaSession) GetBasePool(_pool common.Address) (common.Address, error) {
   544  	return _Curvefimeta.Contract.GetBasePool(&_Curvefimeta.CallOpts, _pool)
   545  }
   546  
   547  // GetBasePool is a free data retrieval call binding the contract method 0x6f20d6dd.
   548  //
   549  // Solidity: function get_base_pool(address _pool) view returns(address)
   550  func (_Curvefimeta *CurvefimetaCallerSession) GetBasePool(_pool common.Address) (common.Address, error) {
   551  	return _Curvefimeta.Contract.GetBasePool(&_Curvefimeta.CallOpts, _pool)
   552  }
   553  
   554  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   555  //
   556  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   557  func (_Curvefimeta *CurvefimetaCaller) GetCoinIndices(opts *bind.CallOpts, _pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   558  	var out []interface{}
   559  	err := _Curvefimeta.contract.Call(opts, &out, "get_coin_indices", _pool, _from, _to)
   560  
   561  	if err != nil {
   562  		return *new(*big.Int), *new(*big.Int), *new(bool), err
   563  	}
   564  
   565  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   566  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   567  	out2 := *abi.ConvertType(out[2], new(bool)).(*bool)
   568  
   569  	return out0, out1, out2, err
   570  
   571  }
   572  
   573  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   574  //
   575  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   576  func (_Curvefimeta *CurvefimetaSession) GetCoinIndices(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   577  	return _Curvefimeta.Contract.GetCoinIndices(&_Curvefimeta.CallOpts, _pool, _from, _to)
   578  }
   579  
   580  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   581  //
   582  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   583  func (_Curvefimeta *CurvefimetaCallerSession) GetCoinIndices(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   584  	return _Curvefimeta.Contract.GetCoinIndices(&_Curvefimeta.CallOpts, _pool, _from, _to)
   585  }
   586  
   587  // GetCoins is a free data retrieval call binding the contract method 0x9ac90d3d.
   588  //
   589  // Solidity: function get_coins(address _pool) view returns(address[4])
   590  func (_Curvefimeta *CurvefimetaCaller) GetCoins(opts *bind.CallOpts, _pool common.Address) ([4]common.Address, error) {
   591  	var out []interface{}
   592  	err := _Curvefimeta.contract.Call(opts, &out, "get_coins", _pool)
   593  
   594  	if err != nil {
   595  		return *new([4]common.Address), err
   596  	}
   597  
   598  	out0 := *abi.ConvertType(out[0], new([4]common.Address)).(*[4]common.Address)
   599  
   600  	return out0, err
   601  
   602  }
   603  
   604  // GetCoins is a free data retrieval call binding the contract method 0x9ac90d3d.
   605  //
   606  // Solidity: function get_coins(address _pool) view returns(address[4])
   607  func (_Curvefimeta *CurvefimetaSession) GetCoins(_pool common.Address) ([4]common.Address, error) {
   608  	return _Curvefimeta.Contract.GetCoins(&_Curvefimeta.CallOpts, _pool)
   609  }
   610  
   611  // GetCoins is a free data retrieval call binding the contract method 0x9ac90d3d.
   612  //
   613  // Solidity: function get_coins(address _pool) view returns(address[4])
   614  func (_Curvefimeta *CurvefimetaCallerSession) GetCoins(_pool common.Address) ([4]common.Address, error) {
   615  	return _Curvefimeta.Contract.GetCoins(&_Curvefimeta.CallOpts, _pool)
   616  }
   617  
   618  // GetDecimals is a free data retrieval call binding the contract method 0x52b51555.
   619  //
   620  // Solidity: function get_decimals(address _pool) view returns(uint256[4])
   621  func (_Curvefimeta *CurvefimetaCaller) GetDecimals(opts *bind.CallOpts, _pool common.Address) ([4]*big.Int, error) {
   622  	var out []interface{}
   623  	err := _Curvefimeta.contract.Call(opts, &out, "get_decimals", _pool)
   624  
   625  	if err != nil {
   626  		return *new([4]*big.Int), err
   627  	}
   628  
   629  	out0 := *abi.ConvertType(out[0], new([4]*big.Int)).(*[4]*big.Int)
   630  
   631  	return out0, err
   632  
   633  }
   634  
   635  // GetDecimals is a free data retrieval call binding the contract method 0x52b51555.
   636  //
   637  // Solidity: function get_decimals(address _pool) view returns(uint256[4])
   638  func (_Curvefimeta *CurvefimetaSession) GetDecimals(_pool common.Address) ([4]*big.Int, error) {
   639  	return _Curvefimeta.Contract.GetDecimals(&_Curvefimeta.CallOpts, _pool)
   640  }
   641  
   642  // GetDecimals is a free data retrieval call binding the contract method 0x52b51555.
   643  //
   644  // Solidity: function get_decimals(address _pool) view returns(uint256[4])
   645  func (_Curvefimeta *CurvefimetaCallerSession) GetDecimals(_pool common.Address) ([4]*big.Int, error) {
   646  	return _Curvefimeta.Contract.GetDecimals(&_Curvefimeta.CallOpts, _pool)
   647  }
   648  
   649  // GetFeeReceiver is a free data retrieval call binding the contract method 0x154aa8f5.
   650  //
   651  // Solidity: function get_fee_receiver(address _pool) view returns(address)
   652  func (_Curvefimeta *CurvefimetaCaller) GetFeeReceiver(opts *bind.CallOpts, _pool common.Address) (common.Address, error) {
   653  	var out []interface{}
   654  	err := _Curvefimeta.contract.Call(opts, &out, "get_fee_receiver", _pool)
   655  
   656  	if err != nil {
   657  		return *new(common.Address), err
   658  	}
   659  
   660  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   661  
   662  	return out0, err
   663  
   664  }
   665  
   666  // GetFeeReceiver is a free data retrieval call binding the contract method 0x154aa8f5.
   667  //
   668  // Solidity: function get_fee_receiver(address _pool) view returns(address)
   669  func (_Curvefimeta *CurvefimetaSession) GetFeeReceiver(_pool common.Address) (common.Address, error) {
   670  	return _Curvefimeta.Contract.GetFeeReceiver(&_Curvefimeta.CallOpts, _pool)
   671  }
   672  
   673  // GetFeeReceiver is a free data retrieval call binding the contract method 0x154aa8f5.
   674  //
   675  // Solidity: function get_fee_receiver(address _pool) view returns(address)
   676  func (_Curvefimeta *CurvefimetaCallerSession) GetFeeReceiver(_pool common.Address) (common.Address, error) {
   677  	return _Curvefimeta.Contract.GetFeeReceiver(&_Curvefimeta.CallOpts, _pool)
   678  }
   679  
   680  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   681  //
   682  // Solidity: function get_fees(address _pool) view returns(uint256, uint256)
   683  func (_Curvefimeta *CurvefimetaCaller) GetFees(opts *bind.CallOpts, _pool common.Address) (*big.Int, *big.Int, error) {
   684  	var out []interface{}
   685  	err := _Curvefimeta.contract.Call(opts, &out, "get_fees", _pool)
   686  
   687  	if err != nil {
   688  		return *new(*big.Int), *new(*big.Int), err
   689  	}
   690  
   691  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   692  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   693  
   694  	return out0, out1, err
   695  
   696  }
   697  
   698  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   699  //
   700  // Solidity: function get_fees(address _pool) view returns(uint256, uint256)
   701  func (_Curvefimeta *CurvefimetaSession) GetFees(_pool common.Address) (*big.Int, *big.Int, error) {
   702  	return _Curvefimeta.Contract.GetFees(&_Curvefimeta.CallOpts, _pool)
   703  }
   704  
   705  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   706  //
   707  // Solidity: function get_fees(address _pool) view returns(uint256, uint256)
   708  func (_Curvefimeta *CurvefimetaCallerSession) GetFees(_pool common.Address) (*big.Int, *big.Int, error) {
   709  	return _Curvefimeta.Contract.GetFees(&_Curvefimeta.CallOpts, _pool)
   710  }
   711  
   712  // GetGauge is a free data retrieval call binding the contract method 0xdaf297b9.
   713  //
   714  // Solidity: function get_gauge(address _pool) view returns(address)
   715  func (_Curvefimeta *CurvefimetaCaller) GetGauge(opts *bind.CallOpts, _pool common.Address) (common.Address, error) {
   716  	var out []interface{}
   717  	err := _Curvefimeta.contract.Call(opts, &out, "get_gauge", _pool)
   718  
   719  	if err != nil {
   720  		return *new(common.Address), err
   721  	}
   722  
   723  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   724  
   725  	return out0, err
   726  
   727  }
   728  
   729  // GetGauge is a free data retrieval call binding the contract method 0xdaf297b9.
   730  //
   731  // Solidity: function get_gauge(address _pool) view returns(address)
   732  func (_Curvefimeta *CurvefimetaSession) GetGauge(_pool common.Address) (common.Address, error) {
   733  	return _Curvefimeta.Contract.GetGauge(&_Curvefimeta.CallOpts, _pool)
   734  }
   735  
   736  // GetGauge is a free data retrieval call binding the contract method 0xdaf297b9.
   737  //
   738  // Solidity: function get_gauge(address _pool) view returns(address)
   739  func (_Curvefimeta *CurvefimetaCallerSession) GetGauge(_pool common.Address) (common.Address, error) {
   740  	return _Curvefimeta.Contract.GetGauge(&_Curvefimeta.CallOpts, _pool)
   741  }
   742  
   743  // GetImplementationAddress is a free data retrieval call binding the contract method 0x510d98a4.
   744  //
   745  // Solidity: function get_implementation_address(address _pool) view returns(address)
   746  func (_Curvefimeta *CurvefimetaCaller) GetImplementationAddress(opts *bind.CallOpts, _pool common.Address) (common.Address, error) {
   747  	var out []interface{}
   748  	err := _Curvefimeta.contract.Call(opts, &out, "get_implementation_address", _pool)
   749  
   750  	if err != nil {
   751  		return *new(common.Address), err
   752  	}
   753  
   754  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   755  
   756  	return out0, err
   757  
   758  }
   759  
   760  // GetImplementationAddress is a free data retrieval call binding the contract method 0x510d98a4.
   761  //
   762  // Solidity: function get_implementation_address(address _pool) view returns(address)
   763  func (_Curvefimeta *CurvefimetaSession) GetImplementationAddress(_pool common.Address) (common.Address, error) {
   764  	return _Curvefimeta.Contract.GetImplementationAddress(&_Curvefimeta.CallOpts, _pool)
   765  }
   766  
   767  // GetImplementationAddress is a free data retrieval call binding the contract method 0x510d98a4.
   768  //
   769  // Solidity: function get_implementation_address(address _pool) view returns(address)
   770  func (_Curvefimeta *CurvefimetaCallerSession) GetImplementationAddress(_pool common.Address) (common.Address, error) {
   771  	return _Curvefimeta.Contract.GetImplementationAddress(&_Curvefimeta.CallOpts, _pool)
   772  }
   773  
   774  // GetMetaNCoins is a free data retrieval call binding the contract method 0xeb73f37d.
   775  //
   776  // Solidity: function get_meta_n_coins(address _pool) view returns(uint256, uint256)
   777  func (_Curvefimeta *CurvefimetaCaller) GetMetaNCoins(opts *bind.CallOpts, _pool common.Address) (*big.Int, *big.Int, error) {
   778  	var out []interface{}
   779  	err := _Curvefimeta.contract.Call(opts, &out, "get_meta_n_coins", _pool)
   780  
   781  	if err != nil {
   782  		return *new(*big.Int), *new(*big.Int), err
   783  	}
   784  
   785  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   786  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   787  
   788  	return out0, out1, err
   789  
   790  }
   791  
   792  // GetMetaNCoins is a free data retrieval call binding the contract method 0xeb73f37d.
   793  //
   794  // Solidity: function get_meta_n_coins(address _pool) view returns(uint256, uint256)
   795  func (_Curvefimeta *CurvefimetaSession) GetMetaNCoins(_pool common.Address) (*big.Int, *big.Int, error) {
   796  	return _Curvefimeta.Contract.GetMetaNCoins(&_Curvefimeta.CallOpts, _pool)
   797  }
   798  
   799  // GetMetaNCoins is a free data retrieval call binding the contract method 0xeb73f37d.
   800  //
   801  // Solidity: function get_meta_n_coins(address _pool) view returns(uint256, uint256)
   802  func (_Curvefimeta *CurvefimetaCallerSession) GetMetaNCoins(_pool common.Address) (*big.Int, *big.Int, error) {
   803  	return _Curvefimeta.Contract.GetMetaNCoins(&_Curvefimeta.CallOpts, _pool)
   804  }
   805  
   806  // GetMetapoolRates is a free data retrieval call binding the contract method 0x06d8f160.
   807  //
   808  // Solidity: function get_metapool_rates(address _pool) view returns(uint256[2])
   809  func (_Curvefimeta *CurvefimetaCaller) GetMetapoolRates(opts *bind.CallOpts, _pool common.Address) ([2]*big.Int, error) {
   810  	var out []interface{}
   811  	err := _Curvefimeta.contract.Call(opts, &out, "get_metapool_rates", _pool)
   812  
   813  	if err != nil {
   814  		return *new([2]*big.Int), err
   815  	}
   816  
   817  	out0 := *abi.ConvertType(out[0], new([2]*big.Int)).(*[2]*big.Int)
   818  
   819  	return out0, err
   820  
   821  }
   822  
   823  // GetMetapoolRates is a free data retrieval call binding the contract method 0x06d8f160.
   824  //
   825  // Solidity: function get_metapool_rates(address _pool) view returns(uint256[2])
   826  func (_Curvefimeta *CurvefimetaSession) GetMetapoolRates(_pool common.Address) ([2]*big.Int, error) {
   827  	return _Curvefimeta.Contract.GetMetapoolRates(&_Curvefimeta.CallOpts, _pool)
   828  }
   829  
   830  // GetMetapoolRates is a free data retrieval call binding the contract method 0x06d8f160.
   831  //
   832  // Solidity: function get_metapool_rates(address _pool) view returns(uint256[2])
   833  func (_Curvefimeta *CurvefimetaCallerSession) GetMetapoolRates(_pool common.Address) ([2]*big.Int, error) {
   834  	return _Curvefimeta.Contract.GetMetapoolRates(&_Curvefimeta.CallOpts, _pool)
   835  }
   836  
   837  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   838  //
   839  // Solidity: function get_n_coins(address _pool) view returns(uint256)
   840  func (_Curvefimeta *CurvefimetaCaller) GetNCoins(opts *bind.CallOpts, _pool common.Address) (*big.Int, error) {
   841  	var out []interface{}
   842  	err := _Curvefimeta.contract.Call(opts, &out, "get_n_coins", _pool)
   843  
   844  	if err != nil {
   845  		return *new(*big.Int), err
   846  	}
   847  
   848  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   849  
   850  	return out0, err
   851  
   852  }
   853  
   854  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   855  //
   856  // Solidity: function get_n_coins(address _pool) view returns(uint256)
   857  func (_Curvefimeta *CurvefimetaSession) GetNCoins(_pool common.Address) (*big.Int, error) {
   858  	return _Curvefimeta.Contract.GetNCoins(&_Curvefimeta.CallOpts, _pool)
   859  }
   860  
   861  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   862  //
   863  // Solidity: function get_n_coins(address _pool) view returns(uint256)
   864  func (_Curvefimeta *CurvefimetaCallerSession) GetNCoins(_pool common.Address) (*big.Int, error) {
   865  	return _Curvefimeta.Contract.GetNCoins(&_Curvefimeta.CallOpts, _pool)
   866  }
   867  
   868  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   869  //
   870  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   871  func (_Curvefimeta *CurvefimetaCaller) GetPoolAssetType(opts *bind.CallOpts, _pool common.Address) (*big.Int, error) {
   872  	var out []interface{}
   873  	err := _Curvefimeta.contract.Call(opts, &out, "get_pool_asset_type", _pool)
   874  
   875  	if err != nil {
   876  		return *new(*big.Int), err
   877  	}
   878  
   879  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   880  
   881  	return out0, err
   882  
   883  }
   884  
   885  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   886  //
   887  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   888  func (_Curvefimeta *CurvefimetaSession) GetPoolAssetType(_pool common.Address) (*big.Int, error) {
   889  	return _Curvefimeta.Contract.GetPoolAssetType(&_Curvefimeta.CallOpts, _pool)
   890  }
   891  
   892  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   893  //
   894  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   895  func (_Curvefimeta *CurvefimetaCallerSession) GetPoolAssetType(_pool common.Address) (*big.Int, error) {
   896  	return _Curvefimeta.Contract.GetPoolAssetType(&_Curvefimeta.CallOpts, _pool)
   897  }
   898  
   899  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
   900  //
   901  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
   902  func (_Curvefimeta *CurvefimetaCaller) GetUnderlyingBalances(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   903  	var out []interface{}
   904  	err := _Curvefimeta.contract.Call(opts, &out, "get_underlying_balances", _pool)
   905  
   906  	if err != nil {
   907  		return *new([8]*big.Int), err
   908  	}
   909  
   910  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   911  
   912  	return out0, err
   913  
   914  }
   915  
   916  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
   917  //
   918  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
   919  func (_Curvefimeta *CurvefimetaSession) GetUnderlyingBalances(_pool common.Address) ([8]*big.Int, error) {
   920  	return _Curvefimeta.Contract.GetUnderlyingBalances(&_Curvefimeta.CallOpts, _pool)
   921  }
   922  
   923  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
   924  //
   925  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
   926  func (_Curvefimeta *CurvefimetaCallerSession) GetUnderlyingBalances(_pool common.Address) ([8]*big.Int, error) {
   927  	return _Curvefimeta.Contract.GetUnderlyingBalances(&_Curvefimeta.CallOpts, _pool)
   928  }
   929  
   930  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
   931  //
   932  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
   933  func (_Curvefimeta *CurvefimetaCaller) GetUnderlyingCoins(opts *bind.CallOpts, _pool common.Address) ([8]common.Address, error) {
   934  	var out []interface{}
   935  	err := _Curvefimeta.contract.Call(opts, &out, "get_underlying_coins", _pool)
   936  
   937  	if err != nil {
   938  		return *new([8]common.Address), err
   939  	}
   940  
   941  	out0 := *abi.ConvertType(out[0], new([8]common.Address)).(*[8]common.Address)
   942  
   943  	return out0, err
   944  
   945  }
   946  
   947  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
   948  //
   949  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
   950  func (_Curvefimeta *CurvefimetaSession) GetUnderlyingCoins(_pool common.Address) ([8]common.Address, error) {
   951  	return _Curvefimeta.Contract.GetUnderlyingCoins(&_Curvefimeta.CallOpts, _pool)
   952  }
   953  
   954  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
   955  //
   956  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
   957  func (_Curvefimeta *CurvefimetaCallerSession) GetUnderlyingCoins(_pool common.Address) ([8]common.Address, error) {
   958  	return _Curvefimeta.Contract.GetUnderlyingCoins(&_Curvefimeta.CallOpts, _pool)
   959  }
   960  
   961  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
   962  //
   963  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
   964  func (_Curvefimeta *CurvefimetaCaller) GetUnderlyingDecimals(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   965  	var out []interface{}
   966  	err := _Curvefimeta.contract.Call(opts, &out, "get_underlying_decimals", _pool)
   967  
   968  	if err != nil {
   969  		return *new([8]*big.Int), err
   970  	}
   971  
   972  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   973  
   974  	return out0, err
   975  
   976  }
   977  
   978  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
   979  //
   980  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
   981  func (_Curvefimeta *CurvefimetaSession) GetUnderlyingDecimals(_pool common.Address) ([8]*big.Int, error) {
   982  	return _Curvefimeta.Contract.GetUnderlyingDecimals(&_Curvefimeta.CallOpts, _pool)
   983  }
   984  
   985  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
   986  //
   987  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
   988  func (_Curvefimeta *CurvefimetaCallerSession) GetUnderlyingDecimals(_pool common.Address) ([8]*big.Int, error) {
   989  	return _Curvefimeta.Contract.GetUnderlyingDecimals(&_Curvefimeta.CallOpts, _pool)
   990  }
   991  
   992  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
   993  //
   994  // Solidity: function is_meta(address _pool) view returns(bool)
   995  func (_Curvefimeta *CurvefimetaCaller) IsMeta(opts *bind.CallOpts, _pool common.Address) (bool, error) {
   996  	var out []interface{}
   997  	err := _Curvefimeta.contract.Call(opts, &out, "is_meta", _pool)
   998  
   999  	if err != nil {
  1000  		return *new(bool), err
  1001  	}
  1002  
  1003  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1004  
  1005  	return out0, err
  1006  
  1007  }
  1008  
  1009  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
  1010  //
  1011  // Solidity: function is_meta(address _pool) view returns(bool)
  1012  func (_Curvefimeta *CurvefimetaSession) IsMeta(_pool common.Address) (bool, error) {
  1013  	return _Curvefimeta.Contract.IsMeta(&_Curvefimeta.CallOpts, _pool)
  1014  }
  1015  
  1016  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
  1017  //
  1018  // Solidity: function is_meta(address _pool) view returns(bool)
  1019  func (_Curvefimeta *CurvefimetaCallerSession) IsMeta(_pool common.Address) (bool, error) {
  1020  	return _Curvefimeta.Contract.IsMeta(&_Curvefimeta.CallOpts, _pool)
  1021  }
  1022  
  1023  // Manager is a free data retrieval call binding the contract method 0x481c6a75.
  1024  //
  1025  // Solidity: function manager() view returns(address)
  1026  func (_Curvefimeta *CurvefimetaCaller) Manager(opts *bind.CallOpts) (common.Address, error) {
  1027  	var out []interface{}
  1028  	err := _Curvefimeta.contract.Call(opts, &out, "manager")
  1029  
  1030  	if err != nil {
  1031  		return *new(common.Address), err
  1032  	}
  1033  
  1034  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1035  
  1036  	return out0, err
  1037  
  1038  }
  1039  
  1040  // Manager is a free data retrieval call binding the contract method 0x481c6a75.
  1041  //
  1042  // Solidity: function manager() view returns(address)
  1043  func (_Curvefimeta *CurvefimetaSession) Manager() (common.Address, error) {
  1044  	return _Curvefimeta.Contract.Manager(&_Curvefimeta.CallOpts)
  1045  }
  1046  
  1047  // Manager is a free data retrieval call binding the contract method 0x481c6a75.
  1048  //
  1049  // Solidity: function manager() view returns(address)
  1050  func (_Curvefimeta *CurvefimetaCallerSession) Manager() (common.Address, error) {
  1051  	return _Curvefimeta.Contract.Manager(&_Curvefimeta.CallOpts)
  1052  }
  1053  
  1054  // MetapoolImplementations is a free data retrieval call binding the contract method 0x970fa3f3.
  1055  //
  1056  // Solidity: function metapool_implementations(address _base_pool) view returns(address[10])
  1057  func (_Curvefimeta *CurvefimetaCaller) MetapoolImplementations(opts *bind.CallOpts, _base_pool common.Address) ([10]common.Address, error) {
  1058  	var out []interface{}
  1059  	err := _Curvefimeta.contract.Call(opts, &out, "metapool_implementations", _base_pool)
  1060  
  1061  	if err != nil {
  1062  		return *new([10]common.Address), err
  1063  	}
  1064  
  1065  	out0 := *abi.ConvertType(out[0], new([10]common.Address)).(*[10]common.Address)
  1066  
  1067  	return out0, err
  1068  
  1069  }
  1070  
  1071  // MetapoolImplementations is a free data retrieval call binding the contract method 0x970fa3f3.
  1072  //
  1073  // Solidity: function metapool_implementations(address _base_pool) view returns(address[10])
  1074  func (_Curvefimeta *CurvefimetaSession) MetapoolImplementations(_base_pool common.Address) ([10]common.Address, error) {
  1075  	return _Curvefimeta.Contract.MetapoolImplementations(&_Curvefimeta.CallOpts, _base_pool)
  1076  }
  1077  
  1078  // MetapoolImplementations is a free data retrieval call binding the contract method 0x970fa3f3.
  1079  //
  1080  // Solidity: function metapool_implementations(address _base_pool) view returns(address[10])
  1081  func (_Curvefimeta *CurvefimetaCallerSession) MetapoolImplementations(_base_pool common.Address) ([10]common.Address, error) {
  1082  	return _Curvefimeta.Contract.MetapoolImplementations(&_Curvefimeta.CallOpts, _base_pool)
  1083  }
  1084  
  1085  // PlainImplementations is a free data retrieval call binding the contract method 0x31a4f865.
  1086  //
  1087  // Solidity: function plain_implementations(uint256 arg0, uint256 arg1) view returns(address)
  1088  func (_Curvefimeta *CurvefimetaCaller) PlainImplementations(opts *bind.CallOpts, arg0 *big.Int, arg1 *big.Int) (common.Address, error) {
  1089  	var out []interface{}
  1090  	err := _Curvefimeta.contract.Call(opts, &out, "plain_implementations", arg0, arg1)
  1091  
  1092  	if err != nil {
  1093  		return *new(common.Address), err
  1094  	}
  1095  
  1096  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1097  
  1098  	return out0, err
  1099  
  1100  }
  1101  
  1102  // PlainImplementations is a free data retrieval call binding the contract method 0x31a4f865.
  1103  //
  1104  // Solidity: function plain_implementations(uint256 arg0, uint256 arg1) view returns(address)
  1105  func (_Curvefimeta *CurvefimetaSession) PlainImplementations(arg0 *big.Int, arg1 *big.Int) (common.Address, error) {
  1106  	return _Curvefimeta.Contract.PlainImplementations(&_Curvefimeta.CallOpts, arg0, arg1)
  1107  }
  1108  
  1109  // PlainImplementations is a free data retrieval call binding the contract method 0x31a4f865.
  1110  //
  1111  // Solidity: function plain_implementations(uint256 arg0, uint256 arg1) view returns(address)
  1112  func (_Curvefimeta *CurvefimetaCallerSession) PlainImplementations(arg0 *big.Int, arg1 *big.Int) (common.Address, error) {
  1113  	return _Curvefimeta.Contract.PlainImplementations(&_Curvefimeta.CallOpts, arg0, arg1)
  1114  }
  1115  
  1116  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1117  //
  1118  // Solidity: function pool_count() view returns(uint256)
  1119  func (_Curvefimeta *CurvefimetaCaller) PoolCount(opts *bind.CallOpts) (*big.Int, error) {
  1120  	var out []interface{}
  1121  	err := _Curvefimeta.contract.Call(opts, &out, "pool_count")
  1122  
  1123  	if err != nil {
  1124  		return *new(*big.Int), err
  1125  	}
  1126  
  1127  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1128  
  1129  	return out0, err
  1130  
  1131  }
  1132  
  1133  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1134  //
  1135  // Solidity: function pool_count() view returns(uint256)
  1136  func (_Curvefimeta *CurvefimetaSession) PoolCount() (*big.Int, error) {
  1137  	return _Curvefimeta.Contract.PoolCount(&_Curvefimeta.CallOpts)
  1138  }
  1139  
  1140  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1141  //
  1142  // Solidity: function pool_count() view returns(uint256)
  1143  func (_Curvefimeta *CurvefimetaCallerSession) PoolCount() (*big.Int, error) {
  1144  	return _Curvefimeta.Contract.PoolCount(&_Curvefimeta.CallOpts)
  1145  }
  1146  
  1147  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1148  //
  1149  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1150  func (_Curvefimeta *CurvefimetaCaller) PoolList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1151  	var out []interface{}
  1152  	err := _Curvefimeta.contract.Call(opts, &out, "pool_list", arg0)
  1153  
  1154  	if err != nil {
  1155  		return *new(common.Address), err
  1156  	}
  1157  
  1158  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1159  
  1160  	return out0, err
  1161  
  1162  }
  1163  
  1164  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1165  //
  1166  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1167  func (_Curvefimeta *CurvefimetaSession) PoolList(arg0 *big.Int) (common.Address, error) {
  1168  	return _Curvefimeta.Contract.PoolList(&_Curvefimeta.CallOpts, arg0)
  1169  }
  1170  
  1171  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1172  //
  1173  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1174  func (_Curvefimeta *CurvefimetaCallerSession) PoolList(arg0 *big.Int) (common.Address, error) {
  1175  	return _Curvefimeta.Contract.PoolList(&_Curvefimeta.CallOpts, arg0)
  1176  }
  1177  
  1178  // AcceptTransferOwnership is a paid mutator transaction binding the contract method 0xe5ea47b8.
  1179  //
  1180  // Solidity: function accept_transfer_ownership() returns()
  1181  func (_Curvefimeta *CurvefimetaTransactor) AcceptTransferOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1182  	return _Curvefimeta.contract.Transact(opts, "accept_transfer_ownership")
  1183  }
  1184  
  1185  // AcceptTransferOwnership is a paid mutator transaction binding the contract method 0xe5ea47b8.
  1186  //
  1187  // Solidity: function accept_transfer_ownership() returns()
  1188  func (_Curvefimeta *CurvefimetaSession) AcceptTransferOwnership() (*types.Transaction, error) {
  1189  	return _Curvefimeta.Contract.AcceptTransferOwnership(&_Curvefimeta.TransactOpts)
  1190  }
  1191  
  1192  // AcceptTransferOwnership is a paid mutator transaction binding the contract method 0xe5ea47b8.
  1193  //
  1194  // Solidity: function accept_transfer_ownership() returns()
  1195  func (_Curvefimeta *CurvefimetaTransactorSession) AcceptTransferOwnership() (*types.Transaction, error) {
  1196  	return _Curvefimeta.Contract.AcceptTransferOwnership(&_Curvefimeta.TransactOpts)
  1197  }
  1198  
  1199  // AddBasePool is a paid mutator transaction binding the contract method 0x2fc05653.
  1200  //
  1201  // Solidity: function add_base_pool(address _base_pool, address _fee_receiver, uint256 _asset_type, address[10] _implementations) returns()
  1202  func (_Curvefimeta *CurvefimetaTransactor) AddBasePool(opts *bind.TransactOpts, _base_pool common.Address, _fee_receiver common.Address, _asset_type *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1203  	return _Curvefimeta.contract.Transact(opts, "add_base_pool", _base_pool, _fee_receiver, _asset_type, _implementations)
  1204  }
  1205  
  1206  // AddBasePool is a paid mutator transaction binding the contract method 0x2fc05653.
  1207  //
  1208  // Solidity: function add_base_pool(address _base_pool, address _fee_receiver, uint256 _asset_type, address[10] _implementations) returns()
  1209  func (_Curvefimeta *CurvefimetaSession) AddBasePool(_base_pool common.Address, _fee_receiver common.Address, _asset_type *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1210  	return _Curvefimeta.Contract.AddBasePool(&_Curvefimeta.TransactOpts, _base_pool, _fee_receiver, _asset_type, _implementations)
  1211  }
  1212  
  1213  // AddBasePool is a paid mutator transaction binding the contract method 0x2fc05653.
  1214  //
  1215  // Solidity: function add_base_pool(address _base_pool, address _fee_receiver, uint256 _asset_type, address[10] _implementations) returns()
  1216  func (_Curvefimeta *CurvefimetaTransactorSession) AddBasePool(_base_pool common.Address, _fee_receiver common.Address, _asset_type *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1217  	return _Curvefimeta.Contract.AddBasePool(&_Curvefimeta.TransactOpts, _base_pool, _fee_receiver, _asset_type, _implementations)
  1218  }
  1219  
  1220  // AddExistingMetapools is a paid mutator transaction binding the contract method 0xdb89fabc.
  1221  //
  1222  // Solidity: function add_existing_metapools(address[10] _pools) returns(bool)
  1223  func (_Curvefimeta *CurvefimetaTransactor) AddExistingMetapools(opts *bind.TransactOpts, _pools [10]common.Address) (*types.Transaction, error) {
  1224  	return _Curvefimeta.contract.Transact(opts, "add_existing_metapools", _pools)
  1225  }
  1226  
  1227  // AddExistingMetapools is a paid mutator transaction binding the contract method 0xdb89fabc.
  1228  //
  1229  // Solidity: function add_existing_metapools(address[10] _pools) returns(bool)
  1230  func (_Curvefimeta *CurvefimetaSession) AddExistingMetapools(_pools [10]common.Address) (*types.Transaction, error) {
  1231  	return _Curvefimeta.Contract.AddExistingMetapools(&_Curvefimeta.TransactOpts, _pools)
  1232  }
  1233  
  1234  // AddExistingMetapools is a paid mutator transaction binding the contract method 0xdb89fabc.
  1235  //
  1236  // Solidity: function add_existing_metapools(address[10] _pools) returns(bool)
  1237  func (_Curvefimeta *CurvefimetaTransactorSession) AddExistingMetapools(_pools [10]common.Address) (*types.Transaction, error) {
  1238  	return _Curvefimeta.Contract.AddExistingMetapools(&_Curvefimeta.TransactOpts, _pools)
  1239  }
  1240  
  1241  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1242  //
  1243  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1244  func (_Curvefimeta *CurvefimetaTransactor) BatchSetPoolAssetType(opts *bind.TransactOpts, _pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1245  	return _Curvefimeta.contract.Transact(opts, "batch_set_pool_asset_type", _pools, _asset_types)
  1246  }
  1247  
  1248  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1249  //
  1250  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1251  func (_Curvefimeta *CurvefimetaSession) BatchSetPoolAssetType(_pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1252  	return _Curvefimeta.Contract.BatchSetPoolAssetType(&_Curvefimeta.TransactOpts, _pools, _asset_types)
  1253  }
  1254  
  1255  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1256  //
  1257  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1258  func (_Curvefimeta *CurvefimetaTransactorSession) BatchSetPoolAssetType(_pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1259  	return _Curvefimeta.Contract.BatchSetPoolAssetType(&_Curvefimeta.TransactOpts, _pools, _asset_types)
  1260  }
  1261  
  1262  // CommitTransferOwnership is a paid mutator transaction binding the contract method 0x6b441a40.
  1263  //
  1264  // Solidity: function commit_transfer_ownership(address _addr) returns()
  1265  func (_Curvefimeta *CurvefimetaTransactor) CommitTransferOwnership(opts *bind.TransactOpts, _addr common.Address) (*types.Transaction, error) {
  1266  	return _Curvefimeta.contract.Transact(opts, "commit_transfer_ownership", _addr)
  1267  }
  1268  
  1269  // CommitTransferOwnership is a paid mutator transaction binding the contract method 0x6b441a40.
  1270  //
  1271  // Solidity: function commit_transfer_ownership(address _addr) returns()
  1272  func (_Curvefimeta *CurvefimetaSession) CommitTransferOwnership(_addr common.Address) (*types.Transaction, error) {
  1273  	return _Curvefimeta.Contract.CommitTransferOwnership(&_Curvefimeta.TransactOpts, _addr)
  1274  }
  1275  
  1276  // CommitTransferOwnership is a paid mutator transaction binding the contract method 0x6b441a40.
  1277  //
  1278  // Solidity: function commit_transfer_ownership(address _addr) returns()
  1279  func (_Curvefimeta *CurvefimetaTransactorSession) CommitTransferOwnership(_addr common.Address) (*types.Transaction, error) {
  1280  	return _Curvefimeta.Contract.CommitTransferOwnership(&_Curvefimeta.TransactOpts, _addr)
  1281  }
  1282  
  1283  // ConvertMetapoolFees is a paid mutator transaction binding the contract method 0xbcc981d2.
  1284  //
  1285  // Solidity: function convert_metapool_fees() returns(bool)
  1286  func (_Curvefimeta *CurvefimetaTransactor) ConvertMetapoolFees(opts *bind.TransactOpts) (*types.Transaction, error) {
  1287  	return _Curvefimeta.contract.Transact(opts, "convert_metapool_fees")
  1288  }
  1289  
  1290  // ConvertMetapoolFees is a paid mutator transaction binding the contract method 0xbcc981d2.
  1291  //
  1292  // Solidity: function convert_metapool_fees() returns(bool)
  1293  func (_Curvefimeta *CurvefimetaSession) ConvertMetapoolFees() (*types.Transaction, error) {
  1294  	return _Curvefimeta.Contract.ConvertMetapoolFees(&_Curvefimeta.TransactOpts)
  1295  }
  1296  
  1297  // ConvertMetapoolFees is a paid mutator transaction binding the contract method 0xbcc981d2.
  1298  //
  1299  // Solidity: function convert_metapool_fees() returns(bool)
  1300  func (_Curvefimeta *CurvefimetaTransactorSession) ConvertMetapoolFees() (*types.Transaction, error) {
  1301  	return _Curvefimeta.Contract.ConvertMetapoolFees(&_Curvefimeta.TransactOpts)
  1302  }
  1303  
  1304  // DeployGauge is a paid mutator transaction binding the contract method 0x96bebb34.
  1305  //
  1306  // Solidity: function deploy_gauge(address _pool) returns(address)
  1307  func (_Curvefimeta *CurvefimetaTransactor) DeployGauge(opts *bind.TransactOpts, _pool common.Address) (*types.Transaction, error) {
  1308  	return _Curvefimeta.contract.Transact(opts, "deploy_gauge", _pool)
  1309  }
  1310  
  1311  // DeployGauge is a paid mutator transaction binding the contract method 0x96bebb34.
  1312  //
  1313  // Solidity: function deploy_gauge(address _pool) returns(address)
  1314  func (_Curvefimeta *CurvefimetaSession) DeployGauge(_pool common.Address) (*types.Transaction, error) {
  1315  	return _Curvefimeta.Contract.DeployGauge(&_Curvefimeta.TransactOpts, _pool)
  1316  }
  1317  
  1318  // DeployGauge is a paid mutator transaction binding the contract method 0x96bebb34.
  1319  //
  1320  // Solidity: function deploy_gauge(address _pool) returns(address)
  1321  func (_Curvefimeta *CurvefimetaTransactorSession) DeployGauge(_pool common.Address) (*types.Transaction, error) {
  1322  	return _Curvefimeta.Contract.DeployGauge(&_Curvefimeta.TransactOpts, _pool)
  1323  }
  1324  
  1325  // DeployMetapool is a paid mutator transaction binding the contract method 0xe339eb4f.
  1326  //
  1327  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee) returns(address)
  1328  func (_Curvefimeta *CurvefimetaTransactor) DeployMetapool(opts *bind.TransactOpts, _base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1329  	return _Curvefimeta.contract.Transact(opts, "deploy_metapool", _base_pool, _name, _symbol, _coin, _A, _fee)
  1330  }
  1331  
  1332  // DeployMetapool is a paid mutator transaction binding the contract method 0xe339eb4f.
  1333  //
  1334  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee) returns(address)
  1335  func (_Curvefimeta *CurvefimetaSession) DeployMetapool(_base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1336  	return _Curvefimeta.Contract.DeployMetapool(&_Curvefimeta.TransactOpts, _base_pool, _name, _symbol, _coin, _A, _fee)
  1337  }
  1338  
  1339  // DeployMetapool is a paid mutator transaction binding the contract method 0xe339eb4f.
  1340  //
  1341  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee) returns(address)
  1342  func (_Curvefimeta *CurvefimetaTransactorSession) DeployMetapool(_base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1343  	return _Curvefimeta.Contract.DeployMetapool(&_Curvefimeta.TransactOpts, _base_pool, _name, _symbol, _coin, _A, _fee)
  1344  }
  1345  
  1346  // DeployMetapool0 is a paid mutator transaction binding the contract method 0xde7fe3bf.
  1347  //
  1348  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee, uint256 _implementation_idx) returns(address)
  1349  func (_Curvefimeta *CurvefimetaTransactor) DeployMetapool0(opts *bind.TransactOpts, _base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1350  	return _Curvefimeta.contract.Transact(opts, "deploy_metapool0", _base_pool, _name, _symbol, _coin, _A, _fee, _implementation_idx)
  1351  }
  1352  
  1353  // DeployMetapool0 is a paid mutator transaction binding the contract method 0xde7fe3bf.
  1354  //
  1355  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee, uint256 _implementation_idx) returns(address)
  1356  func (_Curvefimeta *CurvefimetaSession) DeployMetapool0(_base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1357  	return _Curvefimeta.Contract.DeployMetapool0(&_Curvefimeta.TransactOpts, _base_pool, _name, _symbol, _coin, _A, _fee, _implementation_idx)
  1358  }
  1359  
  1360  // DeployMetapool0 is a paid mutator transaction binding the contract method 0xde7fe3bf.
  1361  //
  1362  // Solidity: function deploy_metapool(address _base_pool, string _name, string _symbol, address _coin, uint256 _A, uint256 _fee, uint256 _implementation_idx) returns(address)
  1363  func (_Curvefimeta *CurvefimetaTransactorSession) DeployMetapool0(_base_pool common.Address, _name string, _symbol string, _coin common.Address, _A *big.Int, _fee *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1364  	return _Curvefimeta.Contract.DeployMetapool0(&_Curvefimeta.TransactOpts, _base_pool, _name, _symbol, _coin, _A, _fee, _implementation_idx)
  1365  }
  1366  
  1367  // DeployPlainPool is a paid mutator transaction binding the contract method 0xcd419bb5.
  1368  //
  1369  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee) returns(address)
  1370  func (_Curvefimeta *CurvefimetaTransactor) DeployPlainPool(opts *bind.TransactOpts, _name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1371  	return _Curvefimeta.contract.Transact(opts, "deploy_plain_pool", _name, _symbol, _coins, _A, _fee)
  1372  }
  1373  
  1374  // DeployPlainPool is a paid mutator transaction binding the contract method 0xcd419bb5.
  1375  //
  1376  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee) returns(address)
  1377  func (_Curvefimeta *CurvefimetaSession) DeployPlainPool(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1378  	return _Curvefimeta.Contract.DeployPlainPool(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee)
  1379  }
  1380  
  1381  // DeployPlainPool is a paid mutator transaction binding the contract method 0xcd419bb5.
  1382  //
  1383  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee) returns(address)
  1384  func (_Curvefimeta *CurvefimetaTransactorSession) DeployPlainPool(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int) (*types.Transaction, error) {
  1385  	return _Curvefimeta.Contract.DeployPlainPool(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee)
  1386  }
  1387  
  1388  // DeployPlainPool0 is a paid mutator transaction binding the contract method 0x5c16487b.
  1389  //
  1390  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type) returns(address)
  1391  func (_Curvefimeta *CurvefimetaTransactor) DeployPlainPool0(opts *bind.TransactOpts, _name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int) (*types.Transaction, error) {
  1392  	return _Curvefimeta.contract.Transact(opts, "deploy_plain_pool0", _name, _symbol, _coins, _A, _fee, _asset_type)
  1393  }
  1394  
  1395  // DeployPlainPool0 is a paid mutator transaction binding the contract method 0x5c16487b.
  1396  //
  1397  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type) returns(address)
  1398  func (_Curvefimeta *CurvefimetaSession) DeployPlainPool0(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int) (*types.Transaction, error) {
  1399  	return _Curvefimeta.Contract.DeployPlainPool0(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee, _asset_type)
  1400  }
  1401  
  1402  // DeployPlainPool0 is a paid mutator transaction binding the contract method 0x5c16487b.
  1403  //
  1404  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type) returns(address)
  1405  func (_Curvefimeta *CurvefimetaTransactorSession) DeployPlainPool0(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int) (*types.Transaction, error) {
  1406  	return _Curvefimeta.Contract.DeployPlainPool0(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee, _asset_type)
  1407  }
  1408  
  1409  // DeployPlainPool1 is a paid mutator transaction binding the contract method 0x52f2db69.
  1410  //
  1411  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type, uint256 _implementation_idx) returns(address)
  1412  func (_Curvefimeta *CurvefimetaTransactor) DeployPlainPool1(opts *bind.TransactOpts, _name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1413  	return _Curvefimeta.contract.Transact(opts, "deploy_plain_pool1", _name, _symbol, _coins, _A, _fee, _asset_type, _implementation_idx)
  1414  }
  1415  
  1416  // DeployPlainPool1 is a paid mutator transaction binding the contract method 0x52f2db69.
  1417  //
  1418  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type, uint256 _implementation_idx) returns(address)
  1419  func (_Curvefimeta *CurvefimetaSession) DeployPlainPool1(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1420  	return _Curvefimeta.Contract.DeployPlainPool1(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee, _asset_type, _implementation_idx)
  1421  }
  1422  
  1423  // DeployPlainPool1 is a paid mutator transaction binding the contract method 0x52f2db69.
  1424  //
  1425  // Solidity: function deploy_plain_pool(string _name, string _symbol, address[4] _coins, uint256 _A, uint256 _fee, uint256 _asset_type, uint256 _implementation_idx) returns(address)
  1426  func (_Curvefimeta *CurvefimetaTransactorSession) DeployPlainPool1(_name string, _symbol string, _coins [4]common.Address, _A *big.Int, _fee *big.Int, _asset_type *big.Int, _implementation_idx *big.Int) (*types.Transaction, error) {
  1427  	return _Curvefimeta.Contract.DeployPlainPool1(&_Curvefimeta.TransactOpts, _name, _symbol, _coins, _A, _fee, _asset_type, _implementation_idx)
  1428  }
  1429  
  1430  // SetFeeReceiver is a paid mutator transaction binding the contract method 0x36d2b77a.
  1431  //
  1432  // Solidity: function set_fee_receiver(address _base_pool, address _fee_receiver) returns()
  1433  func (_Curvefimeta *CurvefimetaTransactor) SetFeeReceiver(opts *bind.TransactOpts, _base_pool common.Address, _fee_receiver common.Address) (*types.Transaction, error) {
  1434  	return _Curvefimeta.contract.Transact(opts, "set_fee_receiver", _base_pool, _fee_receiver)
  1435  }
  1436  
  1437  // SetFeeReceiver is a paid mutator transaction binding the contract method 0x36d2b77a.
  1438  //
  1439  // Solidity: function set_fee_receiver(address _base_pool, address _fee_receiver) returns()
  1440  func (_Curvefimeta *CurvefimetaSession) SetFeeReceiver(_base_pool common.Address, _fee_receiver common.Address) (*types.Transaction, error) {
  1441  	return _Curvefimeta.Contract.SetFeeReceiver(&_Curvefimeta.TransactOpts, _base_pool, _fee_receiver)
  1442  }
  1443  
  1444  // SetFeeReceiver is a paid mutator transaction binding the contract method 0x36d2b77a.
  1445  //
  1446  // Solidity: function set_fee_receiver(address _base_pool, address _fee_receiver) returns()
  1447  func (_Curvefimeta *CurvefimetaTransactorSession) SetFeeReceiver(_base_pool common.Address, _fee_receiver common.Address) (*types.Transaction, error) {
  1448  	return _Curvefimeta.Contract.SetFeeReceiver(&_Curvefimeta.TransactOpts, _base_pool, _fee_receiver)
  1449  }
  1450  
  1451  // SetGaugeImplementation is a paid mutator transaction binding the contract method 0x8f03182c.
  1452  //
  1453  // Solidity: function set_gauge_implementation(address _gauge_implementation) returns()
  1454  func (_Curvefimeta *CurvefimetaTransactor) SetGaugeImplementation(opts *bind.TransactOpts, _gauge_implementation common.Address) (*types.Transaction, error) {
  1455  	return _Curvefimeta.contract.Transact(opts, "set_gauge_implementation", _gauge_implementation)
  1456  }
  1457  
  1458  // SetGaugeImplementation is a paid mutator transaction binding the contract method 0x8f03182c.
  1459  //
  1460  // Solidity: function set_gauge_implementation(address _gauge_implementation) returns()
  1461  func (_Curvefimeta *CurvefimetaSession) SetGaugeImplementation(_gauge_implementation common.Address) (*types.Transaction, error) {
  1462  	return _Curvefimeta.Contract.SetGaugeImplementation(&_Curvefimeta.TransactOpts, _gauge_implementation)
  1463  }
  1464  
  1465  // SetGaugeImplementation is a paid mutator transaction binding the contract method 0x8f03182c.
  1466  //
  1467  // Solidity: function set_gauge_implementation(address _gauge_implementation) returns()
  1468  func (_Curvefimeta *CurvefimetaTransactorSession) SetGaugeImplementation(_gauge_implementation common.Address) (*types.Transaction, error) {
  1469  	return _Curvefimeta.Contract.SetGaugeImplementation(&_Curvefimeta.TransactOpts, _gauge_implementation)
  1470  }
  1471  
  1472  // SetManager is a paid mutator transaction binding the contract method 0x9aece83e.
  1473  //
  1474  // Solidity: function set_manager(address _manager) returns()
  1475  func (_Curvefimeta *CurvefimetaTransactor) SetManager(opts *bind.TransactOpts, _manager common.Address) (*types.Transaction, error) {
  1476  	return _Curvefimeta.contract.Transact(opts, "set_manager", _manager)
  1477  }
  1478  
  1479  // SetManager is a paid mutator transaction binding the contract method 0x9aece83e.
  1480  //
  1481  // Solidity: function set_manager(address _manager) returns()
  1482  func (_Curvefimeta *CurvefimetaSession) SetManager(_manager common.Address) (*types.Transaction, error) {
  1483  	return _Curvefimeta.Contract.SetManager(&_Curvefimeta.TransactOpts, _manager)
  1484  }
  1485  
  1486  // SetManager is a paid mutator transaction binding the contract method 0x9aece83e.
  1487  //
  1488  // Solidity: function set_manager(address _manager) returns()
  1489  func (_Curvefimeta *CurvefimetaTransactorSession) SetManager(_manager common.Address) (*types.Transaction, error) {
  1490  	return _Curvefimeta.Contract.SetManager(&_Curvefimeta.TransactOpts, _manager)
  1491  }
  1492  
  1493  // SetMetapoolImplementations is a paid mutator transaction binding the contract method 0xcb956b46.
  1494  //
  1495  // Solidity: function set_metapool_implementations(address _base_pool, address[10] _implementations) returns()
  1496  func (_Curvefimeta *CurvefimetaTransactor) SetMetapoolImplementations(opts *bind.TransactOpts, _base_pool common.Address, _implementations [10]common.Address) (*types.Transaction, error) {
  1497  	return _Curvefimeta.contract.Transact(opts, "set_metapool_implementations", _base_pool, _implementations)
  1498  }
  1499  
  1500  // SetMetapoolImplementations is a paid mutator transaction binding the contract method 0xcb956b46.
  1501  //
  1502  // Solidity: function set_metapool_implementations(address _base_pool, address[10] _implementations) returns()
  1503  func (_Curvefimeta *CurvefimetaSession) SetMetapoolImplementations(_base_pool common.Address, _implementations [10]common.Address) (*types.Transaction, error) {
  1504  	return _Curvefimeta.Contract.SetMetapoolImplementations(&_Curvefimeta.TransactOpts, _base_pool, _implementations)
  1505  }
  1506  
  1507  // SetMetapoolImplementations is a paid mutator transaction binding the contract method 0xcb956b46.
  1508  //
  1509  // Solidity: function set_metapool_implementations(address _base_pool, address[10] _implementations) returns()
  1510  func (_Curvefimeta *CurvefimetaTransactorSession) SetMetapoolImplementations(_base_pool common.Address, _implementations [10]common.Address) (*types.Transaction, error) {
  1511  	return _Curvefimeta.Contract.SetMetapoolImplementations(&_Curvefimeta.TransactOpts, _base_pool, _implementations)
  1512  }
  1513  
  1514  // SetPlainImplementations is a paid mutator transaction binding the contract method 0x9ddbf4b9.
  1515  //
  1516  // Solidity: function set_plain_implementations(uint256 _n_coins, address[10] _implementations) returns()
  1517  func (_Curvefimeta *CurvefimetaTransactor) SetPlainImplementations(opts *bind.TransactOpts, _n_coins *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1518  	return _Curvefimeta.contract.Transact(opts, "set_plain_implementations", _n_coins, _implementations)
  1519  }
  1520  
  1521  // SetPlainImplementations is a paid mutator transaction binding the contract method 0x9ddbf4b9.
  1522  //
  1523  // Solidity: function set_plain_implementations(uint256 _n_coins, address[10] _implementations) returns()
  1524  func (_Curvefimeta *CurvefimetaSession) SetPlainImplementations(_n_coins *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1525  	return _Curvefimeta.Contract.SetPlainImplementations(&_Curvefimeta.TransactOpts, _n_coins, _implementations)
  1526  }
  1527  
  1528  // SetPlainImplementations is a paid mutator transaction binding the contract method 0x9ddbf4b9.
  1529  //
  1530  // Solidity: function set_plain_implementations(uint256 _n_coins, address[10] _implementations) returns()
  1531  func (_Curvefimeta *CurvefimetaTransactorSession) SetPlainImplementations(_n_coins *big.Int, _implementations [10]common.Address) (*types.Transaction, error) {
  1532  	return _Curvefimeta.Contract.SetPlainImplementations(&_Curvefimeta.TransactOpts, _n_coins, _implementations)
  1533  }
  1534  
  1535  // CurvefimetaBasePoolAddedIterator is returned from FilterBasePoolAdded and is used to iterate over the raw logs and unpacked data for BasePoolAdded events raised by the Curvefimeta contract.
  1536  type CurvefimetaBasePoolAddedIterator struct {
  1537  	Event *CurvefimetaBasePoolAdded // Event containing the contract specifics and raw log
  1538  
  1539  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1540  	event    string              // Event name to use for unpacking event data
  1541  
  1542  	logs chan types.Log        // Log channel receiving the found contract events
  1543  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1544  	done bool                  // Whether the subscription completed delivering logs
  1545  	fail error                 // Occurred error to stop iteration
  1546  }
  1547  
  1548  // Next advances the iterator to the subsequent event, returning whether there
  1549  // are any more events found. In case of a retrieval or parsing error, false is
  1550  // returned and Error() can be queried for the exact failure.
  1551  func (it *CurvefimetaBasePoolAddedIterator) Next() bool {
  1552  	// If the iterator failed, stop iterating
  1553  	if it.fail != nil {
  1554  		return false
  1555  	}
  1556  	// If the iterator completed, deliver directly whatever's available
  1557  	if it.done {
  1558  		select {
  1559  		case log := <-it.logs:
  1560  			it.Event = new(CurvefimetaBasePoolAdded)
  1561  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1562  				it.fail = err
  1563  				return false
  1564  			}
  1565  			it.Event.Raw = log
  1566  			return true
  1567  
  1568  		default:
  1569  			return false
  1570  		}
  1571  	}
  1572  	// Iterator still in progress, wait for either a data or an error event
  1573  	select {
  1574  	case log := <-it.logs:
  1575  		it.Event = new(CurvefimetaBasePoolAdded)
  1576  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1577  			it.fail = err
  1578  			return false
  1579  		}
  1580  		it.Event.Raw = log
  1581  		return true
  1582  
  1583  	case err := <-it.sub.Err():
  1584  		it.done = true
  1585  		it.fail = err
  1586  		return it.Next()
  1587  	}
  1588  }
  1589  
  1590  // Error returns any retrieval or parsing error occurred during filtering.
  1591  func (it *CurvefimetaBasePoolAddedIterator) Error() error {
  1592  	return it.fail
  1593  }
  1594  
  1595  // Close terminates the iteration process, releasing any pending underlying
  1596  // resources.
  1597  func (it *CurvefimetaBasePoolAddedIterator) Close() error {
  1598  	it.sub.Unsubscribe()
  1599  	return nil
  1600  }
  1601  
  1602  // CurvefimetaBasePoolAdded represents a BasePoolAdded event raised by the Curvefimeta contract.
  1603  type CurvefimetaBasePoolAdded struct {
  1604  	BasePool common.Address
  1605  	Raw      types.Log // Blockchain specific contextual infos
  1606  }
  1607  
  1608  // FilterBasePoolAdded is a free log retrieval operation binding the contract event 0xcc6afdfec79da6be08142ecee25cf14b665961e25d30d8eba45959be9547635f.
  1609  //
  1610  // Solidity: event BasePoolAdded(address base_pool)
  1611  func (_Curvefimeta *CurvefimetaFilterer) FilterBasePoolAdded(opts *bind.FilterOpts) (*CurvefimetaBasePoolAddedIterator, error) {
  1612  
  1613  	logs, sub, err := _Curvefimeta.contract.FilterLogs(opts, "BasePoolAdded")
  1614  	if err != nil {
  1615  		return nil, err
  1616  	}
  1617  	return &CurvefimetaBasePoolAddedIterator{contract: _Curvefimeta.contract, event: "BasePoolAdded", logs: logs, sub: sub}, nil
  1618  }
  1619  
  1620  // WatchBasePoolAdded is a free log subscription operation binding the contract event 0xcc6afdfec79da6be08142ecee25cf14b665961e25d30d8eba45959be9547635f.
  1621  //
  1622  // Solidity: event BasePoolAdded(address base_pool)
  1623  func (_Curvefimeta *CurvefimetaFilterer) WatchBasePoolAdded(opts *bind.WatchOpts, sink chan<- *CurvefimetaBasePoolAdded) (event.Subscription, error) {
  1624  
  1625  	logs, sub, err := _Curvefimeta.contract.WatchLogs(opts, "BasePoolAdded")
  1626  	if err != nil {
  1627  		return nil, err
  1628  	}
  1629  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1630  		defer sub.Unsubscribe()
  1631  		for {
  1632  			select {
  1633  			case log := <-logs:
  1634  				// New log arrived, parse the event and forward to the user
  1635  				event := new(CurvefimetaBasePoolAdded)
  1636  				if err := _Curvefimeta.contract.UnpackLog(event, "BasePoolAdded", log); err != nil {
  1637  					return err
  1638  				}
  1639  				event.Raw = log
  1640  
  1641  				select {
  1642  				case sink <- event:
  1643  				case err := <-sub.Err():
  1644  					return err
  1645  				case <-quit:
  1646  					return nil
  1647  				}
  1648  			case err := <-sub.Err():
  1649  				return err
  1650  			case <-quit:
  1651  				return nil
  1652  			}
  1653  		}
  1654  	}), nil
  1655  }
  1656  
  1657  // ParseBasePoolAdded is a log parse operation binding the contract event 0xcc6afdfec79da6be08142ecee25cf14b665961e25d30d8eba45959be9547635f.
  1658  //
  1659  // Solidity: event BasePoolAdded(address base_pool)
  1660  func (_Curvefimeta *CurvefimetaFilterer) ParseBasePoolAdded(log types.Log) (*CurvefimetaBasePoolAdded, error) {
  1661  	event := new(CurvefimetaBasePoolAdded)
  1662  	if err := _Curvefimeta.contract.UnpackLog(event, "BasePoolAdded", log); err != nil {
  1663  		return nil, err
  1664  	}
  1665  	event.Raw = log
  1666  	return event, nil
  1667  }
  1668  
  1669  // CurvefimetaLiquidityGaugeDeployedIterator is returned from FilterLiquidityGaugeDeployed and is used to iterate over the raw logs and unpacked data for LiquidityGaugeDeployed events raised by the Curvefimeta contract.
  1670  type CurvefimetaLiquidityGaugeDeployedIterator struct {
  1671  	Event *CurvefimetaLiquidityGaugeDeployed // Event containing the contract specifics and raw log
  1672  
  1673  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1674  	event    string              // Event name to use for unpacking event data
  1675  
  1676  	logs chan types.Log        // Log channel receiving the found contract events
  1677  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1678  	done bool                  // Whether the subscription completed delivering logs
  1679  	fail error                 // Occurred error to stop iteration
  1680  }
  1681  
  1682  // Next advances the iterator to the subsequent event, returning whether there
  1683  // are any more events found. In case of a retrieval or parsing error, false is
  1684  // returned and Error() can be queried for the exact failure.
  1685  func (it *CurvefimetaLiquidityGaugeDeployedIterator) Next() bool {
  1686  	// If the iterator failed, stop iterating
  1687  	if it.fail != nil {
  1688  		return false
  1689  	}
  1690  	// If the iterator completed, deliver directly whatever's available
  1691  	if it.done {
  1692  		select {
  1693  		case log := <-it.logs:
  1694  			it.Event = new(CurvefimetaLiquidityGaugeDeployed)
  1695  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1696  				it.fail = err
  1697  				return false
  1698  			}
  1699  			it.Event.Raw = log
  1700  			return true
  1701  
  1702  		default:
  1703  			return false
  1704  		}
  1705  	}
  1706  	// Iterator still in progress, wait for either a data or an error event
  1707  	select {
  1708  	case log := <-it.logs:
  1709  		it.Event = new(CurvefimetaLiquidityGaugeDeployed)
  1710  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1711  			it.fail = err
  1712  			return false
  1713  		}
  1714  		it.Event.Raw = log
  1715  		return true
  1716  
  1717  	case err := <-it.sub.Err():
  1718  		it.done = true
  1719  		it.fail = err
  1720  		return it.Next()
  1721  	}
  1722  }
  1723  
  1724  // Error returns any retrieval or parsing error occurred during filtering.
  1725  func (it *CurvefimetaLiquidityGaugeDeployedIterator) Error() error {
  1726  	return it.fail
  1727  }
  1728  
  1729  // Close terminates the iteration process, releasing any pending underlying
  1730  // resources.
  1731  func (it *CurvefimetaLiquidityGaugeDeployedIterator) Close() error {
  1732  	it.sub.Unsubscribe()
  1733  	return nil
  1734  }
  1735  
  1736  // CurvefimetaLiquidityGaugeDeployed represents a LiquidityGaugeDeployed event raised by the Curvefimeta contract.
  1737  type CurvefimetaLiquidityGaugeDeployed struct {
  1738  	Pool  common.Address
  1739  	Gauge common.Address
  1740  	Raw   types.Log // Blockchain specific contextual infos
  1741  }
  1742  
  1743  // FilterLiquidityGaugeDeployed is a free log retrieval operation binding the contract event 0x656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b.
  1744  //
  1745  // Solidity: event LiquidityGaugeDeployed(address pool, address gauge)
  1746  func (_Curvefimeta *CurvefimetaFilterer) FilterLiquidityGaugeDeployed(opts *bind.FilterOpts) (*CurvefimetaLiquidityGaugeDeployedIterator, error) {
  1747  
  1748  	logs, sub, err := _Curvefimeta.contract.FilterLogs(opts, "LiquidityGaugeDeployed")
  1749  	if err != nil {
  1750  		return nil, err
  1751  	}
  1752  	return &CurvefimetaLiquidityGaugeDeployedIterator{contract: _Curvefimeta.contract, event: "LiquidityGaugeDeployed", logs: logs, sub: sub}, nil
  1753  }
  1754  
  1755  // WatchLiquidityGaugeDeployed is a free log subscription operation binding the contract event 0x656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b.
  1756  //
  1757  // Solidity: event LiquidityGaugeDeployed(address pool, address gauge)
  1758  func (_Curvefimeta *CurvefimetaFilterer) WatchLiquidityGaugeDeployed(opts *bind.WatchOpts, sink chan<- *CurvefimetaLiquidityGaugeDeployed) (event.Subscription, error) {
  1759  
  1760  	logs, sub, err := _Curvefimeta.contract.WatchLogs(opts, "LiquidityGaugeDeployed")
  1761  	if err != nil {
  1762  		return nil, err
  1763  	}
  1764  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1765  		defer sub.Unsubscribe()
  1766  		for {
  1767  			select {
  1768  			case log := <-logs:
  1769  				// New log arrived, parse the event and forward to the user
  1770  				event := new(CurvefimetaLiquidityGaugeDeployed)
  1771  				if err := _Curvefimeta.contract.UnpackLog(event, "LiquidityGaugeDeployed", log); err != nil {
  1772  					return err
  1773  				}
  1774  				event.Raw = log
  1775  
  1776  				select {
  1777  				case sink <- event:
  1778  				case err := <-sub.Err():
  1779  					return err
  1780  				case <-quit:
  1781  					return nil
  1782  				}
  1783  			case err := <-sub.Err():
  1784  				return err
  1785  			case <-quit:
  1786  				return nil
  1787  			}
  1788  		}
  1789  	}), nil
  1790  }
  1791  
  1792  // ParseLiquidityGaugeDeployed is a log parse operation binding the contract event 0x656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b.
  1793  //
  1794  // Solidity: event LiquidityGaugeDeployed(address pool, address gauge)
  1795  func (_Curvefimeta *CurvefimetaFilterer) ParseLiquidityGaugeDeployed(log types.Log) (*CurvefimetaLiquidityGaugeDeployed, error) {
  1796  	event := new(CurvefimetaLiquidityGaugeDeployed)
  1797  	if err := _Curvefimeta.contract.UnpackLog(event, "LiquidityGaugeDeployed", log); err != nil {
  1798  		return nil, err
  1799  	}
  1800  	event.Raw = log
  1801  	return event, nil
  1802  }
  1803  
  1804  // CurvefimetaMetaPoolDeployedIterator is returned from FilterMetaPoolDeployed and is used to iterate over the raw logs and unpacked data for MetaPoolDeployed events raised by the Curvefimeta contract.
  1805  type CurvefimetaMetaPoolDeployedIterator struct {
  1806  	Event *CurvefimetaMetaPoolDeployed // Event containing the contract specifics and raw log
  1807  
  1808  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1809  	event    string              // Event name to use for unpacking event data
  1810  
  1811  	logs chan types.Log        // Log channel receiving the found contract events
  1812  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1813  	done bool                  // Whether the subscription completed delivering logs
  1814  	fail error                 // Occurred error to stop iteration
  1815  }
  1816  
  1817  // Next advances the iterator to the subsequent event, returning whether there
  1818  // are any more events found. In case of a retrieval or parsing error, false is
  1819  // returned and Error() can be queried for the exact failure.
  1820  func (it *CurvefimetaMetaPoolDeployedIterator) Next() bool {
  1821  	// If the iterator failed, stop iterating
  1822  	if it.fail != nil {
  1823  		return false
  1824  	}
  1825  	// If the iterator completed, deliver directly whatever's available
  1826  	if it.done {
  1827  		select {
  1828  		case log := <-it.logs:
  1829  			it.Event = new(CurvefimetaMetaPoolDeployed)
  1830  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1831  				it.fail = err
  1832  				return false
  1833  			}
  1834  			it.Event.Raw = log
  1835  			return true
  1836  
  1837  		default:
  1838  			return false
  1839  		}
  1840  	}
  1841  	// Iterator still in progress, wait for either a data or an error event
  1842  	select {
  1843  	case log := <-it.logs:
  1844  		it.Event = new(CurvefimetaMetaPoolDeployed)
  1845  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1846  			it.fail = err
  1847  			return false
  1848  		}
  1849  		it.Event.Raw = log
  1850  		return true
  1851  
  1852  	case err := <-it.sub.Err():
  1853  		it.done = true
  1854  		it.fail = err
  1855  		return it.Next()
  1856  	}
  1857  }
  1858  
  1859  // Error returns any retrieval or parsing error occurred during filtering.
  1860  func (it *CurvefimetaMetaPoolDeployedIterator) Error() error {
  1861  	return it.fail
  1862  }
  1863  
  1864  // Close terminates the iteration process, releasing any pending underlying
  1865  // resources.
  1866  func (it *CurvefimetaMetaPoolDeployedIterator) Close() error {
  1867  	it.sub.Unsubscribe()
  1868  	return nil
  1869  }
  1870  
  1871  // CurvefimetaMetaPoolDeployed represents a MetaPoolDeployed event raised by the Curvefimeta contract.
  1872  type CurvefimetaMetaPoolDeployed struct {
  1873  	Coin     common.Address
  1874  	BasePool common.Address
  1875  	A        *big.Int
  1876  	Fee      *big.Int
  1877  	Deployer common.Address
  1878  	Raw      types.Log // Blockchain specific contextual infos
  1879  }
  1880  
  1881  // FilterMetaPoolDeployed is a free log retrieval operation binding the contract event 0x01f31cd2abdeb4e5e10ba500f2db0f937d9e8c735ab04681925441b4ea37eda5.
  1882  //
  1883  // Solidity: event MetaPoolDeployed(address coin, address base_pool, uint256 A, uint256 fee, address deployer)
  1884  func (_Curvefimeta *CurvefimetaFilterer) FilterMetaPoolDeployed(opts *bind.FilterOpts) (*CurvefimetaMetaPoolDeployedIterator, error) {
  1885  
  1886  	logs, sub, err := _Curvefimeta.contract.FilterLogs(opts, "MetaPoolDeployed")
  1887  	if err != nil {
  1888  		return nil, err
  1889  	}
  1890  	return &CurvefimetaMetaPoolDeployedIterator{contract: _Curvefimeta.contract, event: "MetaPoolDeployed", logs: logs, sub: sub}, nil
  1891  }
  1892  
  1893  // WatchMetaPoolDeployed is a free log subscription operation binding the contract event 0x01f31cd2abdeb4e5e10ba500f2db0f937d9e8c735ab04681925441b4ea37eda5.
  1894  //
  1895  // Solidity: event MetaPoolDeployed(address coin, address base_pool, uint256 A, uint256 fee, address deployer)
  1896  func (_Curvefimeta *CurvefimetaFilterer) WatchMetaPoolDeployed(opts *bind.WatchOpts, sink chan<- *CurvefimetaMetaPoolDeployed) (event.Subscription, error) {
  1897  
  1898  	logs, sub, err := _Curvefimeta.contract.WatchLogs(opts, "MetaPoolDeployed")
  1899  	if err != nil {
  1900  		return nil, err
  1901  	}
  1902  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1903  		defer sub.Unsubscribe()
  1904  		for {
  1905  			select {
  1906  			case log := <-logs:
  1907  				// New log arrived, parse the event and forward to the user
  1908  				event := new(CurvefimetaMetaPoolDeployed)
  1909  				if err := _Curvefimeta.contract.UnpackLog(event, "MetaPoolDeployed", log); err != nil {
  1910  					return err
  1911  				}
  1912  				event.Raw = log
  1913  
  1914  				select {
  1915  				case sink <- event:
  1916  				case err := <-sub.Err():
  1917  					return err
  1918  				case <-quit:
  1919  					return nil
  1920  				}
  1921  			case err := <-sub.Err():
  1922  				return err
  1923  			case <-quit:
  1924  				return nil
  1925  			}
  1926  		}
  1927  	}), nil
  1928  }
  1929  
  1930  // ParseMetaPoolDeployed is a log parse operation binding the contract event 0x01f31cd2abdeb4e5e10ba500f2db0f937d9e8c735ab04681925441b4ea37eda5.
  1931  //
  1932  // Solidity: event MetaPoolDeployed(address coin, address base_pool, uint256 A, uint256 fee, address deployer)
  1933  func (_Curvefimeta *CurvefimetaFilterer) ParseMetaPoolDeployed(log types.Log) (*CurvefimetaMetaPoolDeployed, error) {
  1934  	event := new(CurvefimetaMetaPoolDeployed)
  1935  	if err := _Curvefimeta.contract.UnpackLog(event, "MetaPoolDeployed", log); err != nil {
  1936  		return nil, err
  1937  	}
  1938  	event.Raw = log
  1939  	return event, nil
  1940  }
  1941  
  1942  // CurvefimetaPlainPoolDeployedIterator is returned from FilterPlainPoolDeployed and is used to iterate over the raw logs and unpacked data for PlainPoolDeployed events raised by the Curvefimeta contract.
  1943  type CurvefimetaPlainPoolDeployedIterator struct {
  1944  	Event *CurvefimetaPlainPoolDeployed // Event containing the contract specifics and raw log
  1945  
  1946  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1947  	event    string              // Event name to use for unpacking event data
  1948  
  1949  	logs chan types.Log        // Log channel receiving the found contract events
  1950  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1951  	done bool                  // Whether the subscription completed delivering logs
  1952  	fail error                 // Occurred error to stop iteration
  1953  }
  1954  
  1955  // Next advances the iterator to the subsequent event, returning whether there
  1956  // are any more events found. In case of a retrieval or parsing error, false is
  1957  // returned and Error() can be queried for the exact failure.
  1958  func (it *CurvefimetaPlainPoolDeployedIterator) Next() bool {
  1959  	// If the iterator failed, stop iterating
  1960  	if it.fail != nil {
  1961  		return false
  1962  	}
  1963  	// If the iterator completed, deliver directly whatever's available
  1964  	if it.done {
  1965  		select {
  1966  		case log := <-it.logs:
  1967  			it.Event = new(CurvefimetaPlainPoolDeployed)
  1968  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1969  				it.fail = err
  1970  				return false
  1971  			}
  1972  			it.Event.Raw = log
  1973  			return true
  1974  
  1975  		default:
  1976  			return false
  1977  		}
  1978  	}
  1979  	// Iterator still in progress, wait for either a data or an error event
  1980  	select {
  1981  	case log := <-it.logs:
  1982  		it.Event = new(CurvefimetaPlainPoolDeployed)
  1983  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1984  			it.fail = err
  1985  			return false
  1986  		}
  1987  		it.Event.Raw = log
  1988  		return true
  1989  
  1990  	case err := <-it.sub.Err():
  1991  		it.done = true
  1992  		it.fail = err
  1993  		return it.Next()
  1994  	}
  1995  }
  1996  
  1997  // Error returns any retrieval or parsing error occurred during filtering.
  1998  func (it *CurvefimetaPlainPoolDeployedIterator) Error() error {
  1999  	return it.fail
  2000  }
  2001  
  2002  // Close terminates the iteration process, releasing any pending underlying
  2003  // resources.
  2004  func (it *CurvefimetaPlainPoolDeployedIterator) Close() error {
  2005  	it.sub.Unsubscribe()
  2006  	return nil
  2007  }
  2008  
  2009  // CurvefimetaPlainPoolDeployed represents a PlainPoolDeployed event raised by the Curvefimeta contract.
  2010  type CurvefimetaPlainPoolDeployed struct {
  2011  	Coins    [4]common.Address
  2012  	A        *big.Int
  2013  	Fee      *big.Int
  2014  	Deployer common.Address
  2015  	Raw      types.Log // Blockchain specific contextual infos
  2016  }
  2017  
  2018  // FilterPlainPoolDeployed is a free log retrieval operation binding the contract event 0x5b4a28c940282b5bf183df6a046b8119cf6edeb62859f75e835eb7ba834cce8d.
  2019  //
  2020  // Solidity: event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer)
  2021  func (_Curvefimeta *CurvefimetaFilterer) FilterPlainPoolDeployed(opts *bind.FilterOpts) (*CurvefimetaPlainPoolDeployedIterator, error) {
  2022  
  2023  	logs, sub, err := _Curvefimeta.contract.FilterLogs(opts, "PlainPoolDeployed")
  2024  	if err != nil {
  2025  		return nil, err
  2026  	}
  2027  	return &CurvefimetaPlainPoolDeployedIterator{contract: _Curvefimeta.contract, event: "PlainPoolDeployed", logs: logs, sub: sub}, nil
  2028  }
  2029  
  2030  // WatchPlainPoolDeployed is a free log subscription operation binding the contract event 0x5b4a28c940282b5bf183df6a046b8119cf6edeb62859f75e835eb7ba834cce8d.
  2031  //
  2032  // Solidity: event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer)
  2033  func (_Curvefimeta *CurvefimetaFilterer) WatchPlainPoolDeployed(opts *bind.WatchOpts, sink chan<- *CurvefimetaPlainPoolDeployed) (event.Subscription, error) {
  2034  
  2035  	logs, sub, err := _Curvefimeta.contract.WatchLogs(opts, "PlainPoolDeployed")
  2036  	if err != nil {
  2037  		return nil, err
  2038  	}
  2039  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2040  		defer sub.Unsubscribe()
  2041  		for {
  2042  			select {
  2043  			case log := <-logs:
  2044  				// New log arrived, parse the event and forward to the user
  2045  				event := new(CurvefimetaPlainPoolDeployed)
  2046  				if err := _Curvefimeta.contract.UnpackLog(event, "PlainPoolDeployed", log); err != nil {
  2047  					return err
  2048  				}
  2049  				event.Raw = log
  2050  
  2051  				select {
  2052  				case sink <- event:
  2053  				case err := <-sub.Err():
  2054  					return err
  2055  				case <-quit:
  2056  					return nil
  2057  				}
  2058  			case err := <-sub.Err():
  2059  				return err
  2060  			case <-quit:
  2061  				return nil
  2062  			}
  2063  		}
  2064  	}), nil
  2065  }
  2066  
  2067  // ParsePlainPoolDeployed is a log parse operation binding the contract event 0x5b4a28c940282b5bf183df6a046b8119cf6edeb62859f75e835eb7ba834cce8d.
  2068  //
  2069  // Solidity: event PlainPoolDeployed(address[4] coins, uint256 A, uint256 fee, address deployer)
  2070  func (_Curvefimeta *CurvefimetaFilterer) ParsePlainPoolDeployed(log types.Log) (*CurvefimetaPlainPoolDeployed, error) {
  2071  	event := new(CurvefimetaPlainPoolDeployed)
  2072  	if err := _Curvefimeta.contract.UnpackLog(event, "PlainPoolDeployed", log); err != nil {
  2073  		return nil, err
  2074  	}
  2075  	event.Raw = log
  2076  	return event, nil
  2077  }