func (_Yvault *YvaultSession) Harvest(reserve common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.Harvest(&_Yvault.TransactOpts, reserve, amount)
}
Harvest is a paid mutator transaction binding the contract method 0x018ee9b7.

Solidity: function harvest(address reserve, uint256 amount) returns()
package yvault
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 YvaultABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"available\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"balance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controller\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"depositAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"earn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"harvest\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"max\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"min\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"setController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_min\",\"type\":\"uint256\"}],\"name\":\"setMin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
type Yvault struct {
	YvaultCaller      
	YvaultTransactor  
	YvaultFilterer    
}
type YvaultCaller struct {
	contract *bind.BoundContract  
}
type YvaultTransactor struct {
	contract *bind.BoundContract  
}
type YvaultFilterer struct {
	contract *bind.BoundContract  
}
type YvaultSession struct {
	Contract     *Yvault            
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type YvaultCallerSession struct {
	Contract *YvaultCaller  
	CallOpts bind.CallOpts  
}
type YvaultTransactorSession struct {
	Contract     *YvaultTransactor  
	TransactOpts bind.TransactOpts  
}
type YvaultRaw struct {
	Contract *Yvault  
}
type YvaultCallerRaw struct {
	Contract *YvaultCaller  
}
type YvaultTransactorRaw struct {
	Contract *YvaultTransactor  
}
func NewYvault(address common.Address, backend bind.ContractBackend) (*Yvault, error) {
	contract, err := bindYvault(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Yvault{YvaultCaller: YvaultCaller{contract: contract}, YvaultTransactor: YvaultTransactor{contract: contract}, YvaultFilterer: YvaultFilterer{contract: contract}}, nil
}
func NewYvaultCaller(address common.Address, caller bind.ContractCaller) (*YvaultCaller, error) {
	contract, err := bindYvault(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &YvaultCaller{contract: contract}, nil
}
func NewYvaultTransactor(address common.Address, transactor bind.ContractTransactor) (*YvaultTransactor, error) {
	contract, err := bindYvault(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &YvaultTransactor{contract: contract}, nil
}
func NewYvaultFilterer(address common.Address, filterer bind.ContractFilterer) (*YvaultFilterer, error) {
	contract, err := bindYvault(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &YvaultFilterer{contract: contract}, nil
}
func bindYvault(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(YvaultABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Yvault *YvaultRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Yvault.Contract.YvaultCaller.contract.Call(opts, result, method, params...)
}
func (_Yvault *YvaultRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yvault.Contract.YvaultTransactor.contract.Transfer(opts)
}
func (_Yvault *YvaultRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Yvault.Contract.YvaultTransactor.contract.Transact(opts, method, params...)
}
func (_Yvault *YvaultCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Yvault.Contract.contract.Call(opts, result, method, params...)
}
func (_Yvault *YvaultTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yvault.Contract.contract.Transfer(opts)
}
func (_Yvault *YvaultTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Yvault.Contract.contract.Transact(opts, method, params...)
}
func (_Yvault *YvaultCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "allowance", owner, spender)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _Yvault.Contract.Allowance(&_Yvault.CallOpts, owner, spender)
}
func (_Yvault *YvaultCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _Yvault.Contract.Allowance(&_Yvault.CallOpts, owner, spender)
}
func (_Yvault *YvaultCaller) Available(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "available")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) Available() (*big.Int, error) {
	return _Yvault.Contract.Available(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Available() (*big.Int, error) {
	return _Yvault.Contract.Available(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Balance(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "balance")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) Balance() (*big.Int, error) {
	return _Yvault.Contract.Balance(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Balance() (*big.Int, error) {
	return _Yvault.Contract.Balance(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "balanceOf", account)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _Yvault.Contract.BalanceOf(&_Yvault.CallOpts, account)
}
func (_Yvault *YvaultCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _Yvault.Contract.BalanceOf(&_Yvault.CallOpts, account)
}
func (_Yvault *YvaultCaller) Controller(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "controller")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Yvault *YvaultSession) Controller() (common.Address, error) {
	return _Yvault.Contract.Controller(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Controller() (common.Address, error) {
	return _Yvault.Contract.Controller(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "decimals")
	if err != nil {
		return *new(uint8), err
	}
	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
	return out0, err
}
func (_Yvault *YvaultSession) Decimals() (uint8, error) {
	return _Yvault.Contract.Decimals(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Decimals() (uint8, error) {
	return _Yvault.Contract.Decimals(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) GetPricePerFullShare(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "getPricePerFullShare")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) GetPricePerFullShare() (*big.Int, error) {
	return _Yvault.Contract.GetPricePerFullShare(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) GetPricePerFullShare() (*big.Int, error) {
	return _Yvault.Contract.GetPricePerFullShare(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Governance(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "governance")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Yvault *YvaultSession) Governance() (common.Address, error) {
	return _Yvault.Contract.Governance(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Governance() (common.Address, error) {
	return _Yvault.Contract.Governance(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Max(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "max")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) Max() (*big.Int, error) {
	return _Yvault.Contract.Max(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Max() (*big.Int, error) {
	return _Yvault.Contract.Max(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Min(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "min")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) Min() (*big.Int, error) {
	return _Yvault.Contract.Min(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Min() (*big.Int, error) {
	return _Yvault.Contract.Min(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Name(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "name")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_Yvault *YvaultSession) Name() (string, error) {
	return _Yvault.Contract.Name(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Name() (string, error) {
	return _Yvault.Contract.Name(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Symbol(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "symbol")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_Yvault *YvaultSession) Symbol() (string, error) {
	return _Yvault.Contract.Symbol(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Symbol() (string, error) {
	return _Yvault.Contract.Symbol(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) Token(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "token")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Yvault *YvaultSession) Token() (common.Address, error) {
	return _Yvault.Contract.Token(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) Token() (common.Address, error) {
	return _Yvault.Contract.Token(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yvault.contract.Call(opts, &out, "totalSupply")
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Yvault *YvaultSession) TotalSupply() (*big.Int, error) {
	return _Yvault.Contract.TotalSupply(&_Yvault.CallOpts)
}
func (_Yvault *YvaultCallerSession) TotalSupply() (*big.Int, error) {
	return _Yvault.Contract.TotalSupply(&_Yvault.CallOpts)
}
func (_Yvault *YvaultTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "approve", spender, amount)
}
func (_Yvault *YvaultSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.Approve(&_Yvault.TransactOpts, spender, amount)
}
func (_Yvault *YvaultTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.Approve(&_Yvault.TransactOpts, spender, amount)
}
func (_Yvault *YvaultTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
}
func (_Yvault *YvaultSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.DecreaseAllowance(&_Yvault.TransactOpts, spender, subtractedValue)
}
func (_Yvault *YvaultTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.DecreaseAllowance(&_Yvault.TransactOpts, spender, subtractedValue)
}
func (_Yvault *YvaultTransactor) Deposit(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "deposit", _amount)
}
func (_Yvault *YvaultSession) Deposit(_amount *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.Deposit(&_Yvault.TransactOpts, _amount)
}
func (_Yvault *YvaultTransactorSession) Deposit(_amount *big.Int) (*types.Transaction, error) {
	return _Yvault.Contract.Deposit(&_Yvault.TransactOpts, _amount)
}
func (_Yvault *YvaultTransactor) DepositAll(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "depositAll")
}
func (_Yvault *YvaultSession) DepositAll() (*types.Transaction, error) {
	return _Yvault.Contract.DepositAll(&_Yvault.TransactOpts)
}
func (_Yvault *YvaultTransactorSession) DepositAll() (*types.Transaction, error) {
	return _Yvault.Contract.DepositAll(&_Yvault.TransactOpts)
}
func (_Yvault *YvaultTransactor) Earn(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "earn")
}
func (_Yvault *YvaultSession) Earn() (*types.Transaction, error) {
	return _Yvault.Contract.Earn(&_Yvault.TransactOpts)
}
func (_Yvault *YvaultTransactorSession) Earn() (*types.Transaction, error) {
	return _Yvault.Contract.Earn(&_Yvault.TransactOpts)
}
func (_Yvault *YvaultTransactor) Harvest(opts *bind.TransactOpts, reserve common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yvault.contract.Transact(opts, "harvest", reserve, amount)
}