func (_Hctoken *HctokenTransactor) Redeem(opts *bind.TransactOpts, cToken common.Address, redeemTokens *big.Int) (*types.Transaction, error) {
	return _Hctoken.contract.Transact(opts, "redeem", cToken, redeemTokens)
}
Redeem is a paid mutator transaction binding the contract method 0x1e9a6950.

Solidity: function redeem(address cToken, uint256 redeemTokens) payable returns()
package hctoken
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 HctokenABI = "[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"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\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemTokens\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemAmount\",\"type\":\"uint256\"}],\"name\":\"redeemUnderlying\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"cToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"repayAmount\",\"type\":\"uint256\"}],\"name\":\"repayBorrowBehalf\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]"
type Hctoken struct {
	HctokenCaller      
	HctokenTransactor  
	HctokenFilterer    
}
type HctokenCaller struct {
	contract *bind.BoundContract  
}
type HctokenTransactor struct {
	contract *bind.BoundContract  
}
type HctokenFilterer struct {
	contract *bind.BoundContract  
}
type HctokenSession struct {
	Contract     *Hctoken           
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type HctokenCallerSession struct {
	Contract *HctokenCaller  
	CallOpts bind.CallOpts   
}
type HctokenTransactorSession struct {
	Contract     *HctokenTransactor  
	TransactOpts bind.TransactOpts   
}
type HctokenRaw struct {
	Contract *Hctoken  
}
type HctokenCallerRaw struct {
	Contract *HctokenCaller  
}
type HctokenTransactorRaw struct {
	Contract *HctokenTransactor  
}
func NewHctoken(address common.Address, backend bind.ContractBackend) (*Hctoken, error) {
	contract, err := bindHctoken(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Hctoken{HctokenCaller: HctokenCaller{contract: contract}, HctokenTransactor: HctokenTransactor{contract: contract}, HctokenFilterer: HctokenFilterer{contract: contract}}, nil
}
func NewHctokenCaller(address common.Address, caller bind.ContractCaller) (*HctokenCaller, error) {
	contract, err := bindHctoken(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &HctokenCaller{contract: contract}, nil
}
func NewHctokenTransactor(address common.Address, transactor bind.ContractTransactor) (*HctokenTransactor, error) {
	contract, err := bindHctoken(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &HctokenTransactor{contract: contract}, nil
}
func NewHctokenFilterer(address common.Address, filterer bind.ContractFilterer) (*HctokenFilterer, error) {
	contract, err := bindHctoken(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &HctokenFilterer{contract: contract}, nil
}
func bindHctoken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(HctokenABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Hctoken *HctokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Hctoken.Contract.HctokenCaller.contract.Call(opts, result, method, params...)
}
func (_Hctoken *HctokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hctoken.Contract.HctokenTransactor.contract.Transfer(opts)
}
func (_Hctoken *HctokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Hctoken.Contract.HctokenTransactor.contract.Transact(opts, method, params...)
}
func (_Hctoken *HctokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Hctoken.Contract.contract.Call(opts, result, method, params...)
}
func (_Hctoken *HctokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hctoken.Contract.contract.Transfer(opts)
}
func (_Hctoken *HctokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Hctoken.Contract.contract.Transact(opts, method, params...)
}
func (_Hctoken *HctokenTransactor) Mint(opts *bind.TransactOpts, cToken common.Address, mintAmount *big.Int) (*types.Transaction, error) {
	return _Hctoken.contract.Transact(opts, "mint", cToken, mintAmount)
}
func (_Hctoken *HctokenSession) Mint(cToken common.Address, mintAmount *big.Int) (*types.Transaction, error) {
	return _Hctoken.Contract.Mint(&_Hctoken.TransactOpts, cToken, mintAmount)
}
func (_Hctoken *HctokenTransactorSession) Mint(cToken common.Address, mintAmount *big.Int) (*types.Transaction, error) {
	return _Hctoken.Contract.Mint(&_Hctoken.TransactOpts, cToken, mintAmount)
}
func (_Hctoken *HctokenTransactor) PostProcess(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Hctoken.contract.Transact(opts, "postProcess")
}
func (_Hctoken *HctokenSession) PostProcess() (*types.Transaction, error) {
	return _Hctoken.Contract.PostProcess(&_Hctoken.TransactOpts)
}
func (_Hctoken *HctokenTransactorSession) PostProcess() (*types.Transaction, error) {
	return _Hctoken.Contract.PostProcess(&_Hctoken.TransactOpts)
}