func (_Rarity *RaritySession) Name() (string, error) {
	return _Rarity.Contract.Name(&_Rarity.CallOpts)
}
Name is a free data retrieval call binding the contract method 0x06fdde03.

Solidity: function name() view returns(string)
package rarity
import (
	"errors"
	"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 (
	_ = errors.New
	_ = big.NewInt
	_ = strings.NewReader
	_ = ethereum.NotFound
	_ = bind.Bind
	_ = common.Big1
	_ = types.BloomLookup
	_ = event.NewSubscription
)
var RarityMetaData = &bind.MetaData{
	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"summoner\",\"type\":\"uint256\"}],\"name\":\"leveled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"class\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"summoner\",\"type\":\"uint256\"}],\"name\":\"summoned\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_summoner\",\"type\":\"uint256\"}],\"name\":\"adventure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"adventurers_log\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"class\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"classes\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"level\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_summoner\",\"type\":\"uint256\"}],\"name\":\"level_up\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"next_summoner\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_summoner\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_xp\",\"type\":\"uint256\"}],\"name\":\"spend_xp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_class\",\"type\":\"uint256\"}],\"name\":\"summon\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_summoner\",\"type\":\"uint256\"}],\"name\":\"summoner\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_xp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_log\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_class\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_level\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_summoner\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"xp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"curent_level\",\"type\":\"uint256\"}],\"name\":\"xp_required\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"xp_to_next_level\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]",
}
var RarityABI = RarityMetaData.ABI
type Rarity struct {
	RarityCaller      
	RarityTransactor  
	RarityFilterer    
}
type RarityCaller struct {
	contract *bind.BoundContract  
}
type RarityTransactor struct {
	contract *bind.BoundContract  
}
type RarityFilterer struct {
	contract *bind.BoundContract  
}
type RaritySession struct {
	Contract     *Rarity            
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type RarityCallerSession struct {
	Contract *RarityCaller  
	CallOpts bind.CallOpts  
}
type RarityTransactorSession struct {
	Contract     *RarityTransactor  
	TransactOpts bind.TransactOpts  
}
type RarityRaw struct {
	Contract *Rarity  
}
type RarityCallerRaw struct {
	Contract *RarityCaller  
}
type RarityTransactorRaw struct {
	Contract *RarityTransactor  
}
func NewRarity(address common.Address, backend bind.ContractBackend) (*Rarity, error) {
	contract, err := bindRarity(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Rarity{RarityCaller: RarityCaller{contract: contract}, RarityTransactor: RarityTransactor{contract: contract}, RarityFilterer: RarityFilterer{contract: contract}}, nil
}
func NewRarityCaller(address common.Address, caller bind.ContractCaller) (*RarityCaller, error) {
	contract, err := bindRarity(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &RarityCaller{contract: contract}, nil
}
func NewRarityTransactor(address common.Address, transactor bind.ContractTransactor) (*RarityTransactor, error) {
	contract, err := bindRarity(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &RarityTransactor{contract: contract}, nil
}
func NewRarityFilterer(address common.Address, filterer bind.ContractFilterer) (*RarityFilterer, error) {
	contract, err := bindRarity(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &RarityFilterer{contract: contract}, nil
}
func bindRarity(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(RarityABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_Rarity *RarityRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Rarity.Contract.RarityCaller.contract.Call(opts, result, method, params...)
}
func (_Rarity *RarityRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Rarity.Contract.RarityTransactor.contract.Transfer(opts)
}
func (_Rarity *RarityRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Rarity.Contract.RarityTransactor.contract.Transact(opts, method, params...)
}
func (_Rarity *RarityCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Rarity.Contract.contract.Call(opts, result, method, params...)
}
func (_Rarity *RarityTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Rarity.Contract.contract.Transfer(opts)
}
func (_Rarity *RarityTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Rarity.Contract.contract.Transact(opts, method, params...)
}
func (_Rarity *RarityCaller) AdventurersLog(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "adventurers_log", arg0)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Rarity *RaritySession) AdventurersLog(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.AdventurersLog(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCallerSession) AdventurersLog(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.AdventurersLog(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "balanceOf", owner)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Rarity *RaritySession) BalanceOf(owner common.Address) (*big.Int, error) {
	return _Rarity.Contract.BalanceOf(&_Rarity.CallOpts, owner)
}
func (_Rarity *RarityCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
	return _Rarity.Contract.BalanceOf(&_Rarity.CallOpts, owner)
}
func (_Rarity *RarityCaller) Class(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "class", arg0)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Rarity *RaritySession) Class(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.Class(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCallerSession) Class(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.Class(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCaller) Classes(opts *bind.CallOpts, id *big.Int) (string, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "classes", id)
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_Rarity *RaritySession) Classes(id *big.Int) (string, error) {
	return _Rarity.Contract.Classes(&_Rarity.CallOpts, id)
}
func (_Rarity *RarityCallerSession) Classes(id *big.Int) (string, error) {
	return _Rarity.Contract.Classes(&_Rarity.CallOpts, id)
}
func (_Rarity *RarityCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "getApproved", tokenId)
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_Rarity *RaritySession) GetApproved(tokenId *big.Int) (common.Address, error) {
	return _Rarity.Contract.GetApproved(&_Rarity.CallOpts, tokenId)
}
func (_Rarity *RarityCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
	return _Rarity.Contract.GetApproved(&_Rarity.CallOpts, tokenId)
}
func (_Rarity *RarityCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
	if err != nil {
		return *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
	return out0, err
}
func (_Rarity *RaritySession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
	return _Rarity.Contract.IsApprovedForAll(&_Rarity.CallOpts, owner, operator)
}
func (_Rarity *RarityCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
	return _Rarity.Contract.IsApprovedForAll(&_Rarity.CallOpts, owner, operator)
}
func (_Rarity *RarityCaller) Level(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "level", arg0)
	if err != nil {
		return *new(*big.Int), err
	}
	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
	return out0, err
}
func (_Rarity *RaritySession) Level(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.Level(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCallerSession) Level(arg0 *big.Int) (*big.Int, error) {
	return _Rarity.Contract.Level(&_Rarity.CallOpts, arg0)
}
func (_Rarity *RarityCaller) Name(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _Rarity.contract.Call(opts, &out, "name")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}