github.com/diadata-org/diadata@v1.4.593/config/nftContracts/erc721/erc721.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package erc721
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // ERC721ABI is the input ABI used to generate the binding from.
    30  const ERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_approved\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
    31  
    32  // ERC721 is an auto generated Go binding around an Ethereum contract.
    33  type ERC721 struct {
    34  	ERC721Caller     // Read-only binding to the contract
    35  	ERC721Transactor // Write-only binding to the contract
    36  	ERC721Filterer   // Log filterer for contract events
    37  }
    38  
    39  // ERC721Caller is an auto generated read-only Go binding around an Ethereum contract.
    40  type ERC721Caller struct {
    41  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    42  }
    43  
    44  // ERC721Transactor is an auto generated write-only Go binding around an Ethereum contract.
    45  type ERC721Transactor struct {
    46  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    47  }
    48  
    49  // ERC721Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    50  type ERC721Filterer struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // ERC721Session is an auto generated Go binding around an Ethereum contract,
    55  // with pre-set call and transact options.
    56  type ERC721Session struct {
    57  	Contract     *ERC721           // Generic contract binding to set the session for
    58  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    59  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    60  }
    61  
    62  // ERC721CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    63  // with pre-set call options.
    64  type ERC721CallerSession struct {
    65  	Contract *ERC721Caller // Generic contract caller binding to set the session for
    66  	CallOpts bind.CallOpts // Call options to use throughout this session
    67  }
    68  
    69  // ERC721TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    70  // with pre-set transact options.
    71  type ERC721TransactorSession struct {
    72  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
    73  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    74  }
    75  
    76  // ERC721Raw is an auto generated low-level Go binding around an Ethereum contract.
    77  type ERC721Raw struct {
    78  	Contract *ERC721 // Generic contract binding to access the raw methods on
    79  }
    80  
    81  // ERC721CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    82  type ERC721CallerRaw struct {
    83  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
    84  }
    85  
    86  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    87  type ERC721TransactorRaw struct {
    88  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
    89  }
    90  
    91  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
    92  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
    93  	contract, err := bindERC721(address, backend, backend, backend)
    94  	if err != nil {
    95  		return nil, err
    96  	}
    97  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
    98  }
    99  
   100  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
   101  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
   102  	contract, err := bindERC721(address, caller, nil, nil)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  	return &ERC721Caller{contract: contract}, nil
   107  }
   108  
   109  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
   110  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
   111  	contract, err := bindERC721(address, nil, transactor, nil)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &ERC721Transactor{contract: contract}, nil
   116  }
   117  
   118  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
   119  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
   120  	contract, err := bindERC721(address, nil, nil, filterer)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &ERC721Filterer{contract: contract}, nil
   125  }
   126  
   127  // bindERC721 binds a generic wrapper to an already deployed contract.
   128  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   129  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   134  }
   135  
   136  // Call invokes the (constant) contract method with params as input values and
   137  // sets the output to result. The result type might be a single field for simple
   138  // returns, a slice of interfaces for anonymous returns and a struct for named
   139  // returns.
   140  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   141  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
   142  }
   143  
   144  // Transfer initiates a plain transaction to move funds to the contract, calling
   145  // its default method if one is available.
   146  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   147  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
   148  }
   149  
   150  // Transact invokes the (paid) contract method with params as input values.
   151  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   152  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
   153  }
   154  
   155  // Call invokes the (constant) contract method with params as input values and
   156  // sets the output to result. The result type might be a single field for simple
   157  // returns, a slice of interfaces for anonymous returns and a struct for named
   158  // returns.
   159  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   160  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
   161  }
   162  
   163  // Transfer initiates a plain transaction to move funds to the contract, calling
   164  // its default method if one is available.
   165  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   166  	return _ERC721.Contract.contract.Transfer(opts)
   167  }
   168  
   169  // Transact invokes the (paid) contract method with params as input values.
   170  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   171  	return _ERC721.Contract.contract.Transact(opts, method, params...)
   172  }
   173  
   174  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   175  //
   176  // Solidity: function balanceOf(address _owner) view returns(uint256)
   177  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, _owner common.Address) (*big.Int, error) {
   178  	var out []interface{}
   179  	err := _ERC721.contract.Call(opts, &out, "balanceOf", _owner)
   180  
   181  	if err != nil {
   182  		return *new(*big.Int), err
   183  	}
   184  
   185  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   186  
   187  	return out0, err
   188  
   189  }
   190  
   191  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   192  //
   193  // Solidity: function balanceOf(address _owner) view returns(uint256)
   194  func (_ERC721 *ERC721Session) BalanceOf(_owner common.Address) (*big.Int, error) {
   195  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, _owner)
   196  }
   197  
   198  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   199  //
   200  // Solidity: function balanceOf(address _owner) view returns(uint256)
   201  func (_ERC721 *ERC721CallerSession) BalanceOf(_owner common.Address) (*big.Int, error) {
   202  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, _owner)
   203  }
   204  
   205  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   206  //
   207  // Solidity: function getApproved(uint256 _tokenId) view returns(address)
   208  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) {
   209  	var out []interface{}
   210  	err := _ERC721.contract.Call(opts, &out, "getApproved", _tokenId)
   211  
   212  	if err != nil {
   213  		return *new(common.Address), err
   214  	}
   215  
   216  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   217  
   218  	return out0, err
   219  
   220  }
   221  
   222  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   223  //
   224  // Solidity: function getApproved(uint256 _tokenId) view returns(address)
   225  func (_ERC721 *ERC721Session) GetApproved(_tokenId *big.Int) (common.Address, error) {
   226  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, _tokenId)
   227  }
   228  
   229  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   230  //
   231  // Solidity: function getApproved(uint256 _tokenId) view returns(address)
   232  func (_ERC721 *ERC721CallerSession) GetApproved(_tokenId *big.Int) (common.Address, error) {
   233  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, _tokenId)
   234  }
   235  
   236  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   237  //
   238  // Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool)
   239  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, _owner common.Address, _operator common.Address) (bool, error) {
   240  	var out []interface{}
   241  	err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", _owner, _operator)
   242  
   243  	if err != nil {
   244  		return *new(bool), err
   245  	}
   246  
   247  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   248  
   249  	return out0, err
   250  
   251  }
   252  
   253  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   254  //
   255  // Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool)
   256  func (_ERC721 *ERC721Session) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) {
   257  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, _owner, _operator)
   258  }
   259  
   260  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   261  //
   262  // Solidity: function isApprovedForAll(address _owner, address _operator) view returns(bool)
   263  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(_owner common.Address, _operator common.Address) (bool, error) {
   264  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, _owner, _operator)
   265  }
   266  
   267  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   268  //
   269  // Solidity: function ownerOf(uint256 _tokenId) view returns(address)
   270  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, _tokenId *big.Int) (common.Address, error) {
   271  	var out []interface{}
   272  	err := _ERC721.contract.Call(opts, &out, "ownerOf", _tokenId)
   273  
   274  	if err != nil {
   275  		return *new(common.Address), err
   276  	}
   277  
   278  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   279  
   280  	return out0, err
   281  
   282  }
   283  
   284  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   285  //
   286  // Solidity: function ownerOf(uint256 _tokenId) view returns(address)
   287  func (_ERC721 *ERC721Session) OwnerOf(_tokenId *big.Int) (common.Address, error) {
   288  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, _tokenId)
   289  }
   290  
   291  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   292  //
   293  // Solidity: function ownerOf(uint256 _tokenId) view returns(address)
   294  func (_ERC721 *ERC721CallerSession) OwnerOf(_tokenId *big.Int) (common.Address, error) {
   295  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, _tokenId)
   296  }
   297  
   298  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   299  //
   300  // Solidity: function approve(address _approved, uint256 _tokenId) payable returns()
   301  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, _approved common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   302  	return _ERC721.contract.Transact(opts, "approve", _approved, _tokenId)
   303  }
   304  
   305  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   306  //
   307  // Solidity: function approve(address _approved, uint256 _tokenId) payable returns()
   308  func (_ERC721 *ERC721Session) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   309  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, _approved, _tokenId)
   310  }
   311  
   312  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   313  //
   314  // Solidity: function approve(address _approved, uint256 _tokenId) payable returns()
   315  func (_ERC721 *ERC721TransactorSession) Approve(_approved common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   316  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, _approved, _tokenId)
   317  }
   318  
   319  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   320  //
   321  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   322  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   323  	return _ERC721.contract.Transact(opts, "safeTransferFrom", _from, _to, _tokenId)
   324  }
   325  
   326  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   327  //
   328  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   329  func (_ERC721 *ERC721Session) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   330  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, _from, _to, _tokenId)
   331  }
   332  
   333  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   334  //
   335  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   336  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   337  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, _from, _to, _tokenId)
   338  }
   339  
   340  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   341  //
   342  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns()
   343  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) {
   344  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", _from, _to, _tokenId, data)
   345  }
   346  
   347  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   348  //
   349  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns()
   350  func (_ERC721 *ERC721Session) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) {
   351  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, _from, _to, _tokenId, data)
   352  }
   353  
   354  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   355  //
   356  // Solidity: function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) payable returns()
   357  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(_from common.Address, _to common.Address, _tokenId *big.Int, data []byte) (*types.Transaction, error) {
   358  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, _from, _to, _tokenId, data)
   359  }
   360  
   361  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   362  //
   363  // Solidity: function setApprovalForAll(address _operator, bool _approved) returns()
   364  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, _operator common.Address, _approved bool) (*types.Transaction, error) {
   365  	return _ERC721.contract.Transact(opts, "setApprovalForAll", _operator, _approved)
   366  }
   367  
   368  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   369  //
   370  // Solidity: function setApprovalForAll(address _operator, bool _approved) returns()
   371  func (_ERC721 *ERC721Session) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) {
   372  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, _operator, _approved)
   373  }
   374  
   375  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   376  //
   377  // Solidity: function setApprovalForAll(address _operator, bool _approved) returns()
   378  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(_operator common.Address, _approved bool) (*types.Transaction, error) {
   379  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, _operator, _approved)
   380  }
   381  
   382  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   383  //
   384  // Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   385  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, _from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   386  	return _ERC721.contract.Transact(opts, "transferFrom", _from, _to, _tokenId)
   387  }
   388  
   389  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   390  //
   391  // Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   392  func (_ERC721 *ERC721Session) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   393  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, _from, _to, _tokenId)
   394  }
   395  
   396  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   397  //
   398  // Solidity: function transferFrom(address _from, address _to, uint256 _tokenId) payable returns()
   399  func (_ERC721 *ERC721TransactorSession) TransferFrom(_from common.Address, _to common.Address, _tokenId *big.Int) (*types.Transaction, error) {
   400  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, _from, _to, _tokenId)
   401  }
   402  
   403  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
   404  type ERC721ApprovalIterator struct {
   405  	Event *ERC721Approval // Event containing the contract specifics and raw log
   406  
   407  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   408  	event    string              // Event name to use for unpacking event data
   409  
   410  	logs chan types.Log        // Log channel receiving the found contract events
   411  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   412  	done bool                  // Whether the subscription completed delivering logs
   413  	fail error                 // Occurred error to stop iteration
   414  }
   415  
   416  // Next advances the iterator to the subsequent event, returning whether there
   417  // are any more events found. In case of a retrieval or parsing error, false is
   418  // returned and Error() can be queried for the exact failure.
   419  func (it *ERC721ApprovalIterator) Next() bool {
   420  	// If the iterator failed, stop iterating
   421  	if it.fail != nil {
   422  		return false
   423  	}
   424  	// If the iterator completed, deliver directly whatever's available
   425  	if it.done {
   426  		select {
   427  		case log := <-it.logs:
   428  			it.Event = new(ERC721Approval)
   429  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   430  				it.fail = err
   431  				return false
   432  			}
   433  			it.Event.Raw = log
   434  			return true
   435  
   436  		default:
   437  			return false
   438  		}
   439  	}
   440  	// Iterator still in progress, wait for either a data or an error event
   441  	select {
   442  	case log := <-it.logs:
   443  		it.Event = new(ERC721Approval)
   444  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   445  			it.fail = err
   446  			return false
   447  		}
   448  		it.Event.Raw = log
   449  		return true
   450  
   451  	case err := <-it.sub.Err():
   452  		it.done = true
   453  		it.fail = err
   454  		return it.Next()
   455  	}
   456  }
   457  
   458  // Error returns any retrieval or parsing error occurred during filtering.
   459  func (it *ERC721ApprovalIterator) Error() error {
   460  	return it.fail
   461  }
   462  
   463  // Close terminates the iteration process, releasing any pending underlying
   464  // resources.
   465  func (it *ERC721ApprovalIterator) Close() error {
   466  	it.sub.Unsubscribe()
   467  	return nil
   468  }
   469  
   470  // ERC721Approval represents a Approval event raised by the ERC721 contract.
   471  type ERC721Approval struct {
   472  	Owner    common.Address
   473  	Approved common.Address
   474  	TokenId  *big.Int
   475  	Raw      types.Log // Blockchain specific contextual infos
   476  }
   477  
   478  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   479  //
   480  // Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)
   481  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
   482  
   483  	var _ownerRule []interface{}
   484  	for _, _ownerItem := range _owner {
   485  		_ownerRule = append(_ownerRule, _ownerItem)
   486  	}
   487  	var _approvedRule []interface{}
   488  	for _, _approvedItem := range _approved {
   489  		_approvedRule = append(_approvedRule, _approvedItem)
   490  	}
   491  	var _tokenIdRule []interface{}
   492  	for _, _tokenIdItem := range _tokenId {
   493  		_tokenIdRule = append(_tokenIdRule, _tokenIdItem)
   494  	}
   495  
   496  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule)
   497  	if err != nil {
   498  		return nil, err
   499  	}
   500  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
   501  }
   502  
   503  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   504  //
   505  // Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)
   506  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, _owner []common.Address, _approved []common.Address, _tokenId []*big.Int) (event.Subscription, error) {
   507  
   508  	var _ownerRule []interface{}
   509  	for _, _ownerItem := range _owner {
   510  		_ownerRule = append(_ownerRule, _ownerItem)
   511  	}
   512  	var _approvedRule []interface{}
   513  	for _, _approvedItem := range _approved {
   514  		_approvedRule = append(_approvedRule, _approvedItem)
   515  	}
   516  	var _tokenIdRule []interface{}
   517  	for _, _tokenIdItem := range _tokenId {
   518  		_tokenIdRule = append(_tokenIdRule, _tokenIdItem)
   519  	}
   520  
   521  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", _ownerRule, _approvedRule, _tokenIdRule)
   522  	if err != nil {
   523  		return nil, err
   524  	}
   525  	return event.NewSubscription(func(quit <-chan struct{}) error {
   526  		defer sub.Unsubscribe()
   527  		for {
   528  			select {
   529  			case log := <-logs:
   530  				// New log arrived, parse the event and forward to the user
   531  				event := new(ERC721Approval)
   532  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
   533  					return err
   534  				}
   535  				event.Raw = log
   536  
   537  				select {
   538  				case sink <- event:
   539  				case err := <-sub.Err():
   540  					return err
   541  				case <-quit:
   542  					return nil
   543  				}
   544  			case err := <-sub.Err():
   545  				return err
   546  			case <-quit:
   547  				return nil
   548  			}
   549  		}
   550  	}), nil
   551  }
   552  
   553  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   554  //
   555  // Solidity: event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)
   556  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
   557  	event := new(ERC721Approval)
   558  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
   559  		return nil, err
   560  	}
   561  	event.Raw = log
   562  	return event, nil
   563  }
   564  
   565  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
   566  type ERC721ApprovalForAllIterator struct {
   567  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
   568  
   569  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   570  	event    string              // Event name to use for unpacking event data
   571  
   572  	logs chan types.Log        // Log channel receiving the found contract events
   573  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   574  	done bool                  // Whether the subscription completed delivering logs
   575  	fail error                 // Occurred error to stop iteration
   576  }
   577  
   578  // Next advances the iterator to the subsequent event, returning whether there
   579  // are any more events found. In case of a retrieval or parsing error, false is
   580  // returned and Error() can be queried for the exact failure.
   581  func (it *ERC721ApprovalForAllIterator) Next() bool {
   582  	// If the iterator failed, stop iterating
   583  	if it.fail != nil {
   584  		return false
   585  	}
   586  	// If the iterator completed, deliver directly whatever's available
   587  	if it.done {
   588  		select {
   589  		case log := <-it.logs:
   590  			it.Event = new(ERC721ApprovalForAll)
   591  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   592  				it.fail = err
   593  				return false
   594  			}
   595  			it.Event.Raw = log
   596  			return true
   597  
   598  		default:
   599  			return false
   600  		}
   601  	}
   602  	// Iterator still in progress, wait for either a data or an error event
   603  	select {
   604  	case log := <-it.logs:
   605  		it.Event = new(ERC721ApprovalForAll)
   606  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   607  			it.fail = err
   608  			return false
   609  		}
   610  		it.Event.Raw = log
   611  		return true
   612  
   613  	case err := <-it.sub.Err():
   614  		it.done = true
   615  		it.fail = err
   616  		return it.Next()
   617  	}
   618  }
   619  
   620  // Error returns any retrieval or parsing error occurred during filtering.
   621  func (it *ERC721ApprovalForAllIterator) Error() error {
   622  	return it.fail
   623  }
   624  
   625  // Close terminates the iteration process, releasing any pending underlying
   626  // resources.
   627  func (it *ERC721ApprovalForAllIterator) Close() error {
   628  	it.sub.Unsubscribe()
   629  	return nil
   630  }
   631  
   632  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
   633  type ERC721ApprovalForAll struct {
   634  	Owner    common.Address
   635  	Operator common.Address
   636  	Approved bool
   637  	Raw      types.Log // Blockchain specific contextual infos
   638  }
   639  
   640  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
   641  //
   642  // Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)
   643  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, _owner []common.Address, _operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
   644  
   645  	var _ownerRule []interface{}
   646  	for _, _ownerItem := range _owner {
   647  		_ownerRule = append(_ownerRule, _ownerItem)
   648  	}
   649  	var _operatorRule []interface{}
   650  	for _, _operatorItem := range _operator {
   651  		_operatorRule = append(_operatorRule, _operatorItem)
   652  	}
   653  
   654  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule)
   655  	if err != nil {
   656  		return nil, err
   657  	}
   658  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
   659  }
   660  
   661  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
   662  //
   663  // Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)
   664  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, _owner []common.Address, _operator []common.Address) (event.Subscription, error) {
   665  
   666  	var _ownerRule []interface{}
   667  	for _, _ownerItem := range _owner {
   668  		_ownerRule = append(_ownerRule, _ownerItem)
   669  	}
   670  	var _operatorRule []interface{}
   671  	for _, _operatorItem := range _operator {
   672  		_operatorRule = append(_operatorRule, _operatorItem)
   673  	}
   674  
   675  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", _ownerRule, _operatorRule)
   676  	if err != nil {
   677  		return nil, err
   678  	}
   679  	return event.NewSubscription(func(quit <-chan struct{}) error {
   680  		defer sub.Unsubscribe()
   681  		for {
   682  			select {
   683  			case log := <-logs:
   684  				// New log arrived, parse the event and forward to the user
   685  				event := new(ERC721ApprovalForAll)
   686  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
   687  					return err
   688  				}
   689  				event.Raw = log
   690  
   691  				select {
   692  				case sink <- event:
   693  				case err := <-sub.Err():
   694  					return err
   695  				case <-quit:
   696  					return nil
   697  				}
   698  			case err := <-sub.Err():
   699  				return err
   700  			case <-quit:
   701  				return nil
   702  			}
   703  		}
   704  	}), nil
   705  }
   706  
   707  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
   708  //
   709  // Solidity: event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)
   710  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
   711  	event := new(ERC721ApprovalForAll)
   712  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
   713  		return nil, err
   714  	}
   715  	event.Raw = log
   716  	return event, nil
   717  }
   718  
   719  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
   720  type ERC721TransferIterator struct {
   721  	Event *ERC721Transfer // Event containing the contract specifics and raw log
   722  
   723  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   724  	event    string              // Event name to use for unpacking event data
   725  
   726  	logs chan types.Log        // Log channel receiving the found contract events
   727  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   728  	done bool                  // Whether the subscription completed delivering logs
   729  	fail error                 // Occurred error to stop iteration
   730  }
   731  
   732  // Next advances the iterator to the subsequent event, returning whether there
   733  // are any more events found. In case of a retrieval or parsing error, false is
   734  // returned and Error() can be queried for the exact failure.
   735  func (it *ERC721TransferIterator) Next() bool {
   736  	// If the iterator failed, stop iterating
   737  	if it.fail != nil {
   738  		return false
   739  	}
   740  	// If the iterator completed, deliver directly whatever's available
   741  	if it.done {
   742  		select {
   743  		case log := <-it.logs:
   744  			it.Event = new(ERC721Transfer)
   745  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   746  				it.fail = err
   747  				return false
   748  			}
   749  			it.Event.Raw = log
   750  			return true
   751  
   752  		default:
   753  			return false
   754  		}
   755  	}
   756  	// Iterator still in progress, wait for either a data or an error event
   757  	select {
   758  	case log := <-it.logs:
   759  		it.Event = new(ERC721Transfer)
   760  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   761  			it.fail = err
   762  			return false
   763  		}
   764  		it.Event.Raw = log
   765  		return true
   766  
   767  	case err := <-it.sub.Err():
   768  		it.done = true
   769  		it.fail = err
   770  		return it.Next()
   771  	}
   772  }
   773  
   774  // Error returns any retrieval or parsing error occurred during filtering.
   775  func (it *ERC721TransferIterator) Error() error {
   776  	return it.fail
   777  }
   778  
   779  // Close terminates the iteration process, releasing any pending underlying
   780  // resources.
   781  func (it *ERC721TransferIterator) Close() error {
   782  	it.sub.Unsubscribe()
   783  	return nil
   784  }
   785  
   786  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
   787  type ERC721Transfer struct {
   788  	From    common.Address
   789  	To      common.Address
   790  	TokenId *big.Int
   791  	Raw     types.Log // Blockchain specific contextual infos
   792  }
   793  
   794  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   795  //
   796  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
   797  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (*ERC721TransferIterator, error) {
   798  
   799  	var _fromRule []interface{}
   800  	for _, _fromItem := range _from {
   801  		_fromRule = append(_fromRule, _fromItem)
   802  	}
   803  	var _toRule []interface{}
   804  	for _, _toItem := range _to {
   805  		_toRule = append(_toRule, _toItem)
   806  	}
   807  	var _tokenIdRule []interface{}
   808  	for _, _tokenIdItem := range _tokenId {
   809  		_tokenIdRule = append(_tokenIdRule, _tokenIdItem)
   810  	}
   811  
   812  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule)
   813  	if err != nil {
   814  		return nil, err
   815  	}
   816  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
   817  }
   818  
   819  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   820  //
   821  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
   822  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, _from []common.Address, _to []common.Address, _tokenId []*big.Int) (event.Subscription, error) {
   823  
   824  	var _fromRule []interface{}
   825  	for _, _fromItem := range _from {
   826  		_fromRule = append(_fromRule, _fromItem)
   827  	}
   828  	var _toRule []interface{}
   829  	for _, _toItem := range _to {
   830  		_toRule = append(_toRule, _toItem)
   831  	}
   832  	var _tokenIdRule []interface{}
   833  	for _, _tokenIdItem := range _tokenId {
   834  		_tokenIdRule = append(_tokenIdRule, _tokenIdItem)
   835  	}
   836  
   837  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule, _tokenIdRule)
   838  	if err != nil {
   839  		return nil, err
   840  	}
   841  	return event.NewSubscription(func(quit <-chan struct{}) error {
   842  		defer sub.Unsubscribe()
   843  		for {
   844  			select {
   845  			case log := <-logs:
   846  				// New log arrived, parse the event and forward to the user
   847  				event := new(ERC721Transfer)
   848  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
   849  					return err
   850  				}
   851  				event.Raw = log
   852  
   853  				select {
   854  				case sink <- event:
   855  				case err := <-sub.Err():
   856  					return err
   857  				case <-quit:
   858  					return nil
   859  				}
   860  			case err := <-sub.Err():
   861  				return err
   862  			case <-quit:
   863  				return nil
   864  			}
   865  		}
   866  	}), nil
   867  }
   868  
   869  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   870  //
   871  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
   872  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
   873  	event := new(ERC721Transfer)
   874  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
   875  		return nil, err
   876  	}
   877  	event.Raw = log
   878  	return event, nil
   879  }
   880  
   881  // ERC721CompatABI is the input ABI used to generate the binding from.
   882  const ERC721CompatABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"}]"
   883  
   884  // ERC721Compat is an auto generated Go binding around an Ethereum contract.
   885  type ERC721Compat struct {
   886  	ERC721CompatCaller     // Read-only binding to the contract
   887  	ERC721CompatTransactor // Write-only binding to the contract
   888  	ERC721CompatFilterer   // Log filterer for contract events
   889  }
   890  
   891  // ERC721CompatCaller is an auto generated read-only Go binding around an Ethereum contract.
   892  type ERC721CompatCaller struct {
   893  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   894  }
   895  
   896  // ERC721CompatTransactor is an auto generated write-only Go binding around an Ethereum contract.
   897  type ERC721CompatTransactor struct {
   898  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   899  }
   900  
   901  // ERC721CompatFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   902  type ERC721CompatFilterer struct {
   903  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   904  }
   905  
   906  // ERC721CompatSession is an auto generated Go binding around an Ethereum contract,
   907  // with pre-set call and transact options.
   908  type ERC721CompatSession struct {
   909  	Contract     *ERC721Compat     // Generic contract binding to set the session for
   910  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   911  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   912  }
   913  
   914  // ERC721CompatCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   915  // with pre-set call options.
   916  type ERC721CompatCallerSession struct {
   917  	Contract *ERC721CompatCaller // Generic contract caller binding to set the session for
   918  	CallOpts bind.CallOpts       // Call options to use throughout this session
   919  }
   920  
   921  // ERC721CompatTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   922  // with pre-set transact options.
   923  type ERC721CompatTransactorSession struct {
   924  	Contract     *ERC721CompatTransactor // Generic contract transactor binding to set the session for
   925  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
   926  }
   927  
   928  // ERC721CompatRaw is an auto generated low-level Go binding around an Ethereum contract.
   929  type ERC721CompatRaw struct {
   930  	Contract *ERC721Compat // Generic contract binding to access the raw methods on
   931  }
   932  
   933  // ERC721CompatCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   934  type ERC721CompatCallerRaw struct {
   935  	Contract *ERC721CompatCaller // Generic read-only contract binding to access the raw methods on
   936  }
   937  
   938  // ERC721CompatTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   939  type ERC721CompatTransactorRaw struct {
   940  	Contract *ERC721CompatTransactor // Generic write-only contract binding to access the raw methods on
   941  }
   942  
   943  // NewERC721Compat creates a new instance of ERC721Compat, bound to a specific deployed contract.
   944  func NewERC721Compat(address common.Address, backend bind.ContractBackend) (*ERC721Compat, error) {
   945  	contract, err := bindERC721Compat(address, backend, backend, backend)
   946  	if err != nil {
   947  		return nil, err
   948  	}
   949  	return &ERC721Compat{ERC721CompatCaller: ERC721CompatCaller{contract: contract}, ERC721CompatTransactor: ERC721CompatTransactor{contract: contract}, ERC721CompatFilterer: ERC721CompatFilterer{contract: contract}}, nil
   950  }
   951  
   952  // NewERC721CompatCaller creates a new read-only instance of ERC721Compat, bound to a specific deployed contract.
   953  func NewERC721CompatCaller(address common.Address, caller bind.ContractCaller) (*ERC721CompatCaller, error) {
   954  	contract, err := bindERC721Compat(address, caller, nil, nil)
   955  	if err != nil {
   956  		return nil, err
   957  	}
   958  	return &ERC721CompatCaller{contract: contract}, nil
   959  }
   960  
   961  // NewERC721CompatTransactor creates a new write-only instance of ERC721Compat, bound to a specific deployed contract.
   962  func NewERC721CompatTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721CompatTransactor, error) {
   963  	contract, err := bindERC721Compat(address, nil, transactor, nil)
   964  	if err != nil {
   965  		return nil, err
   966  	}
   967  	return &ERC721CompatTransactor{contract: contract}, nil
   968  }
   969  
   970  // NewERC721CompatFilterer creates a new log filterer instance of ERC721Compat, bound to a specific deployed contract.
   971  func NewERC721CompatFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721CompatFilterer, error) {
   972  	contract, err := bindERC721Compat(address, nil, nil, filterer)
   973  	if err != nil {
   974  		return nil, err
   975  	}
   976  	return &ERC721CompatFilterer{contract: contract}, nil
   977  }
   978  
   979  // bindERC721Compat binds a generic wrapper to an already deployed contract.
   980  func bindERC721Compat(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   981  	parsed, err := abi.JSON(strings.NewReader(ERC721CompatABI))
   982  	if err != nil {
   983  		return nil, err
   984  	}
   985  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   986  }
   987  
   988  // Call invokes the (constant) contract method with params as input values and
   989  // sets the output to result. The result type might be a single field for simple
   990  // returns, a slice of interfaces for anonymous returns and a struct for named
   991  // returns.
   992  func (_ERC721Compat *ERC721CompatRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   993  	return _ERC721Compat.Contract.ERC721CompatCaller.contract.Call(opts, result, method, params...)
   994  }
   995  
   996  // Transfer initiates a plain transaction to move funds to the contract, calling
   997  // its default method if one is available.
   998  func (_ERC721Compat *ERC721CompatRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   999  	return _ERC721Compat.Contract.ERC721CompatTransactor.contract.Transfer(opts)
  1000  }
  1001  
  1002  // Transact invokes the (paid) contract method with params as input values.
  1003  func (_ERC721Compat *ERC721CompatRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1004  	return _ERC721Compat.Contract.ERC721CompatTransactor.contract.Transact(opts, method, params...)
  1005  }
  1006  
  1007  // Call invokes the (constant) contract method with params as input values and
  1008  // sets the output to result. The result type might be a single field for simple
  1009  // returns, a slice of interfaces for anonymous returns and a struct for named
  1010  // returns.
  1011  func (_ERC721Compat *ERC721CompatCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1012  	return _ERC721Compat.Contract.contract.Call(opts, result, method, params...)
  1013  }
  1014  
  1015  // Transfer initiates a plain transaction to move funds to the contract, calling
  1016  // its default method if one is available.
  1017  func (_ERC721Compat *ERC721CompatTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1018  	return _ERC721Compat.Contract.contract.Transfer(opts)
  1019  }
  1020  
  1021  // Transact invokes the (paid) contract method with params as input values.
  1022  func (_ERC721Compat *ERC721CompatTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1023  	return _ERC721Compat.Contract.contract.Transact(opts, method, params...)
  1024  }
  1025  
  1026  // ERC721CompatTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Compat contract.
  1027  type ERC721CompatTransferIterator struct {
  1028  	Event *ERC721CompatTransfer // Event containing the contract specifics and raw log
  1029  
  1030  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1031  	event    string              // Event name to use for unpacking event data
  1032  
  1033  	logs chan types.Log        // Log channel receiving the found contract events
  1034  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1035  	done bool                  // Whether the subscription completed delivering logs
  1036  	fail error                 // Occurred error to stop iteration
  1037  }
  1038  
  1039  // Next advances the iterator to the subsequent event, returning whether there
  1040  // are any more events found. In case of a retrieval or parsing error, false is
  1041  // returned and Error() can be queried for the exact failure.
  1042  func (it *ERC721CompatTransferIterator) Next() bool {
  1043  	// If the iterator failed, stop iterating
  1044  	if it.fail != nil {
  1045  		return false
  1046  	}
  1047  	// If the iterator completed, deliver directly whatever's available
  1048  	if it.done {
  1049  		select {
  1050  		case log := <-it.logs:
  1051  			it.Event = new(ERC721CompatTransfer)
  1052  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1053  				it.fail = err
  1054  				return false
  1055  			}
  1056  			it.Event.Raw = log
  1057  			return true
  1058  
  1059  		default:
  1060  			return false
  1061  		}
  1062  	}
  1063  	// Iterator still in progress, wait for either a data or an error event
  1064  	select {
  1065  	case log := <-it.logs:
  1066  		it.Event = new(ERC721CompatTransfer)
  1067  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1068  			it.fail = err
  1069  			return false
  1070  		}
  1071  		it.Event.Raw = log
  1072  		return true
  1073  
  1074  	case err := <-it.sub.Err():
  1075  		it.done = true
  1076  		it.fail = err
  1077  		return it.Next()
  1078  	}
  1079  }
  1080  
  1081  // Error returns any retrieval or parsing error occurred during filtering.
  1082  func (it *ERC721CompatTransferIterator) Error() error {
  1083  	return it.fail
  1084  }
  1085  
  1086  // Close terminates the iteration process, releasing any pending underlying
  1087  // resources.
  1088  func (it *ERC721CompatTransferIterator) Close() error {
  1089  	it.sub.Unsubscribe()
  1090  	return nil
  1091  }
  1092  
  1093  // ERC721CompatTransfer represents a Transfer event raised by the ERC721Compat contract.
  1094  type ERC721CompatTransfer struct {
  1095  	From    common.Address
  1096  	To      common.Address
  1097  	TokenId *big.Int
  1098  	Raw     types.Log // Blockchain specific contextual infos
  1099  }
  1100  
  1101  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1102  //
  1103  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _tokenId)
  1104  func (_ERC721Compat *ERC721CompatFilterer) FilterTransfer(opts *bind.FilterOpts, _from []common.Address, _to []common.Address) (*ERC721CompatTransferIterator, error) {
  1105  
  1106  	var _fromRule []interface{}
  1107  	for _, _fromItem := range _from {
  1108  		_fromRule = append(_fromRule, _fromItem)
  1109  	}
  1110  	var _toRule []interface{}
  1111  	for _, _toItem := range _to {
  1112  		_toRule = append(_toRule, _toItem)
  1113  	}
  1114  
  1115  	logs, sub, err := _ERC721Compat.contract.FilterLogs(opts, "Transfer", _fromRule, _toRule)
  1116  	if err != nil {
  1117  		return nil, err
  1118  	}
  1119  	return &ERC721CompatTransferIterator{contract: _ERC721Compat.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1120  }
  1121  
  1122  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1123  //
  1124  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _tokenId)
  1125  func (_ERC721Compat *ERC721CompatFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721CompatTransfer, _from []common.Address, _to []common.Address) (event.Subscription, error) {
  1126  
  1127  	var _fromRule []interface{}
  1128  	for _, _fromItem := range _from {
  1129  		_fromRule = append(_fromRule, _fromItem)
  1130  	}
  1131  	var _toRule []interface{}
  1132  	for _, _toItem := range _to {
  1133  		_toRule = append(_toRule, _toItem)
  1134  	}
  1135  
  1136  	logs, sub, err := _ERC721Compat.contract.WatchLogs(opts, "Transfer", _fromRule, _toRule)
  1137  	if err != nil {
  1138  		return nil, err
  1139  	}
  1140  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1141  		defer sub.Unsubscribe()
  1142  		for {
  1143  			select {
  1144  			case log := <-logs:
  1145  				// New log arrived, parse the event and forward to the user
  1146  				event := new(ERC721CompatTransfer)
  1147  				if err := _ERC721Compat.contract.UnpackLog(event, "Transfer", log); err != nil {
  1148  					return err
  1149  				}
  1150  				event.Raw = log
  1151  
  1152  				select {
  1153  				case sink <- event:
  1154  				case err := <-sub.Err():
  1155  					return err
  1156  				case <-quit:
  1157  					return nil
  1158  				}
  1159  			case err := <-sub.Err():
  1160  				return err
  1161  			case <-quit:
  1162  				return nil
  1163  			}
  1164  		}
  1165  	}), nil
  1166  }
  1167  
  1168  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1169  //
  1170  // Solidity: event Transfer(address indexed _from, address indexed _to, uint256 _tokenId)
  1171  func (_ERC721Compat *ERC721CompatFilterer) ParseTransfer(log types.Log) (*ERC721CompatTransfer, error) {
  1172  	event := new(ERC721CompatTransfer)
  1173  	if err := _ERC721Compat.contract.UnpackLog(event, "Transfer", log); err != nil {
  1174  		return nil, err
  1175  	}
  1176  	event.Raw = log
  1177  	return event, nil
  1178  }
  1179  
  1180  // ERC721EnumerableABI is the input ABI used to generate the binding from.
  1181  const ERC721EnumerableABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1182  
  1183  // ERC721Enumerable is an auto generated Go binding around an Ethereum contract.
  1184  type ERC721Enumerable struct {
  1185  	ERC721EnumerableCaller     // Read-only binding to the contract
  1186  	ERC721EnumerableTransactor // Write-only binding to the contract
  1187  	ERC721EnumerableFilterer   // Log filterer for contract events
  1188  }
  1189  
  1190  // ERC721EnumerableCaller is an auto generated read-only Go binding around an Ethereum contract.
  1191  type ERC721EnumerableCaller struct {
  1192  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1193  }
  1194  
  1195  // ERC721EnumerableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1196  type ERC721EnumerableTransactor struct {
  1197  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1198  }
  1199  
  1200  // ERC721EnumerableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1201  type ERC721EnumerableFilterer struct {
  1202  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1203  }
  1204  
  1205  // ERC721EnumerableSession is an auto generated Go binding around an Ethereum contract,
  1206  // with pre-set call and transact options.
  1207  type ERC721EnumerableSession struct {
  1208  	Contract     *ERC721Enumerable // Generic contract binding to set the session for
  1209  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1210  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1211  }
  1212  
  1213  // ERC721EnumerableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1214  // with pre-set call options.
  1215  type ERC721EnumerableCallerSession struct {
  1216  	Contract *ERC721EnumerableCaller // Generic contract caller binding to set the session for
  1217  	CallOpts bind.CallOpts           // Call options to use throughout this session
  1218  }
  1219  
  1220  // ERC721EnumerableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1221  // with pre-set transact options.
  1222  type ERC721EnumerableTransactorSession struct {
  1223  	Contract     *ERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  1224  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  1225  }
  1226  
  1227  // ERC721EnumerableRaw is an auto generated low-level Go binding around an Ethereum contract.
  1228  type ERC721EnumerableRaw struct {
  1229  	Contract *ERC721Enumerable // Generic contract binding to access the raw methods on
  1230  }
  1231  
  1232  // ERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1233  type ERC721EnumerableCallerRaw struct {
  1234  	Contract *ERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  1235  }
  1236  
  1237  // ERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1238  type ERC721EnumerableTransactorRaw struct {
  1239  	Contract *ERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  1240  }
  1241  
  1242  // NewERC721Enumerable creates a new instance of ERC721Enumerable, bound to a specific deployed contract.
  1243  func NewERC721Enumerable(address common.Address, backend bind.ContractBackend) (*ERC721Enumerable, error) {
  1244  	contract, err := bindERC721Enumerable(address, backend, backend, backend)
  1245  	if err != nil {
  1246  		return nil, err
  1247  	}
  1248  	return &ERC721Enumerable{ERC721EnumerableCaller: ERC721EnumerableCaller{contract: contract}, ERC721EnumerableTransactor: ERC721EnumerableTransactor{contract: contract}, ERC721EnumerableFilterer: ERC721EnumerableFilterer{contract: contract}}, nil
  1249  }
  1250  
  1251  // NewERC721EnumerableCaller creates a new read-only instance of ERC721Enumerable, bound to a specific deployed contract.
  1252  func NewERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*ERC721EnumerableCaller, error) {
  1253  	contract, err := bindERC721Enumerable(address, caller, nil, nil)
  1254  	if err != nil {
  1255  		return nil, err
  1256  	}
  1257  	return &ERC721EnumerableCaller{contract: contract}, nil
  1258  }
  1259  
  1260  // NewERC721EnumerableTransactor creates a new write-only instance of ERC721Enumerable, bound to a specific deployed contract.
  1261  func NewERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721EnumerableTransactor, error) {
  1262  	contract, err := bindERC721Enumerable(address, nil, transactor, nil)
  1263  	if err != nil {
  1264  		return nil, err
  1265  	}
  1266  	return &ERC721EnumerableTransactor{contract: contract}, nil
  1267  }
  1268  
  1269  // NewERC721EnumerableFilterer creates a new log filterer instance of ERC721Enumerable, bound to a specific deployed contract.
  1270  func NewERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721EnumerableFilterer, error) {
  1271  	contract, err := bindERC721Enumerable(address, nil, nil, filterer)
  1272  	if err != nil {
  1273  		return nil, err
  1274  	}
  1275  	return &ERC721EnumerableFilterer{contract: contract}, nil
  1276  }
  1277  
  1278  // bindERC721Enumerable binds a generic wrapper to an already deployed contract.
  1279  func bindERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1280  	parsed, err := abi.JSON(strings.NewReader(ERC721EnumerableABI))
  1281  	if err != nil {
  1282  		return nil, err
  1283  	}
  1284  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1285  }
  1286  
  1287  // Call invokes the (constant) contract method with params as input values and
  1288  // sets the output to result. The result type might be a single field for simple
  1289  // returns, a slice of interfaces for anonymous returns and a struct for named
  1290  // returns.
  1291  func (_ERC721Enumerable *ERC721EnumerableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1292  	return _ERC721Enumerable.Contract.ERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  1293  }
  1294  
  1295  // Transfer initiates a plain transaction to move funds to the contract, calling
  1296  // its default method if one is available.
  1297  func (_ERC721Enumerable *ERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1298  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transfer(opts)
  1299  }
  1300  
  1301  // Transact invokes the (paid) contract method with params as input values.
  1302  func (_ERC721Enumerable *ERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1303  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  1304  }
  1305  
  1306  // Call invokes the (constant) contract method with params as input values and
  1307  // sets the output to result. The result type might be a single field for simple
  1308  // returns, a slice of interfaces for anonymous returns and a struct for named
  1309  // returns.
  1310  func (_ERC721Enumerable *ERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1311  	return _ERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  1312  }
  1313  
  1314  // Transfer initiates a plain transaction to move funds to the contract, calling
  1315  // its default method if one is available.
  1316  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1317  	return _ERC721Enumerable.Contract.contract.Transfer(opts)
  1318  }
  1319  
  1320  // Transact invokes the (paid) contract method with params as input values.
  1321  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1322  	return _ERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  1323  }
  1324  
  1325  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1326  //
  1327  // Solidity: function tokenByIndex(uint256 _index) view returns(uint256)
  1328  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, _index *big.Int) (*big.Int, error) {
  1329  	var out []interface{}
  1330  	err := _ERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", _index)
  1331  
  1332  	if err != nil {
  1333  		return *new(*big.Int), err
  1334  	}
  1335  
  1336  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1337  
  1338  	return out0, err
  1339  
  1340  }
  1341  
  1342  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1343  //
  1344  // Solidity: function tokenByIndex(uint256 _index) view returns(uint256)
  1345  func (_ERC721Enumerable *ERC721EnumerableSession) TokenByIndex(_index *big.Int) (*big.Int, error) {
  1346  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, _index)
  1347  }
  1348  
  1349  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1350  //
  1351  // Solidity: function tokenByIndex(uint256 _index) view returns(uint256)
  1352  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenByIndex(_index *big.Int) (*big.Int, error) {
  1353  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, _index)
  1354  }
  1355  
  1356  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1357  //
  1358  // Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256)
  1359  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, _owner common.Address, _index *big.Int) (*big.Int, error) {
  1360  	var out []interface{}
  1361  	err := _ERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", _owner, _index)
  1362  
  1363  	if err != nil {
  1364  		return *new(*big.Int), err
  1365  	}
  1366  
  1367  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1368  
  1369  	return out0, err
  1370  
  1371  }
  1372  
  1373  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1374  //
  1375  // Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256)
  1376  func (_ERC721Enumerable *ERC721EnumerableSession) TokenOfOwnerByIndex(_owner common.Address, _index *big.Int) (*big.Int, error) {
  1377  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, _owner, _index)
  1378  }
  1379  
  1380  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1381  //
  1382  // Solidity: function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns(uint256)
  1383  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenOfOwnerByIndex(_owner common.Address, _index *big.Int) (*big.Int, error) {
  1384  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, _owner, _index)
  1385  }
  1386  
  1387  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1388  //
  1389  // Solidity: function totalSupply() view returns(uint256)
  1390  func (_ERC721Enumerable *ERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1391  	var out []interface{}
  1392  	err := _ERC721Enumerable.contract.Call(opts, &out, "totalSupply")
  1393  
  1394  	if err != nil {
  1395  		return *new(*big.Int), err
  1396  	}
  1397  
  1398  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1399  
  1400  	return out0, err
  1401  
  1402  }
  1403  
  1404  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1405  //
  1406  // Solidity: function totalSupply() view returns(uint256)
  1407  func (_ERC721Enumerable *ERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  1408  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  1409  }
  1410  
  1411  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1412  //
  1413  // Solidity: function totalSupply() view returns(uint256)
  1414  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  1415  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  1416  }
  1417  
  1418  // ERC721MetadataABI is the input ABI used to generate the binding from.
  1419  const ERC721MetadataABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"_name\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1420  
  1421  // ERC721Metadata is an auto generated Go binding around an Ethereum contract.
  1422  type ERC721Metadata struct {
  1423  	ERC721MetadataCaller     // Read-only binding to the contract
  1424  	ERC721MetadataTransactor // Write-only binding to the contract
  1425  	ERC721MetadataFilterer   // Log filterer for contract events
  1426  }
  1427  
  1428  // ERC721MetadataCaller is an auto generated read-only Go binding around an Ethereum contract.
  1429  type ERC721MetadataCaller struct {
  1430  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1431  }
  1432  
  1433  // ERC721MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1434  type ERC721MetadataTransactor struct {
  1435  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1436  }
  1437  
  1438  // ERC721MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1439  type ERC721MetadataFilterer struct {
  1440  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1441  }
  1442  
  1443  // ERC721MetadataSession is an auto generated Go binding around an Ethereum contract,
  1444  // with pre-set call and transact options.
  1445  type ERC721MetadataSession struct {
  1446  	Contract     *ERC721Metadata   // Generic contract binding to set the session for
  1447  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1448  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1449  }
  1450  
  1451  // ERC721MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1452  // with pre-set call options.
  1453  type ERC721MetadataCallerSession struct {
  1454  	Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for
  1455  	CallOpts bind.CallOpts         // Call options to use throughout this session
  1456  }
  1457  
  1458  // ERC721MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1459  // with pre-set transact options.
  1460  type ERC721MetadataTransactorSession struct {
  1461  	Contract     *ERC721MetadataTransactor // Generic contract transactor binding to set the session for
  1462  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  1463  }
  1464  
  1465  // ERC721MetadataRaw is an auto generated low-level Go binding around an Ethereum contract.
  1466  type ERC721MetadataRaw struct {
  1467  	Contract *ERC721Metadata // Generic contract binding to access the raw methods on
  1468  }
  1469  
  1470  // ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1471  type ERC721MetadataCallerRaw struct {
  1472  	Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
  1473  }
  1474  
  1475  // ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1476  type ERC721MetadataTransactorRaw struct {
  1477  	Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
  1478  }
  1479  
  1480  // NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract.
  1481  func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) {
  1482  	contract, err := bindERC721Metadata(address, backend, backend, backend)
  1483  	if err != nil {
  1484  		return nil, err
  1485  	}
  1486  	return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
  1487  }
  1488  
  1489  // NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract.
  1490  func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) {
  1491  	contract, err := bindERC721Metadata(address, caller, nil, nil)
  1492  	if err != nil {
  1493  		return nil, err
  1494  	}
  1495  	return &ERC721MetadataCaller{contract: contract}, nil
  1496  }
  1497  
  1498  // NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract.
  1499  func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) {
  1500  	contract, err := bindERC721Metadata(address, nil, transactor, nil)
  1501  	if err != nil {
  1502  		return nil, err
  1503  	}
  1504  	return &ERC721MetadataTransactor{contract: contract}, nil
  1505  }
  1506  
  1507  // NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract.
  1508  func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) {
  1509  	contract, err := bindERC721Metadata(address, nil, nil, filterer)
  1510  	if err != nil {
  1511  		return nil, err
  1512  	}
  1513  	return &ERC721MetadataFilterer{contract: contract}, nil
  1514  }
  1515  
  1516  // bindERC721Metadata binds a generic wrapper to an already deployed contract.
  1517  func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1518  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
  1519  	if err != nil {
  1520  		return nil, err
  1521  	}
  1522  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1523  }
  1524  
  1525  // Call invokes the (constant) contract method with params as input values and
  1526  // sets the output to result. The result type might be a single field for simple
  1527  // returns, a slice of interfaces for anonymous returns and a struct for named
  1528  // returns.
  1529  func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1530  	return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...)
  1531  }
  1532  
  1533  // Transfer initiates a plain transaction to move funds to the contract, calling
  1534  // its default method if one is available.
  1535  func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1536  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts)
  1537  }
  1538  
  1539  // Transact invokes the (paid) contract method with params as input values.
  1540  func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1541  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...)
  1542  }
  1543  
  1544  // Call invokes the (constant) contract method with params as input values and
  1545  // sets the output to result. The result type might be a single field for simple
  1546  // returns, a slice of interfaces for anonymous returns and a struct for named
  1547  // returns.
  1548  func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1549  	return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...)
  1550  }
  1551  
  1552  // Transfer initiates a plain transaction to move funds to the contract, calling
  1553  // its default method if one is available.
  1554  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1555  	return _ERC721Metadata.Contract.contract.Transfer(opts)
  1556  }
  1557  
  1558  // Transact invokes the (paid) contract method with params as input values.
  1559  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1560  	return _ERC721Metadata.Contract.contract.Transact(opts, method, params...)
  1561  }
  1562  
  1563  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1564  //
  1565  // Solidity: function name() view returns(string _name)
  1566  func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
  1567  	var out []interface{}
  1568  	err := _ERC721Metadata.contract.Call(opts, &out, "name")
  1569  
  1570  	if err != nil {
  1571  		return *new(string), err
  1572  	}
  1573  
  1574  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1575  
  1576  	return out0, err
  1577  
  1578  }
  1579  
  1580  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1581  //
  1582  // Solidity: function name() view returns(string _name)
  1583  func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) {
  1584  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  1585  }
  1586  
  1587  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1588  //
  1589  // Solidity: function name() view returns(string _name)
  1590  func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) {
  1591  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  1592  }
  1593  
  1594  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1595  //
  1596  // Solidity: function symbol() view returns(string _symbol)
  1597  func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
  1598  	var out []interface{}
  1599  	err := _ERC721Metadata.contract.Call(opts, &out, "symbol")
  1600  
  1601  	if err != nil {
  1602  		return *new(string), err
  1603  	}
  1604  
  1605  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1606  
  1607  	return out0, err
  1608  
  1609  }
  1610  
  1611  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1612  //
  1613  // Solidity: function symbol() view returns(string _symbol)
  1614  func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) {
  1615  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  1616  }
  1617  
  1618  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1619  //
  1620  // Solidity: function symbol() view returns(string _symbol)
  1621  func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) {
  1622  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  1623  }
  1624  
  1625  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1626  //
  1627  // Solidity: function tokenURI(uint256 _tokenId) view returns(string)
  1628  func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, _tokenId *big.Int) (string, error) {
  1629  	var out []interface{}
  1630  	err := _ERC721Metadata.contract.Call(opts, &out, "tokenURI", _tokenId)
  1631  
  1632  	if err != nil {
  1633  		return *new(string), err
  1634  	}
  1635  
  1636  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1637  
  1638  	return out0, err
  1639  
  1640  }
  1641  
  1642  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1643  //
  1644  // Solidity: function tokenURI(uint256 _tokenId) view returns(string)
  1645  func (_ERC721Metadata *ERC721MetadataSession) TokenURI(_tokenId *big.Int) (string, error) {
  1646  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, _tokenId)
  1647  }
  1648  
  1649  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1650  //
  1651  // Solidity: function tokenURI(uint256 _tokenId) view returns(string)
  1652  func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(_tokenId *big.Int) (string, error) {
  1653  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, _tokenId)
  1654  }