func (_Yweth *YwethSession) Withdraw(_shares *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Withdraw(&_Yweth.TransactOpts, _shares)
}
Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d.

Solidity: function withdraw(uint256 _shares) returns()
package yweth
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 YwethABI = "[{\"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\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"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\":\"depositETH\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"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\"},{\"constant\":false,\"inputs\":[],\"name\":\"withdrawAllETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdrawETH\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
type Yweth struct {
	YwethCaller      
	YwethTransactor  
	YwethFilterer    
}
type YwethCaller struct {
	contract *bind.BoundContract  
}
type YwethTransactor struct {
	contract *bind.BoundContract  
}
type YwethFilterer struct {
	contract *bind.BoundContract  
}
type YwethSession struct {
	Contract     *Yweth             
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type YwethCallerSession struct {
	Contract *YwethCaller   
	CallOpts bind.CallOpts  
}
type YwethTransactorSession struct {
	Contract     *YwethTransactor   
	TransactOpts bind.TransactOpts  
}
type YwethRaw struct {
	Contract *Yweth  
}
type YwethCallerRaw struct {
	Contract *YwethCaller  
}
type YwethTransactorRaw struct {
	Contract *YwethTransactor  
}
func NewYweth(address common.Address, backend bind.ContractBackend) (*Yweth, error) {
	contract, err := bindYweth(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Yweth{YwethCaller: YwethCaller{contract: contract}, YwethTransactor: YwethTransactor{contract: contract}, YwethFilterer: YwethFilterer{contract: contract}}, nil
}
func NewYwethCaller(address common.Address, caller bind.ContractCaller) (*YwethCaller, error) {
	contract, err := bindYweth(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &YwethCaller{contract: contract}, nil
}
func NewYwethTransactor(address common.Address, transactor bind.ContractTransactor) (*YwethTransactor, error) {
	contract, err := bindYweth(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &YwethTransactor{contract: contract}, nil
}
func NewYwethFilterer(address common.Address, filterer bind.ContractFilterer) (*YwethFilterer, error) {
	contract, err := bindYweth(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &YwethFilterer{contract: contract}, nil
}
func bindYweth(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(YwethABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Yweth *YwethRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Yweth.Contract.YwethCaller.contract.Call(opts, result, method, params...)
}
func (_Yweth *YwethRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yweth.Contract.YwethTransactor.contract.Transfer(opts)
}
func (_Yweth *YwethRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Yweth.Contract.YwethTransactor.contract.Transact(opts, method, params...)
}
func (_Yweth *YwethCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Yweth.Contract.contract.Call(opts, result, method, params...)
}
func (_Yweth *YwethTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yweth.Contract.contract.Transfer(opts)
}
func (_Yweth *YwethTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Yweth.Contract.contract.Transact(opts, method, params...)
}
func (_Yweth *YwethCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _Yweth.Contract.Allowance(&_Yweth.CallOpts, owner, spender)
}
func (_Yweth *YwethCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
	return _Yweth.Contract.Allowance(&_Yweth.CallOpts, owner, spender)
}
func (_Yweth *YwethCaller) Available(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Available() (*big.Int, error) {
	return _Yweth.Contract.Available(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Available() (*big.Int, error) {
	return _Yweth.Contract.Available(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Balance(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Balance() (*big.Int, error) {
	return _Yweth.Contract.Balance(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Balance() (*big.Int, error) {
	return _Yweth.Contract.Balance(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _Yweth.Contract.BalanceOf(&_Yweth.CallOpts, account)
}
func (_Yweth *YwethCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
	return _Yweth.Contract.BalanceOf(&_Yweth.CallOpts, account)
}
func (_Yweth *YwethCaller) Controller(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Controller() (common.Address, error) {
	return _Yweth.Contract.Controller(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Controller() (common.Address, error) {
	return _Yweth.Contract.Controller(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
	var out []interface{}
	err := _Yweth.contract.Call(opts, &out, "decimals")
	if err != nil {
		return *new(uint8), err
	}
	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
	return out0, err
}
func (_Yweth *YwethSession) Decimals() (uint8, error) {
	return _Yweth.Contract.Decimals(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Decimals() (uint8, error) {
	return _Yweth.Contract.Decimals(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) GetPricePerFullShare(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) GetPricePerFullShare() (*big.Int, error) {
	return _Yweth.Contract.GetPricePerFullShare(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) GetPricePerFullShare() (*big.Int, error) {
	return _Yweth.Contract.GetPricePerFullShare(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Governance(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Governance() (common.Address, error) {
	return _Yweth.Contract.Governance(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Governance() (common.Address, error) {
	return _Yweth.Contract.Governance(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Max(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Max() (*big.Int, error) {
	return _Yweth.Contract.Max(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Max() (*big.Int, error) {
	return _Yweth.Contract.Max(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Min(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Min() (*big.Int, error) {
	return _Yweth.Contract.Min(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Min() (*big.Int, error) {
	return _Yweth.Contract.Min(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Name(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _Yweth.contract.Call(opts, &out, "name")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_Yweth *YwethSession) Name() (string, error) {
	return _Yweth.Contract.Name(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Name() (string, error) {
	return _Yweth.Contract.Name(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Symbol(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _Yweth.contract.Call(opts, &out, "symbol")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_Yweth *YwethSession) Symbol() (string, error) {
	return _Yweth.Contract.Symbol(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Symbol() (string, error) {
	return _Yweth.Contract.Symbol(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) Token(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) Token() (common.Address, error) {
	return _Yweth.Contract.Token(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) Token() (common.Address, error) {
	return _Yweth.Contract.Token(&_Yweth.CallOpts)
}
func (_Yweth *YwethCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _Yweth.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 (_Yweth *YwethSession) TotalSupply() (*big.Int, error) {
	return _Yweth.Contract.TotalSupply(&_Yweth.CallOpts)
}
func (_Yweth *YwethCallerSession) TotalSupply() (*big.Int, error) {
	return _Yweth.Contract.TotalSupply(&_Yweth.CallOpts)
}
func (_Yweth *YwethTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "approve", spender, amount)
}
func (_Yweth *YwethSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Approve(&_Yweth.TransactOpts, spender, amount)
}
func (_Yweth *YwethTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Approve(&_Yweth.TransactOpts, spender, amount)
}
func (_Yweth *YwethTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
}
func (_Yweth *YwethSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.DecreaseAllowance(&_Yweth.TransactOpts, spender, subtractedValue)
}
func (_Yweth *YwethTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.DecreaseAllowance(&_Yweth.TransactOpts, spender, subtractedValue)
}
func (_Yweth *YwethTransactor) Deposit(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "deposit", _amount)
}
func (_Yweth *YwethSession) Deposit(_amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Deposit(&_Yweth.TransactOpts, _amount)
}
func (_Yweth *YwethTransactorSession) Deposit(_amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Deposit(&_Yweth.TransactOpts, _amount)
}
func (_Yweth *YwethTransactor) DepositAll(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "depositAll")
}
func (_Yweth *YwethSession) DepositAll() (*types.Transaction, error) {
	return _Yweth.Contract.DepositAll(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactorSession) DepositAll() (*types.Transaction, error) {
	return _Yweth.Contract.DepositAll(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactor) DepositETH(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "depositETH")
}
func (_Yweth *YwethSession) DepositETH() (*types.Transaction, error) {
	return _Yweth.Contract.DepositETH(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactorSession) DepositETH() (*types.Transaction, error) {
	return _Yweth.Contract.DepositETH(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactor) Earn(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "earn")
}
func (_Yweth *YwethSession) Earn() (*types.Transaction, error) {
	return _Yweth.Contract.Earn(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactorSession) Earn() (*types.Transaction, error) {
	return _Yweth.Contract.Earn(&_Yweth.TransactOpts)
}
func (_Yweth *YwethTransactor) Harvest(opts *bind.TransactOpts, reserve common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "harvest", reserve, amount)
}
func (_Yweth *YwethSession) Harvest(reserve common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Harvest(&_Yweth.TransactOpts, reserve, amount)
}
func (_Yweth *YwethTransactorSession) Harvest(reserve common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Harvest(&_Yweth.TransactOpts, reserve, amount)
}
func (_Yweth *YwethTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "increaseAllowance", spender, addedValue)
}
func (_Yweth *YwethSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.IncreaseAllowance(&_Yweth.TransactOpts, spender, addedValue)
}
func (_Yweth *YwethTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.IncreaseAllowance(&_Yweth.TransactOpts, spender, addedValue)
}
func (_Yweth *YwethTransactor) SetController(opts *bind.TransactOpts, _controller common.Address) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "setController", _controller)
}
func (_Yweth *YwethSession) SetController(_controller common.Address) (*types.Transaction, error) {
	return _Yweth.Contract.SetController(&_Yweth.TransactOpts, _controller)
}
func (_Yweth *YwethTransactorSession) SetController(_controller common.Address) (*types.Transaction, error) {
	return _Yweth.Contract.SetController(&_Yweth.TransactOpts, _controller)
}
func (_Yweth *YwethTransactor) SetGovernance(opts *bind.TransactOpts, _governance common.Address) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "setGovernance", _governance)
}
func (_Yweth *YwethSession) SetGovernance(_governance common.Address) (*types.Transaction, error) {
	return _Yweth.Contract.SetGovernance(&_Yweth.TransactOpts, _governance)
}
func (_Yweth *YwethTransactorSession) SetGovernance(_governance common.Address) (*types.Transaction, error) {
	return _Yweth.Contract.SetGovernance(&_Yweth.TransactOpts, _governance)
}
func (_Yweth *YwethTransactor) SetMin(opts *bind.TransactOpts, _min *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "setMin", _min)
}
func (_Yweth *YwethSession) SetMin(_min *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.SetMin(&_Yweth.TransactOpts, _min)
}
func (_Yweth *YwethTransactorSession) SetMin(_min *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.SetMin(&_Yweth.TransactOpts, _min)
}
func (_Yweth *YwethTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "transfer", recipient, amount)
}
func (_Yweth *YwethSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Transfer(&_Yweth.TransactOpts, recipient, amount)
}
func (_Yweth *YwethTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.Transfer(&_Yweth.TransactOpts, recipient, amount)
}
func (_Yweth *YwethTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "transferFrom", sender, recipient, amount)
}
func (_Yweth *YwethSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.TransferFrom(&_Yweth.TransactOpts, sender, recipient, amount)
}
func (_Yweth *YwethTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
	return _Yweth.Contract.TransferFrom(&_Yweth.TransactOpts, sender, recipient, amount)
}
func (_Yweth *YwethTransactor) Withdraw(opts *bind.TransactOpts, _shares *big.Int) (*types.Transaction, error) {
	return _Yweth.contract.Transact(opts, "withdraw", _shares)
}