github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/exchange-scrapers/curvefi/curvefi.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 curvefi
     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  // CurvefiMetaData contains all meta data concerning the Curvefi contract.
    32  var CurvefiMetaData = &bind.MetaData{
    33  	ABI: "[{\"name\":\"PoolAdded\",\"inputs\":[{\"name\":\"pool\",\"type\":\"address\",\"indexed\":true},{\"name\":\"rate_method_id\",\"type\":\"bytes\",\"indexed\":false}],\"anonymous\":false,\"type\":\"event\"},{\"name\":\"PoolRemoved\",\"inputs\":[{\"name\":\"pool\",\"type\":\"address\",\"indexed\":true}],\"anonymous\":false,\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"inputs\":[{\"name\":\"_address_provider\",\"type\":\"address\"},{\"name\":\"_gauge_controller\",\"type\":\"address\"}],\"outputs\":[]},{\"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_n_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[2]\"}],\"gas\":1521},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[8]\"}],\"gas\":12102},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_coins\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[8]\"}],\"gas\":12194},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_decimals\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":7874},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_decimals\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":7966},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_rates\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":36992},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_gauges\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[10]\"},{\"name\":\"\",\"type\":\"int128[10]\"}],\"gas\":20157},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":16583},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_underlying_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":162842},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_virtual_price_from_lp_token\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":1927},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_A\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":1045},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_parameters\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"A\",\"type\":\"uint256\"},{\"name\":\"future_A\",\"type\":\"uint256\"},{\"name\":\"fee\",\"type\":\"uint256\"},{\"name\":\"admin_fee\",\"type\":\"uint256\"},{\"name\":\"future_fee\",\"type\":\"uint256\"},{\"name\":\"future_admin_fee\",\"type\":\"uint256\"},{\"name\":\"future_owner\",\"type\":\"address\"},{\"name\":\"initial_A\",\"type\":\"uint256\"},{\"name\":\"initial_A_time\",\"type\":\"uint256\"},{\"name\":\"future_A_time\",\"type\":\"uint256\"}],\"gas\":6305},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_fees\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[2]\"}],\"gas\":1450},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_admin_balances\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[8]\"}],\"gas\":36454},{\"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\":27131},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"estimate_gas_used\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":32004},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"is_meta\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"gas\":1900},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_pool_name\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"gas\":8323},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coin_swap_count\",\"inputs\":[{\"name\":\"_coin\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":1951},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coin_swap_complement\",\"inputs\":[{\"name\":\"_coin\",\"type\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2090},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_pool_asset_type\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":2011},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_pool\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_n_coins\",\"type\":\"uint256\"},{\"name\":\"_lp_token\",\"type\":\"address\"},{\"name\":\"_rate_info\",\"type\":\"bytes32\"},{\"name\":\"_decimals\",\"type\":\"uint256\"},{\"name\":\"_underlying_decimals\",\"type\":\"uint256\"},{\"name\":\"_has_initial_A\",\"type\":\"bool\"},{\"name\":\"_is_v1\",\"type\":\"bool\"},{\"name\":\"_name\",\"type\":\"string\"}],\"outputs\":[],\"gas\":61485845},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_pool_without_underlying\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_n_coins\",\"type\":\"uint256\"},{\"name\":\"_lp_token\",\"type\":\"address\"},{\"name\":\"_rate_info\",\"type\":\"bytes32\"},{\"name\":\"_decimals\",\"type\":\"uint256\"},{\"name\":\"_use_rates\",\"type\":\"uint256\"},{\"name\":\"_has_initial_A\",\"type\":\"bool\"},{\"name\":\"_is_v1\",\"type\":\"bool\"},{\"name\":\"_name\",\"type\":\"string\"}],\"outputs\":[],\"gas\":31306062},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_metapool\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_n_coins\",\"type\":\"uint256\"},{\"name\":\"_lp_token\",\"type\":\"address\"},{\"name\":\"_decimals\",\"type\":\"uint256\"},{\"name\":\"_name\",\"type\":\"string\"}],\"outputs\":[]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"add_metapool\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_n_coins\",\"type\":\"uint256\"},{\"name\":\"_lp_token\",\"type\":\"address\"},{\"name\":\"_decimals\",\"type\":\"uint256\"},{\"name\":\"_name\",\"type\":\"string\"},{\"name\":\"_base_pool\",\"type\":\"address\"}],\"outputs\":[]},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"remove_pool\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"}],\"outputs\":[],\"gas\":779731418758},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_pool_gas_estimates\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address[5]\"},{\"name\":\"_amount\",\"type\":\"uint256[2][5]\"}],\"outputs\":[],\"gas\":390460},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_coin_gas_estimates\",\"inputs\":[{\"name\":\"_addr\",\"type\":\"address[10]\"},{\"name\":\"_amount\",\"type\":\"uint256[10]\"}],\"outputs\":[],\"gas\":392047},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_gas_estimate_contract\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_estimator\",\"type\":\"address\"}],\"outputs\":[],\"gas\":72629},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_liquidity_gauges\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_liquidity_gauges\",\"type\":\"address[10]\"}],\"outputs\":[],\"gas\":400675},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"set_pool_asset_type\",\"inputs\":[{\"name\":\"_pool\",\"type\":\"address\"},{\"name\":\"_asset_type\",\"type\":\"uint256\"}],\"outputs\":[],\"gas\":72667},{\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"batch_set_pool_asset_type\",\"inputs\":[{\"name\":\"_pools\",\"type\":\"address[32]\"},{\"name\":\"_asset_types\",\"type\":\"uint256[32]\"}],\"outputs\":[],\"gas\":1173447},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"address_provider\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2048},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"gauge_controller\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2078},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pool_list\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2217},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pool_count\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":2138},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"coin_count\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":2168},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_coin\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2307},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_pool_from_lp_token\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2443},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"get_lp_token\",\"inputs\":[{\"name\":\"arg0\",\"type\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"gas\":2473},{\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"last_updated\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"gas\":2288}]",
    34  }
    35  
    36  // CurvefiABI is the input ABI used to generate the binding from.
    37  // Deprecated: Use CurvefiMetaData.ABI instead.
    38  var CurvefiABI = CurvefiMetaData.ABI
    39  
    40  // Curvefi is an auto generated Go binding around an Ethereum contract.
    41  type Curvefi struct {
    42  	CurvefiCaller     // Read-only binding to the contract
    43  	CurvefiTransactor // Write-only binding to the contract
    44  	CurvefiFilterer   // Log filterer for contract events
    45  }
    46  
    47  // CurvefiCaller is an auto generated read-only Go binding around an Ethereum contract.
    48  type CurvefiCaller struct {
    49  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    50  }
    51  
    52  // CurvefiTransactor is an auto generated write-only Go binding around an Ethereum contract.
    53  type CurvefiTransactor struct {
    54  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    55  }
    56  
    57  // CurvefiFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    58  type CurvefiFilterer struct {
    59  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    60  }
    61  
    62  // CurvefiSession is an auto generated Go binding around an Ethereum contract,
    63  // with pre-set call and transact options.
    64  type CurvefiSession struct {
    65  	Contract     *Curvefi          // 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  // CurvefiCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    71  // with pre-set call options.
    72  type CurvefiCallerSession struct {
    73  	Contract *CurvefiCaller // Generic contract caller binding to set the session for
    74  	CallOpts bind.CallOpts  // Call options to use throughout this session
    75  }
    76  
    77  // CurvefiTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    78  // with pre-set transact options.
    79  type CurvefiTransactorSession struct {
    80  	Contract     *CurvefiTransactor // Generic contract transactor binding to set the session for
    81  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    82  }
    83  
    84  // CurvefiRaw is an auto generated low-level Go binding around an Ethereum contract.
    85  type CurvefiRaw struct {
    86  	Contract *Curvefi // Generic contract binding to access the raw methods on
    87  }
    88  
    89  // CurvefiCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    90  type CurvefiCallerRaw struct {
    91  	Contract *CurvefiCaller // Generic read-only contract binding to access the raw methods on
    92  }
    93  
    94  // CurvefiTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    95  type CurvefiTransactorRaw struct {
    96  	Contract *CurvefiTransactor // Generic write-only contract binding to access the raw methods on
    97  }
    98  
    99  // NewCurvefi creates a new instance of Curvefi, bound to a specific deployed contract.
   100  func NewCurvefi(address common.Address, backend bind.ContractBackend) (*Curvefi, error) {
   101  	contract, err := bindCurvefi(address, backend, backend, backend)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  	return &Curvefi{CurvefiCaller: CurvefiCaller{contract: contract}, CurvefiTransactor: CurvefiTransactor{contract: contract}, CurvefiFilterer: CurvefiFilterer{contract: contract}}, nil
   106  }
   107  
   108  // NewCurvefiCaller creates a new read-only instance of Curvefi, bound to a specific deployed contract.
   109  func NewCurvefiCaller(address common.Address, caller bind.ContractCaller) (*CurvefiCaller, error) {
   110  	contract, err := bindCurvefi(address, caller, nil, nil)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  	return &CurvefiCaller{contract: contract}, nil
   115  }
   116  
   117  // NewCurvefiTransactor creates a new write-only instance of Curvefi, bound to a specific deployed contract.
   118  func NewCurvefiTransactor(address common.Address, transactor bind.ContractTransactor) (*CurvefiTransactor, error) {
   119  	contract, err := bindCurvefi(address, nil, transactor, nil)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  	return &CurvefiTransactor{contract: contract}, nil
   124  }
   125  
   126  // NewCurvefiFilterer creates a new log filterer instance of Curvefi, bound to a specific deployed contract.
   127  func NewCurvefiFilterer(address common.Address, filterer bind.ContractFilterer) (*CurvefiFilterer, error) {
   128  	contract, err := bindCurvefi(address, nil, nil, filterer)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  	return &CurvefiFilterer{contract: contract}, nil
   133  }
   134  
   135  // bindCurvefi binds a generic wrapper to an already deployed contract.
   136  func bindCurvefi(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   137  	parsed, err := abi.JSON(strings.NewReader(CurvefiABI))
   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 (_Curvefi *CurvefiRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   149  	return _Curvefi.Contract.CurvefiCaller.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 (_Curvefi *CurvefiRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   155  	return _Curvefi.Contract.CurvefiTransactor.contract.Transfer(opts)
   156  }
   157  
   158  // Transact invokes the (paid) contract method with params as input values.
   159  func (_Curvefi *CurvefiRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   160  	return _Curvefi.Contract.CurvefiTransactor.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 (_Curvefi *CurvefiCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   168  	return _Curvefi.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 (_Curvefi *CurvefiTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   174  	return _Curvefi.Contract.contract.Transfer(opts)
   175  }
   176  
   177  // Transact invokes the (paid) contract method with params as input values.
   178  func (_Curvefi *CurvefiTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   179  	return _Curvefi.Contract.contract.Transact(opts, method, params...)
   180  }
   181  
   182  // AddressProvider is a free data retrieval call binding the contract method 0xce50c2e7.
   183  //
   184  // Solidity: function address_provider() view returns(address)
   185  func (_Curvefi *CurvefiCaller) AddressProvider(opts *bind.CallOpts) (common.Address, error) {
   186  	var out []interface{}
   187  	err := _Curvefi.contract.Call(opts, &out, "address_provider")
   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  // AddressProvider is a free data retrieval call binding the contract method 0xce50c2e7.
   200  //
   201  // Solidity: function address_provider() view returns(address)
   202  func (_Curvefi *CurvefiSession) AddressProvider() (common.Address, error) {
   203  	return _Curvefi.Contract.AddressProvider(&_Curvefi.CallOpts)
   204  }
   205  
   206  // AddressProvider is a free data retrieval call binding the contract method 0xce50c2e7.
   207  //
   208  // Solidity: function address_provider() view returns(address)
   209  func (_Curvefi *CurvefiCallerSession) AddressProvider() (common.Address, error) {
   210  	return _Curvefi.Contract.AddressProvider(&_Curvefi.CallOpts)
   211  }
   212  
   213  // CoinCount is a free data retrieval call binding the contract method 0x5075770f.
   214  //
   215  // Solidity: function coin_count() view returns(uint256)
   216  func (_Curvefi *CurvefiCaller) CoinCount(opts *bind.CallOpts) (*big.Int, error) {
   217  	var out []interface{}
   218  	err := _Curvefi.contract.Call(opts, &out, "coin_count")
   219  
   220  	if err != nil {
   221  		return *new(*big.Int), err
   222  	}
   223  
   224  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   225  
   226  	return out0, err
   227  
   228  }
   229  
   230  // CoinCount is a free data retrieval call binding the contract method 0x5075770f.
   231  //
   232  // Solidity: function coin_count() view returns(uint256)
   233  func (_Curvefi *CurvefiSession) CoinCount() (*big.Int, error) {
   234  	return _Curvefi.Contract.CoinCount(&_Curvefi.CallOpts)
   235  }
   236  
   237  // CoinCount is a free data retrieval call binding the contract method 0x5075770f.
   238  //
   239  // Solidity: function coin_count() view returns(uint256)
   240  func (_Curvefi *CurvefiCallerSession) CoinCount() (*big.Int, error) {
   241  	return _Curvefi.Contract.CoinCount(&_Curvefi.CallOpts)
   242  }
   243  
   244  // EstimateGasUsed is a free data retrieval call binding the contract method 0xb0bb365b.
   245  //
   246  // Solidity: function estimate_gas_used(address _pool, address _from, address _to) view returns(uint256)
   247  func (_Curvefi *CurvefiCaller) EstimateGasUsed(opts *bind.CallOpts, _pool common.Address, _from common.Address, _to common.Address) (*big.Int, error) {
   248  	var out []interface{}
   249  	err := _Curvefi.contract.Call(opts, &out, "estimate_gas_used", _pool, _from, _to)
   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  // EstimateGasUsed is a free data retrieval call binding the contract method 0xb0bb365b.
   262  //
   263  // Solidity: function estimate_gas_used(address _pool, address _from, address _to) view returns(uint256)
   264  func (_Curvefi *CurvefiSession) EstimateGasUsed(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, error) {
   265  	return _Curvefi.Contract.EstimateGasUsed(&_Curvefi.CallOpts, _pool, _from, _to)
   266  }
   267  
   268  // EstimateGasUsed is a free data retrieval call binding the contract method 0xb0bb365b.
   269  //
   270  // Solidity: function estimate_gas_used(address _pool, address _from, address _to) view returns(uint256)
   271  func (_Curvefi *CurvefiCallerSession) EstimateGasUsed(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, error) {
   272  	return _Curvefi.Contract.EstimateGasUsed(&_Curvefi.CallOpts, _pool, _from, _to)
   273  }
   274  
   275  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   276  //
   277  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   278  func (_Curvefi *CurvefiCaller) FindPoolForCoins(opts *bind.CallOpts, _from common.Address, _to common.Address) (common.Address, error) {
   279  	var out []interface{}
   280  	err := _Curvefi.contract.Call(opts, &out, "find_pool_for_coins", _from, _to)
   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  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   293  //
   294  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   295  func (_Curvefi *CurvefiSession) FindPoolForCoins(_from common.Address, _to common.Address) (common.Address, error) {
   296  	return _Curvefi.Contract.FindPoolForCoins(&_Curvefi.CallOpts, _from, _to)
   297  }
   298  
   299  // FindPoolForCoins is a free data retrieval call binding the contract method 0xa87df06c.
   300  //
   301  // Solidity: function find_pool_for_coins(address _from, address _to) view returns(address)
   302  func (_Curvefi *CurvefiCallerSession) FindPoolForCoins(_from common.Address, _to common.Address) (common.Address, error) {
   303  	return _Curvefi.Contract.FindPoolForCoins(&_Curvefi.CallOpts, _from, _to)
   304  }
   305  
   306  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   307  //
   308  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   309  func (_Curvefi *CurvefiCaller) FindPoolForCoins0(opts *bind.CallOpts, _from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   310  	var out []interface{}
   311  	err := _Curvefi.contract.Call(opts, &out, "find_pool_for_coins0", _from, _to, i)
   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  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   324  //
   325  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   326  func (_Curvefi *CurvefiSession) FindPoolForCoins0(_from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   327  	return _Curvefi.Contract.FindPoolForCoins0(&_Curvefi.CallOpts, _from, _to, i)
   328  }
   329  
   330  // FindPoolForCoins0 is a free data retrieval call binding the contract method 0x6982eb0b.
   331  //
   332  // Solidity: function find_pool_for_coins(address _from, address _to, uint256 i) view returns(address)
   333  func (_Curvefi *CurvefiCallerSession) FindPoolForCoins0(_from common.Address, _to common.Address, i *big.Int) (common.Address, error) {
   334  	return _Curvefi.Contract.FindPoolForCoins0(&_Curvefi.CallOpts, _from, _to, i)
   335  }
   336  
   337  // GaugeController is a free data retrieval call binding the contract method 0xd8b9a018.
   338  //
   339  // Solidity: function gauge_controller() view returns(address)
   340  func (_Curvefi *CurvefiCaller) GaugeController(opts *bind.CallOpts) (common.Address, error) {
   341  	var out []interface{}
   342  	err := _Curvefi.contract.Call(opts, &out, "gauge_controller")
   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  // GaugeController is a free data retrieval call binding the contract method 0xd8b9a018.
   355  //
   356  // Solidity: function gauge_controller() view returns(address)
   357  func (_Curvefi *CurvefiSession) GaugeController() (common.Address, error) {
   358  	return _Curvefi.Contract.GaugeController(&_Curvefi.CallOpts)
   359  }
   360  
   361  // GaugeController is a free data retrieval call binding the contract method 0xd8b9a018.
   362  //
   363  // Solidity: function gauge_controller() view returns(address)
   364  func (_Curvefi *CurvefiCallerSession) GaugeController() (common.Address, error) {
   365  	return _Curvefi.Contract.GaugeController(&_Curvefi.CallOpts)
   366  }
   367  
   368  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   369  //
   370  // Solidity: function get_A(address _pool) view returns(uint256)
   371  func (_Curvefi *CurvefiCaller) GetA(opts *bind.CallOpts, _pool common.Address) (*big.Int, error) {
   372  	var out []interface{}
   373  	err := _Curvefi.contract.Call(opts, &out, "get_A", _pool)
   374  
   375  	if err != nil {
   376  		return *new(*big.Int), err
   377  	}
   378  
   379  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   380  
   381  	return out0, err
   382  
   383  }
   384  
   385  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   386  //
   387  // Solidity: function get_A(address _pool) view returns(uint256)
   388  func (_Curvefi *CurvefiSession) GetA(_pool common.Address) (*big.Int, error) {
   389  	return _Curvefi.Contract.GetA(&_Curvefi.CallOpts, _pool)
   390  }
   391  
   392  // GetA is a free data retrieval call binding the contract method 0x55b30b19.
   393  //
   394  // Solidity: function get_A(address _pool) view returns(uint256)
   395  func (_Curvefi *CurvefiCallerSession) GetA(_pool common.Address) (*big.Int, error) {
   396  	return _Curvefi.Contract.GetA(&_Curvefi.CallOpts, _pool)
   397  }
   398  
   399  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   400  //
   401  // Solidity: function get_admin_balances(address _pool) view returns(uint256[8])
   402  func (_Curvefi *CurvefiCaller) GetAdminBalances(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   403  	var out []interface{}
   404  	err := _Curvefi.contract.Call(opts, &out, "get_admin_balances", _pool)
   405  
   406  	if err != nil {
   407  		return *new([8]*big.Int), err
   408  	}
   409  
   410  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   411  
   412  	return out0, err
   413  
   414  }
   415  
   416  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   417  //
   418  // Solidity: function get_admin_balances(address _pool) view returns(uint256[8])
   419  func (_Curvefi *CurvefiSession) GetAdminBalances(_pool common.Address) ([8]*big.Int, error) {
   420  	return _Curvefi.Contract.GetAdminBalances(&_Curvefi.CallOpts, _pool)
   421  }
   422  
   423  // GetAdminBalances is a free data retrieval call binding the contract method 0xc11e45b8.
   424  //
   425  // Solidity: function get_admin_balances(address _pool) view returns(uint256[8])
   426  func (_Curvefi *CurvefiCallerSession) GetAdminBalances(_pool common.Address) ([8]*big.Int, error) {
   427  	return _Curvefi.Contract.GetAdminBalances(&_Curvefi.CallOpts, _pool)
   428  }
   429  
   430  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   431  //
   432  // Solidity: function get_balances(address _pool) view returns(uint256[8])
   433  func (_Curvefi *CurvefiCaller) GetBalances(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   434  	var out []interface{}
   435  	err := _Curvefi.contract.Call(opts, &out, "get_balances", _pool)
   436  
   437  	if err != nil {
   438  		return *new([8]*big.Int), err
   439  	}
   440  
   441  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   442  
   443  	return out0, err
   444  
   445  }
   446  
   447  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   448  //
   449  // Solidity: function get_balances(address _pool) view returns(uint256[8])
   450  func (_Curvefi *CurvefiSession) GetBalances(_pool common.Address) ([8]*big.Int, error) {
   451  	return _Curvefi.Contract.GetBalances(&_Curvefi.CallOpts, _pool)
   452  }
   453  
   454  // GetBalances is a free data retrieval call binding the contract method 0x92e3cc2d.
   455  //
   456  // Solidity: function get_balances(address _pool) view returns(uint256[8])
   457  func (_Curvefi *CurvefiCallerSession) GetBalances(_pool common.Address) ([8]*big.Int, error) {
   458  	return _Curvefi.Contract.GetBalances(&_Curvefi.CallOpts, _pool)
   459  }
   460  
   461  // GetCoin is a free data retrieval call binding the contract method 0x45f0db24.
   462  //
   463  // Solidity: function get_coin(uint256 arg0) view returns(address)
   464  func (_Curvefi *CurvefiCaller) GetCoin(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   465  	var out []interface{}
   466  	err := _Curvefi.contract.Call(opts, &out, "get_coin", arg0)
   467  
   468  	if err != nil {
   469  		return *new(common.Address), err
   470  	}
   471  
   472  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   473  
   474  	return out0, err
   475  
   476  }
   477  
   478  // GetCoin is a free data retrieval call binding the contract method 0x45f0db24.
   479  //
   480  // Solidity: function get_coin(uint256 arg0) view returns(address)
   481  func (_Curvefi *CurvefiSession) GetCoin(arg0 *big.Int) (common.Address, error) {
   482  	return _Curvefi.Contract.GetCoin(&_Curvefi.CallOpts, arg0)
   483  }
   484  
   485  // GetCoin is a free data retrieval call binding the contract method 0x45f0db24.
   486  //
   487  // Solidity: function get_coin(uint256 arg0) view returns(address)
   488  func (_Curvefi *CurvefiCallerSession) GetCoin(arg0 *big.Int) (common.Address, error) {
   489  	return _Curvefi.Contract.GetCoin(&_Curvefi.CallOpts, arg0)
   490  }
   491  
   492  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   493  //
   494  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   495  func (_Curvefi *CurvefiCaller) GetCoinIndices(opts *bind.CallOpts, _pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   496  	var out []interface{}
   497  	err := _Curvefi.contract.Call(opts, &out, "get_coin_indices", _pool, _from, _to)
   498  
   499  	if err != nil {
   500  		return *new(*big.Int), *new(*big.Int), *new(bool), err
   501  	}
   502  
   503  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   504  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   505  	out2 := *abi.ConvertType(out[2], new(bool)).(*bool)
   506  
   507  	return out0, out1, out2, err
   508  
   509  }
   510  
   511  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   512  //
   513  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   514  func (_Curvefi *CurvefiSession) GetCoinIndices(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   515  	return _Curvefi.Contract.GetCoinIndices(&_Curvefi.CallOpts, _pool, _from, _to)
   516  }
   517  
   518  // GetCoinIndices is a free data retrieval call binding the contract method 0xeb85226d.
   519  //
   520  // Solidity: function get_coin_indices(address _pool, address _from, address _to) view returns(int128, int128, bool)
   521  func (_Curvefi *CurvefiCallerSession) GetCoinIndices(_pool common.Address, _from common.Address, _to common.Address) (*big.Int, *big.Int, bool, error) {
   522  	return _Curvefi.Contract.GetCoinIndices(&_Curvefi.CallOpts, _pool, _from, _to)
   523  }
   524  
   525  // GetCoinSwapComplement is a free data retrieval call binding the contract method 0x5d211982.
   526  //
   527  // Solidity: function get_coin_swap_complement(address _coin, uint256 _index) view returns(address)
   528  func (_Curvefi *CurvefiCaller) GetCoinSwapComplement(opts *bind.CallOpts, _coin common.Address, _index *big.Int) (common.Address, error) {
   529  	var out []interface{}
   530  	err := _Curvefi.contract.Call(opts, &out, "get_coin_swap_complement", _coin, _index)
   531  
   532  	if err != nil {
   533  		return *new(common.Address), err
   534  	}
   535  
   536  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   537  
   538  	return out0, err
   539  
   540  }
   541  
   542  // GetCoinSwapComplement is a free data retrieval call binding the contract method 0x5d211982.
   543  //
   544  // Solidity: function get_coin_swap_complement(address _coin, uint256 _index) view returns(address)
   545  func (_Curvefi *CurvefiSession) GetCoinSwapComplement(_coin common.Address, _index *big.Int) (common.Address, error) {
   546  	return _Curvefi.Contract.GetCoinSwapComplement(&_Curvefi.CallOpts, _coin, _index)
   547  }
   548  
   549  // GetCoinSwapComplement is a free data retrieval call binding the contract method 0x5d211982.
   550  //
   551  // Solidity: function get_coin_swap_complement(address _coin, uint256 _index) view returns(address)
   552  func (_Curvefi *CurvefiCallerSession) GetCoinSwapComplement(_coin common.Address, _index *big.Int) (common.Address, error) {
   553  	return _Curvefi.Contract.GetCoinSwapComplement(&_Curvefi.CallOpts, _coin, _index)
   554  }
   555  
   556  // GetCoinSwapCount is a free data retrieval call binding the contract method 0x98aede16.
   557  //
   558  // Solidity: function get_coin_swap_count(address _coin) view returns(uint256)
   559  func (_Curvefi *CurvefiCaller) GetCoinSwapCount(opts *bind.CallOpts, _coin common.Address) (*big.Int, error) {
   560  	var out []interface{}
   561  	err := _Curvefi.contract.Call(opts, &out, "get_coin_swap_count", _coin)
   562  
   563  	if err != nil {
   564  		return *new(*big.Int), err
   565  	}
   566  
   567  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   568  
   569  	return out0, err
   570  
   571  }
   572  
   573  // GetCoinSwapCount is a free data retrieval call binding the contract method 0x98aede16.
   574  //
   575  // Solidity: function get_coin_swap_count(address _coin) view returns(uint256)
   576  func (_Curvefi *CurvefiSession) GetCoinSwapCount(_coin common.Address) (*big.Int, error) {
   577  	return _Curvefi.Contract.GetCoinSwapCount(&_Curvefi.CallOpts, _coin)
   578  }
   579  
   580  // GetCoinSwapCount is a free data retrieval call binding the contract method 0x98aede16.
   581  //
   582  // Solidity: function get_coin_swap_count(address _coin) view returns(uint256)
   583  func (_Curvefi *CurvefiCallerSession) GetCoinSwapCount(_coin common.Address) (*big.Int, error) {
   584  	return _Curvefi.Contract.GetCoinSwapCount(&_Curvefi.CallOpts, _coin)
   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[8])
   590  func (_Curvefi *CurvefiCaller) GetCoins(opts *bind.CallOpts, _pool common.Address) ([8]common.Address, error) {
   591  	var out []interface{}
   592  	err := _Curvefi.contract.Call(opts, &out, "get_coins", _pool)
   593  
   594  	if err != nil {
   595  		return *new([8]common.Address), err
   596  	}
   597  
   598  	out0 := *abi.ConvertType(out[0], new([8]common.Address)).(*[8]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[8])
   607  func (_Curvefi *CurvefiSession) GetCoins(_pool common.Address) ([8]common.Address, error) {
   608  	return _Curvefi.Contract.GetCoins(&_Curvefi.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[8])
   614  func (_Curvefi *CurvefiCallerSession) GetCoins(_pool common.Address) ([8]common.Address, error) {
   615  	return _Curvefi.Contract.GetCoins(&_Curvefi.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[8])
   621  func (_Curvefi *CurvefiCaller) GetDecimals(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   622  	var out []interface{}
   623  	err := _Curvefi.contract.Call(opts, &out, "get_decimals", _pool)
   624  
   625  	if err != nil {
   626  		return *new([8]*big.Int), err
   627  	}
   628  
   629  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*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[8])
   638  func (_Curvefi *CurvefiSession) GetDecimals(_pool common.Address) ([8]*big.Int, error) {
   639  	return _Curvefi.Contract.GetDecimals(&_Curvefi.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[8])
   645  func (_Curvefi *CurvefiCallerSession) GetDecimals(_pool common.Address) ([8]*big.Int, error) {
   646  	return _Curvefi.Contract.GetDecimals(&_Curvefi.CallOpts, _pool)
   647  }
   648  
   649  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   650  //
   651  // Solidity: function get_fees(address _pool) view returns(uint256[2])
   652  func (_Curvefi *CurvefiCaller) GetFees(opts *bind.CallOpts, _pool common.Address) ([2]*big.Int, error) {
   653  	var out []interface{}
   654  	err := _Curvefi.contract.Call(opts, &out, "get_fees", _pool)
   655  
   656  	if err != nil {
   657  		return *new([2]*big.Int), err
   658  	}
   659  
   660  	out0 := *abi.ConvertType(out[0], new([2]*big.Int)).(*[2]*big.Int)
   661  
   662  	return out0, err
   663  
   664  }
   665  
   666  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   667  //
   668  // Solidity: function get_fees(address _pool) view returns(uint256[2])
   669  func (_Curvefi *CurvefiSession) GetFees(_pool common.Address) ([2]*big.Int, error) {
   670  	return _Curvefi.Contract.GetFees(&_Curvefi.CallOpts, _pool)
   671  }
   672  
   673  // GetFees is a free data retrieval call binding the contract method 0x7cdb72b0.
   674  //
   675  // Solidity: function get_fees(address _pool) view returns(uint256[2])
   676  func (_Curvefi *CurvefiCallerSession) GetFees(_pool common.Address) ([2]*big.Int, error) {
   677  	return _Curvefi.Contract.GetFees(&_Curvefi.CallOpts, _pool)
   678  }
   679  
   680  // GetGauges is a free data retrieval call binding the contract method 0x56059ffb.
   681  //
   682  // Solidity: function get_gauges(address _pool) view returns(address[10], int128[10])
   683  func (_Curvefi *CurvefiCaller) GetGauges(opts *bind.CallOpts, _pool common.Address) ([10]common.Address, [10]*big.Int, error) {
   684  	var out []interface{}
   685  	err := _Curvefi.contract.Call(opts, &out, "get_gauges", _pool)
   686  
   687  	if err != nil {
   688  		return *new([10]common.Address), *new([10]*big.Int), err
   689  	}
   690  
   691  	out0 := *abi.ConvertType(out[0], new([10]common.Address)).(*[10]common.Address)
   692  	out1 := *abi.ConvertType(out[1], new([10]*big.Int)).(*[10]*big.Int)
   693  
   694  	return out0, out1, err
   695  
   696  }
   697  
   698  // GetGauges is a free data retrieval call binding the contract method 0x56059ffb.
   699  //
   700  // Solidity: function get_gauges(address _pool) view returns(address[10], int128[10])
   701  func (_Curvefi *CurvefiSession) GetGauges(_pool common.Address) ([10]common.Address, [10]*big.Int, error) {
   702  	return _Curvefi.Contract.GetGauges(&_Curvefi.CallOpts, _pool)
   703  }
   704  
   705  // GetGauges is a free data retrieval call binding the contract method 0x56059ffb.
   706  //
   707  // Solidity: function get_gauges(address _pool) view returns(address[10], int128[10])
   708  func (_Curvefi *CurvefiCallerSession) GetGauges(_pool common.Address) ([10]common.Address, [10]*big.Int, error) {
   709  	return _Curvefi.Contract.GetGauges(&_Curvefi.CallOpts, _pool)
   710  }
   711  
   712  // GetLpToken is a free data retrieval call binding the contract method 0x37951049.
   713  //
   714  // Solidity: function get_lp_token(address arg0) view returns(address)
   715  func (_Curvefi *CurvefiCaller) GetLpToken(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
   716  	var out []interface{}
   717  	err := _Curvefi.contract.Call(opts, &out, "get_lp_token", arg0)
   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  // GetLpToken is a free data retrieval call binding the contract method 0x37951049.
   730  //
   731  // Solidity: function get_lp_token(address arg0) view returns(address)
   732  func (_Curvefi *CurvefiSession) GetLpToken(arg0 common.Address) (common.Address, error) {
   733  	return _Curvefi.Contract.GetLpToken(&_Curvefi.CallOpts, arg0)
   734  }
   735  
   736  // GetLpToken is a free data retrieval call binding the contract method 0x37951049.
   737  //
   738  // Solidity: function get_lp_token(address arg0) view returns(address)
   739  func (_Curvefi *CurvefiCallerSession) GetLpToken(arg0 common.Address) (common.Address, error) {
   740  	return _Curvefi.Contract.GetLpToken(&_Curvefi.CallOpts, arg0)
   741  }
   742  
   743  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   744  //
   745  // Solidity: function get_n_coins(address _pool) view returns(uint256[2])
   746  func (_Curvefi *CurvefiCaller) GetNCoins(opts *bind.CallOpts, _pool common.Address) ([2]*big.Int, error) {
   747  	var out []interface{}
   748  	err := _Curvefi.contract.Call(opts, &out, "get_n_coins", _pool)
   749  
   750  	if err != nil {
   751  		return *new([2]*big.Int), err
   752  	}
   753  
   754  	out0 := *abi.ConvertType(out[0], new([2]*big.Int)).(*[2]*big.Int)
   755  
   756  	return out0, err
   757  
   758  }
   759  
   760  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   761  //
   762  // Solidity: function get_n_coins(address _pool) view returns(uint256[2])
   763  func (_Curvefi *CurvefiSession) GetNCoins(_pool common.Address) ([2]*big.Int, error) {
   764  	return _Curvefi.Contract.GetNCoins(&_Curvefi.CallOpts, _pool)
   765  }
   766  
   767  // GetNCoins is a free data retrieval call binding the contract method 0x940494f1.
   768  //
   769  // Solidity: function get_n_coins(address _pool) view returns(uint256[2])
   770  func (_Curvefi *CurvefiCallerSession) GetNCoins(_pool common.Address) ([2]*big.Int, error) {
   771  	return _Curvefi.Contract.GetNCoins(&_Curvefi.CallOpts, _pool)
   772  }
   773  
   774  // GetParameters is a free data retrieval call binding the contract method 0x1f80a957.
   775  //
   776  // Solidity: function get_parameters(address _pool) view returns(uint256 A, uint256 future_A, uint256 fee, uint256 admin_fee, uint256 future_fee, uint256 future_admin_fee, address future_owner, uint256 initial_A, uint256 initial_A_time, uint256 future_A_time)
   777  func (_Curvefi *CurvefiCaller) GetParameters(opts *bind.CallOpts, _pool common.Address) (struct {
   778  	A              *big.Int
   779  	FutureA        *big.Int
   780  	Fee            *big.Int
   781  	AdminFee       *big.Int
   782  	FutureFee      *big.Int
   783  	FutureAdminFee *big.Int
   784  	FutureOwner    common.Address
   785  	InitialA       *big.Int
   786  	InitialATime   *big.Int
   787  	FutureATime    *big.Int
   788  }, error) {
   789  	var out []interface{}
   790  	err := _Curvefi.contract.Call(opts, &out, "get_parameters", _pool)
   791  
   792  	outstruct := new(struct {
   793  		A              *big.Int
   794  		FutureA        *big.Int
   795  		Fee            *big.Int
   796  		AdminFee       *big.Int
   797  		FutureFee      *big.Int
   798  		FutureAdminFee *big.Int
   799  		FutureOwner    common.Address
   800  		InitialA       *big.Int
   801  		InitialATime   *big.Int
   802  		FutureATime    *big.Int
   803  	})
   804  	if err != nil {
   805  		return *outstruct, err
   806  	}
   807  
   808  	outstruct.A = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   809  	outstruct.FutureA = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   810  	outstruct.Fee = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   811  	outstruct.AdminFee = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   812  	outstruct.FutureFee = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   813  	outstruct.FutureAdminFee = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   814  	outstruct.FutureOwner = *abi.ConvertType(out[6], new(common.Address)).(*common.Address)
   815  	outstruct.InitialA = *abi.ConvertType(out[7], new(*big.Int)).(**big.Int)
   816  	outstruct.InitialATime = *abi.ConvertType(out[8], new(*big.Int)).(**big.Int)
   817  	outstruct.FutureATime = *abi.ConvertType(out[9], new(*big.Int)).(**big.Int)
   818  
   819  	return *outstruct, err
   820  
   821  }
   822  
   823  // GetParameters is a free data retrieval call binding the contract method 0x1f80a957.
   824  //
   825  // Solidity: function get_parameters(address _pool) view returns(uint256 A, uint256 future_A, uint256 fee, uint256 admin_fee, uint256 future_fee, uint256 future_admin_fee, address future_owner, uint256 initial_A, uint256 initial_A_time, uint256 future_A_time)
   826  func (_Curvefi *CurvefiSession) GetParameters(_pool common.Address) (struct {
   827  	A              *big.Int
   828  	FutureA        *big.Int
   829  	Fee            *big.Int
   830  	AdminFee       *big.Int
   831  	FutureFee      *big.Int
   832  	FutureAdminFee *big.Int
   833  	FutureOwner    common.Address
   834  	InitialA       *big.Int
   835  	InitialATime   *big.Int
   836  	FutureATime    *big.Int
   837  }, error) {
   838  	return _Curvefi.Contract.GetParameters(&_Curvefi.CallOpts, _pool)
   839  }
   840  
   841  // GetParameters is a free data retrieval call binding the contract method 0x1f80a957.
   842  //
   843  // Solidity: function get_parameters(address _pool) view returns(uint256 A, uint256 future_A, uint256 fee, uint256 admin_fee, uint256 future_fee, uint256 future_admin_fee, address future_owner, uint256 initial_A, uint256 initial_A_time, uint256 future_A_time)
   844  func (_Curvefi *CurvefiCallerSession) GetParameters(_pool common.Address) (struct {
   845  	A              *big.Int
   846  	FutureA        *big.Int
   847  	Fee            *big.Int
   848  	AdminFee       *big.Int
   849  	FutureFee      *big.Int
   850  	FutureAdminFee *big.Int
   851  	FutureOwner    common.Address
   852  	InitialA       *big.Int
   853  	InitialATime   *big.Int
   854  	FutureATime    *big.Int
   855  }, error) {
   856  	return _Curvefi.Contract.GetParameters(&_Curvefi.CallOpts, _pool)
   857  }
   858  
   859  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   860  //
   861  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   862  func (_Curvefi *CurvefiCaller) GetPoolAssetType(opts *bind.CallOpts, _pool common.Address) (*big.Int, error) {
   863  	var out []interface{}
   864  	err := _Curvefi.contract.Call(opts, &out, "get_pool_asset_type", _pool)
   865  
   866  	if err != nil {
   867  		return *new(*big.Int), err
   868  	}
   869  
   870  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   871  
   872  	return out0, err
   873  
   874  }
   875  
   876  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   877  //
   878  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   879  func (_Curvefi *CurvefiSession) GetPoolAssetType(_pool common.Address) (*big.Int, error) {
   880  	return _Curvefi.Contract.GetPoolAssetType(&_Curvefi.CallOpts, _pool)
   881  }
   882  
   883  // GetPoolAssetType is a free data retrieval call binding the contract method 0x66d3966c.
   884  //
   885  // Solidity: function get_pool_asset_type(address _pool) view returns(uint256)
   886  func (_Curvefi *CurvefiCallerSession) GetPoolAssetType(_pool common.Address) (*big.Int, error) {
   887  	return _Curvefi.Contract.GetPoolAssetType(&_Curvefi.CallOpts, _pool)
   888  }
   889  
   890  // GetPoolFromLpToken is a free data retrieval call binding the contract method 0xbdf475c3.
   891  //
   892  // Solidity: function get_pool_from_lp_token(address arg0) view returns(address)
   893  func (_Curvefi *CurvefiCaller) GetPoolFromLpToken(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
   894  	var out []interface{}
   895  	err := _Curvefi.contract.Call(opts, &out, "get_pool_from_lp_token", arg0)
   896  
   897  	if err != nil {
   898  		return *new(common.Address), err
   899  	}
   900  
   901  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   902  
   903  	return out0, err
   904  
   905  }
   906  
   907  // GetPoolFromLpToken is a free data retrieval call binding the contract method 0xbdf475c3.
   908  //
   909  // Solidity: function get_pool_from_lp_token(address arg0) view returns(address)
   910  func (_Curvefi *CurvefiSession) GetPoolFromLpToken(arg0 common.Address) (common.Address, error) {
   911  	return _Curvefi.Contract.GetPoolFromLpToken(&_Curvefi.CallOpts, arg0)
   912  }
   913  
   914  // GetPoolFromLpToken is a free data retrieval call binding the contract method 0xbdf475c3.
   915  //
   916  // Solidity: function get_pool_from_lp_token(address arg0) view returns(address)
   917  func (_Curvefi *CurvefiCallerSession) GetPoolFromLpToken(arg0 common.Address) (common.Address, error) {
   918  	return _Curvefi.Contract.GetPoolFromLpToken(&_Curvefi.CallOpts, arg0)
   919  }
   920  
   921  // GetPoolName is a free data retrieval call binding the contract method 0x5c911741.
   922  //
   923  // Solidity: function get_pool_name(address _pool) view returns(string)
   924  func (_Curvefi *CurvefiCaller) GetPoolName(opts *bind.CallOpts, _pool common.Address) (string, error) {
   925  	var out []interface{}
   926  	err := _Curvefi.contract.Call(opts, &out, "get_pool_name", _pool)
   927  
   928  	if err != nil {
   929  		return *new(string), err
   930  	}
   931  
   932  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   933  
   934  	return out0, err
   935  
   936  }
   937  
   938  // GetPoolName is a free data retrieval call binding the contract method 0x5c911741.
   939  //
   940  // Solidity: function get_pool_name(address _pool) view returns(string)
   941  func (_Curvefi *CurvefiSession) GetPoolName(_pool common.Address) (string, error) {
   942  	return _Curvefi.Contract.GetPoolName(&_Curvefi.CallOpts, _pool)
   943  }
   944  
   945  // GetPoolName is a free data retrieval call binding the contract method 0x5c911741.
   946  //
   947  // Solidity: function get_pool_name(address _pool) view returns(string)
   948  func (_Curvefi *CurvefiCallerSession) GetPoolName(_pool common.Address) (string, error) {
   949  	return _Curvefi.Contract.GetPoolName(&_Curvefi.CallOpts, _pool)
   950  }
   951  
   952  // GetRates is a free data retrieval call binding the contract method 0xce99e45a.
   953  //
   954  // Solidity: function get_rates(address _pool) view returns(uint256[8])
   955  func (_Curvefi *CurvefiCaller) GetRates(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   956  	var out []interface{}
   957  	err := _Curvefi.contract.Call(opts, &out, "get_rates", _pool)
   958  
   959  	if err != nil {
   960  		return *new([8]*big.Int), err
   961  	}
   962  
   963  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   964  
   965  	return out0, err
   966  
   967  }
   968  
   969  // GetRates is a free data retrieval call binding the contract method 0xce99e45a.
   970  //
   971  // Solidity: function get_rates(address _pool) view returns(uint256[8])
   972  func (_Curvefi *CurvefiSession) GetRates(_pool common.Address) ([8]*big.Int, error) {
   973  	return _Curvefi.Contract.GetRates(&_Curvefi.CallOpts, _pool)
   974  }
   975  
   976  // GetRates is a free data retrieval call binding the contract method 0xce99e45a.
   977  //
   978  // Solidity: function get_rates(address _pool) view returns(uint256[8])
   979  func (_Curvefi *CurvefiCallerSession) GetRates(_pool common.Address) ([8]*big.Int, error) {
   980  	return _Curvefi.Contract.GetRates(&_Curvefi.CallOpts, _pool)
   981  }
   982  
   983  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
   984  //
   985  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
   986  func (_Curvefi *CurvefiCaller) GetUnderlyingBalances(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
   987  	var out []interface{}
   988  	err := _Curvefi.contract.Call(opts, &out, "get_underlying_balances", _pool)
   989  
   990  	if err != nil {
   991  		return *new([8]*big.Int), err
   992  	}
   993  
   994  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
   995  
   996  	return out0, err
   997  
   998  }
   999  
  1000  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
  1001  //
  1002  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
  1003  func (_Curvefi *CurvefiSession) GetUnderlyingBalances(_pool common.Address) ([8]*big.Int, error) {
  1004  	return _Curvefi.Contract.GetUnderlyingBalances(&_Curvefi.CallOpts, _pool)
  1005  }
  1006  
  1007  // GetUnderlyingBalances is a free data retrieval call binding the contract method 0x59f4f351.
  1008  //
  1009  // Solidity: function get_underlying_balances(address _pool) view returns(uint256[8])
  1010  func (_Curvefi *CurvefiCallerSession) GetUnderlyingBalances(_pool common.Address) ([8]*big.Int, error) {
  1011  	return _Curvefi.Contract.GetUnderlyingBalances(&_Curvefi.CallOpts, _pool)
  1012  }
  1013  
  1014  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
  1015  //
  1016  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
  1017  func (_Curvefi *CurvefiCaller) GetUnderlyingCoins(opts *bind.CallOpts, _pool common.Address) ([8]common.Address, error) {
  1018  	var out []interface{}
  1019  	err := _Curvefi.contract.Call(opts, &out, "get_underlying_coins", _pool)
  1020  
  1021  	if err != nil {
  1022  		return *new([8]common.Address), err
  1023  	}
  1024  
  1025  	out0 := *abi.ConvertType(out[0], new([8]common.Address)).(*[8]common.Address)
  1026  
  1027  	return out0, err
  1028  
  1029  }
  1030  
  1031  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
  1032  //
  1033  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
  1034  func (_Curvefi *CurvefiSession) GetUnderlyingCoins(_pool common.Address) ([8]common.Address, error) {
  1035  	return _Curvefi.Contract.GetUnderlyingCoins(&_Curvefi.CallOpts, _pool)
  1036  }
  1037  
  1038  // GetUnderlyingCoins is a free data retrieval call binding the contract method 0xa77576ef.
  1039  //
  1040  // Solidity: function get_underlying_coins(address _pool) view returns(address[8])
  1041  func (_Curvefi *CurvefiCallerSession) GetUnderlyingCoins(_pool common.Address) ([8]common.Address, error) {
  1042  	return _Curvefi.Contract.GetUnderlyingCoins(&_Curvefi.CallOpts, _pool)
  1043  }
  1044  
  1045  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
  1046  //
  1047  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
  1048  func (_Curvefi *CurvefiCaller) GetUnderlyingDecimals(opts *bind.CallOpts, _pool common.Address) ([8]*big.Int, error) {
  1049  	var out []interface{}
  1050  	err := _Curvefi.contract.Call(opts, &out, "get_underlying_decimals", _pool)
  1051  
  1052  	if err != nil {
  1053  		return *new([8]*big.Int), err
  1054  	}
  1055  
  1056  	out0 := *abi.ConvertType(out[0], new([8]*big.Int)).(*[8]*big.Int)
  1057  
  1058  	return out0, err
  1059  
  1060  }
  1061  
  1062  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
  1063  //
  1064  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
  1065  func (_Curvefi *CurvefiSession) GetUnderlyingDecimals(_pool common.Address) ([8]*big.Int, error) {
  1066  	return _Curvefi.Contract.GetUnderlyingDecimals(&_Curvefi.CallOpts, _pool)
  1067  }
  1068  
  1069  // GetUnderlyingDecimals is a free data retrieval call binding the contract method 0x4cb088f1.
  1070  //
  1071  // Solidity: function get_underlying_decimals(address _pool) view returns(uint256[8])
  1072  func (_Curvefi *CurvefiCallerSession) GetUnderlyingDecimals(_pool common.Address) ([8]*big.Int, error) {
  1073  	return _Curvefi.Contract.GetUnderlyingDecimals(&_Curvefi.CallOpts, _pool)
  1074  }
  1075  
  1076  // GetVirtualPriceFromLpToken is a free data retrieval call binding the contract method 0xc5b7074a.
  1077  //
  1078  // Solidity: function get_virtual_price_from_lp_token(address _token) view returns(uint256)
  1079  func (_Curvefi *CurvefiCaller) GetVirtualPriceFromLpToken(opts *bind.CallOpts, _token common.Address) (*big.Int, error) {
  1080  	var out []interface{}
  1081  	err := _Curvefi.contract.Call(opts, &out, "get_virtual_price_from_lp_token", _token)
  1082  
  1083  	if err != nil {
  1084  		return *new(*big.Int), err
  1085  	}
  1086  
  1087  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1088  
  1089  	return out0, err
  1090  
  1091  }
  1092  
  1093  // GetVirtualPriceFromLpToken is a free data retrieval call binding the contract method 0xc5b7074a.
  1094  //
  1095  // Solidity: function get_virtual_price_from_lp_token(address _token) view returns(uint256)
  1096  func (_Curvefi *CurvefiSession) GetVirtualPriceFromLpToken(_token common.Address) (*big.Int, error) {
  1097  	return _Curvefi.Contract.GetVirtualPriceFromLpToken(&_Curvefi.CallOpts, _token)
  1098  }
  1099  
  1100  // GetVirtualPriceFromLpToken is a free data retrieval call binding the contract method 0xc5b7074a.
  1101  //
  1102  // Solidity: function get_virtual_price_from_lp_token(address _token) view returns(uint256)
  1103  func (_Curvefi *CurvefiCallerSession) GetVirtualPriceFromLpToken(_token common.Address) (*big.Int, error) {
  1104  	return _Curvefi.Contract.GetVirtualPriceFromLpToken(&_Curvefi.CallOpts, _token)
  1105  }
  1106  
  1107  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
  1108  //
  1109  // Solidity: function is_meta(address _pool) view returns(bool)
  1110  func (_Curvefi *CurvefiCaller) IsMeta(opts *bind.CallOpts, _pool common.Address) (bool, error) {
  1111  	var out []interface{}
  1112  	err := _Curvefi.contract.Call(opts, &out, "is_meta", _pool)
  1113  
  1114  	if err != nil {
  1115  		return *new(bool), err
  1116  	}
  1117  
  1118  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1119  
  1120  	return out0, err
  1121  
  1122  }
  1123  
  1124  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
  1125  //
  1126  // Solidity: function is_meta(address _pool) view returns(bool)
  1127  func (_Curvefi *CurvefiSession) IsMeta(_pool common.Address) (bool, error) {
  1128  	return _Curvefi.Contract.IsMeta(&_Curvefi.CallOpts, _pool)
  1129  }
  1130  
  1131  // IsMeta is a free data retrieval call binding the contract method 0xe4d332a9.
  1132  //
  1133  // Solidity: function is_meta(address _pool) view returns(bool)
  1134  func (_Curvefi *CurvefiCallerSession) IsMeta(_pool common.Address) (bool, error) {
  1135  	return _Curvefi.Contract.IsMeta(&_Curvefi.CallOpts, _pool)
  1136  }
  1137  
  1138  // LastUpdated is a free data retrieval call binding the contract method 0x68900961.
  1139  //
  1140  // Solidity: function last_updated() view returns(uint256)
  1141  func (_Curvefi *CurvefiCaller) LastUpdated(opts *bind.CallOpts) (*big.Int, error) {
  1142  	var out []interface{}
  1143  	err := _Curvefi.contract.Call(opts, &out, "last_updated")
  1144  
  1145  	if err != nil {
  1146  		return *new(*big.Int), err
  1147  	}
  1148  
  1149  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1150  
  1151  	return out0, err
  1152  
  1153  }
  1154  
  1155  // LastUpdated is a free data retrieval call binding the contract method 0x68900961.
  1156  //
  1157  // Solidity: function last_updated() view returns(uint256)
  1158  func (_Curvefi *CurvefiSession) LastUpdated() (*big.Int, error) {
  1159  	return _Curvefi.Contract.LastUpdated(&_Curvefi.CallOpts)
  1160  }
  1161  
  1162  // LastUpdated is a free data retrieval call binding the contract method 0x68900961.
  1163  //
  1164  // Solidity: function last_updated() view returns(uint256)
  1165  func (_Curvefi *CurvefiCallerSession) LastUpdated() (*big.Int, error) {
  1166  	return _Curvefi.Contract.LastUpdated(&_Curvefi.CallOpts)
  1167  }
  1168  
  1169  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1170  //
  1171  // Solidity: function pool_count() view returns(uint256)
  1172  func (_Curvefi *CurvefiCaller) PoolCount(opts *bind.CallOpts) (*big.Int, error) {
  1173  	var out []interface{}
  1174  	err := _Curvefi.contract.Call(opts, &out, "pool_count")
  1175  
  1176  	if err != nil {
  1177  		return *new(*big.Int), err
  1178  	}
  1179  
  1180  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1181  
  1182  	return out0, err
  1183  
  1184  }
  1185  
  1186  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1187  //
  1188  // Solidity: function pool_count() view returns(uint256)
  1189  func (_Curvefi *CurvefiSession) PoolCount() (*big.Int, error) {
  1190  	return _Curvefi.Contract.PoolCount(&_Curvefi.CallOpts)
  1191  }
  1192  
  1193  // PoolCount is a free data retrieval call binding the contract method 0x956aae3a.
  1194  //
  1195  // Solidity: function pool_count() view returns(uint256)
  1196  func (_Curvefi *CurvefiCallerSession) PoolCount() (*big.Int, error) {
  1197  	return _Curvefi.Contract.PoolCount(&_Curvefi.CallOpts)
  1198  }
  1199  
  1200  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1201  //
  1202  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1203  func (_Curvefi *CurvefiCaller) PoolList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1204  	var out []interface{}
  1205  	err := _Curvefi.contract.Call(opts, &out, "pool_list", arg0)
  1206  
  1207  	if err != nil {
  1208  		return *new(common.Address), err
  1209  	}
  1210  
  1211  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1212  
  1213  	return out0, err
  1214  
  1215  }
  1216  
  1217  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1218  //
  1219  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1220  func (_Curvefi *CurvefiSession) PoolList(arg0 *big.Int) (common.Address, error) {
  1221  	return _Curvefi.Contract.PoolList(&_Curvefi.CallOpts, arg0)
  1222  }
  1223  
  1224  // PoolList is a free data retrieval call binding the contract method 0x3a1d5d8e.
  1225  //
  1226  // Solidity: function pool_list(uint256 arg0) view returns(address)
  1227  func (_Curvefi *CurvefiCallerSession) PoolList(arg0 *big.Int) (common.Address, error) {
  1228  	return _Curvefi.Contract.PoolList(&_Curvefi.CallOpts, arg0)
  1229  }
  1230  
  1231  // AddMetapool is a paid mutator transaction binding the contract method 0xce6f94e1.
  1232  //
  1233  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name) returns()
  1234  func (_Curvefi *CurvefiTransactor) AddMetapool(opts *bind.TransactOpts, _pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string) (*types.Transaction, error) {
  1235  	return _Curvefi.contract.Transact(opts, "add_metapool", _pool, _n_coins, _lp_token, _decimals, _name)
  1236  }
  1237  
  1238  // AddMetapool is a paid mutator transaction binding the contract method 0xce6f94e1.
  1239  //
  1240  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name) returns()
  1241  func (_Curvefi *CurvefiSession) AddMetapool(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string) (*types.Transaction, error) {
  1242  	return _Curvefi.Contract.AddMetapool(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _decimals, _name)
  1243  }
  1244  
  1245  // AddMetapool is a paid mutator transaction binding the contract method 0xce6f94e1.
  1246  //
  1247  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name) returns()
  1248  func (_Curvefi *CurvefiTransactorSession) AddMetapool(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string) (*types.Transaction, error) {
  1249  	return _Curvefi.Contract.AddMetapool(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _decimals, _name)
  1250  }
  1251  
  1252  // AddMetapool0 is a paid mutator transaction binding the contract method 0xd2a06baf.
  1253  //
  1254  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name, address _base_pool) returns()
  1255  func (_Curvefi *CurvefiTransactor) AddMetapool0(opts *bind.TransactOpts, _pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string, _base_pool common.Address) (*types.Transaction, error) {
  1256  	return _Curvefi.contract.Transact(opts, "add_metapool0", _pool, _n_coins, _lp_token, _decimals, _name, _base_pool)
  1257  }
  1258  
  1259  // AddMetapool0 is a paid mutator transaction binding the contract method 0xd2a06baf.
  1260  //
  1261  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name, address _base_pool) returns()
  1262  func (_Curvefi *CurvefiSession) AddMetapool0(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string, _base_pool common.Address) (*types.Transaction, error) {
  1263  	return _Curvefi.Contract.AddMetapool0(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _decimals, _name, _base_pool)
  1264  }
  1265  
  1266  // AddMetapool0 is a paid mutator transaction binding the contract method 0xd2a06baf.
  1267  //
  1268  // Solidity: function add_metapool(address _pool, uint256 _n_coins, address _lp_token, uint256 _decimals, string _name, address _base_pool) returns()
  1269  func (_Curvefi *CurvefiTransactorSession) AddMetapool0(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _decimals *big.Int, _name string, _base_pool common.Address) (*types.Transaction, error) {
  1270  	return _Curvefi.Contract.AddMetapool0(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _decimals, _name, _base_pool)
  1271  }
  1272  
  1273  // AddPool is a paid mutator transaction binding the contract method 0x99209aa1.
  1274  //
  1275  // Solidity: function add_pool(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _underlying_decimals, bool _has_initial_A, bool _is_v1, string _name) returns()
  1276  func (_Curvefi *CurvefiTransactor) AddPool(opts *bind.TransactOpts, _pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _underlying_decimals *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1277  	return _Curvefi.contract.Transact(opts, "add_pool", _pool, _n_coins, _lp_token, _rate_info, _decimals, _underlying_decimals, _has_initial_A, _is_v1, _name)
  1278  }
  1279  
  1280  // AddPool is a paid mutator transaction binding the contract method 0x99209aa1.
  1281  //
  1282  // Solidity: function add_pool(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _underlying_decimals, bool _has_initial_A, bool _is_v1, string _name) returns()
  1283  func (_Curvefi *CurvefiSession) AddPool(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _underlying_decimals *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1284  	return _Curvefi.Contract.AddPool(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _rate_info, _decimals, _underlying_decimals, _has_initial_A, _is_v1, _name)
  1285  }
  1286  
  1287  // AddPool is a paid mutator transaction binding the contract method 0x99209aa1.
  1288  //
  1289  // Solidity: function add_pool(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _underlying_decimals, bool _has_initial_A, bool _is_v1, string _name) returns()
  1290  func (_Curvefi *CurvefiTransactorSession) AddPool(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _underlying_decimals *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1291  	return _Curvefi.Contract.AddPool(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _rate_info, _decimals, _underlying_decimals, _has_initial_A, _is_v1, _name)
  1292  }
  1293  
  1294  // AddPoolWithoutUnderlying is a paid mutator transaction binding the contract method 0xdcee86a3.
  1295  //
  1296  // Solidity: function add_pool_without_underlying(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _use_rates, bool _has_initial_A, bool _is_v1, string _name) returns()
  1297  func (_Curvefi *CurvefiTransactor) AddPoolWithoutUnderlying(opts *bind.TransactOpts, _pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _use_rates *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1298  	return _Curvefi.contract.Transact(opts, "add_pool_without_underlying", _pool, _n_coins, _lp_token, _rate_info, _decimals, _use_rates, _has_initial_A, _is_v1, _name)
  1299  }
  1300  
  1301  // AddPoolWithoutUnderlying is a paid mutator transaction binding the contract method 0xdcee86a3.
  1302  //
  1303  // Solidity: function add_pool_without_underlying(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _use_rates, bool _has_initial_A, bool _is_v1, string _name) returns()
  1304  func (_Curvefi *CurvefiSession) AddPoolWithoutUnderlying(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _use_rates *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1305  	return _Curvefi.Contract.AddPoolWithoutUnderlying(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _rate_info, _decimals, _use_rates, _has_initial_A, _is_v1, _name)
  1306  }
  1307  
  1308  // AddPoolWithoutUnderlying is a paid mutator transaction binding the contract method 0xdcee86a3.
  1309  //
  1310  // Solidity: function add_pool_without_underlying(address _pool, uint256 _n_coins, address _lp_token, bytes32 _rate_info, uint256 _decimals, uint256 _use_rates, bool _has_initial_A, bool _is_v1, string _name) returns()
  1311  func (_Curvefi *CurvefiTransactorSession) AddPoolWithoutUnderlying(_pool common.Address, _n_coins *big.Int, _lp_token common.Address, _rate_info [32]byte, _decimals *big.Int, _use_rates *big.Int, _has_initial_A bool, _is_v1 bool, _name string) (*types.Transaction, error) {
  1312  	return _Curvefi.Contract.AddPoolWithoutUnderlying(&_Curvefi.TransactOpts, _pool, _n_coins, _lp_token, _rate_info, _decimals, _use_rates, _has_initial_A, _is_v1, _name)
  1313  }
  1314  
  1315  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1316  //
  1317  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1318  func (_Curvefi *CurvefiTransactor) BatchSetPoolAssetType(opts *bind.TransactOpts, _pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1319  	return _Curvefi.contract.Transact(opts, "batch_set_pool_asset_type", _pools, _asset_types)
  1320  }
  1321  
  1322  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1323  //
  1324  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1325  func (_Curvefi *CurvefiSession) BatchSetPoolAssetType(_pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1326  	return _Curvefi.Contract.BatchSetPoolAssetType(&_Curvefi.TransactOpts, _pools, _asset_types)
  1327  }
  1328  
  1329  // BatchSetPoolAssetType is a paid mutator transaction binding the contract method 0x7542f078.
  1330  //
  1331  // Solidity: function batch_set_pool_asset_type(address[32] _pools, uint256[32] _asset_types) returns()
  1332  func (_Curvefi *CurvefiTransactorSession) BatchSetPoolAssetType(_pools [32]common.Address, _asset_types [32]*big.Int) (*types.Transaction, error) {
  1333  	return _Curvefi.Contract.BatchSetPoolAssetType(&_Curvefi.TransactOpts, _pools, _asset_types)
  1334  }
  1335  
  1336  // RemovePool is a paid mutator transaction binding the contract method 0x474932b0.
  1337  //
  1338  // Solidity: function remove_pool(address _pool) returns()
  1339  func (_Curvefi *CurvefiTransactor) RemovePool(opts *bind.TransactOpts, _pool common.Address) (*types.Transaction, error) {
  1340  	return _Curvefi.contract.Transact(opts, "remove_pool", _pool)
  1341  }
  1342  
  1343  // RemovePool is a paid mutator transaction binding the contract method 0x474932b0.
  1344  //
  1345  // Solidity: function remove_pool(address _pool) returns()
  1346  func (_Curvefi *CurvefiSession) RemovePool(_pool common.Address) (*types.Transaction, error) {
  1347  	return _Curvefi.Contract.RemovePool(&_Curvefi.TransactOpts, _pool)
  1348  }
  1349  
  1350  // RemovePool is a paid mutator transaction binding the contract method 0x474932b0.
  1351  //
  1352  // Solidity: function remove_pool(address _pool) returns()
  1353  func (_Curvefi *CurvefiTransactorSession) RemovePool(_pool common.Address) (*types.Transaction, error) {
  1354  	return _Curvefi.Contract.RemovePool(&_Curvefi.TransactOpts, _pool)
  1355  }
  1356  
  1357  // SetCoinGasEstimates is a paid mutator transaction binding the contract method 0x237f89f2.
  1358  //
  1359  // Solidity: function set_coin_gas_estimates(address[10] _addr, uint256[10] _amount) returns()
  1360  func (_Curvefi *CurvefiTransactor) SetCoinGasEstimates(opts *bind.TransactOpts, _addr [10]common.Address, _amount [10]*big.Int) (*types.Transaction, error) {
  1361  	return _Curvefi.contract.Transact(opts, "set_coin_gas_estimates", _addr, _amount)
  1362  }
  1363  
  1364  // SetCoinGasEstimates is a paid mutator transaction binding the contract method 0x237f89f2.
  1365  //
  1366  // Solidity: function set_coin_gas_estimates(address[10] _addr, uint256[10] _amount) returns()
  1367  func (_Curvefi *CurvefiSession) SetCoinGasEstimates(_addr [10]common.Address, _amount [10]*big.Int) (*types.Transaction, error) {
  1368  	return _Curvefi.Contract.SetCoinGasEstimates(&_Curvefi.TransactOpts, _addr, _amount)
  1369  }
  1370  
  1371  // SetCoinGasEstimates is a paid mutator transaction binding the contract method 0x237f89f2.
  1372  //
  1373  // Solidity: function set_coin_gas_estimates(address[10] _addr, uint256[10] _amount) returns()
  1374  func (_Curvefi *CurvefiTransactorSession) SetCoinGasEstimates(_addr [10]common.Address, _amount [10]*big.Int) (*types.Transaction, error) {
  1375  	return _Curvefi.Contract.SetCoinGasEstimates(&_Curvefi.TransactOpts, _addr, _amount)
  1376  }
  1377  
  1378  // SetGasEstimateContract is a paid mutator transaction binding the contract method 0xca991b14.
  1379  //
  1380  // Solidity: function set_gas_estimate_contract(address _pool, address _estimator) returns()
  1381  func (_Curvefi *CurvefiTransactor) SetGasEstimateContract(opts *bind.TransactOpts, _pool common.Address, _estimator common.Address) (*types.Transaction, error) {
  1382  	return _Curvefi.contract.Transact(opts, "set_gas_estimate_contract", _pool, _estimator)
  1383  }
  1384  
  1385  // SetGasEstimateContract is a paid mutator transaction binding the contract method 0xca991b14.
  1386  //
  1387  // Solidity: function set_gas_estimate_contract(address _pool, address _estimator) returns()
  1388  func (_Curvefi *CurvefiSession) SetGasEstimateContract(_pool common.Address, _estimator common.Address) (*types.Transaction, error) {
  1389  	return _Curvefi.Contract.SetGasEstimateContract(&_Curvefi.TransactOpts, _pool, _estimator)
  1390  }
  1391  
  1392  // SetGasEstimateContract is a paid mutator transaction binding the contract method 0xca991b14.
  1393  //
  1394  // Solidity: function set_gas_estimate_contract(address _pool, address _estimator) returns()
  1395  func (_Curvefi *CurvefiTransactorSession) SetGasEstimateContract(_pool common.Address, _estimator common.Address) (*types.Transaction, error) {
  1396  	return _Curvefi.Contract.SetGasEstimateContract(&_Curvefi.TransactOpts, _pool, _estimator)
  1397  }
  1398  
  1399  // SetLiquidityGauges is a paid mutator transaction binding the contract method 0xef6b9788.
  1400  //
  1401  // Solidity: function set_liquidity_gauges(address _pool, address[10] _liquidity_gauges) returns()
  1402  func (_Curvefi *CurvefiTransactor) SetLiquidityGauges(opts *bind.TransactOpts, _pool common.Address, _liquidity_gauges [10]common.Address) (*types.Transaction, error) {
  1403  	return _Curvefi.contract.Transact(opts, "set_liquidity_gauges", _pool, _liquidity_gauges)
  1404  }
  1405  
  1406  // SetLiquidityGauges is a paid mutator transaction binding the contract method 0xef6b9788.
  1407  //
  1408  // Solidity: function set_liquidity_gauges(address _pool, address[10] _liquidity_gauges) returns()
  1409  func (_Curvefi *CurvefiSession) SetLiquidityGauges(_pool common.Address, _liquidity_gauges [10]common.Address) (*types.Transaction, error) {
  1410  	return _Curvefi.Contract.SetLiquidityGauges(&_Curvefi.TransactOpts, _pool, _liquidity_gauges)
  1411  }
  1412  
  1413  // SetLiquidityGauges is a paid mutator transaction binding the contract method 0xef6b9788.
  1414  //
  1415  // Solidity: function set_liquidity_gauges(address _pool, address[10] _liquidity_gauges) returns()
  1416  func (_Curvefi *CurvefiTransactorSession) SetLiquidityGauges(_pool common.Address, _liquidity_gauges [10]common.Address) (*types.Transaction, error) {
  1417  	return _Curvefi.Contract.SetLiquidityGauges(&_Curvefi.TransactOpts, _pool, _liquidity_gauges)
  1418  }
  1419  
  1420  // SetPoolAssetType is a paid mutator transaction binding the contract method 0x09e76774.
  1421  //
  1422  // Solidity: function set_pool_asset_type(address _pool, uint256 _asset_type) returns()
  1423  func (_Curvefi *CurvefiTransactor) SetPoolAssetType(opts *bind.TransactOpts, _pool common.Address, _asset_type *big.Int) (*types.Transaction, error) {
  1424  	return _Curvefi.contract.Transact(opts, "set_pool_asset_type", _pool, _asset_type)
  1425  }
  1426  
  1427  // SetPoolAssetType is a paid mutator transaction binding the contract method 0x09e76774.
  1428  //
  1429  // Solidity: function set_pool_asset_type(address _pool, uint256 _asset_type) returns()
  1430  func (_Curvefi *CurvefiSession) SetPoolAssetType(_pool common.Address, _asset_type *big.Int) (*types.Transaction, error) {
  1431  	return _Curvefi.Contract.SetPoolAssetType(&_Curvefi.TransactOpts, _pool, _asset_type)
  1432  }
  1433  
  1434  // SetPoolAssetType is a paid mutator transaction binding the contract method 0x09e76774.
  1435  //
  1436  // Solidity: function set_pool_asset_type(address _pool, uint256 _asset_type) returns()
  1437  func (_Curvefi *CurvefiTransactorSession) SetPoolAssetType(_pool common.Address, _asset_type *big.Int) (*types.Transaction, error) {
  1438  	return _Curvefi.Contract.SetPoolAssetType(&_Curvefi.TransactOpts, _pool, _asset_type)
  1439  }
  1440  
  1441  // SetPoolGasEstimates is a paid mutator transaction binding the contract method 0x0733b67a.
  1442  //
  1443  // Solidity: function set_pool_gas_estimates(address[5] _addr, uint256[2][5] _amount) returns()
  1444  func (_Curvefi *CurvefiTransactor) SetPoolGasEstimates(opts *bind.TransactOpts, _addr [5]common.Address, _amount [5][2]*big.Int) (*types.Transaction, error) {
  1445  	return _Curvefi.contract.Transact(opts, "set_pool_gas_estimates", _addr, _amount)
  1446  }
  1447  
  1448  // SetPoolGasEstimates is a paid mutator transaction binding the contract method 0x0733b67a.
  1449  //
  1450  // Solidity: function set_pool_gas_estimates(address[5] _addr, uint256[2][5] _amount) returns()
  1451  func (_Curvefi *CurvefiSession) SetPoolGasEstimates(_addr [5]common.Address, _amount [5][2]*big.Int) (*types.Transaction, error) {
  1452  	return _Curvefi.Contract.SetPoolGasEstimates(&_Curvefi.TransactOpts, _addr, _amount)
  1453  }
  1454  
  1455  // SetPoolGasEstimates is a paid mutator transaction binding the contract method 0x0733b67a.
  1456  //
  1457  // Solidity: function set_pool_gas_estimates(address[5] _addr, uint256[2][5] _amount) returns()
  1458  func (_Curvefi *CurvefiTransactorSession) SetPoolGasEstimates(_addr [5]common.Address, _amount [5][2]*big.Int) (*types.Transaction, error) {
  1459  	return _Curvefi.Contract.SetPoolGasEstimates(&_Curvefi.TransactOpts, _addr, _amount)
  1460  }
  1461  
  1462  // CurvefiPoolAddedIterator is returned from FilterPoolAdded and is used to iterate over the raw logs and unpacked data for PoolAdded events raised by the Curvefi contract.
  1463  type CurvefiPoolAddedIterator struct {
  1464  	Event *CurvefiPoolAdded // Event containing the contract specifics and raw log
  1465  
  1466  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1467  	event    string              // Event name to use for unpacking event data
  1468  
  1469  	logs chan types.Log        // Log channel receiving the found contract events
  1470  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1471  	done bool                  // Whether the subscription completed delivering logs
  1472  	fail error                 // Occurred error to stop iteration
  1473  }
  1474  
  1475  // Next advances the iterator to the subsequent event, returning whether there
  1476  // are any more events found. In case of a retrieval or parsing error, false is
  1477  // returned and Error() can be queried for the exact failure.
  1478  func (it *CurvefiPoolAddedIterator) Next() bool {
  1479  	// If the iterator failed, stop iterating
  1480  	if it.fail != nil {
  1481  		return false
  1482  	}
  1483  	// If the iterator completed, deliver directly whatever's available
  1484  	if it.done {
  1485  		select {
  1486  		case log := <-it.logs:
  1487  			it.Event = new(CurvefiPoolAdded)
  1488  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1489  				it.fail = err
  1490  				return false
  1491  			}
  1492  			it.Event.Raw = log
  1493  			return true
  1494  
  1495  		default:
  1496  			return false
  1497  		}
  1498  	}
  1499  	// Iterator still in progress, wait for either a data or an error event
  1500  	select {
  1501  	case log := <-it.logs:
  1502  		it.Event = new(CurvefiPoolAdded)
  1503  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1504  			it.fail = err
  1505  			return false
  1506  		}
  1507  		it.Event.Raw = log
  1508  		return true
  1509  
  1510  	case err := <-it.sub.Err():
  1511  		it.done = true
  1512  		it.fail = err
  1513  		return it.Next()
  1514  	}
  1515  }
  1516  
  1517  // Error returns any retrieval or parsing error occurred during filtering.
  1518  func (it *CurvefiPoolAddedIterator) Error() error {
  1519  	return it.fail
  1520  }
  1521  
  1522  // Close terminates the iteration process, releasing any pending underlying
  1523  // resources.
  1524  func (it *CurvefiPoolAddedIterator) Close() error {
  1525  	it.sub.Unsubscribe()
  1526  	return nil
  1527  }
  1528  
  1529  // CurvefiPoolAdded represents a PoolAdded event raised by the Curvefi contract.
  1530  type CurvefiPoolAdded struct {
  1531  	Pool         common.Address
  1532  	RateMethodId []byte
  1533  	Raw          types.Log // Blockchain specific contextual infos
  1534  }
  1535  
  1536  // FilterPoolAdded is a free log retrieval operation binding the contract event 0xe485c16479ab7092c0b3fc4649843c06be7f072194675261590c84473ab0aea9.
  1537  //
  1538  // Solidity: event PoolAdded(address indexed pool, bytes rate_method_id)
  1539  func (_Curvefi *CurvefiFilterer) FilterPoolAdded(opts *bind.FilterOpts, pool []common.Address) (*CurvefiPoolAddedIterator, error) {
  1540  
  1541  	var poolRule []interface{}
  1542  	for _, poolItem := range pool {
  1543  		poolRule = append(poolRule, poolItem)
  1544  	}
  1545  
  1546  	logs, sub, err := _Curvefi.contract.FilterLogs(opts, "PoolAdded", poolRule)
  1547  	if err != nil {
  1548  		return nil, err
  1549  	}
  1550  	return &CurvefiPoolAddedIterator{contract: _Curvefi.contract, event: "PoolAdded", logs: logs, sub: sub}, nil
  1551  }
  1552  
  1553  // WatchPoolAdded is a free log subscription operation binding the contract event 0xe485c16479ab7092c0b3fc4649843c06be7f072194675261590c84473ab0aea9.
  1554  //
  1555  // Solidity: event PoolAdded(address indexed pool, bytes rate_method_id)
  1556  func (_Curvefi *CurvefiFilterer) WatchPoolAdded(opts *bind.WatchOpts, sink chan<- *CurvefiPoolAdded, pool []common.Address) (event.Subscription, error) {
  1557  
  1558  	var poolRule []interface{}
  1559  	for _, poolItem := range pool {
  1560  		poolRule = append(poolRule, poolItem)
  1561  	}
  1562  
  1563  	logs, sub, err := _Curvefi.contract.WatchLogs(opts, "PoolAdded", poolRule)
  1564  	if err != nil {
  1565  		return nil, err
  1566  	}
  1567  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1568  		defer sub.Unsubscribe()
  1569  		for {
  1570  			select {
  1571  			case log := <-logs:
  1572  				// New log arrived, parse the event and forward to the user
  1573  				event := new(CurvefiPoolAdded)
  1574  				if err := _Curvefi.contract.UnpackLog(event, "PoolAdded", log); err != nil {
  1575  					return err
  1576  				}
  1577  				event.Raw = log
  1578  
  1579  				select {
  1580  				case sink <- event:
  1581  				case err := <-sub.Err():
  1582  					return err
  1583  				case <-quit:
  1584  					return nil
  1585  				}
  1586  			case err := <-sub.Err():
  1587  				return err
  1588  			case <-quit:
  1589  				return nil
  1590  			}
  1591  		}
  1592  	}), nil
  1593  }
  1594  
  1595  // ParsePoolAdded is a log parse operation binding the contract event 0xe485c16479ab7092c0b3fc4649843c06be7f072194675261590c84473ab0aea9.
  1596  //
  1597  // Solidity: event PoolAdded(address indexed pool, bytes rate_method_id)
  1598  func (_Curvefi *CurvefiFilterer) ParsePoolAdded(log types.Log) (*CurvefiPoolAdded, error) {
  1599  	event := new(CurvefiPoolAdded)
  1600  	if err := _Curvefi.contract.UnpackLog(event, "PoolAdded", log); err != nil {
  1601  		return nil, err
  1602  	}
  1603  	event.Raw = log
  1604  	return event, nil
  1605  }
  1606  
  1607  // CurvefiPoolRemovedIterator is returned from FilterPoolRemoved and is used to iterate over the raw logs and unpacked data for PoolRemoved events raised by the Curvefi contract.
  1608  type CurvefiPoolRemovedIterator struct {
  1609  	Event *CurvefiPoolRemoved // Event containing the contract specifics and raw log
  1610  
  1611  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1612  	event    string              // Event name to use for unpacking event data
  1613  
  1614  	logs chan types.Log        // Log channel receiving the found contract events
  1615  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1616  	done bool                  // Whether the subscription completed delivering logs
  1617  	fail error                 // Occurred error to stop iteration
  1618  }
  1619  
  1620  // Next advances the iterator to the subsequent event, returning whether there
  1621  // are any more events found. In case of a retrieval or parsing error, false is
  1622  // returned and Error() can be queried for the exact failure.
  1623  func (it *CurvefiPoolRemovedIterator) Next() bool {
  1624  	// If the iterator failed, stop iterating
  1625  	if it.fail != nil {
  1626  		return false
  1627  	}
  1628  	// If the iterator completed, deliver directly whatever's available
  1629  	if it.done {
  1630  		select {
  1631  		case log := <-it.logs:
  1632  			it.Event = new(CurvefiPoolRemoved)
  1633  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1634  				it.fail = err
  1635  				return false
  1636  			}
  1637  			it.Event.Raw = log
  1638  			return true
  1639  
  1640  		default:
  1641  			return false
  1642  		}
  1643  	}
  1644  	// Iterator still in progress, wait for either a data or an error event
  1645  	select {
  1646  	case log := <-it.logs:
  1647  		it.Event = new(CurvefiPoolRemoved)
  1648  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1649  			it.fail = err
  1650  			return false
  1651  		}
  1652  		it.Event.Raw = log
  1653  		return true
  1654  
  1655  	case err := <-it.sub.Err():
  1656  		it.done = true
  1657  		it.fail = err
  1658  		return it.Next()
  1659  	}
  1660  }
  1661  
  1662  // Error returns any retrieval or parsing error occurred during filtering.
  1663  func (it *CurvefiPoolRemovedIterator) Error() error {
  1664  	return it.fail
  1665  }
  1666  
  1667  // Close terminates the iteration process, releasing any pending underlying
  1668  // resources.
  1669  func (it *CurvefiPoolRemovedIterator) Close() error {
  1670  	it.sub.Unsubscribe()
  1671  	return nil
  1672  }
  1673  
  1674  // CurvefiPoolRemoved represents a PoolRemoved event raised by the Curvefi contract.
  1675  type CurvefiPoolRemoved struct {
  1676  	Pool common.Address
  1677  	Raw  types.Log // Blockchain specific contextual infos
  1678  }
  1679  
  1680  // FilterPoolRemoved is a free log retrieval operation binding the contract event 0x4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f.
  1681  //
  1682  // Solidity: event PoolRemoved(address indexed pool)
  1683  func (_Curvefi *CurvefiFilterer) FilterPoolRemoved(opts *bind.FilterOpts, pool []common.Address) (*CurvefiPoolRemovedIterator, error) {
  1684  
  1685  	var poolRule []interface{}
  1686  	for _, poolItem := range pool {
  1687  		poolRule = append(poolRule, poolItem)
  1688  	}
  1689  
  1690  	logs, sub, err := _Curvefi.contract.FilterLogs(opts, "PoolRemoved", poolRule)
  1691  	if err != nil {
  1692  		return nil, err
  1693  	}
  1694  	return &CurvefiPoolRemovedIterator{contract: _Curvefi.contract, event: "PoolRemoved", logs: logs, sub: sub}, nil
  1695  }
  1696  
  1697  // WatchPoolRemoved is a free log subscription operation binding the contract event 0x4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f.
  1698  //
  1699  // Solidity: event PoolRemoved(address indexed pool)
  1700  func (_Curvefi *CurvefiFilterer) WatchPoolRemoved(opts *bind.WatchOpts, sink chan<- *CurvefiPoolRemoved, pool []common.Address) (event.Subscription, error) {
  1701  
  1702  	var poolRule []interface{}
  1703  	for _, poolItem := range pool {
  1704  		poolRule = append(poolRule, poolItem)
  1705  	}
  1706  
  1707  	logs, sub, err := _Curvefi.contract.WatchLogs(opts, "PoolRemoved", poolRule)
  1708  	if err != nil {
  1709  		return nil, err
  1710  	}
  1711  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1712  		defer sub.Unsubscribe()
  1713  		for {
  1714  			select {
  1715  			case log := <-logs:
  1716  				// New log arrived, parse the event and forward to the user
  1717  				event := new(CurvefiPoolRemoved)
  1718  				if err := _Curvefi.contract.UnpackLog(event, "PoolRemoved", log); err != nil {
  1719  					return err
  1720  				}
  1721  				event.Raw = log
  1722  
  1723  				select {
  1724  				case sink <- event:
  1725  				case err := <-sub.Err():
  1726  					return err
  1727  				case <-quit:
  1728  					return nil
  1729  				}
  1730  			case err := <-sub.Err():
  1731  				return err
  1732  			case <-quit:
  1733  				return nil
  1734  			}
  1735  		}
  1736  	}), nil
  1737  }
  1738  
  1739  // ParsePoolRemoved is a log parse operation binding the contract event 0x4106dfdaa577573db51c0ca93f766dbedfa0758faa2e7f5bcdb7c142be803c3f.
  1740  //
  1741  // Solidity: event PoolRemoved(address indexed pool)
  1742  func (_Curvefi *CurvefiFilterer) ParsePoolRemoved(log types.Log) (*CurvefiPoolRemoved, error) {
  1743  	event := new(CurvefiPoolRemoved)
  1744  	if err := _Curvefi.contract.UnpackLog(event, "PoolRemoved", log); err != nil {
  1745  		return nil, err
  1746  	}
  1747  	event.Raw = log
  1748  	return event, nil
  1749  }