func (_ShadowToken *ShadowTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
	var out []interface{}
	err := _ShadowToken.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
}
TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.

Solidity: function totalSupply() view returns(uint256)
package contract
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 ShadowTokenABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"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\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Pause\",\"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\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpause\",\"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\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"coToken\",\"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\":\"decreaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
var ShadowTokenBin = "0x60806040526003805460ff60a01b191690553480156200001e57600080fd5b506040516200108138038062001081833981810160405260a08110156200004457600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200007057600080fd5b9083019060208201858111156200008657600080fd5b8251640100000000811182820188101715620000a157600080fd5b82525081516020918201929091019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012257600080fd5b9083019060208201858111156200013857600080fd5b82516401000000008111828201881017156200015357600080fd5b82525081516020918201929091019080838360005b838110156200018257818101518382015260200162000168565b50505050905090810190601f168015620001b05780820380516001836020036101000a031916815260200191505b5060405260209081015160038054336001600160a01b0319918216179091556005805482166001600160a01b038b8116919091179091556004805490921690891617905585519093506200020b925060069186019062000270565b5081516200022190600790602085019062000270565b506008805460ff191660ff83161790556040516001600160a01b038616907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a2505050505062000315565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b357805160ff1916838001178555620002e3565b82800160010185558215620002e3579182015b82811115620002e3578251825591602001919060010190620002c6565b50620002f1929150620002f5565b5090565b6200031291905b80821115620002f15760008155600101620002fc565b90565b610d5c80620003256000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806366188463116100ad57806395d89b411161007157806395d89b4114610345578063a9059cbb1461034d578063d73dd62314610379578063dd62ed3e146103a5578063f2fde38b146103d35761012c565b806366188463146102db57806370a08231146103075780637f9864f71461032d5780638456cb59146103355780638da5cb5b1461033d5761012c565b8063313ce567116100f4578063313ce567146102625780633f4ba83a1461028057806340c10f191461028a57806342966c68146102b65780635c975abb146102d35761012c565b806306fdde031461013157806307546172146101ae578063095ea7b3146101d257806318160ddd1461021257806323b872dd1461022c575b600080fd5b6101396103f9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b6610487565b604080516001600160a01b039092168252519081900360200190f35b6101fe600480360360408110156101e857600080fd5b506001600160a01b038135169060200135610496565b604080519115158252519081900360200190f35b61021a6104fc565b60408051918252519081900360200190f35b6101fe6004803603606081101561024257600080fd5b506001600160a01b03813581169160208101359091169060400135610502565b61026a610665565b6040805160ff9092168252519081900360200190f35b61028861066e565b005b6101fe600480360360408110156102a057600080fd5b506001600160a01b0381351690602001356106d3565b6101fe600480360360208110156102cc57600080fd5b5035610804565b6101fe6108cb565b6101fe600480360360408110156102f157600080fd5b506001600160a01b0381351690602001356108db565b61021a6004803603602081101561031d57600080fd5b50356001600160a01b03166109cb565b6101b66109e6565b6102886109f5565b6101b6610a61565b610139610a70565b6101fe6004803603604081101561036357600080fd5b506001600160a01b038135169060200135610acb565b6101fe6004803603604081101561038f57600080fd5b506001600160a01b038135169060200135610b98565b61021a600480360360408110156103bb57600080fd5b506001600160a01b0381358116916020013516610c31565b610288600480360360208110156103e957600080fd5b50356001600160a01b0316610c5c565b6006805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561047f5780601f106104545761010080835404028352916020019161047f565b820191906000526020600020905b81548152906001019060200180831161046257829003601f168201915b505050505081565b6005546001600160a01b031681565b3360008181526002602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60015490565b60006001600160a01b03831661051757600080fd5b6001600160a01b03841660009081526020819052604090205482111561053c57600080fd5b6001600160a01b038416600090815260026020908152604080832033845290915290205482111561056c57600080fd5b6001600160a01b038416600090815260208190526040902054610595908363ffffffff610ce216565b6001600160a01b0380861660009081526020819052604080822093909355908516815220546105ca908363ffffffff610cf416565b6001600160a01b0380851660009081526020818152604080832094909455918716815260028252828120338252909152205461060c908363ffffffff610ce216565b6001600160a01b0380861660008181526002602090815260408083203384528252918290209490945580518681529051928716939192600080516020610d08833981519152929181900390910190a35060019392505050565b60085460ff1681565b6003546001600160a01b0316331461068557600080fd5b600354600160a01b900460ff1661069b57600080fd5b6003805460ff60a01b191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6005546000906001600160a01b03163314610726576040805162461bcd60e51b815260206004820152600e60248201526d3737ba103a34329036b4b73a32b960911b604482015290519081900360640190fd5b600354600160a01b900460ff161561073d57600080fd5b600154610750908363ffffffff610cf416565b6001556001600160a01b03831660009081526020819052604090205461077c908363ffffffff610cf416565b6001600160a01b03841660008181526020818152604091829020939093558051858152905191927f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe92918290030190a26040805183815290516001600160a01b03851691600091600080516020610d088339815191529181900360200190a350600192915050565b3360009081526020819052604081205482111561082057600080fd5b600154610833908363ffffffff610ce216565b60015533600090815260208190526040902054610856908363ffffffff610ce216565b3360008181526020818152604091829020939093558051858152905191927f696de425f79f4a40bc6d2122ca50507f0efbeabbff86a84871b7196ab8ea8df792918290030190a26040805183815290516000913391600080516020610d088339815191529181900360200190a3506001919050565b600354600160a01b900460ff1681565b3360009081526002602090815260408083206001600160a01b038616845290915281205480831115610930573360009081526002602090815260408083206001600160a01b0388168452909152812055610965565b610940818463ffffffff610ce216565b3360009081526002602090815260408083206001600160a01b03891684529091529020555b3360008181526002602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6001600160a01b031660009081526020819052604090205490565b6004546001600160a01b031681565b6003546001600160a01b03163314610a0c57600080fd5b600354600160a01b900460ff1615610a2357600080fd5b6003805460ff60a01b1916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6003546001600160a01b031681565b6007805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561047f5780601f106104545761010080835404028352916020019161047f565b60006001600160a01b038316610ae057600080fd5b33600090815260208190526040902054821115610afc57600080fd5b33600090815260208190526040902054610b1c908363ffffffff610ce216565b33600090815260208190526040808220929092556001600160a01b03851681522054610b4e908363ffffffff610cf416565b6001600160a01b03841660008181526020818152604091829020939093558051858152905191923392600080516020610d088339815191529281900390910190a350600192915050565b3360009081526002602090815260408083206001600160a01b0386168452909152812054610bcc908363ffffffff610cf416565b3360008181526002602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6003546001600160a01b03163314610c7357600080fd5b6001600160a01b038116610c8657600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115610cee57fe5b50900390565b81810182811015610d0157fe5b9291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158201516428878d48881d042bc960bba7953208f63aa81f6a482cd8527538a45cc0264736f6c63430005110032"
func DeployShadowToken(auth *bind.TransactOpts, backend bind.ContractBackend, _minter common.Address, _coToken common.Address, _name string, _symbol string, _decimals uint8) (common.Address, *types.Transaction, *ShadowToken, error) {
	parsed, err := abi.JSON(strings.NewReader(ShadowTokenABI))
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ShadowTokenBin), backend, _minter, _coToken, _name, _symbol, _decimals)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &ShadowToken{ShadowTokenCaller: ShadowTokenCaller{contract: contract}, ShadowTokenTransactor: ShadowTokenTransactor{contract: contract}, ShadowTokenFilterer: ShadowTokenFilterer{contract: contract}}, nil
}
type ShadowToken struct {
	ShadowTokenCaller      
	ShadowTokenTransactor  
	ShadowTokenFilterer    
}
type ShadowTokenCaller struct {
	contract *bind.BoundContract  
}
type ShadowTokenTransactor struct {
	contract *bind.BoundContract  
}
type ShadowTokenFilterer struct {
	contract *bind.BoundContract  
}
type ShadowTokenSession struct {
	Contract     *ShadowToken       
	CallOpts     bind.CallOpts      
	TransactOpts bind.TransactOpts  
}
type ShadowTokenCallerSession struct {
	Contract *ShadowTokenCaller  
	CallOpts bind.CallOpts       
}
type ShadowTokenTransactorSession struct {
	Contract     *ShadowTokenTransactor  
	TransactOpts bind.TransactOpts       
}
type ShadowTokenRaw struct {
	Contract *ShadowToken  
}
type ShadowTokenCallerRaw struct {
	Contract *ShadowTokenCaller  
}
type ShadowTokenTransactorRaw struct {
	Contract *ShadowTokenTransactor  
}
func NewShadowToken(address common.Address, backend bind.ContractBackend) (*ShadowToken, error) {
	contract, err := bindShadowToken(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &ShadowToken{ShadowTokenCaller: ShadowTokenCaller{contract: contract}, ShadowTokenTransactor: ShadowTokenTransactor{contract: contract}, ShadowTokenFilterer: ShadowTokenFilterer{contract: contract}}, nil
}
func NewShadowTokenCaller(address common.Address, caller bind.ContractCaller) (*ShadowTokenCaller, error) {
	contract, err := bindShadowToken(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &ShadowTokenCaller{contract: contract}, nil
}
func NewShadowTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*ShadowTokenTransactor, error) {
	contract, err := bindShadowToken(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &ShadowTokenTransactor{contract: contract}, nil
}
func NewShadowTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*ShadowTokenFilterer, error) {
	contract, err := bindShadowToken(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &ShadowTokenFilterer{contract: contract}, nil
}
func bindShadowToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := abi.JSON(strings.NewReader(ShadowTokenABI))
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
}
func (_ShadowToken *ShadowTokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _ShadowToken.Contract.ShadowTokenCaller.contract.Call(opts, result, method, params...)
}
func (_ShadowToken *ShadowTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _ShadowToken.Contract.ShadowTokenTransactor.contract.Transfer(opts)
}
func (_ShadowToken *ShadowTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _ShadowToken.Contract.ShadowTokenTransactor.contract.Transact(opts, method, params...)
}
func (_ShadowToken *ShadowTokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _ShadowToken.Contract.contract.Call(opts, result, method, params...)
}
func (_ShadowToken *ShadowTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _ShadowToken.Contract.contract.Transfer(opts)
}
func (_ShadowToken *ShadowTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _ShadowToken.Contract.contract.Transact(opts, method, params...)
}
func (_ShadowToken *ShadowTokenCaller) Allowance(opts *bind.CallOpts, _owner common.Address, _spender common.Address) (*big.Int, error) {
	var out []interface{}
	err := _ShadowToken.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 (_ShadowToken *ShadowTokenSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
	return _ShadowToken.Contract.Allowance(&_ShadowToken.CallOpts, _owner, _spender)
}
func (_ShadowToken *ShadowTokenCallerSession) Allowance(_owner common.Address, _spender common.Address) (*big.Int, error) {
	return _ShadowToken.Contract.Allowance(&_ShadowToken.CallOpts, _owner, _spender)
}
func (_ShadowToken *ShadowTokenCaller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) {
	var out []interface{}
	err := _ShadowToken.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 (_ShadowToken *ShadowTokenSession) BalanceOf(_owner common.Address) (*big.Int, error) {
	return _ShadowToken.Contract.BalanceOf(&_ShadowToken.CallOpts, _owner)
}
func (_ShadowToken *ShadowTokenCallerSession) BalanceOf(_owner common.Address) (*big.Int, error) {
	return _ShadowToken.Contract.BalanceOf(&_ShadowToken.CallOpts, _owner)
}
func (_ShadowToken *ShadowTokenCaller) CoToken(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "coToken")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) CoToken() (common.Address, error) {
	return _ShadowToken.Contract.CoToken(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) CoToken() (common.Address, error) {
	return _ShadowToken.Contract.CoToken(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "decimals")
	if err != nil {
		return *new(uint8), err
	}
	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Decimals() (uint8, error) {
	return _ShadowToken.Contract.Decimals(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Decimals() (uint8, error) {
	return _ShadowToken.Contract.Decimals(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Minter(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "minter")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Minter() (common.Address, error) {
	return _ShadowToken.Contract.Minter(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Minter() (common.Address, error) {
	return _ShadowToken.Contract.Minter(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Name(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "name")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Name() (string, error) {
	return _ShadowToken.Contract.Name(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Name() (string, error) {
	return _ShadowToken.Contract.Name(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "owner")
	if err != nil {
		return *new(common.Address), err
	}
	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Owner() (common.Address, error) {
	return _ShadowToken.Contract.Owner(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Owner() (common.Address, error) {
	return _ShadowToken.Contract.Owner(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Paused(opts *bind.CallOpts) (bool, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "paused")
	if err != nil {
		return *new(bool), err
	}
	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Paused() (bool, error) {
	return _ShadowToken.Contract.Paused(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Paused() (bool, error) {
	return _ShadowToken.Contract.Paused(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCaller) Symbol(opts *bind.CallOpts) (string, error) {
	var out []interface{}
	err := _ShadowToken.contract.Call(opts, &out, "symbol")
	if err != nil {
		return *new(string), err
	}
	out0 := *abi.ConvertType(out[0], new(string)).(*string)
	return out0, err
}
func (_ShadowToken *ShadowTokenSession) Symbol() (string, error) {
	return _ShadowToken.Contract.Symbol(&_ShadowToken.CallOpts)
}
func (_ShadowToken *ShadowTokenCallerSession) Symbol() (string, error) {
	return _ShadowToken.Contract.Symbol(&_ShadowToken.CallOpts)
}