func (_Hcether *HcetherSession) RepayBorrowBehalf(amount *big.Int, borrower common.Address) (*types.Transaction, error) {
	return _Hcether.Contract.RepayBorrowBehalf(&_Hcether.TransactOpts, amount, borrower)
}
RepayBorrowBehalf is a paid mutator transaction binding the contract method 0xaa553b61.

Solidity: function repayBorrowBehalf(uint256 amount, address borrower) payable returns()
package hcether
import (
	"math/big"
	"strings"
	ethereum "github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/accounts/abi"
	"github.com/ethereum/go-ethereum/accounts/abi/bind"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/event"
)
var (
	_ = big.NewInt
	_ = strings.NewReader
	_ = ethereum.NotFound
	_ = bind.Bind
	_ = common.Big1
	_ = types.BloomLookup
	_ = event.NewSubscription
)
const HcetherABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"CETHER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"postProcess\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]"
type Hcether struct {
	HcetherCaller      
	HcetherTransactor  
	HcetherFilterer    
}
type HcetherCaller struct {
	contract *bind.BoundContract  
}
type HcetherTransactor struct {
	contract *bind.BoundContract  
}
type HcetherFilterer struct {
	contract *bind.BoundContract  
}
type HcetherSession struct {
	Contract     *Hcether           
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type HcetherCallerSession struct {
	Contract *HcetherCaller  
	CallOpts bind.CallOpts   
}
type HcetherTransactorSession struct {
	Contract     *HcetherTransactor  
	TransactOpts bind.TransactOpts   
}
type HcetherRaw struct {
	Contract *Hcether  
}
type HcetherCallerRaw struct {
	Contract *HcetherCaller  
}
type HcetherTransactorRaw struct {
	Contract *HcetherTransactor  
}
func NewHcether(address common.Address, backend bind.ContractBackend) (*Hcether, error) {
	contract, err := bindHcether(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Hcether{HcetherCaller: HcetherCaller{contract: contract}, HcetherTransactor: HcetherTransactor{contract: contract}, HcetherFilterer: HcetherFilterer{contract: contract}}, nil
}
func NewHcetherCaller(address common.Address, caller bind.ContractCaller) (*HcetherCaller, error) {
	contract, err := bindHcether(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &HcetherCaller{contract: contract}, nil
}
func NewHcetherTransactor(address common.Address, transactor bind.ContractTransactor) (*HcetherTransactor, error) {
	contract, err := bindHcether(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &HcetherTransactor{contract: contract}, nil
}
func NewHcetherFilterer(address common.Address, filterer bind.ContractFilterer) (*HcetherFilterer, error) {
	contract, err := bindHcether(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &HcetherFilterer{contract: contract}, nil
}
func bindHcether(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(HcetherABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Hcether *HcetherRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Hcether.Contract.HcetherCaller.contract.Call(opts, result, method, params...)
}
func (_Hcether *HcetherRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hcether.Contract.HcetherTransactor.contract.Transfer(opts)
}
func (_Hcether *HcetherRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Hcether.Contract.HcetherTransactor.contract.Transact(opts, method, params...)
}
func (_Hcether *HcetherCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Hcether.Contract.contract.Call(opts, result, method, params...)
}
func (_Hcether *HcetherTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hcether.Contract.contract.Transfer(opts)
}
func (_Hcether *HcetherTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Hcether.Contract.contract.Transact(opts, method, params...)
}
func (_Hcether *HcetherCaller) CETHER(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Hcether.contract.Call(opts, &out, "CETHER")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Hcether *HcetherSession) CETHER() (common.Address, error) {
	return _Hcether.Contract.CETHER(&_Hcether.CallOpts)
}
func (_Hcether *HcetherCallerSession) CETHER() (common.Address, error) {
	return _Hcether.Contract.CETHER(&_Hcether.CallOpts)
}
func (_Hcether *HcetherTransactor) Mint(opts *bind.TransactOpts, value *big.Int) (*types.Transaction, error) {
	return _Hcether.contract.Transact(opts, "mint", value)
}
func (_Hcether *HcetherSession) Mint(value *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.Mint(&_Hcether.TransactOpts, value)
}
func (_Hcether *HcetherTransactorSession) Mint(value *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.Mint(&_Hcether.TransactOpts, value)
}
func (_Hcether *HcetherTransactor) PostProcess(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hcether.contract.Transact(opts, "postProcess")
}
func (_Hcether *HcetherSession) PostProcess() (*types.Transaction, error) {
	return _Hcether.Contract.PostProcess(&_Hcether.TransactOpts)
}
func (_Hcether *HcetherTransactorSession) PostProcess() (*types.Transaction, error) {
	return _Hcether.Contract.PostProcess(&_Hcether.TransactOpts)
}
func (_Hcether *HcetherTransactor) Redeem(opts *bind.TransactOpts, redeemTokens *big.Int) (*types.Transaction, error) {
	return _Hcether.contract.Transact(opts, "redeem", redeemTokens)
}
func (_Hcether *HcetherSession) Redeem(redeemTokens *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.Redeem(&_Hcether.TransactOpts, redeemTokens)
}
func (_Hcether *HcetherTransactorSession) Redeem(redeemTokens *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.Redeem(&_Hcether.TransactOpts, redeemTokens)
}
func (_Hcether *HcetherTransactor) RedeemUnderlying(opts *bind.TransactOpts, redeemAmount *big.Int) (*types.Transaction, error) {
	return _Hcether.contract.Transact(opts, "redeemUnderlying", redeemAmount)
}
func (_Hcether *HcetherSession) RedeemUnderlying(redeemAmount *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.RedeemUnderlying(&_Hcether.TransactOpts, redeemAmount)
}
func (_Hcether *HcetherTransactorSession) RedeemUnderlying(redeemAmount *big.Int) (*types.Transaction, error) {
	return _Hcether.Contract.RedeemUnderlying(&_Hcether.TransactOpts, redeemAmount)
}
func (_Hcether *HcetherTransactor) RepayBorrowBehalf(opts *bind.TransactOpts, amount *big.Int, borrower common.Address) (*types.Transaction, error) {
	return _Hcether.contract.Transact(opts, "repayBorrowBehalf", amount, borrower)
}