github.com/cwntr/go-defi@v0.0.0-20210629134751-07f9ec2f7e66/binding/hbalancer_exchange/hbalancer_exchange.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 hbalancer_exchange
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // IExchangeProxySwap is an auto generated low-level Go binding around an user-defined struct.
    30  type IExchangeProxySwap struct {
    31  	Pool              common.Address
    32  	TokenIn           common.Address
    33  	TokenOut          common.Address
    34  	SwapAmount        *big.Int
    35  	LimitReturnAmount *big.Int
    36  	MaxPrice          *big.Int
    37  }
    38  
    39  // HbalancerExchangeABI is the input ABI used to generate the binding from.
    40  const HbalancerExchangeABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"ETH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EXCHANGE_PROXY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitReturnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"internalType\":\"structIExchangeProxy.Swap[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTotalAmountOut\",\"type\":\"uint256\"}],\"name\":\"batchSwapExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountOut\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitReturnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"internalType\":\"structIExchangeProxy.Swap[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTotalAmountIn\",\"type\":\"uint256\"}],\"name\":\"batchSwapExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitReturnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"internalType\":\"structIExchangeProxy.Swap[][]\",\"name\":\"swapSequences\",\"type\":\"tuple[][]\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTotalAmountOut\",\"type\":\"uint256\"}],\"name\":\"multihopBatchSwapExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountOut\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"swapAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitReturnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPrice\",\"type\":\"uint256\"}],\"internalType\":\"structIExchangeProxy.Swap[][]\",\"name\":\"swapSequences\",\"type\":\"tuple[][]\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTotalAmountIn\",\"type\":\"uint256\"}],\"name\":\"multihopBatchSwapExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"postProcess\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTotalAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nPools\",\"type\":\"uint256\"}],\"name\":\"smartSwapExactIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountOut\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxTotalAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nPools\",\"type\":\"uint256\"}],\"name\":\"smartSwapExactOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalAmountIn\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]"
    41  
    42  // HbalancerExchange is an auto generated Go binding around an Ethereum contract.
    43  type HbalancerExchange struct {
    44  	HbalancerExchangeCaller     // Read-only binding to the contract
    45  	HbalancerExchangeTransactor // Write-only binding to the contract
    46  	HbalancerExchangeFilterer   // Log filterer for contract events
    47  }
    48  
    49  // HbalancerExchangeCaller is an auto generated read-only Go binding around an Ethereum contract.
    50  type HbalancerExchangeCaller struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // HbalancerExchangeTransactor is an auto generated write-only Go binding around an Ethereum contract.
    55  type HbalancerExchangeTransactor struct {
    56  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    57  }
    58  
    59  // HbalancerExchangeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    60  type HbalancerExchangeFilterer struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // HbalancerExchangeSession is an auto generated Go binding around an Ethereum contract,
    65  // with pre-set call and transact options.
    66  type HbalancerExchangeSession struct {
    67  	Contract     *HbalancerExchange // Generic contract binding to set the session for
    68  	CallOpts     bind.CallOpts      // Call options to use throughout this session
    69  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    70  }
    71  
    72  // HbalancerExchangeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    73  // with pre-set call options.
    74  type HbalancerExchangeCallerSession struct {
    75  	Contract *HbalancerExchangeCaller // Generic contract caller binding to set the session for
    76  	CallOpts bind.CallOpts            // Call options to use throughout this session
    77  }
    78  
    79  // HbalancerExchangeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    80  // with pre-set transact options.
    81  type HbalancerExchangeTransactorSession struct {
    82  	Contract     *HbalancerExchangeTransactor // Generic contract transactor binding to set the session for
    83  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
    84  }
    85  
    86  // HbalancerExchangeRaw is an auto generated low-level Go binding around an Ethereum contract.
    87  type HbalancerExchangeRaw struct {
    88  	Contract *HbalancerExchange // Generic contract binding to access the raw methods on
    89  }
    90  
    91  // HbalancerExchangeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    92  type HbalancerExchangeCallerRaw struct {
    93  	Contract *HbalancerExchangeCaller // Generic read-only contract binding to access the raw methods on
    94  }
    95  
    96  // HbalancerExchangeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    97  type HbalancerExchangeTransactorRaw struct {
    98  	Contract *HbalancerExchangeTransactor // Generic write-only contract binding to access the raw methods on
    99  }
   100  
   101  // NewHbalancerExchange creates a new instance of HbalancerExchange, bound to a specific deployed contract.
   102  func NewHbalancerExchange(address common.Address, backend bind.ContractBackend) (*HbalancerExchange, error) {
   103  	contract, err := bindHbalancerExchange(address, backend, backend, backend)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  	return &HbalancerExchange{HbalancerExchangeCaller: HbalancerExchangeCaller{contract: contract}, HbalancerExchangeTransactor: HbalancerExchangeTransactor{contract: contract}, HbalancerExchangeFilterer: HbalancerExchangeFilterer{contract: contract}}, nil
   108  }
   109  
   110  // NewHbalancerExchangeCaller creates a new read-only instance of HbalancerExchange, bound to a specific deployed contract.
   111  func NewHbalancerExchangeCaller(address common.Address, caller bind.ContractCaller) (*HbalancerExchangeCaller, error) {
   112  	contract, err := bindHbalancerExchange(address, caller, nil, nil)
   113  	if err != nil {
   114  		return nil, err
   115  	}
   116  	return &HbalancerExchangeCaller{contract: contract}, nil
   117  }
   118  
   119  // NewHbalancerExchangeTransactor creates a new write-only instance of HbalancerExchange, bound to a specific deployed contract.
   120  func NewHbalancerExchangeTransactor(address common.Address, transactor bind.ContractTransactor) (*HbalancerExchangeTransactor, error) {
   121  	contract, err := bindHbalancerExchange(address, nil, transactor, nil)
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return &HbalancerExchangeTransactor{contract: contract}, nil
   126  }
   127  
   128  // NewHbalancerExchangeFilterer creates a new log filterer instance of HbalancerExchange, bound to a specific deployed contract.
   129  func NewHbalancerExchangeFilterer(address common.Address, filterer bind.ContractFilterer) (*HbalancerExchangeFilterer, error) {
   130  	contract, err := bindHbalancerExchange(address, nil, nil, filterer)
   131  	if err != nil {
   132  		return nil, err
   133  	}
   134  	return &HbalancerExchangeFilterer{contract: contract}, nil
   135  }
   136  
   137  // bindHbalancerExchange binds a generic wrapper to an already deployed contract.
   138  func bindHbalancerExchange(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   139  	parsed, err := abi.JSON(strings.NewReader(HbalancerExchangeABI))
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   144  }
   145  
   146  // Call invokes the (constant) contract method with params as input values and
   147  // sets the output to result. The result type might be a single field for simple
   148  // returns, a slice of interfaces for anonymous returns and a struct for named
   149  // returns.
   150  func (_HbalancerExchange *HbalancerExchangeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   151  	return _HbalancerExchange.Contract.HbalancerExchangeCaller.contract.Call(opts, result, method, params...)
   152  }
   153  
   154  // Transfer initiates a plain transaction to move funds to the contract, calling
   155  // its default method if one is available.
   156  func (_HbalancerExchange *HbalancerExchangeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   157  	return _HbalancerExchange.Contract.HbalancerExchangeTransactor.contract.Transfer(opts)
   158  }
   159  
   160  // Transact invokes the (paid) contract method with params as input values.
   161  func (_HbalancerExchange *HbalancerExchangeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   162  	return _HbalancerExchange.Contract.HbalancerExchangeTransactor.contract.Transact(opts, method, params...)
   163  }
   164  
   165  // Call invokes the (constant) contract method with params as input values and
   166  // sets the output to result. The result type might be a single field for simple
   167  // returns, a slice of interfaces for anonymous returns and a struct for named
   168  // returns.
   169  func (_HbalancerExchange *HbalancerExchangeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   170  	return _HbalancerExchange.Contract.contract.Call(opts, result, method, params...)
   171  }
   172  
   173  // Transfer initiates a plain transaction to move funds to the contract, calling
   174  // its default method if one is available.
   175  func (_HbalancerExchange *HbalancerExchangeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   176  	return _HbalancerExchange.Contract.contract.Transfer(opts)
   177  }
   178  
   179  // Transact invokes the (paid) contract method with params as input values.
   180  func (_HbalancerExchange *HbalancerExchangeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   181  	return _HbalancerExchange.Contract.contract.Transact(opts, method, params...)
   182  }
   183  
   184  // ETHADDRESS is a free data retrieval call binding the contract method 0xa734f06e.
   185  //
   186  // Solidity: function ETH_ADDRESS() view returns(address)
   187  func (_HbalancerExchange *HbalancerExchangeCaller) ETHADDRESS(opts *bind.CallOpts) (common.Address, error) {
   188  	var out []interface{}
   189  	err := _HbalancerExchange.contract.Call(opts, &out, "ETH_ADDRESS")
   190  
   191  	if err != nil {
   192  		return *new(common.Address), err
   193  	}
   194  
   195  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   196  
   197  	return out0, err
   198  
   199  }
   200  
   201  // ETHADDRESS is a free data retrieval call binding the contract method 0xa734f06e.
   202  //
   203  // Solidity: function ETH_ADDRESS() view returns(address)
   204  func (_HbalancerExchange *HbalancerExchangeSession) ETHADDRESS() (common.Address, error) {
   205  	return _HbalancerExchange.Contract.ETHADDRESS(&_HbalancerExchange.CallOpts)
   206  }
   207  
   208  // ETHADDRESS is a free data retrieval call binding the contract method 0xa734f06e.
   209  //
   210  // Solidity: function ETH_ADDRESS() view returns(address)
   211  func (_HbalancerExchange *HbalancerExchangeCallerSession) ETHADDRESS() (common.Address, error) {
   212  	return _HbalancerExchange.Contract.ETHADDRESS(&_HbalancerExchange.CallOpts)
   213  }
   214  
   215  // EXCHANGEPROXY is a free data retrieval call binding the contract method 0x6fca4f8f.
   216  //
   217  // Solidity: function EXCHANGE_PROXY() view returns(address)
   218  func (_HbalancerExchange *HbalancerExchangeCaller) EXCHANGEPROXY(opts *bind.CallOpts) (common.Address, error) {
   219  	var out []interface{}
   220  	err := _HbalancerExchange.contract.Call(opts, &out, "EXCHANGE_PROXY")
   221  
   222  	if err != nil {
   223  		return *new(common.Address), err
   224  	}
   225  
   226  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   227  
   228  	return out0, err
   229  
   230  }
   231  
   232  // EXCHANGEPROXY is a free data retrieval call binding the contract method 0x6fca4f8f.
   233  //
   234  // Solidity: function EXCHANGE_PROXY() view returns(address)
   235  func (_HbalancerExchange *HbalancerExchangeSession) EXCHANGEPROXY() (common.Address, error) {
   236  	return _HbalancerExchange.Contract.EXCHANGEPROXY(&_HbalancerExchange.CallOpts)
   237  }
   238  
   239  // EXCHANGEPROXY is a free data retrieval call binding the contract method 0x6fca4f8f.
   240  //
   241  // Solidity: function EXCHANGE_PROXY() view returns(address)
   242  func (_HbalancerExchange *HbalancerExchangeCallerSession) EXCHANGEPROXY() (common.Address, error) {
   243  	return _HbalancerExchange.Contract.EXCHANGEPROXY(&_HbalancerExchange.CallOpts)
   244  }
   245  
   246  // BatchSwapExactIn is a paid mutator transaction binding the contract method 0x8743ad58.
   247  //
   248  // Solidity: function batchSwapExactIn((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   249  func (_HbalancerExchange *HbalancerExchangeTransactor) BatchSwapExactIn(opts *bind.TransactOpts, swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   250  	return _HbalancerExchange.contract.Transact(opts, "batchSwapExactIn", swaps, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   251  }
   252  
   253  // BatchSwapExactIn is a paid mutator transaction binding the contract method 0x8743ad58.
   254  //
   255  // Solidity: function batchSwapExactIn((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   256  func (_HbalancerExchange *HbalancerExchangeSession) BatchSwapExactIn(swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   257  	return _HbalancerExchange.Contract.BatchSwapExactIn(&_HbalancerExchange.TransactOpts, swaps, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   258  }
   259  
   260  // BatchSwapExactIn is a paid mutator transaction binding the contract method 0x8743ad58.
   261  //
   262  // Solidity: function batchSwapExactIn((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   263  func (_HbalancerExchange *HbalancerExchangeTransactorSession) BatchSwapExactIn(swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   264  	return _HbalancerExchange.Contract.BatchSwapExactIn(&_HbalancerExchange.TransactOpts, swaps, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   265  }
   266  
   267  // BatchSwapExactOut is a paid mutator transaction binding the contract method 0x2db58134.
   268  //
   269  // Solidity: function batchSwapExactOut((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   270  func (_HbalancerExchange *HbalancerExchangeTransactor) BatchSwapExactOut(opts *bind.TransactOpts, swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   271  	return _HbalancerExchange.contract.Transact(opts, "batchSwapExactOut", swaps, tokenIn, tokenOut, maxTotalAmountIn)
   272  }
   273  
   274  // BatchSwapExactOut is a paid mutator transaction binding the contract method 0x2db58134.
   275  //
   276  // Solidity: function batchSwapExactOut((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   277  func (_HbalancerExchange *HbalancerExchangeSession) BatchSwapExactOut(swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   278  	return _HbalancerExchange.Contract.BatchSwapExactOut(&_HbalancerExchange.TransactOpts, swaps, tokenIn, tokenOut, maxTotalAmountIn)
   279  }
   280  
   281  // BatchSwapExactOut is a paid mutator transaction binding the contract method 0x2db58134.
   282  //
   283  // Solidity: function batchSwapExactOut((address,address,address,uint256,uint256,uint256)[] swaps, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   284  func (_HbalancerExchange *HbalancerExchangeTransactorSession) BatchSwapExactOut(swaps []IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   285  	return _HbalancerExchange.Contract.BatchSwapExactOut(&_HbalancerExchange.TransactOpts, swaps, tokenIn, tokenOut, maxTotalAmountIn)
   286  }
   287  
   288  // MultihopBatchSwapExactIn is a paid mutator transaction binding the contract method 0xe2b39746.
   289  //
   290  // Solidity: function multihopBatchSwapExactIn((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   291  func (_HbalancerExchange *HbalancerExchangeTransactor) MultihopBatchSwapExactIn(opts *bind.TransactOpts, swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   292  	return _HbalancerExchange.contract.Transact(opts, "multihopBatchSwapExactIn", swapSequences, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   293  }
   294  
   295  // MultihopBatchSwapExactIn is a paid mutator transaction binding the contract method 0xe2b39746.
   296  //
   297  // Solidity: function multihopBatchSwapExactIn((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   298  func (_HbalancerExchange *HbalancerExchangeSession) MultihopBatchSwapExactIn(swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   299  	return _HbalancerExchange.Contract.MultihopBatchSwapExactIn(&_HbalancerExchange.TransactOpts, swapSequences, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   300  }
   301  
   302  // MultihopBatchSwapExactIn is a paid mutator transaction binding the contract method 0xe2b39746.
   303  //
   304  // Solidity: function multihopBatchSwapExactIn((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut) payable returns(uint256 totalAmountOut)
   305  func (_HbalancerExchange *HbalancerExchangeTransactorSession) MultihopBatchSwapExactIn(swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int) (*types.Transaction, error) {
   306  	return _HbalancerExchange.Contract.MultihopBatchSwapExactIn(&_HbalancerExchange.TransactOpts, swapSequences, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut)
   307  }
   308  
   309  // MultihopBatchSwapExactOut is a paid mutator transaction binding the contract method 0x86b2ecc4.
   310  //
   311  // Solidity: function multihopBatchSwapExactOut((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   312  func (_HbalancerExchange *HbalancerExchangeTransactor) MultihopBatchSwapExactOut(opts *bind.TransactOpts, swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   313  	return _HbalancerExchange.contract.Transact(opts, "multihopBatchSwapExactOut", swapSequences, tokenIn, tokenOut, maxTotalAmountIn)
   314  }
   315  
   316  // MultihopBatchSwapExactOut is a paid mutator transaction binding the contract method 0x86b2ecc4.
   317  //
   318  // Solidity: function multihopBatchSwapExactOut((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   319  func (_HbalancerExchange *HbalancerExchangeSession) MultihopBatchSwapExactOut(swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   320  	return _HbalancerExchange.Contract.MultihopBatchSwapExactOut(&_HbalancerExchange.TransactOpts, swapSequences, tokenIn, tokenOut, maxTotalAmountIn)
   321  }
   322  
   323  // MultihopBatchSwapExactOut is a paid mutator transaction binding the contract method 0x86b2ecc4.
   324  //
   325  // Solidity: function multihopBatchSwapExactOut((address,address,address,uint256,uint256,uint256)[][] swapSequences, address tokenIn, address tokenOut, uint256 maxTotalAmountIn) payable returns(uint256 totalAmountIn)
   326  func (_HbalancerExchange *HbalancerExchangeTransactorSession) MultihopBatchSwapExactOut(swapSequences [][]IExchangeProxySwap, tokenIn common.Address, tokenOut common.Address, maxTotalAmountIn *big.Int) (*types.Transaction, error) {
   327  	return _HbalancerExchange.Contract.MultihopBatchSwapExactOut(&_HbalancerExchange.TransactOpts, swapSequences, tokenIn, tokenOut, maxTotalAmountIn)
   328  }
   329  
   330  // PostProcess is a paid mutator transaction binding the contract method 0xc2722916.
   331  //
   332  // Solidity: function postProcess() payable returns()
   333  func (_HbalancerExchange *HbalancerExchangeTransactor) PostProcess(opts *bind.TransactOpts) (*types.Transaction, error) {
   334  	return _HbalancerExchange.contract.Transact(opts, "postProcess")
   335  }
   336  
   337  // PostProcess is a paid mutator transaction binding the contract method 0xc2722916.
   338  //
   339  // Solidity: function postProcess() payable returns()
   340  func (_HbalancerExchange *HbalancerExchangeSession) PostProcess() (*types.Transaction, error) {
   341  	return _HbalancerExchange.Contract.PostProcess(&_HbalancerExchange.TransactOpts)
   342  }
   343  
   344  // PostProcess is a paid mutator transaction binding the contract method 0xc2722916.
   345  //
   346  // Solidity: function postProcess() payable returns()
   347  func (_HbalancerExchange *HbalancerExchangeTransactorSession) PostProcess() (*types.Transaction, error) {
   348  	return _HbalancerExchange.Contract.PostProcess(&_HbalancerExchange.TransactOpts)
   349  }
   350  
   351  // SmartSwapExactIn is a paid mutator transaction binding the contract method 0x21b0eb85.
   352  //
   353  // Solidity: function smartSwapExactIn(address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut, uint256 nPools) payable returns(uint256 totalAmountOut)
   354  func (_HbalancerExchange *HbalancerExchangeTransactor) SmartSwapExactIn(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int, nPools *big.Int) (*types.Transaction, error) {
   355  	return _HbalancerExchange.contract.Transact(opts, "smartSwapExactIn", tokenIn, tokenOut, totalAmountIn, minTotalAmountOut, nPools)
   356  }
   357  
   358  // SmartSwapExactIn is a paid mutator transaction binding the contract method 0x21b0eb85.
   359  //
   360  // Solidity: function smartSwapExactIn(address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut, uint256 nPools) payable returns(uint256 totalAmountOut)
   361  func (_HbalancerExchange *HbalancerExchangeSession) SmartSwapExactIn(tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int, nPools *big.Int) (*types.Transaction, error) {
   362  	return _HbalancerExchange.Contract.SmartSwapExactIn(&_HbalancerExchange.TransactOpts, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut, nPools)
   363  }
   364  
   365  // SmartSwapExactIn is a paid mutator transaction binding the contract method 0x21b0eb85.
   366  //
   367  // Solidity: function smartSwapExactIn(address tokenIn, address tokenOut, uint256 totalAmountIn, uint256 minTotalAmountOut, uint256 nPools) payable returns(uint256 totalAmountOut)
   368  func (_HbalancerExchange *HbalancerExchangeTransactorSession) SmartSwapExactIn(tokenIn common.Address, tokenOut common.Address, totalAmountIn *big.Int, minTotalAmountOut *big.Int, nPools *big.Int) (*types.Transaction, error) {
   369  	return _HbalancerExchange.Contract.SmartSwapExactIn(&_HbalancerExchange.TransactOpts, tokenIn, tokenOut, totalAmountIn, minTotalAmountOut, nPools)
   370  }
   371  
   372  // SmartSwapExactOut is a paid mutator transaction binding the contract method 0xb40f39ee.
   373  //
   374  // Solidity: function smartSwapExactOut(address tokenIn, address tokenOut, uint256 totalAmountOut, uint256 maxTotalAmountIn, uint256 nPools) payable returns(uint256 totalAmountIn)
   375  func (_HbalancerExchange *HbalancerExchangeTransactor) SmartSwapExactOut(opts *bind.TransactOpts, tokenIn common.Address, tokenOut common.Address, totalAmountOut *big.Int, maxTotalAmountIn *big.Int, nPools *big.Int) (*types.Transaction, error) {
   376  	return _HbalancerExchange.contract.Transact(opts, "smartSwapExactOut", tokenIn, tokenOut, totalAmountOut, maxTotalAmountIn, nPools)
   377  }
   378  
   379  // SmartSwapExactOut is a paid mutator transaction binding the contract method 0xb40f39ee.
   380  //
   381  // Solidity: function smartSwapExactOut(address tokenIn, address tokenOut, uint256 totalAmountOut, uint256 maxTotalAmountIn, uint256 nPools) payable returns(uint256 totalAmountIn)
   382  func (_HbalancerExchange *HbalancerExchangeSession) SmartSwapExactOut(tokenIn common.Address, tokenOut common.Address, totalAmountOut *big.Int, maxTotalAmountIn *big.Int, nPools *big.Int) (*types.Transaction, error) {
   383  	return _HbalancerExchange.Contract.SmartSwapExactOut(&_HbalancerExchange.TransactOpts, tokenIn, tokenOut, totalAmountOut, maxTotalAmountIn, nPools)
   384  }
   385  
   386  // SmartSwapExactOut is a paid mutator transaction binding the contract method 0xb40f39ee.
   387  //
   388  // Solidity: function smartSwapExactOut(address tokenIn, address tokenOut, uint256 totalAmountOut, uint256 maxTotalAmountIn, uint256 nPools) payable returns(uint256 totalAmountIn)
   389  func (_HbalancerExchange *HbalancerExchangeTransactorSession) SmartSwapExactOut(tokenIn common.Address, tokenOut common.Address, totalAmountOut *big.Int, maxTotalAmountIn *big.Int, nPools *big.Int) (*types.Transaction, error) {
   390  	return _HbalancerExchange.Contract.SmartSwapExactOut(&_HbalancerExchange.TransactOpts, tokenIn, tokenOut, totalAmountOut, maxTotalAmountIn, nPools)
   391  }