func NewHaave(address common.Address, backend bind.ContractBackend) (*Haave, error) {
	contract, err := bindHaave(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Haave{HaaveCaller: HaaveCaller{contract: contract}, HaaveTransactor: HaaveTransactor{contract: contract}, HaaveFilterer: HaaveFilterer{contract: contract}}, nil
}
NewHaave creates a new instance of Haave, bound to a specific deployed contract.
package haave
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 HaaveABI = "[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
type Haave struct {
	HaaveCaller      
	HaaveTransactor  
	HaaveFilterer    
}
type HaaveCaller struct {
	contract *bind.BoundContract  
}
type HaaveTransactor struct {
	contract *bind.BoundContract  
}
type HaaveFilterer struct {
	contract *bind.BoundContract  
}
type HaaveSession struct {
	Contract     *Haave             
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type HaaveCallerSession struct {
	Contract *HaaveCaller   
	CallOpts bind.CallOpts  
}
type HaaveTransactorSession struct {
	Contract     *HaaveTransactor   
	TransactOpts bind.TransactOpts  
}
type HaaveRaw struct {
	Contract *Haave  
}
type HaaveCallerRaw struct {
	Contract *HaaveCaller  
}
type HaaveTransactorRaw struct {
	Contract *HaaveTransactor  
}