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
}
NewHctoken creates a new instance of Hctoken, bound to a specific deployed contract.
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  
}