diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d2491eb --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: ISC +# Copyright (c) 2019-2023 Bitmark Inc. +# Use of this source code is governed by an ISC +# license that can be found in the LICENSE file. + +.PHONY: + +truffle-check: ; @which truffle > /dev/null +abigen-check: ; @which abigen > /dev/null +jq-check: ; @which jq >/dev/null +npm-check: ;@which npm >/dev/null + +check: truffle-check abigen-check jq-check npm-check + +clean: + rm -rf **/abi.go + +build-contract: check + npm install && \ + truffle compile && \ + jq -r ".bytecode" build/contracts/FeralfileExhibitionV2.json > ./build/FeralfileExhibitionV2.bin && \ + jq -r ".abi" build/contracts/FeralfileExhibitionV2.json > ./build/FeralfileExhibitionV2.abi && \ + jq -r ".bytecode" build/contracts/FeralfileExhibitionV3.json > ./build/FeralfileExhibitionV3.bin && \ + jq -r ".abi" build/contracts/FeralfileExhibitionV3.json > ./build/FeralfileExhibitionV3.abi && \ + jq -r ".bytecode" build/contracts/FeralfileExhibitionV4.json > ./build/FeralfileExhibitionV4.bin && \ + jq -r ".abi" build/contracts/FeralfileExhibitionV4.json > ./build/FeralfileExhibitionV4.abi && \ + jq -r ".bytecode" build/contracts/FeralfileEnglishAuction.json > ./build/FeralfileEnglishAuction.bin && \ + jq -r ".abi" build/contracts/FeralfileEnglishAuction.json > ./build/FeralfileEnglishAuction.abi && \ + jq -r ".bytecode" build/contracts/FeralFileAirdropV1.json > ./build/FeralFileAirdropV1.bin && \ + jq -r ".abi" build/contracts/FeralFileAirdropV1.json > ./build/FeralFileAirdropV1.abi + +build: build-contract + mkdir -p ./binding/feralfile-exhibition-v2 && \ + mkdir -p ./binding/feralfile-exhibition-v3 && \ + mkdir -p ./binding/feralfile-exhibition-v4 && \ + mkdir -p ./binding/feralfile-english-auction && \ + mkdir -p ./binding/feralfile-airdrop-v1 && \ + abigen --abi ./build/FeralfileExhibitionV2.abi --bin ./build/FeralfileExhibitionV2.bin --pkg feralfilev2 -type FeralfileExhibitionV2 --out ./binding/feralfile-exhibition-v2/abi.go + abigen --abi ./build/FeralfileExhibitionV3.abi --bin ./build/FeralfileExhibitionV3.bin --pkg feralfilev3 -type FeralfileExhibitionV3 --out ./binding/feralfile-exhibition-v3/abi.go + abigen --abi ./build/FeralfileExhibitionV4.abi --bin ./build/FeralfileExhibitionV4.bin --pkg feralfilev4 -type FeralfileExhibitionV4 --out ./binding/feralfile-exhibition-v4/abi.go + abigen --abi ./build/FeralfileEnglishAuction.abi --bin ./build/FeralfileEnglishAuction.bin --pkg english_auction -type FeralfileEnglishAuction --out ./binding/feralfile-english-auction/abi.go + abigen --abi ./build/FeralFileAirdropV1.abi --bin ./build/FeralFileAirdropV1.bin --pkg airdropv1 -type FeralFileAirdropV1 --out ./binding/feralfile-airdrop-v1/abi.go diff --git a/binding/feralfile-airdrop-v1/abi.go b/binding/feralfile-airdrop-v1/abi.go new file mode 100644 index 0000000..99c3089 --- /dev/null +++ b/binding/feralfile-airdrop-v1/abi.go @@ -0,0 +1,1875 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package airdropv1 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralFileAirdropV1MetaData contains all meta data concerning the FeralFileAirdropV1 contract. +var FeralFileAirdropV1MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"enumFeralFileAirdropV1.Type\",\"name\":\"tokenType_\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tokenURI_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"burnable_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bridgeable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ContractURIUpdated\",\"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\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"airdroppedAddresses\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"bridgeable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"burnable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"codeVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"tokenType\",\"outputs\":[{\"internalType\":\"enumFeralFileAirdropV1.Type\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"isEnded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"end\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"name\":\"setURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"}],\"name\":\"setContractURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID_\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"to_\",\"type\":\"address[]\"}],\"name\":\"airdrop\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID_\",\"type\":\"uint256\"}],\"name\":\"burnRemaining\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"constant\":true}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162002676380380620026768339810160408190526200003491620001f6565b836200004081620000b7565b506200004c33620000c9565b60076200005a84826200032d565b506006805486919060ff1916600183818111156200007c576200007c620003f9565b02179055506006805462ffff0019166101009315159390930262ff00001916929092176201000091151591909102179055506200040f915050565b6002620000c582826200032d565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014357600080fd5b81516001600160401b03808211156200016057620001606200011b565b604051601f8301601f19908116603f011681019082821181831017156200018b576200018b6200011b565b81604052838152602092508683858801011115620001a857600080fd5b600091505b83821015620001cc5785820183015181830184015290820190620001ad565b600093810190920192909252949350505050565b80518015158114620001f157600080fd5b919050565b600080600080600060a086880312156200020f57600080fd5b8551600281106200021f57600080fd5b60208701519095506001600160401b03808211156200023d57600080fd5b6200024b89838a0162000131565b955060408801519150808211156200026257600080fd5b50620002718882890162000131565b9350506200028260608701620001e0565b91506200029260808701620001e0565b90509295509295909350565b600181811c90821680620002b357607f821691505b602082108103620002d457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200032857600081815260208120601f850160051c81016020861015620003035750805b601f850160051c820191505b8181101562000324578281556001016200030f565b5050505b505050565b81516001600160401b038111156200034957620003496200011b565b62000361816200035a84546200029e565b84620002da565b602080601f831160018114620003995760008415620003805750858301515b600019600386901b1c1916600185901b17855562000324565b600085815260208120601f198616915b82811015620003ca57888601518255948401946001909101908401620003a9565b5085821015620003e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b612257806200041f6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c806396d6708211610104578063dc78ac1c116100a2578063efbe1c1c11610071578063efbe1c1c14610444578063f23a6e611461044c578063f242432a14610478578063f2fde38b1461048b57600080fd5b8063dc78ac1c146103ca578063e8a3d485146103dd578063e985e9c5146103e5578063eee608a41461042157600080fd5b8063a22cb465116100de578063a22cb46514610386578063a4fd6f5614610399578063b390c0ab146103a4578063bdf7a8e6146103b757600080fd5b806396d670821461033e578063985573c214610351578063a07c7ce41461037457600080fd5b806330fa738c1161017157806363e602301161014b57806363e60230146102d7578063715018a6146103085780638da5cb5b14610310578063938e3d7b1461032b57600080fd5b806330fa738c1461028a5780634e1273f4146102a4578063530da8ef146102c457600080fd5b806303120506116101ad57806303120506146102315780630e89341c146102445780631b2ef1ca146102645780632eb2c2d61461027757600080fd5b8062fdd58e146101d357806301ffc9a7146101f957806302fe53051461021c575b600080fd5b6101e66101e136600461177c565b61049e565b6040519081526020015b60405180910390f35b61020c6102073660046117bc565b610537565b60405190151581526020016101f0565b61022f61022a366004611881565b610587565b005b61022f61023f3660046118d2565b61059b565b6102576102523660046118ed565b6105c4565b6040516101f0919061194c565b61022f61027236600461195f565b610658565b61022f610285366004611a36565b6106d4565b6006546102979060ff1681565b6040516101f09190611af6565b6102b76102b2366004611b1e565b610720565b6040516101f09190611c24565b60065461020c9062010000900460ff1681565b61025760405180604001604052806012815260200171466572616c46696c6541697264726f70563160701b81525081565b61022f61084a565b6003546040516001600160a01b0390911681526020016101f0565b61022f610339366004611881565b61085e565b61022f61034c3660046118ed565b61089f565b61020c61035f3660046118d2565b60056020526000908152604090205460ff1681565b60065461020c90610100900460ff1681565b61022f610394366004611c37565b6108bb565b60085460ff1661020c565b61022f6103b236600461195f565b6108c6565b61022f6103c5366004611c73565b610931565b61022f6103d83660046118d2565b610aed565b610257610b19565b61020c6103f3366004611cf2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b61020c61042f3660046118d2565b60046020526000908152604090205460ff1681565b61022f610bab565b61045f61045a366004611d25565b610be5565b6040516001600160e01b031990911681526020016101f0565b61022f610486366004611d25565b610c6b565b61022f6104993660046118d2565b610cb0565b60006001600160a01b03831661050e5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061056857506001600160e01b031982166303a24d0760e21b145b8061053157506301ffc9a760e01b6001600160e01b0319831614610531565b61058f610d26565b61059881610d80565b50565b6105a3610d26565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6060600280546105d390611d8a565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff90611d8a565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b50505050509050919050565b3360009081526004602052604090205460ff168061068057506003546001600160a01b031633145b61068957600080fd5b60085460ff16156106ac5760405162461bcd60e51b815260040161050590611dc4565b6106b581610d8c565b6106d030838360405180602001604052806000815250610e36565b5050565b6001600160a01b0385163314806106f057506106f085336103f3565b61070c5760405162461bcd60e51b815260040161050590611e05565b6107198585858585610f4a565b5050505050565b606081518351146107855760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610505565b6000835167ffffffffffffffff8111156107a1576107a16117e0565b6040519080825280602002602001820160405280156107ca578160200160208202803683370190505b50905060005b8451811015610842576108158582815181106107ee576107ee611e53565b602002602001015185838151811061080857610808611e53565b602002602001015161049e565b82828151811061082757610827611e53565b602090810291909101015261083b81611e7f565b90506107d0565b509392505050565b610852610d26565b61085c6000611127565b565b610866610d26565b60076108728282611ee3565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96290600090a150565b6108a7610d26565b61059830826108b6308561049e565b611179565b6106d03383836112f5565b600654610100900460ff1661091d5760405162461bcd60e51b815260206004820181905260248201527f466572616c46696c6541697264726f7056313a206e6f74206275726e61626c656044820152606401610505565b61092681610d8c565b6106d0338383611179565b3360009081526004602052604090205460ff168061095957506003546001600160a01b031633145b61096257600080fd5b60085460ff16156109855760405162461bcd60e51b815260040161050590611dc4565b61098e81610d8c565b60005b81811015610ae757600560008484848181106109af576109af611e53565b90506020020160208101906109c491906118d2565b6001600160a01b0316815260208101919091526040016000205460ff1615610a3d5760405162461bcd60e51b815260206004820152602660248201527f466572616c46696c6541697264726f7056313a20616c726561647920616972646044820152651c9bdc1c195960d21b6064820152608401610505565b610a8030848484818110610a5357610a53611e53565b9050602002016020810190610a6891906118d2565b866001604051806020016040528060008152506113d5565b600160056000858585818110610a9857610a98611e53565b9050602002016020810190610aad91906118d2565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610adf81611e7f565b915050610991565b50505050565b610af5610d26565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b606060078054610b2890611d8a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5490611d8a565b8015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b610bb3610d26565b60085460ff1615610bd65760405162461bcd60e51b815260040161050590611dc4565b6008805460ff19166001179055565b60006001600160a01b03851615610c595760405162461bcd60e51b815260206004820152603260248201527f466572616c46696c6541697264726f7056313a206e6f7420616c6c6f77656420604482015271746f2073656e6420746f6b656e206261636b60701b6064820152608401610505565b5063f23a6e6160e01b95945050505050565b6001600160a01b038516331480610c875750610c8785336103f3565b610ca35760405162461bcd60e51b815260040161050590611e05565b61071985858585856113d5565b610cb8610d26565b6001600160a01b038116610d1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610505565b61059881611127565b6003546001600160a01b0316331461085c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610505565b60026106d08282611ee3565b600060065460ff166001811115610da557610da5611ae0565b148015610db25750600081115b80610dde5750600160065460ff166001811115610dd157610dd1611ae0565b148015610dde5750806001145b6105985760405162461bcd60e51b815260206004820152602360248201527f466572616c46696c6541697264726f7056313a20616d6f756e74206d69736d616044820152620e8c6d60eb1b6064820152608401610505565b6001600160a01b038416610e965760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610505565b336000610ea2856114ff565b90506000610eaf856114ff565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290610ee1908490611fa3565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610f418360008989898961154a565b50505050505050565b8151835114610fac5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610505565b6001600160a01b038416610fd25760405162461bcd60e51b815260040161050590611fb6565b3360005b84518110156110b9576000858281518110610ff357610ff3611e53565b60200260200101519050600085838151811061101157611011611e53565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156110615760405162461bcd60e51b815260040161050590611ffb565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061109e908490611fa3565b92505081905550505050806110b290611e7f565b9050610fd6565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611109929190612045565b60405180910390a461111f8187878787876116a5565b505050505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166111db5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610505565b3360006111e7846114ff565b905060006111f4846114ff565b60408051602080820183526000918290528882528181528282206001600160a01b038b168352905220549091508481101561127d5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610505565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052610f41565b816001600160a01b0316836001600160a01b0316036113685760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610505565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166113fb5760405162461bcd60e51b815260040161050590611fb6565b336000611407856114ff565b90506000611414856114ff565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156114575760405162461bcd60e51b815260040161050590611ffb565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611494908490611fa3565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114f4848a8a8a8a8a61154a565b505050505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061153957611539611e53565b602090810291909101015292915050565b6001600160a01b0384163b1561111f5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061158e9089908990889088908890600401612073565b6020604051808303816000875af19250505080156115c9575060408051601f3d908101601f191682019092526115c6918101906120b8565b60015b611675576115d56120d5565b806308c379a00361160e57506115e96120f1565b806115f45750611610565b8060405162461bcd60e51b8152600401610505919061194c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610505565b6001600160e01b0319811663f23a6e6160e01b14610f415760405162461bcd60e51b81526004016105059061217b565b6001600160a01b0384163b1561111f5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906116e990899089908890889088906004016121c3565b6020604051808303816000875af1925050508015611724575060408051601f3d908101601f19168201909252611721918101906120b8565b60015b611730576115d56120d5565b6001600160e01b0319811663bc197c8160e01b14610f415760405162461bcd60e51b81526004016105059061217b565b80356001600160a01b038116811461177757600080fd5b919050565b6000806040838503121561178f57600080fd5b61179883611760565b946020939093013593505050565b6001600160e01b03198116811461059857600080fd5b6000602082840312156117ce57600080fd5b81356117d9816117a6565b9392505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171561181c5761181c6117e0565b6040525050565b600067ffffffffffffffff83111561183d5761183d6117e0565b604051611854601f8501601f1916602001826117f6565b80915083815284848401111561186957600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561189357600080fd5b813567ffffffffffffffff8111156118aa57600080fd5b8201601f810184136118bb57600080fd5b6118ca84823560208401611823565b949350505050565b6000602082840312156118e457600080fd5b6117d982611760565b6000602082840312156118ff57600080fd5b5035919050565b6000815180845260005b8181101561192c57602081850181015186830182015201611910565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006117d96020830184611906565b6000806040838503121561197257600080fd5b50508035926020909101359150565b600067ffffffffffffffff82111561199b5761199b6117e0565b5060051b60200190565b600082601f8301126119b657600080fd5b813560206119c382611981565b6040516119d082826117f6565b83815260059390931b85018201928281019150868411156119f057600080fd5b8286015b84811015611a0b57803583529183019183016119f4565b509695505050505050565b600082601f830112611a2757600080fd5b6117d983833560208501611823565b600080600080600060a08688031215611a4e57600080fd5b611a5786611760565b9450611a6560208701611760565b9350604086013567ffffffffffffffff80821115611a8257600080fd5b611a8e89838a016119a5565b94506060880135915080821115611aa457600080fd5b611ab089838a016119a5565b93506080880135915080821115611ac657600080fd5b50611ad388828901611a16565b9150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b6020810160028310611b1857634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215611b3157600080fd5b823567ffffffffffffffff80821115611b4957600080fd5b818501915085601f830112611b5d57600080fd5b81356020611b6a82611981565b604051611b7782826117f6565b83815260059390931b8501820192828101915089841115611b9757600080fd5b948201945b83861015611bbc57611bad86611760565b82529482019490820190611b9c565b96505086013592505080821115611bd257600080fd5b50611bdf858286016119a5565b9150509250929050565b600081518084526020808501945080840160005b83811015611c1957815187529582019590820190600101611bfd565b509495945050505050565b6020815260006117d96020830184611be9565b60008060408385031215611c4a57600080fd5b611c5383611760565b915060208301358015158114611c6857600080fd5b809150509250929050565b600080600060408486031215611c8857600080fd5b83359250602084013567ffffffffffffffff80821115611ca757600080fd5b818601915086601f830112611cbb57600080fd5b813581811115611cca57600080fd5b8760208260051b8501011115611cdf57600080fd5b6020830194508093505050509250925092565b60008060408385031215611d0557600080fd5b611d0e83611760565b9150611d1c60208401611760565b90509250929050565b600080600080600060a08688031215611d3d57600080fd5b611d4686611760565b9450611d5460208701611760565b93506040860135925060608601359150608086013567ffffffffffffffff811115611d7e57600080fd5b611ad388828901611a16565b600181811c90821680611d9e57607f821691505b602082108103611dbe57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f466572616c46696c6541697264726f7056313a20616c726561647920656e64656040820152601960fa1b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611e9157611e91611e69565b5060010190565b601f821115611ede57600081815260208120601f850160051c81016020861015611ebf5750805b601f850160051c820191505b8181101561111f57828155600101611ecb565b505050565b815167ffffffffffffffff811115611efd57611efd6117e0565b611f1181611f0b8454611d8a565b84611e98565b602080601f831160018114611f465760008415611f2e5750858301515b600019600386901b1c1916600185901b17855561111f565b600085815260208120601f198616915b82811015611f7557888601518255948401946001909101908401611f56565b5085821015611f935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561053157610531611e69565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006120586040830185611be9565b828103602084015261206a8185611be9565b95945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906120ad90830184611906565b979650505050505050565b6000602082840312156120ca57600080fd5b81516117d9816117a6565b600060033d11156120ee5760046000803e5060005160e01c5b90565b600060443d10156120ff5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561212f57505050505090565b82850191508151818111156121475750505050505090565b843d87010160208285010111156121615750505050505090565b612170602082860101876117f6565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906121ef90830186611be9565b82810360608401526122018186611be9565b905082810360808401526122158185611906565b9897505050505050505056fea26469706673582212207a48937f9c5e96cae06d743a33fab77a049163db9dc90489aaeb2d0299ec070564736f6c63430008110033", +} + +// FeralFileAirdropV1ABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralFileAirdropV1MetaData.ABI instead. +var FeralFileAirdropV1ABI = FeralFileAirdropV1MetaData.ABI + +// FeralFileAirdropV1Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralFileAirdropV1MetaData.Bin instead. +var FeralFileAirdropV1Bin = FeralFileAirdropV1MetaData.Bin + +// DeployFeralFileAirdropV1 deploys a new Ethereum contract, binding an instance of FeralFileAirdropV1 to it. +func DeployFeralFileAirdropV1(auth *bind.TransactOpts, backend bind.ContractBackend, tokenType_ uint8, tokenURI_ string, contractURI_ string, burnable_ bool, bridgeable_ bool) (common.Address, *types.Transaction, *FeralFileAirdropV1, error) { + parsed, err := FeralFileAirdropV1MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralFileAirdropV1Bin), backend, tokenType_, tokenURI_, contractURI_, burnable_, bridgeable_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralFileAirdropV1{FeralFileAirdropV1Caller: FeralFileAirdropV1Caller{contract: contract}, FeralFileAirdropV1Transactor: FeralFileAirdropV1Transactor{contract: contract}, FeralFileAirdropV1Filterer: FeralFileAirdropV1Filterer{contract: contract}}, nil +} + +// FeralFileAirdropV1 is an auto generated Go binding around an Ethereum contract. +type FeralFileAirdropV1 struct { + FeralFileAirdropV1Caller // Read-only binding to the contract + FeralFileAirdropV1Transactor // Write-only binding to the contract + FeralFileAirdropV1Filterer // Log filterer for contract events +} + +// FeralFileAirdropV1Caller is an auto generated read-only Go binding around an Ethereum contract. +type FeralFileAirdropV1Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralFileAirdropV1Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralFileAirdropV1Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralFileAirdropV1Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralFileAirdropV1Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralFileAirdropV1Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralFileAirdropV1Session struct { + Contract *FeralFileAirdropV1 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralFileAirdropV1CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralFileAirdropV1CallerSession struct { + Contract *FeralFileAirdropV1Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralFileAirdropV1TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralFileAirdropV1TransactorSession struct { + Contract *FeralFileAirdropV1Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralFileAirdropV1Raw is an auto generated low-level Go binding around an Ethereum contract. +type FeralFileAirdropV1Raw struct { + Contract *FeralFileAirdropV1 // Generic contract binding to access the raw methods on +} + +// FeralFileAirdropV1CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralFileAirdropV1CallerRaw struct { + Contract *FeralFileAirdropV1Caller // Generic read-only contract binding to access the raw methods on +} + +// FeralFileAirdropV1TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralFileAirdropV1TransactorRaw struct { + Contract *FeralFileAirdropV1Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralFileAirdropV1 creates a new instance of FeralFileAirdropV1, bound to a specific deployed contract. +func NewFeralFileAirdropV1(address common.Address, backend bind.ContractBackend) (*FeralFileAirdropV1, error) { + contract, err := bindFeralFileAirdropV1(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1{FeralFileAirdropV1Caller: FeralFileAirdropV1Caller{contract: contract}, FeralFileAirdropV1Transactor: FeralFileAirdropV1Transactor{contract: contract}, FeralFileAirdropV1Filterer: FeralFileAirdropV1Filterer{contract: contract}}, nil +} + +// NewFeralFileAirdropV1Caller creates a new read-only instance of FeralFileAirdropV1, bound to a specific deployed contract. +func NewFeralFileAirdropV1Caller(address common.Address, caller bind.ContractCaller) (*FeralFileAirdropV1Caller, error) { + contract, err := bindFeralFileAirdropV1(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1Caller{contract: contract}, nil +} + +// NewFeralFileAirdropV1Transactor creates a new write-only instance of FeralFileAirdropV1, bound to a specific deployed contract. +func NewFeralFileAirdropV1Transactor(address common.Address, transactor bind.ContractTransactor) (*FeralFileAirdropV1Transactor, error) { + contract, err := bindFeralFileAirdropV1(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1Transactor{contract: contract}, nil +} + +// NewFeralFileAirdropV1Filterer creates a new log filterer instance of FeralFileAirdropV1, bound to a specific deployed contract. +func NewFeralFileAirdropV1Filterer(address common.Address, filterer bind.ContractFilterer) (*FeralFileAirdropV1Filterer, error) { + contract, err := bindFeralFileAirdropV1(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1Filterer{contract: contract}, nil +} + +// bindFeralFileAirdropV1 binds a generic wrapper to an already deployed contract. +func bindFeralFileAirdropV1(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralFileAirdropV1MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralFileAirdropV1 *FeralFileAirdropV1Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralFileAirdropV1.Contract.FeralFileAirdropV1Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralFileAirdropV1 *FeralFileAirdropV1Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.FeralFileAirdropV1Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralFileAirdropV1 *FeralFileAirdropV1Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.FeralFileAirdropV1Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralFileAirdropV1.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.contract.Transact(opts, method, params...) +} + +// AirdroppedAddresses is a free data retrieval call binding the contract method 0x985573c2. +// +// Solidity: function airdroppedAddresses(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) AirdroppedAddresses(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "airdroppedAddresses", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// AirdroppedAddresses is a free data retrieval call binding the contract method 0x985573c2. +// +// Solidity: function airdroppedAddresses(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) AirdroppedAddresses(arg0 common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.AirdroppedAddresses(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// AirdroppedAddresses is a free data retrieval call binding the contract method 0x985573c2. +// +// Solidity: function airdroppedAddresses(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) AirdroppedAddresses(arg0 common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.AirdroppedAddresses(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x00fdd58e. +// +// Solidity: function balanceOf(address account, uint256 id) view returns(uint256) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) BalanceOf(opts *bind.CallOpts, account common.Address, id *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "balanceOf", account, id) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x00fdd58e. +// +// Solidity: function balanceOf(address account, uint256 id) view returns(uint256) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) BalanceOf(account common.Address, id *big.Int) (*big.Int, error) { + return _FeralFileAirdropV1.Contract.BalanceOf(&_FeralFileAirdropV1.CallOpts, account, id) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x00fdd58e. +// +// Solidity: function balanceOf(address account, uint256 id) view returns(uint256) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) BalanceOf(account common.Address, id *big.Int) (*big.Int, error) { + return _FeralFileAirdropV1.Contract.BalanceOf(&_FeralFileAirdropV1.CallOpts, account, id) +} + +// BalanceOfBatch is a free data retrieval call binding the contract method 0x4e1273f4. +// +// Solidity: function balanceOfBatch(address[] accounts, uint256[] ids) view returns(uint256[]) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) BalanceOfBatch(opts *bind.CallOpts, accounts []common.Address, ids []*big.Int) ([]*big.Int, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "balanceOfBatch", accounts, ids) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// BalanceOfBatch is a free data retrieval call binding the contract method 0x4e1273f4. +// +// Solidity: function balanceOfBatch(address[] accounts, uint256[] ids) view returns(uint256[]) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) BalanceOfBatch(accounts []common.Address, ids []*big.Int) ([]*big.Int, error) { + return _FeralFileAirdropV1.Contract.BalanceOfBatch(&_FeralFileAirdropV1.CallOpts, accounts, ids) +} + +// BalanceOfBatch is a free data retrieval call binding the contract method 0x4e1273f4. +// +// Solidity: function balanceOfBatch(address[] accounts, uint256[] ids) view returns(uint256[]) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) BalanceOfBatch(accounts []common.Address, ids []*big.Int) ([]*big.Int, error) { + return _FeralFileAirdropV1.Contract.BalanceOfBatch(&_FeralFileAirdropV1.CallOpts, accounts, ids) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) Bridgeable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "bridgeable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Bridgeable() (bool, error) { + return _FeralFileAirdropV1.Contract.Bridgeable(&_FeralFileAirdropV1.CallOpts) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) Bridgeable() (bool, error) { + return _FeralFileAirdropV1.Contract.Bridgeable(&_FeralFileAirdropV1.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) Burnable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "burnable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Burnable() (bool, error) { + return _FeralFileAirdropV1.Contract.Burnable(&_FeralFileAirdropV1.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) Burnable() (bool, error) { + return _FeralFileAirdropV1.Contract.Burnable(&_FeralFileAirdropV1.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) CodeVersion(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "codeVersion") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) CodeVersion() (string, error) { + return _FeralFileAirdropV1.Contract.CodeVersion(&_FeralFileAirdropV1.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) CodeVersion() (string, error) { + return _FeralFileAirdropV1.Contract.CodeVersion(&_FeralFileAirdropV1.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) ContractURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "contractURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) ContractURI() (string, error) { + return _FeralFileAirdropV1.Contract.ContractURI(&_FeralFileAirdropV1.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) ContractURI() (string, error) { + return _FeralFileAirdropV1.Contract.ContractURI(&_FeralFileAirdropV1.CallOpts) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address account, address operator) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) IsApprovedForAll(opts *bind.CallOpts, account common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "isApprovedForAll", account, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address account, address operator) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) IsApprovedForAll(account common.Address, operator common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.IsApprovedForAll(&_FeralFileAirdropV1.CallOpts, account, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address account, address operator) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) IsApprovedForAll(account common.Address, operator common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.IsApprovedForAll(&_FeralFileAirdropV1.CallOpts, account, operator) +} + +// IsEnded is a free data retrieval call binding the contract method 0xa4fd6f56. +// +// Solidity: function isEnded() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) IsEnded(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "isEnded") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsEnded is a free data retrieval call binding the contract method 0xa4fd6f56. +// +// Solidity: function isEnded() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) IsEnded() (bool, error) { + return _FeralFileAirdropV1.Contract.IsEnded(&_FeralFileAirdropV1.CallOpts) +} + +// IsEnded is a free data retrieval call binding the contract method 0xa4fd6f56. +// +// Solidity: function isEnded() view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) IsEnded() (bool, error) { + return _FeralFileAirdropV1.Contract.IsEnded(&_FeralFileAirdropV1.CallOpts) +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address from_, uint256 , uint256 , bytes ) pure returns(bytes4) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) OnERC1155Received(opts *bind.CallOpts, arg0 common.Address, from_ common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "onERC1155Received", arg0, from_, arg2, arg3, arg4) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address from_, uint256 , uint256 , bytes ) pure returns(bytes4) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) OnERC1155Received(arg0 common.Address, from_ common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + return _FeralFileAirdropV1.Contract.OnERC1155Received(&_FeralFileAirdropV1.CallOpts, arg0, from_, arg2, arg3, arg4) +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address from_, uint256 , uint256 , bytes ) pure returns(bytes4) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) OnERC1155Received(arg0 common.Address, from_ common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + return _FeralFileAirdropV1.Contract.OnERC1155Received(&_FeralFileAirdropV1.CallOpts, arg0, from_, arg2, arg3, arg4) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralFileAirdropV1.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 + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Owner() (common.Address, error) { + return _FeralFileAirdropV1.Contract.Owner(&_FeralFileAirdropV1.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) Owner() (common.Address, error) { + return _FeralFileAirdropV1.Contract.Owner(&_FeralFileAirdropV1.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralFileAirdropV1.Contract.SupportsInterface(&_FeralFileAirdropV1.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralFileAirdropV1.Contract.SupportsInterface(&_FeralFileAirdropV1.CallOpts, interfaceId) +} + +// TokenType is a free data retrieval call binding the contract method 0x30fa738c. +// +// Solidity: function tokenType() view returns(uint8) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) TokenType(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "tokenType") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// TokenType is a free data retrieval call binding the contract method 0x30fa738c. +// +// Solidity: function tokenType() view returns(uint8) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) TokenType() (uint8, error) { + return _FeralFileAirdropV1.Contract.TokenType(&_FeralFileAirdropV1.CallOpts) +} + +// TokenType is a free data retrieval call binding the contract method 0x30fa738c. +// +// Solidity: function tokenType() view returns(uint8) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) TokenType() (uint8, error) { + return _FeralFileAirdropV1.Contract.TokenType(&_FeralFileAirdropV1.CallOpts) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) Trustees(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "trustees", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Trustees(arg0 common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.Trustees(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) Trustees(arg0 common.Address) (bool, error) { + return _FeralFileAirdropV1.Contract.Trustees(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// Uri is a free data retrieval call binding the contract method 0x0e89341c. +// +// Solidity: function uri(uint256 ) view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Caller) Uri(opts *bind.CallOpts, arg0 *big.Int) (string, error) { + var out []interface{} + err := _FeralFileAirdropV1.contract.Call(opts, &out, "uri", arg0) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Uri is a free data retrieval call binding the contract method 0x0e89341c. +// +// Solidity: function uri(uint256 ) view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Uri(arg0 *big.Int) (string, error) { + return _FeralFileAirdropV1.Contract.Uri(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// Uri is a free data retrieval call binding the contract method 0x0e89341c. +// +// Solidity: function uri(uint256 ) view returns(string) +func (_FeralFileAirdropV1 *FeralFileAirdropV1CallerSession) Uri(arg0 *big.Int) (string, error) { + return _FeralFileAirdropV1.Contract.Uri(&_FeralFileAirdropV1.CallOpts, arg0) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) AddTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "addTrustee", _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.AddTrustee(&_FeralFileAirdropV1.TransactOpts, _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.AddTrustee(&_FeralFileAirdropV1.TransactOpts, _trustee) +} + +// Airdrop is a paid mutator transaction binding the contract method 0xbdf7a8e6. +// +// Solidity: function airdrop(uint256 tokenID_, address[] to_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) Airdrop(opts *bind.TransactOpts, tokenID_ *big.Int, to_ []common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "airdrop", tokenID_, to_) +} + +// Airdrop is a paid mutator transaction binding the contract method 0xbdf7a8e6. +// +// Solidity: function airdrop(uint256 tokenID_, address[] to_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Airdrop(tokenID_ *big.Int, to_ []common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Airdrop(&_FeralFileAirdropV1.TransactOpts, tokenID_, to_) +} + +// Airdrop is a paid mutator transaction binding the contract method 0xbdf7a8e6. +// +// Solidity: function airdrop(uint256 tokenID_, address[] to_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) Airdrop(tokenID_ *big.Int, to_ []common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Airdrop(&_FeralFileAirdropV1.TransactOpts, tokenID_, to_) +} + +// Burn is a paid mutator transaction binding the contract method 0xb390c0ab. +// +// Solidity: function burn(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) Burn(opts *bind.TransactOpts, tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "burn", tokenID_, amount_) +} + +// Burn is a paid mutator transaction binding the contract method 0xb390c0ab. +// +// Solidity: function burn(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Burn(tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Burn(&_FeralFileAirdropV1.TransactOpts, tokenID_, amount_) +} + +// Burn is a paid mutator transaction binding the contract method 0xb390c0ab. +// +// Solidity: function burn(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) Burn(tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Burn(&_FeralFileAirdropV1.TransactOpts, tokenID_, amount_) +} + +// BurnRemaining is a paid mutator transaction binding the contract method 0x96d67082. +// +// Solidity: function burnRemaining(uint256 tokenID_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) BurnRemaining(opts *bind.TransactOpts, tokenID_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "burnRemaining", tokenID_) +} + +// BurnRemaining is a paid mutator transaction binding the contract method 0x96d67082. +// +// Solidity: function burnRemaining(uint256 tokenID_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) BurnRemaining(tokenID_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.BurnRemaining(&_FeralFileAirdropV1.TransactOpts, tokenID_) +} + +// BurnRemaining is a paid mutator transaction binding the contract method 0x96d67082. +// +// Solidity: function burnRemaining(uint256 tokenID_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) BurnRemaining(tokenID_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.BurnRemaining(&_FeralFileAirdropV1.TransactOpts, tokenID_) +} + +// End is a paid mutator transaction binding the contract method 0xefbe1c1c. +// +// Solidity: function end() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) End(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "end") +} + +// End is a paid mutator transaction binding the contract method 0xefbe1c1c. +// +// Solidity: function end() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) End() (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.End(&_FeralFileAirdropV1.TransactOpts) +} + +// End is a paid mutator transaction binding the contract method 0xefbe1c1c. +// +// Solidity: function end() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) End() (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.End(&_FeralFileAirdropV1.TransactOpts) +} + +// Mint is a paid mutator transaction binding the contract method 0x1b2ef1ca. +// +// Solidity: function mint(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) Mint(opts *bind.TransactOpts, tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "mint", tokenID_, amount_) +} + +// Mint is a paid mutator transaction binding the contract method 0x1b2ef1ca. +// +// Solidity: function mint(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) Mint(tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Mint(&_FeralFileAirdropV1.TransactOpts, tokenID_, amount_) +} + +// Mint is a paid mutator transaction binding the contract method 0x1b2ef1ca. +// +// Solidity: function mint(uint256 tokenID_, uint256 amount_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) Mint(tokenID_ *big.Int, amount_ *big.Int) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.Mint(&_FeralFileAirdropV1.TransactOpts, tokenID_, amount_) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) RemoveTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "removeTrustee", _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.RemoveTrustee(&_FeralFileAirdropV1.TransactOpts, _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.RemoveTrustee(&_FeralFileAirdropV1.TransactOpts, _trustee) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) RenounceOwnership() (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.RenounceOwnership(&_FeralFileAirdropV1.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.RenounceOwnership(&_FeralFileAirdropV1.TransactOpts) +} + +// SafeBatchTransferFrom is a paid mutator transaction binding the contract method 0x2eb2c2d6. +// +// Solidity: function safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) SafeBatchTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, ids []*big.Int, amounts []*big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "safeBatchTransferFrom", from, to, ids, amounts, data) +} + +// SafeBatchTransferFrom is a paid mutator transaction binding the contract method 0x2eb2c2d6. +// +// Solidity: function safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SafeBatchTransferFrom(from common.Address, to common.Address, ids []*big.Int, amounts []*big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SafeBatchTransferFrom(&_FeralFileAirdropV1.TransactOpts, from, to, ids, amounts, data) +} + +// SafeBatchTransferFrom is a paid mutator transaction binding the contract method 0x2eb2c2d6. +// +// Solidity: function safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) SafeBatchTransferFrom(from common.Address, to common.Address, ids []*big.Int, amounts []*big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SafeBatchTransferFrom(&_FeralFileAirdropV1.TransactOpts, from, to, ids, amounts, data) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0xf242432a. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "safeTransferFrom", from, to, id, amount, data) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0xf242432a. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SafeTransferFrom(from common.Address, to common.Address, id *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SafeTransferFrom(&_FeralFileAirdropV1.TransactOpts, from, to, id, amount, data) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0xf242432a. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) SafeTransferFrom(from common.Address, to common.Address, id *big.Int, amount *big.Int, data []byte) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SafeTransferFrom(&_FeralFileAirdropV1.TransactOpts, from, to, id, amount, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetApprovalForAll(&_FeralFileAirdropV1.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetApprovalForAll(&_FeralFileAirdropV1.TransactOpts, operator, approved) +} + +// SetContractURI is a paid mutator transaction binding the contract method 0x938e3d7b. +// +// Solidity: function setContractURI(string contractURI_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) SetContractURI(opts *bind.TransactOpts, contractURI_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "setContractURI", contractURI_) +} + +// SetContractURI is a paid mutator transaction binding the contract method 0x938e3d7b. +// +// Solidity: function setContractURI(string contractURI_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SetContractURI(contractURI_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetContractURI(&_FeralFileAirdropV1.TransactOpts, contractURI_) +} + +// SetContractURI is a paid mutator transaction binding the contract method 0x938e3d7b. +// +// Solidity: function setContractURI(string contractURI_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) SetContractURI(contractURI_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetContractURI(&_FeralFileAirdropV1.TransactOpts, contractURI_) +} + +// SetURI is a paid mutator transaction binding the contract method 0x02fe5305. +// +// Solidity: function setURI(string uri_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) SetURI(opts *bind.TransactOpts, uri_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "setURI", uri_) +} + +// SetURI is a paid mutator transaction binding the contract method 0x02fe5305. +// +// Solidity: function setURI(string uri_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) SetURI(uri_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetURI(&_FeralFileAirdropV1.TransactOpts, uri_) +} + +// SetURI is a paid mutator transaction binding the contract method 0x02fe5305. +// +// Solidity: function setURI(string uri_) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) SetURI(uri_ string) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.SetURI(&_FeralFileAirdropV1.TransactOpts, uri_) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.TransferOwnership(&_FeralFileAirdropV1.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralFileAirdropV1 *FeralFileAirdropV1TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralFileAirdropV1.Contract.TransferOwnership(&_FeralFileAirdropV1.TransactOpts, newOwner) +} + +// FeralFileAirdropV1ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1ApprovalForAllIterator struct { + Event *FeralFileAirdropV1ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1ApprovalForAll represents a ApprovalForAll event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1ApprovalForAll struct { + Account common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed account, address indexed operator, bool approved) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterApprovalForAll(opts *bind.FilterOpts, account []common.Address, operator []common.Address) (*FeralFileAirdropV1ApprovalForAllIterator, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "ApprovalForAll", accountRule, operatorRule) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1ApprovalForAllIterator{contract: _FeralFileAirdropV1.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed account, address indexed operator, bool approved) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1ApprovalForAll, account []common.Address, operator []common.Address) (event.Subscription, error) { + + var accountRule []interface{} + for _, accountItem := range account { + accountRule = append(accountRule, accountItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "ApprovalForAll", accountRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1ApprovalForAll) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed account, address indexed operator, bool approved) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseApprovalForAll(log types.Log) (*FeralFileAirdropV1ApprovalForAll, error) { + event := new(FeralFileAirdropV1ApprovalForAll) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralFileAirdropV1ContractURIUpdatedIterator is returned from FilterContractURIUpdated and is used to iterate over the raw logs and unpacked data for ContractURIUpdated events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1ContractURIUpdatedIterator struct { + Event *FeralFileAirdropV1ContractURIUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1ContractURIUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1ContractURIUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1ContractURIUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1ContractURIUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1ContractURIUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1ContractURIUpdated represents a ContractURIUpdated event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1ContractURIUpdated struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterContractURIUpdated is a free log retrieval operation binding the contract event 0xa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962. +// +// Solidity: event ContractURIUpdated() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterContractURIUpdated(opts *bind.FilterOpts) (*FeralFileAirdropV1ContractURIUpdatedIterator, error) { + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "ContractURIUpdated") + if err != nil { + return nil, err + } + return &FeralFileAirdropV1ContractURIUpdatedIterator{contract: _FeralFileAirdropV1.contract, event: "ContractURIUpdated", logs: logs, sub: sub}, nil +} + +// WatchContractURIUpdated is a free log subscription operation binding the contract event 0xa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962. +// +// Solidity: event ContractURIUpdated() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchContractURIUpdated(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1ContractURIUpdated) (event.Subscription, error) { + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "ContractURIUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1ContractURIUpdated) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "ContractURIUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseContractURIUpdated is a log parse operation binding the contract event 0xa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962. +// +// Solidity: event ContractURIUpdated() +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseContractURIUpdated(log types.Log) (*FeralFileAirdropV1ContractURIUpdated, error) { + event := new(FeralFileAirdropV1ContractURIUpdated) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "ContractURIUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralFileAirdropV1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1OwnershipTransferredIterator struct { + Event *FeralFileAirdropV1OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1OwnershipTransferred represents a OwnershipTransferred event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralFileAirdropV1OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1OwnershipTransferredIterator{contract: _FeralFileAirdropV1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1OwnershipTransferred) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseOwnershipTransferred(log types.Log) (*FeralFileAirdropV1OwnershipTransferred, error) { + event := new(FeralFileAirdropV1OwnershipTransferred) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralFileAirdropV1TransferBatchIterator is returned from FilterTransferBatch and is used to iterate over the raw logs and unpacked data for TransferBatch events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1TransferBatchIterator struct { + Event *FeralFileAirdropV1TransferBatch // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1TransferBatchIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1TransferBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1TransferBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1TransferBatchIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1TransferBatchIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1TransferBatch represents a TransferBatch event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1TransferBatch struct { + Operator common.Address + From common.Address + To common.Address + Ids []*big.Int + Values []*big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransferBatch is a free log retrieval operation binding the contract event 0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb. +// +// Solidity: event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterTransferBatch(opts *bind.FilterOpts, operator []common.Address, from []common.Address, to []common.Address) (*FeralFileAirdropV1TransferBatchIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "TransferBatch", operatorRule, fromRule, toRule) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1TransferBatchIterator{contract: _FeralFileAirdropV1.contract, event: "TransferBatch", logs: logs, sub: sub}, nil +} + +// WatchTransferBatch is a free log subscription operation binding the contract event 0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb. +// +// Solidity: event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchTransferBatch(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1TransferBatch, operator []common.Address, from []common.Address, to []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "TransferBatch", operatorRule, fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1TransferBatch) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "TransferBatch", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransferBatch is a log parse operation binding the contract event 0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb. +// +// Solidity: event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseTransferBatch(log types.Log) (*FeralFileAirdropV1TransferBatch, error) { + event := new(FeralFileAirdropV1TransferBatch) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "TransferBatch", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralFileAirdropV1TransferSingleIterator is returned from FilterTransferSingle and is used to iterate over the raw logs and unpacked data for TransferSingle events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1TransferSingleIterator struct { + Event *FeralFileAirdropV1TransferSingle // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1TransferSingleIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1TransferSingle) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1TransferSingle) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1TransferSingleIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1TransferSingleIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1TransferSingle represents a TransferSingle event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1TransferSingle struct { + Operator common.Address + From common.Address + To common.Address + Id *big.Int + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransferSingle is a free log retrieval operation binding the contract event 0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62. +// +// Solidity: event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterTransferSingle(opts *bind.FilterOpts, operator []common.Address, from []common.Address, to []common.Address) (*FeralFileAirdropV1TransferSingleIterator, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "TransferSingle", operatorRule, fromRule, toRule) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1TransferSingleIterator{contract: _FeralFileAirdropV1.contract, event: "TransferSingle", logs: logs, sub: sub}, nil +} + +// WatchTransferSingle is a free log subscription operation binding the contract event 0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62. +// +// Solidity: event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchTransferSingle(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1TransferSingle, operator []common.Address, from []common.Address, to []common.Address) (event.Subscription, error) { + + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "TransferSingle", operatorRule, fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1TransferSingle) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "TransferSingle", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransferSingle is a log parse operation binding the contract event 0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62. +// +// Solidity: event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseTransferSingle(log types.Log) (*FeralFileAirdropV1TransferSingle, error) { + event := new(FeralFileAirdropV1TransferSingle) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "TransferSingle", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralFileAirdropV1URIIterator is returned from FilterURI and is used to iterate over the raw logs and unpacked data for URI events raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1URIIterator struct { + Event *FeralFileAirdropV1URI // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralFileAirdropV1URIIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1URI) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralFileAirdropV1URI) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralFileAirdropV1URIIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralFileAirdropV1URIIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralFileAirdropV1URI represents a URI event raised by the FeralFileAirdropV1 contract. +type FeralFileAirdropV1URI struct { + Value string + Id *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterURI is a free log retrieval operation binding the contract event 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b. +// +// Solidity: event URI(string value, uint256 indexed id) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) FilterURI(opts *bind.FilterOpts, id []*big.Int) (*FeralFileAirdropV1URIIterator, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.FilterLogs(opts, "URI", idRule) + if err != nil { + return nil, err + } + return &FeralFileAirdropV1URIIterator{contract: _FeralFileAirdropV1.contract, event: "URI", logs: logs, sub: sub}, nil +} + +// WatchURI is a free log subscription operation binding the contract event 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b. +// +// Solidity: event URI(string value, uint256 indexed id) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) WatchURI(opts *bind.WatchOpts, sink chan<- *FeralFileAirdropV1URI, id []*big.Int) (event.Subscription, error) { + + var idRule []interface{} + for _, idItem := range id { + idRule = append(idRule, idItem) + } + + logs, sub, err := _FeralFileAirdropV1.contract.WatchLogs(opts, "URI", idRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralFileAirdropV1URI) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "URI", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseURI is a log parse operation binding the contract event 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b. +// +// Solidity: event URI(string value, uint256 indexed id) +func (_FeralFileAirdropV1 *FeralFileAirdropV1Filterer) ParseURI(log types.Log) (*FeralFileAirdropV1URI, error) { + event := new(FeralFileAirdropV1URI) + if err := _FeralFileAirdropV1.contract.UnpackLog(event, "URI", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/binding/feralfile-english-auction/abi.go b/binding/feralfile-english-auction/abi.go new file mode 100644 index 0000000..1c8dcd4 --- /dev/null +++ b/binding/feralfile-english-auction/abi.go @@ -0,0 +1,1179 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package english_auction + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralfileEnglishAuctionAuction is an auto generated low-level Go binding around an user-defined struct. +type FeralfileEnglishAuctionAuction struct { + Id *big.Int + StartAt *big.Int + EndAt *big.Int + ExtendDuration *big.Int + ExtendThreshold *big.Int + MinIncreaseFactor *big.Int + MinIncreaseAmount *big.Int + MinPrice *big.Int + IsSettled bool +} + +// FeralfileEnglishAuctionAuctionStatus is an auto generated low-level Go binding around an user-defined struct. +type FeralfileEnglishAuctionAuctionStatus struct { + HighestBid FeralfileEnglishAuctionBid + EndAt *big.Int + IsSettled bool +} + +// FeralfileEnglishAuctionBid is an auto generated low-level Go binding around an user-defined struct. +type FeralfileEnglishAuctionBid struct { + Bidder common.Address + Amount *big.Int + FromFeralFile bool +} + +// IFeralfileSaleDataRevenueShare is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataRevenueShare struct { + Recipient common.Address + Bps *big.Int +} + +// IFeralfileSaleDataSaleData is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataSaleData struct { + Price *big.Int + Cost *big.Int + ExpiryTime *big.Int + Destination common.Address + TokenIds []*big.Int + RevenueShares [][]IFeralfileSaleDataRevenueShare + PayByVaultContract bool +} + +// FeralfileEnglishAuctionMetaData contains all meta data concerning the FeralfileEnglishAuction contract. +var FeralfileEnglishAuctionMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"AuctionSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"auctionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bidder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromFeralFile\",\"type\":\"bool\"}],\"name\":\"NewBid\",\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"auctions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"extendDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"extendThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIncreaseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIncreaseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSettled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"highestBids\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromFeralFile\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id_\",\"type\":\"uint256\"}],\"name\":\"ongoingAuction\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"extendDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"extendThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIncreaseFactor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minIncreaseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSettled\",\"type\":\"bool\"}],\"internalType\":\"structFeralfileEnglishAuction.Auction[]\",\"name\":\"auctions_\",\"type\":\"tuple[]\"}],\"name\":\"registerAuctions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"auctionIDs_\",\"type\":\"uint256[]\"}],\"name\":\"listAuctionStatus\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bidder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromFeralFile\",\"type\":\"bool\"}],\"internalType\":\"structFeralfileEnglishAuction.Bid\",\"name\":\"highestBid\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"endAt\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSettled\",\"type\":\"bool\"}],\"internalType\":\"structFeralfileEnglishAuction.AuctionStatus[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionID_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"}],\"name\":\"isValidNewBid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionID_\",\"type\":\"uint256\"}],\"name\":\"placeBid\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionID_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"bidder_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"}],\"name\":\"placeSignedBid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionID_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddr_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vaultAddr_\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bps\",\"type\":\"uint256\"}],\"internalType\":\"structIFeralfileSaleData.RevenueShare[][]\",\"name\":\"revenueShares\",\"type\":\"tuple[][]\"},{\"internalType\":\"bool\",\"name\":\"payByVaultContract\",\"type\":\"bool\"}],\"internalType\":\"structIFeralfileSaleData.SaleData\",\"name\":\"saleData_\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"}],\"name\":\"settleAuction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"auctionID_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"vaultAddr_\",\"type\":\"address\"}],\"name\":\"settleAuctionFund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620025123803806200251283398101604081905262000034916200011d565b806200004033620000cd565b6001600160a01b038116620000a65760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055506200014f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200013057600080fd5b81516001600160a01b03811681146200014857600080fd5b9392505050565b6123b3806200015f6000396000f3fe6080604052600436106100e85760003560e01c80636c19e7831161008a5780639979ef45116100595780639979ef4514610355578063e5de8f5d14610368578063f2fde38b14610388578063f92a6d58146103a857600080fd5b80636c19e783146102d55780636d3ae68a146102f5578063715018a6146103225780638da5cb5b1461033757600080fd5b806321fbf1e6116100c657806321fbf1e6146101b4578063238ac933146101d45780633b8b8bb414610206578063571a26a01461022657600080fd5b806304cf7ec4146100ed5780630d33bcee14610122578063111cb25814610144575b600080fd5b3480156100f957600080fd5b5061010d610108366004611abc565b6103c8565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004611d3d565b610434565b005b34801561015057600080fd5b5061018d61015f366004611abc565b6003602052600090815260409020805460018201546002909201546001600160a01b03909116919060ff1683565b604080516001600160a01b0390941684526020840192909252151590820152606001610119565b3480156101c057600080fd5b506101426101cf366004611e5f565b6106e3565b3480156101e057600080fd5b506001546001600160a01b03165b6040516001600160a01b039091168152602001610119565b34801561021257600080fd5b5061010d610221366004611e8b565b6107b0565b34801561023257600080fd5b5061028f610241366004611abc565b60026020819052600091825260409091208054600182015492820154600383015460048401546005850154600686015460078701546008909701549597969495939492939192909160ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a085015260c084015260e0830152151561010082015261012001610119565b3480156102e157600080fd5b506101426102f0366004611ead565b610875565b34801561030157600080fd5b50610315610310366004611ecf565b610900565b6040516101199190611f0c565b34801561032e57600080fd5b50610142610b24565b34801561034357600080fd5b506000546001600160a01b03166101ee565b610142610363366004611abc565b610b2e565b34801561037457600080fd5b50610142610383366004611f85565b610b3e565b34801561039457600080fd5b506101426103a3366004611ead565b610c79565b3480156103b457600080fd5b506101426103c3366004611fda565b610cef565b6000818152600260205260408120546103fc5760405162461bcd60e51b81526004016103f390612050565b60405180910390fd5b600082815260026020526040902060010154421080159061042e57506000828152600260208190526040909120015442105b92915050565b61043c611205565b8360c001516104bf5760405162461bcd60e51b815260206004820152604360248201527f466572616c66696c65456e676c69736841756374696f6e3a2073616c6544617460448201527f612e70617942795661756c74436f6e74726163742073686f756c64206265207460648201526272756560e81b608482015260a4016103f3565b60008781526003602090815260409182902082516060808201855282546001600160a01b0390811680845260018501549584019590955260029093015460ff1615159482019490945292870151161461059c5760405162461bcd60e51b815260206004820152605360248201527f466572616c66696c65456e676c69736841756374696f6e3a2073616c6544617460448201527f615f2e64657374696e6174696f6e20697320646966666572656e742066726f6d606482015272103434b3b432b9ba103134b2103134b23232b960691b608482015260a4016103f3565b6000888152600260208181526040928390208351610120810185528154815260018201549281019290925291820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e08301526008015460ff16151561010082015261061e81838961125f565b604051632977e4b360e01b81526001600160a01b03891690632977e4b390610650908890889088908c90600401612118565b600060405180830381600087803b15801561066a57600080fd5b505af115801561067e573d6000803e3d6000fd5b5050505081600001516001600160a01b0316886001600160a01b03168a7f3e25c3675d003af5184b628dd8bd4775b9b3abc7351c3574c90870ca25b55f1185602001516040516106d091815260200190565b60405180910390a4505050505050505050565b6106eb611205565b60008281526002602081815260408084208151610120810183528154815260018083015482860152828601548285015260038084015460608085019190915260048501546080850152600585015460a0850152600685015460c0850152600785015460e085015260089094015460ff90811615156101008501528a8952908652968490208451938401855280546001600160a01b03168452908101549483019490945292909301549093161515928201929092526107aa82828561125f565b50505050565b60008281526002602081815260408084208151610120810183528154815260018083015482860152828601548285015260038084015460608085019190915260048501546080850152600585015460a0850152600685015460c0850152600785015460e085015260089094015460ff90811615156101008501528a89529086528488208551948501865280546001600160a01b0316855291820154958401959095529094015490921615159082015261086a8282866113c1565b506001949350505050565b61087d611205565b6001600160a01b0381166108de5760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084016103f3565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60606000825167ffffffffffffffff81111561091e5761091e611af1565b60405190808252806020026020018201604052801561097d57816020015b6040805160c0810182526000606082018181526080830182905260a083018290528252602080830182905292820152825260001990920191018161093c5790505b50905060005b8351811015610b1d576000600260008684815181106109a4576109a46121e1565b602002602001015181526020019081526020016000206040518061012001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820160009054906101000a900460ff161515151581525050905060036000868481518110610a4957610a496121e1565b6020908102919091018101518252818101929092526040908101600020815160608101835281546001600160a01b031681526001820154938101939093526002015460ff161515908201528351849084908110610aa857610aa86121e1565b6020026020010151600001819052508060400151838381518110610ace57610ace6121e1565b60200260200101516020018181525050806101000151838381518110610af657610af66121e1565b60209081029190910101519015156040909101525080610b158161220d565b915050610983565b5092915050565b610b2c611205565b565b610b3b81333460006115d2565b50565b428411610ba35760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c65456e676c69736841756374696f6e3a207369676e61747560448201526c1c99481a5cc8195e1c1a5c9959609a1b60648201526084016103f3565b604080514660208201523091810191909152606081018890526001600160a01b038716608082015260a0810186905260c0810185905260009060e001604051602081830303815290604052805190602001209050610c03818585856117de565b610c625760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c65456e676c69736841756374696f6e3a20696e76616c6964604482015269207369676e617475726560b01b60648201526084016103f3565b610c6f88888860016115d2565b5050505050505050565b610c81611205565b6001600160a01b038116610ce65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f3565b610b3b81611836565b610cf7611205565b60005b8181101561120057600060026000858585818110610d1a57610d1a6121e1565b610120908102929092013583525060208083019390935260409182016000208251918201835280548083526001820154948301949094526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260089091015460ff161515610100820152915015610df45760405162461bcd60e51b815260206004820152602e602482015260008051602061235e83398151915260448201526d08185b1c9958591e48195e1a5cdd60921b60648201526084016103f3565b6000848484818110610e0857610e086121e1565b905061012002016000013511610e745760405162461bcd60e51b815260206004820152602b60248201527f466572616c66696c65456e676c69736841756374696f6e3a20696e76616c696460448201526a08185d58dd1a5bdb881a5960aa1b60648201526084016103f3565b42848484818110610e8757610e876121e1565b905061012002016020013510158015610ebb575042848484818110610eae57610eae6121e1565b9050610120020160400135115b610f345760405162461bcd60e51b8152602060048201526050602482015260008051602061235e83398151915260448201527f2073746172742074696d6520616e6420656e642074696d652073686f756c642060648201526f626520696e207468652066757475726560801b608482015260a4016103f3565b838383818110610f4657610f466121e1565b9050610120020160200135848484818110610f6357610f636121e1565b905061012002016040013511610fdd5760405162461bcd60e51b81526020600482015260446024820181905260008051602061235e833981519152908201527f20656e642074696d652073686f756c642062652061667465722073746172742060648201526374696d6560e01b608482015260a4016103f3565b6000848484818110610ff157610ff16121e1565b9050610120020160a00135116110735760405162461bcd60e51b815260206004820152604d602482015260008051602061235e83398151915260448201527f206d696e20696e63726561736520666163746f722073686f756c64206265206760648201526c0726561746572207468616e203609c1b608482015260a4016103f3565b6000848484818110611087576110876121e1565b9050610120020160c00135116111095760405162461bcd60e51b815260206004820152604d602482015260008051602061235e83398151915260448201527f206d696e20696e63726561736520616d6f756e742073686f756c64206265206760648201526c0726561746572207468616e203609c1b608482015260a4016103f3565b600084848481811061111d5761111d6121e1565b9050610120020160e00135116111955760405162461bcd60e51b8152602060048201526043602482015260008051602061235e83398151915260448201527f206d696e2070726963652073686f756c6420626520677265617465722074686160648201526206e20360ec1b608482015260a4016103f3565b8383838181106111a7576111a76121e1565b90506101200201600260008686868181106111c4576111c46121e1565b9050610120020160000135815260200190815260200160002081816111e99190612233565b9050505080806111f89061220d565b915050610cfa565b505050565b6000546001600160a01b03163314610b2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f3565b82516000036112805760405162461bcd60e51b81526004016103f390612050565b42836040015111156112d55760405162461bcd60e51b815260206004820152602a602482015260008051602061235e833981519152604482015269081b9bdd08195b99195960b21b60648201526084016103f3565b826101000151156112f85760405162461bcd60e51b81526004016103f3906122aa565b81516001600160a01b031661134f5760405162461bcd60e51b815260206004820152601f60248201527f466572616c66696c65456e676c69736841756374696f6e3a206e6f206269640060448201526064016103f3565b825160009081526002602052604090819020600801805460ff19166001179055820151158015611383575060008260200151115b156112005760208201516040516001600160a01b0383169180156108fc02916000818181858888f193505050501580156107aa573d6000803e3d6000fd5b82516113df5760405162461bcd60e51b81526004016103f390612050565b428360200151111580156113f65750826040015142105b61144e5760405162461bcd60e51b8152602060048201526035602482015260008051602061235e833981519152604482015274081b9bdd081cdd185c9d1959081bdc88195b991959605a1b60648201526084016103f3565b826101000151156114715760405162461bcd60e51b81526004016103f3906122aa565b60208201511561154757600060648460a00151846020015161149391906122e8565b61149d91906122ff565b90508360c001518110156114b2575060c08301515b8083602001516114c29190612321565b8210156107aa5760405162461bcd60e51b815260206004820152604760248201527f466572616c66696c65456e676c69736841756374696f6e3a2062696420616d6f60448201527f756e742073686f756c6420666f6c6c6f7720746865206d696e696d756d20696e60648201526618dc995b595b9d60ca1b608482015260a4016103f3565b8260e001518110156112005760405162461bcd60e51b815260206004820152604860248201527f466572616c66696c65456e676c69736841756374696f6e3a2062696420616d6f60448201527f756e742073686f756c642062652067726561746572207468616e206d696e696d606482015267756d20707269636560c01b608482015260a4016103f3565b60008481526002602081815260408084208151610120810183528154815260018083015482860152828601548285015260038084015460608085019190915260048501546080850152600585015460a0850152600685015460c0850152600785015460e085015260089094015460ff90811615156101008501528c8952908652968490208451938401855280546001600160a01b03168452908101549483019490945292909301549093161515928201929092526116918282866113c1565b604080516060810182526001600160a01b038781168252602080830188815287151584860190815260008c8152600390935291859020935184546001600160a01b031916931692909217835590516001830155516002909101805460ff191691151591909117905560808301519083015161170d904290612334565b116117355760608201516117219042612321565b600087815260026020819052604090912001555b806040015115801561174b575060008160200151115b1561178f57805160208201516040516001600160a01b039092169181156108fc0291906000818181858888f1935050505015801561178d573d6000803e3d6000fd5b505b83856001600160a01b0316877ff25203491f62af68d98d27c61e683af917ad41cba414886cc71b4976b363d8d2866040516117ce911515815260200190565b60405180910390a4505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c8120819061181b90848787611886565b6001546001600160a01b039081169116149695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000611897878787876118ae565b915091506118a481611972565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118e55750600090506003611969565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611939573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661196257600060019250925050611969565b9150600090505b94509492505050565b600081600481111561198657611986612347565b0361198e5750565b60018160048111156119a2576119a2612347565b036119ef5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f3565b6002816004811115611a0357611a03612347565b03611a505760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f3565b6003816004811115611a6457611a64612347565b03610b3b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f3565b600060208284031215611ace57600080fd5b5035919050565b80356001600160a01b0381168114611aec57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611b2a57611b2a611af1565b60405290565b60405160e0810167ffffffffffffffff81118282101715611b2a57611b2a611af1565b604051601f8201601f1916810167ffffffffffffffff81118282101715611b7c57611b7c611af1565b604052919050565b600067ffffffffffffffff821115611b9e57611b9e611af1565b5060051b60200190565b600082601f830112611bb957600080fd5b81356020611bce611bc983611b84565b611b53565b82815260059290921b84018101918181019086841115611bed57600080fd5b8286015b84811015611c085780358352918301918301611bf1565b509695505050505050565b600082601f830112611c2457600080fd5b81356020611c34611bc983611b84565b82815260059290921b84018101918181019086841115611c5357600080fd5b8286015b84811015611c0857803567ffffffffffffffff811115611c775760008081fd5b8701603f81018913611c895760008081fd5b848101356040611c9b611bc983611b84565b82815260069290921b8301810191878101908c841115611cbb5760008081fd5b938201935b83851015611d025782858e031215611cd85760008081fd5b611ce0611b07565b611ce986611ad5565b8152858a01358a82015282529382019390880190611cc0565b875250505092840192508301611c57565b8015158114610b3b57600080fd5b8035611aec81611d13565b803560ff81168114611aec57600080fd5b600080600080600080600060e0888a031215611d5857600080fd5b87359650611d6860208901611ad5565b9550611d7660408901611ad5565b9450606088013567ffffffffffffffff80821115611d9357600080fd5b9089019060e0828c031215611da757600080fd5b611daf611b30565b823581526020830135602082015260408301356040820152611dd360608401611ad5565b6060820152608083013582811115611dea57600080fd5b611df68d828601611ba8565b60808301525060a083013582811115611e0e57600080fd5b611e1a8d828601611c13565b60a083015250611e2c60c08401611d21565b60c08201528096505050506080880135925060a08801359150611e5160c08901611d2c565b905092959891949750929550565b60008060408385031215611e7257600080fd5b82359150611e8260208401611ad5565b90509250929050565b60008060408385031215611e9e57600080fd5b50508035926020909101359150565b600060208284031215611ebf57600080fd5b611ec882611ad5565b9392505050565b600060208284031215611ee157600080fd5b813567ffffffffffffffff811115611ef857600080fd5b611f0484828501611ba8565b949350505050565b602080825282518282018190526000919060409081850190868401855b82811015611f78578151805180516001600160a01b0316865287810151888701528601511515868601528681015160608601528501511515608085015260a09093019290850190600101611f29565b5091979650505050505050565b600080600080600080600060e0888a031215611fa057600080fd5b87359650611fb060208901611ad5565b955060408801359450606088013593506080880135925060a08801359150611e5160c08901611d2c565b60008060208385031215611fed57600080fd5b823567ffffffffffffffff8082111561200557600080fd5b818501915085601f83011261201957600080fd5b81358181111561202857600080fd5b8660206101208302850101111561203e57600080fd5b60209290920196919550909350505050565b6020808252602a9082015260008051602061235e833981519152604082015269081b9bdd08199bdd5b9960b21b606082015260800190565b600081518084526020808501808196508360051b810191508286016000805b8681101561210a578385038a52825180518087529087019087870190845b818110156120f557835180516001600160a01b031684528a01518a840152928901926040909201916001016120c5565b50509a87019a955050918501916001016120a7565b509298975050505050505050565b84815260006020858184015260ff85166040840152608060608401526101608301845160808501528185015160a0850152604085015160c085015260018060a01b0360608601511660e0850152608085015160e0610100860152818151808452610180870191508483019350600092505b808310156121a95783518252928401926001929092019190840190612189565b5060a0870151868203607f190161012088015293506121c88185612088565b935050505060c0840151611c0861014085018215159052565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221f5761221f6121f7565b5060010190565b6000813561042e81611d13565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a0820135600582015560c0820135600682015560e082013560078201556122a661228d6101008401612226565b6008830160ff1981541660ff8315151681178255505050565b5050565b602080825260309082015260008051602061235e83398151915260408201526f08185b1c9958591e481cd95d1d1b195960821b606082015260800190565b808202811582820484141761042e5761042e6121f7565b60008261231c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561042e5761042e6121f7565b8181038181111561042e5761042e6121f7565b634e487b7160e01b600052602160045260246000fdfe466572616c66696c65456e676c69736841756374696f6e3a2061756374696f6ea2646970667358221220ca68dbd7be8b1035b41989c000ce5689da0acc9fecf6f67b6a03d7ff2184bf4b64736f6c63430008110033", +} + +// FeralfileEnglishAuctionABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralfileEnglishAuctionMetaData.ABI instead. +var FeralfileEnglishAuctionABI = FeralfileEnglishAuctionMetaData.ABI + +// FeralfileEnglishAuctionBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralfileEnglishAuctionMetaData.Bin instead. +var FeralfileEnglishAuctionBin = FeralfileEnglishAuctionMetaData.Bin + +// DeployFeralfileEnglishAuction deploys a new Ethereum contract, binding an instance of FeralfileEnglishAuction to it. +func DeployFeralfileEnglishAuction(auth *bind.TransactOpts, backend bind.ContractBackend, signer_ common.Address) (common.Address, *types.Transaction, *FeralfileEnglishAuction, error) { + parsed, err := FeralfileEnglishAuctionMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralfileEnglishAuctionBin), backend, signer_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralfileEnglishAuction{FeralfileEnglishAuctionCaller: FeralfileEnglishAuctionCaller{contract: contract}, FeralfileEnglishAuctionTransactor: FeralfileEnglishAuctionTransactor{contract: contract}, FeralfileEnglishAuctionFilterer: FeralfileEnglishAuctionFilterer{contract: contract}}, nil +} + +// FeralfileEnglishAuction is an auto generated Go binding around an Ethereum contract. +type FeralfileEnglishAuction struct { + FeralfileEnglishAuctionCaller // Read-only binding to the contract + FeralfileEnglishAuctionTransactor // Write-only binding to the contract + FeralfileEnglishAuctionFilterer // Log filterer for contract events +} + +// FeralfileEnglishAuctionCaller is an auto generated read-only Go binding around an Ethereum contract. +type FeralfileEnglishAuctionCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileEnglishAuctionTransactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralfileEnglishAuctionTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileEnglishAuctionFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralfileEnglishAuctionFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileEnglishAuctionSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralfileEnglishAuctionSession struct { + Contract *FeralfileEnglishAuction // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileEnglishAuctionCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralfileEnglishAuctionCallerSession struct { + Contract *FeralfileEnglishAuctionCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralfileEnglishAuctionTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralfileEnglishAuctionTransactorSession struct { + Contract *FeralfileEnglishAuctionTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileEnglishAuctionRaw is an auto generated low-level Go binding around an Ethereum contract. +type FeralfileEnglishAuctionRaw struct { + Contract *FeralfileEnglishAuction // Generic contract binding to access the raw methods on +} + +// FeralfileEnglishAuctionCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralfileEnglishAuctionCallerRaw struct { + Contract *FeralfileEnglishAuctionCaller // Generic read-only contract binding to access the raw methods on +} + +// FeralfileEnglishAuctionTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralfileEnglishAuctionTransactorRaw struct { + Contract *FeralfileEnglishAuctionTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralfileEnglishAuction creates a new instance of FeralfileEnglishAuction, bound to a specific deployed contract. +func NewFeralfileEnglishAuction(address common.Address, backend bind.ContractBackend) (*FeralfileEnglishAuction, error) { + contract, err := bindFeralfileEnglishAuction(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuction{FeralfileEnglishAuctionCaller: FeralfileEnglishAuctionCaller{contract: contract}, FeralfileEnglishAuctionTransactor: FeralfileEnglishAuctionTransactor{contract: contract}, FeralfileEnglishAuctionFilterer: FeralfileEnglishAuctionFilterer{contract: contract}}, nil +} + +// NewFeralfileEnglishAuctionCaller creates a new read-only instance of FeralfileEnglishAuction, bound to a specific deployed contract. +func NewFeralfileEnglishAuctionCaller(address common.Address, caller bind.ContractCaller) (*FeralfileEnglishAuctionCaller, error) { + contract, err := bindFeralfileEnglishAuction(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionCaller{contract: contract}, nil +} + +// NewFeralfileEnglishAuctionTransactor creates a new write-only instance of FeralfileEnglishAuction, bound to a specific deployed contract. +func NewFeralfileEnglishAuctionTransactor(address common.Address, transactor bind.ContractTransactor) (*FeralfileEnglishAuctionTransactor, error) { + contract, err := bindFeralfileEnglishAuction(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionTransactor{contract: contract}, nil +} + +// NewFeralfileEnglishAuctionFilterer creates a new log filterer instance of FeralfileEnglishAuction, bound to a specific deployed contract. +func NewFeralfileEnglishAuctionFilterer(address common.Address, filterer bind.ContractFilterer) (*FeralfileEnglishAuctionFilterer, error) { + contract, err := bindFeralfileEnglishAuction(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionFilterer{contract: contract}, nil +} + +// bindFeralfileEnglishAuction binds a generic wrapper to an already deployed contract. +func bindFeralfileEnglishAuction(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralfileEnglishAuctionMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileEnglishAuction.Contract.FeralfileEnglishAuctionCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.FeralfileEnglishAuctionTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.FeralfileEnglishAuctionTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileEnglishAuction.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.contract.Transact(opts, method, params...) +} + +// Auctions is a free data retrieval call binding the contract method 0x571a26a0. +// +// Solidity: function auctions(uint256 ) view returns(uint256 id, uint256 startAt, uint256 endAt, uint256 extendDuration, uint256 extendThreshold, uint256 minIncreaseFactor, uint256 minIncreaseAmount, uint256 minPrice, bool isSettled) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) Auctions(opts *bind.CallOpts, arg0 *big.Int) (struct { + Id *big.Int + StartAt *big.Int + EndAt *big.Int + ExtendDuration *big.Int + ExtendThreshold *big.Int + MinIncreaseFactor *big.Int + MinIncreaseAmount *big.Int + MinPrice *big.Int + IsSettled bool +}, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "auctions", arg0) + + outstruct := new(struct { + Id *big.Int + StartAt *big.Int + EndAt *big.Int + ExtendDuration *big.Int + ExtendThreshold *big.Int + MinIncreaseFactor *big.Int + MinIncreaseAmount *big.Int + MinPrice *big.Int + IsSettled bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Id = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.StartAt = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.EndAt = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int) + outstruct.ExtendDuration = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.ExtendThreshold = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.MinIncreaseFactor = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + outstruct.MinIncreaseAmount = *abi.ConvertType(out[6], new(*big.Int)).(**big.Int) + outstruct.MinPrice = *abi.ConvertType(out[7], new(*big.Int)).(**big.Int) + outstruct.IsSettled = *abi.ConvertType(out[8], new(bool)).(*bool) + + return *outstruct, err + +} + +// Auctions is a free data retrieval call binding the contract method 0x571a26a0. +// +// Solidity: function auctions(uint256 ) view returns(uint256 id, uint256 startAt, uint256 endAt, uint256 extendDuration, uint256 extendThreshold, uint256 minIncreaseFactor, uint256 minIncreaseAmount, uint256 minPrice, bool isSettled) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) Auctions(arg0 *big.Int) (struct { + Id *big.Int + StartAt *big.Int + EndAt *big.Int + ExtendDuration *big.Int + ExtendThreshold *big.Int + MinIncreaseFactor *big.Int + MinIncreaseAmount *big.Int + MinPrice *big.Int + IsSettled bool +}, error) { + return _FeralfileEnglishAuction.Contract.Auctions(&_FeralfileEnglishAuction.CallOpts, arg0) +} + +// Auctions is a free data retrieval call binding the contract method 0x571a26a0. +// +// Solidity: function auctions(uint256 ) view returns(uint256 id, uint256 startAt, uint256 endAt, uint256 extendDuration, uint256 extendThreshold, uint256 minIncreaseFactor, uint256 minIncreaseAmount, uint256 minPrice, bool isSettled) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) Auctions(arg0 *big.Int) (struct { + Id *big.Int + StartAt *big.Int + EndAt *big.Int + ExtendDuration *big.Int + ExtendThreshold *big.Int + MinIncreaseFactor *big.Int + MinIncreaseAmount *big.Int + MinPrice *big.Int + IsSettled bool +}, error) { + return _FeralfileEnglishAuction.Contract.Auctions(&_FeralfileEnglishAuction.CallOpts, arg0) +} + +// HighestBids is a free data retrieval call binding the contract method 0x111cb258. +// +// Solidity: function highestBids(uint256 ) view returns(address bidder, uint256 amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) HighestBids(opts *bind.CallOpts, arg0 *big.Int) (struct { + Bidder common.Address + Amount *big.Int + FromFeralFile bool +}, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "highestBids", arg0) + + outstruct := new(struct { + Bidder common.Address + Amount *big.Int + FromFeralFile bool + }) + if err != nil { + return *outstruct, err + } + + outstruct.Bidder = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.Amount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.FromFeralFile = *abi.ConvertType(out[2], new(bool)).(*bool) + + return *outstruct, err + +} + +// HighestBids is a free data retrieval call binding the contract method 0x111cb258. +// +// Solidity: function highestBids(uint256 ) view returns(address bidder, uint256 amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) HighestBids(arg0 *big.Int) (struct { + Bidder common.Address + Amount *big.Int + FromFeralFile bool +}, error) { + return _FeralfileEnglishAuction.Contract.HighestBids(&_FeralfileEnglishAuction.CallOpts, arg0) +} + +// HighestBids is a free data retrieval call binding the contract method 0x111cb258. +// +// Solidity: function highestBids(uint256 ) view returns(address bidder, uint256 amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) HighestBids(arg0 *big.Int) (struct { + Bidder common.Address + Amount *big.Int + FromFeralFile bool +}, error) { + return _FeralfileEnglishAuction.Contract.HighestBids(&_FeralfileEnglishAuction.CallOpts, arg0) +} + +// IsValidNewBid is a free data retrieval call binding the contract method 0x3b8b8bb4. +// +// Solidity: function isValidNewBid(uint256 auctionID_, uint256 amount_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) IsValidNewBid(opts *bind.CallOpts, auctionID_ *big.Int, amount_ *big.Int) (bool, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "isValidNewBid", auctionID_, amount_) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsValidNewBid is a free data retrieval call binding the contract method 0x3b8b8bb4. +// +// Solidity: function isValidNewBid(uint256 auctionID_, uint256 amount_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) IsValidNewBid(auctionID_ *big.Int, amount_ *big.Int) (bool, error) { + return _FeralfileEnglishAuction.Contract.IsValidNewBid(&_FeralfileEnglishAuction.CallOpts, auctionID_, amount_) +} + +// IsValidNewBid is a free data retrieval call binding the contract method 0x3b8b8bb4. +// +// Solidity: function isValidNewBid(uint256 auctionID_, uint256 amount_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) IsValidNewBid(auctionID_ *big.Int, amount_ *big.Int) (bool, error) { + return _FeralfileEnglishAuction.Contract.IsValidNewBid(&_FeralfileEnglishAuction.CallOpts, auctionID_, amount_) +} + +// ListAuctionStatus is a free data retrieval call binding the contract method 0x6d3ae68a. +// +// Solidity: function listAuctionStatus(uint256[] auctionIDs_) view returns(((address,uint256,bool),uint256,bool)[]) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) ListAuctionStatus(opts *bind.CallOpts, auctionIDs_ []*big.Int) ([]FeralfileEnglishAuctionAuctionStatus, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "listAuctionStatus", auctionIDs_) + + if err != nil { + return *new([]FeralfileEnglishAuctionAuctionStatus), err + } + + out0 := *abi.ConvertType(out[0], new([]FeralfileEnglishAuctionAuctionStatus)).(*[]FeralfileEnglishAuctionAuctionStatus) + + return out0, err + +} + +// ListAuctionStatus is a free data retrieval call binding the contract method 0x6d3ae68a. +// +// Solidity: function listAuctionStatus(uint256[] auctionIDs_) view returns(((address,uint256,bool),uint256,bool)[]) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) ListAuctionStatus(auctionIDs_ []*big.Int) ([]FeralfileEnglishAuctionAuctionStatus, error) { + return _FeralfileEnglishAuction.Contract.ListAuctionStatus(&_FeralfileEnglishAuction.CallOpts, auctionIDs_) +} + +// ListAuctionStatus is a free data retrieval call binding the contract method 0x6d3ae68a. +// +// Solidity: function listAuctionStatus(uint256[] auctionIDs_) view returns(((address,uint256,bool),uint256,bool)[]) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) ListAuctionStatus(auctionIDs_ []*big.Int) ([]FeralfileEnglishAuctionAuctionStatus, error) { + return _FeralfileEnglishAuction.Contract.ListAuctionStatus(&_FeralfileEnglishAuction.CallOpts, auctionIDs_) +} + +// OngoingAuction is a free data retrieval call binding the contract method 0x04cf7ec4. +// +// Solidity: function ongoingAuction(uint256 id_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) OngoingAuction(opts *bind.CallOpts, id_ *big.Int) (bool, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "ongoingAuction", id_) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// OngoingAuction is a free data retrieval call binding the contract method 0x04cf7ec4. +// +// Solidity: function ongoingAuction(uint256 id_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) OngoingAuction(id_ *big.Int) (bool, error) { + return _FeralfileEnglishAuction.Contract.OngoingAuction(&_FeralfileEnglishAuction.CallOpts, id_) +} + +// OngoingAuction is a free data retrieval call binding the contract method 0x04cf7ec4. +// +// Solidity: function ongoingAuction(uint256 id_) view returns(bool) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) OngoingAuction(id_ *big.Int) (bool, error) { + return _FeralfileEnglishAuction.Contract.OngoingAuction(&_FeralfileEnglishAuction.CallOpts, id_) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileEnglishAuction.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 + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) Owner() (common.Address, error) { + return _FeralfileEnglishAuction.Contract.Owner(&_FeralfileEnglishAuction.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) Owner() (common.Address, error) { + return _FeralfileEnglishAuction.Contract.Owner(&_FeralfileEnglishAuction.CallOpts) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCaller) Signer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileEnglishAuction.contract.Call(opts, &out, "signer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) Signer() (common.Address, error) { + return _FeralfileEnglishAuction.Contract.Signer(&_FeralfileEnglishAuction.CallOpts) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionCallerSession) Signer() (common.Address, error) { + return _FeralfileEnglishAuction.Contract.Signer(&_FeralfileEnglishAuction.CallOpts) +} + +// PlaceBid is a paid mutator transaction binding the contract method 0x9979ef45. +// +// Solidity: function placeBid(uint256 auctionID_) payable returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) PlaceBid(opts *bind.TransactOpts, auctionID_ *big.Int) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "placeBid", auctionID_) +} + +// PlaceBid is a paid mutator transaction binding the contract method 0x9979ef45. +// +// Solidity: function placeBid(uint256 auctionID_) payable returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) PlaceBid(auctionID_ *big.Int) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.PlaceBid(&_FeralfileEnglishAuction.TransactOpts, auctionID_) +} + +// PlaceBid is a paid mutator transaction binding the contract method 0x9979ef45. +// +// Solidity: function placeBid(uint256 auctionID_) payable returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) PlaceBid(auctionID_ *big.Int) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.PlaceBid(&_FeralfileEnglishAuction.TransactOpts, auctionID_) +} + +// PlaceSignedBid is a paid mutator transaction binding the contract method 0xe5de8f5d. +// +// Solidity: function placeSignedBid(uint256 auctionID_, address bidder_, uint256 amount_, uint256 expiryTime_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) PlaceSignedBid(opts *bind.TransactOpts, auctionID_ *big.Int, bidder_ common.Address, amount_ *big.Int, expiryTime_ *big.Int, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "placeSignedBid", auctionID_, bidder_, amount_, expiryTime_, r_, s_, v_) +} + +// PlaceSignedBid is a paid mutator transaction binding the contract method 0xe5de8f5d. +// +// Solidity: function placeSignedBid(uint256 auctionID_, address bidder_, uint256 amount_, uint256 expiryTime_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) PlaceSignedBid(auctionID_ *big.Int, bidder_ common.Address, amount_ *big.Int, expiryTime_ *big.Int, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.PlaceSignedBid(&_FeralfileEnglishAuction.TransactOpts, auctionID_, bidder_, amount_, expiryTime_, r_, s_, v_) +} + +// PlaceSignedBid is a paid mutator transaction binding the contract method 0xe5de8f5d. +// +// Solidity: function placeSignedBid(uint256 auctionID_, address bidder_, uint256 amount_, uint256 expiryTime_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) PlaceSignedBid(auctionID_ *big.Int, bidder_ common.Address, amount_ *big.Int, expiryTime_ *big.Int, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.PlaceSignedBid(&_FeralfileEnglishAuction.TransactOpts, auctionID_, bidder_, amount_, expiryTime_, r_, s_, v_) +} + +// RegisterAuctions is a paid mutator transaction binding the contract method 0xf92a6d58. +// +// Solidity: function registerAuctions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool)[] auctions_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) RegisterAuctions(opts *bind.TransactOpts, auctions_ []FeralfileEnglishAuctionAuction) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "registerAuctions", auctions_) +} + +// RegisterAuctions is a paid mutator transaction binding the contract method 0xf92a6d58. +// +// Solidity: function registerAuctions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool)[] auctions_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) RegisterAuctions(auctions_ []FeralfileEnglishAuctionAuction) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.RegisterAuctions(&_FeralfileEnglishAuction.TransactOpts, auctions_) +} + +// RegisterAuctions is a paid mutator transaction binding the contract method 0xf92a6d58. +// +// Solidity: function registerAuctions((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool)[] auctions_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) RegisterAuctions(auctions_ []FeralfileEnglishAuctionAuction) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.RegisterAuctions(&_FeralfileEnglishAuction.TransactOpts, auctions_) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.RenounceOwnership(&_FeralfileEnglishAuction.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.RenounceOwnership(&_FeralfileEnglishAuction.TransactOpts) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) SetSigner(opts *bind.TransactOpts, signer_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "setSigner", signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SetSigner(&_FeralfileEnglishAuction.TransactOpts, signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SetSigner(&_FeralfileEnglishAuction.TransactOpts, signer_) +} + +// SettleAuction is a paid mutator transaction binding the contract method 0x0d33bcee. +// +// Solidity: function settleAuction(uint256 auctionID_, address tokenAddr_, address vaultAddr_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) SettleAuction(opts *bind.TransactOpts, auctionID_ *big.Int, tokenAddr_ common.Address, vaultAddr_ common.Address, saleData_ IFeralfileSaleDataSaleData, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "settleAuction", auctionID_, tokenAddr_, vaultAddr_, saleData_, r_, s_, v_) +} + +// SettleAuction is a paid mutator transaction binding the contract method 0x0d33bcee. +// +// Solidity: function settleAuction(uint256 auctionID_, address tokenAddr_, address vaultAddr_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) SettleAuction(auctionID_ *big.Int, tokenAddr_ common.Address, vaultAddr_ common.Address, saleData_ IFeralfileSaleDataSaleData, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SettleAuction(&_FeralfileEnglishAuction.TransactOpts, auctionID_, tokenAddr_, vaultAddr_, saleData_, r_, s_, v_) +} + +// SettleAuction is a paid mutator transaction binding the contract method 0x0d33bcee. +// +// Solidity: function settleAuction(uint256 auctionID_, address tokenAddr_, address vaultAddr_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_, bytes32 r_, bytes32 s_, uint8 v_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) SettleAuction(auctionID_ *big.Int, tokenAddr_ common.Address, vaultAddr_ common.Address, saleData_ IFeralfileSaleDataSaleData, r_ [32]byte, s_ [32]byte, v_ uint8) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SettleAuction(&_FeralfileEnglishAuction.TransactOpts, auctionID_, tokenAddr_, vaultAddr_, saleData_, r_, s_, v_) +} + +// SettleAuctionFund is a paid mutator transaction binding the contract method 0x21fbf1e6. +// +// Solidity: function settleAuctionFund(uint256 auctionID_, address vaultAddr_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) SettleAuctionFund(opts *bind.TransactOpts, auctionID_ *big.Int, vaultAddr_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "settleAuctionFund", auctionID_, vaultAddr_) +} + +// SettleAuctionFund is a paid mutator transaction binding the contract method 0x21fbf1e6. +// +// Solidity: function settleAuctionFund(uint256 auctionID_, address vaultAddr_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) SettleAuctionFund(auctionID_ *big.Int, vaultAddr_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SettleAuctionFund(&_FeralfileEnglishAuction.TransactOpts, auctionID_, vaultAddr_) +} + +// SettleAuctionFund is a paid mutator transaction binding the contract method 0x21fbf1e6. +// +// Solidity: function settleAuctionFund(uint256 auctionID_, address vaultAddr_) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) SettleAuctionFund(auctionID_ *big.Int, vaultAddr_ common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.SettleAuctionFund(&_FeralfileEnglishAuction.TransactOpts, auctionID_, vaultAddr_) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.TransferOwnership(&_FeralfileEnglishAuction.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileEnglishAuction.Contract.TransferOwnership(&_FeralfileEnglishAuction.TransactOpts, newOwner) +} + +// FeralfileEnglishAuctionAuctionSettledIterator is returned from FilterAuctionSettled and is used to iterate over the raw logs and unpacked data for AuctionSettled events raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionAuctionSettledIterator struct { + Event *FeralfileEnglishAuctionAuctionSettled // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileEnglishAuctionAuctionSettledIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionAuctionSettled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionAuctionSettled) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileEnglishAuctionAuctionSettledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileEnglishAuctionAuctionSettledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileEnglishAuctionAuctionSettled represents a AuctionSettled event raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionAuctionSettled struct { + AuctionId *big.Int + ContractAddress common.Address + Winner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAuctionSettled is a free log retrieval operation binding the contract event 0x3e25c3675d003af5184b628dd8bd4775b9b3abc7351c3574c90870ca25b55f11. +// +// Solidity: event AuctionSettled(uint256 indexed auctionId, address indexed contractAddress, address indexed winner, uint256 amount) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) FilterAuctionSettled(opts *bind.FilterOpts, auctionId []*big.Int, contractAddress []common.Address, winner []common.Address) (*FeralfileEnglishAuctionAuctionSettledIterator, error) { + + var auctionIdRule []interface{} + for _, auctionIdItem := range auctionId { + auctionIdRule = append(auctionIdRule, auctionIdItem) + } + var contractAddressRule []interface{} + for _, contractAddressItem := range contractAddress { + contractAddressRule = append(contractAddressRule, contractAddressItem) + } + var winnerRule []interface{} + for _, winnerItem := range winner { + winnerRule = append(winnerRule, winnerItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.FilterLogs(opts, "AuctionSettled", auctionIdRule, contractAddressRule, winnerRule) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionAuctionSettledIterator{contract: _FeralfileEnglishAuction.contract, event: "AuctionSettled", logs: logs, sub: sub}, nil +} + +// WatchAuctionSettled is a free log subscription operation binding the contract event 0x3e25c3675d003af5184b628dd8bd4775b9b3abc7351c3574c90870ca25b55f11. +// +// Solidity: event AuctionSettled(uint256 indexed auctionId, address indexed contractAddress, address indexed winner, uint256 amount) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) WatchAuctionSettled(opts *bind.WatchOpts, sink chan<- *FeralfileEnglishAuctionAuctionSettled, auctionId []*big.Int, contractAddress []common.Address, winner []common.Address) (event.Subscription, error) { + + var auctionIdRule []interface{} + for _, auctionIdItem := range auctionId { + auctionIdRule = append(auctionIdRule, auctionIdItem) + } + var contractAddressRule []interface{} + for _, contractAddressItem := range contractAddress { + contractAddressRule = append(contractAddressRule, contractAddressItem) + } + var winnerRule []interface{} + for _, winnerItem := range winner { + winnerRule = append(winnerRule, winnerItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.WatchLogs(opts, "AuctionSettled", auctionIdRule, contractAddressRule, winnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileEnglishAuctionAuctionSettled) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "AuctionSettled", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAuctionSettled is a log parse operation binding the contract event 0x3e25c3675d003af5184b628dd8bd4775b9b3abc7351c3574c90870ca25b55f11. +// +// Solidity: event AuctionSettled(uint256 indexed auctionId, address indexed contractAddress, address indexed winner, uint256 amount) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) ParseAuctionSettled(log types.Log) (*FeralfileEnglishAuctionAuctionSettled, error) { + event := new(FeralfileEnglishAuctionAuctionSettled) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "AuctionSettled", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileEnglishAuctionNewBidIterator is returned from FilterNewBid and is used to iterate over the raw logs and unpacked data for NewBid events raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionNewBidIterator struct { + Event *FeralfileEnglishAuctionNewBid // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileEnglishAuctionNewBidIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionNewBid) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionNewBid) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileEnglishAuctionNewBidIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileEnglishAuctionNewBidIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileEnglishAuctionNewBid represents a NewBid event raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionNewBid struct { + AuctionId *big.Int + Bidder common.Address + Amount *big.Int + FromFeralFile bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewBid is a free log retrieval operation binding the contract event 0xf25203491f62af68d98d27c61e683af917ad41cba414886cc71b4976b363d8d2. +// +// Solidity: event NewBid(uint256 indexed auctionId, address indexed bidder, uint256 indexed amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) FilterNewBid(opts *bind.FilterOpts, auctionId []*big.Int, bidder []common.Address, amount []*big.Int) (*FeralfileEnglishAuctionNewBidIterator, error) { + + var auctionIdRule []interface{} + for _, auctionIdItem := range auctionId { + auctionIdRule = append(auctionIdRule, auctionIdItem) + } + var bidderRule []interface{} + for _, bidderItem := range bidder { + bidderRule = append(bidderRule, bidderItem) + } + var amountRule []interface{} + for _, amountItem := range amount { + amountRule = append(amountRule, amountItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.FilterLogs(opts, "NewBid", auctionIdRule, bidderRule, amountRule) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionNewBidIterator{contract: _FeralfileEnglishAuction.contract, event: "NewBid", logs: logs, sub: sub}, nil +} + +// WatchNewBid is a free log subscription operation binding the contract event 0xf25203491f62af68d98d27c61e683af917ad41cba414886cc71b4976b363d8d2. +// +// Solidity: event NewBid(uint256 indexed auctionId, address indexed bidder, uint256 indexed amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) WatchNewBid(opts *bind.WatchOpts, sink chan<- *FeralfileEnglishAuctionNewBid, auctionId []*big.Int, bidder []common.Address, amount []*big.Int) (event.Subscription, error) { + + var auctionIdRule []interface{} + for _, auctionIdItem := range auctionId { + auctionIdRule = append(auctionIdRule, auctionIdItem) + } + var bidderRule []interface{} + for _, bidderItem := range bidder { + bidderRule = append(bidderRule, bidderItem) + } + var amountRule []interface{} + for _, amountItem := range amount { + amountRule = append(amountRule, amountItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.WatchLogs(opts, "NewBid", auctionIdRule, bidderRule, amountRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileEnglishAuctionNewBid) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "NewBid", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewBid is a log parse operation binding the contract event 0xf25203491f62af68d98d27c61e683af917ad41cba414886cc71b4976b363d8d2. +// +// Solidity: event NewBid(uint256 indexed auctionId, address indexed bidder, uint256 indexed amount, bool fromFeralFile) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) ParseNewBid(log types.Log) (*FeralfileEnglishAuctionNewBid, error) { + event := new(FeralfileEnglishAuctionNewBid) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "NewBid", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileEnglishAuctionOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionOwnershipTransferredIterator struct { + Event *FeralfileEnglishAuctionOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileEnglishAuctionOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileEnglishAuctionOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileEnglishAuctionOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileEnglishAuctionOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileEnglishAuctionOwnershipTransferred represents a OwnershipTransferred event raised by the FeralfileEnglishAuction contract. +type FeralfileEnglishAuctionOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralfileEnglishAuctionOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralfileEnglishAuctionOwnershipTransferredIterator{contract: _FeralfileEnglishAuction.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralfileEnglishAuctionOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileEnglishAuction.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileEnglishAuctionOwnershipTransferred) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileEnglishAuction *FeralfileEnglishAuctionFilterer) ParseOwnershipTransferred(log types.Log) (*FeralfileEnglishAuctionOwnershipTransferred, error) { + event := new(FeralfileEnglishAuctionOwnershipTransferred) + if err := _FeralfileEnglishAuction.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/binding/feralfile-exhibition-v2/abi.go b/binding/feralfile-exhibition-v2/abi.go new file mode 100644 index 0000000..0e07d6e --- /dev/null +++ b/binding/feralfile-exhibition-v2/abi.go @@ -0,0 +1,2261 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package feralfilev2 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralfileExhibitionV2MetaData contains all meta data concerning the FeralfileExhibitionV2 contract. +var FeralfileExhibitionV2MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxEditionPerArtwork_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondarySaleRoyaltyBPS_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"royaltyPayoutAddress_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenBaseURI_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"}],\"name\":\"NewArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionID\",\"type\":\"uint256\"}],\"name\":\"NewArtworkEdition\",\"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\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_ROYALITY_BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artworkEditions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"editionID\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artworks\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"artistName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"fingerprint\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"editionSize\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxEditionPerArtwork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyPayoutAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secondarySaleRoyaltyBPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"fingerprint\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"artistName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"editionSize\",\"type\":\"uint256\"}],\"name\":\"createArtwork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalArtworks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getArtworkByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bitmarkID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"editionNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"name\":\"swapArtworkFromBitmark\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"name\":\"updateArtworkEditionIPFSCid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"royaltyPayoutAddress_\",\"type\":\"address\"}],\"name\":\"setRoyaltyPayoutAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"}],\"name\":\"totalEditionOfArtwork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getArtworkEditionByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setTokenBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b50604051620033a5380380620033a5833981016040819052620000349162000370565b86866000620000448382620004de565b506001620000538282620004de565b505050620000706200006a6200023860201b60201c565b6200023c565b60008511620000fe5760405162461bcd60e51b815260206004820152604960248201527f6d617845646974696f6e206f66206561636820617274776f726b20696e20616e60448201527f2065786869626974696f6e206e6565647320746f2062652067726561746572206064820152687468616e207a65726f60b81b608482015260a4015b60405180910390fd5b612710841115620001905760405162461bcd60e51b815260206004820152604f60248201527f726f79616c74792042505320666f72207365636f6e646172792073616c65732060448201527f63616e206e6f742062652067726561746572207468616e20746865206d61786960648201526e6d756d20726f79616c74792042505360881b608482015260a401620000f5565b6001600160a01b038316620001e85760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726f79616c7479207061796f7574206164647265737300006044820152606401620000f5565b608085905260a0849052600c80546001600160a01b0319166001600160a01b038516179055600e6200021b8382620004de565b50600d6200022a8282620004de565b5050505050505050620005aa565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002b657600080fd5b81516001600160401b0380821115620002d357620002d36200028e565b604051601f8301601f19908116603f01168101908282118183101715620002fe57620002fe6200028e565b816040528381526020925086838588010111156200031b57600080fd5b600091505b838210156200033f578582018301518183018401529082019062000320565b600093810190920192909252949350505050565b80516001600160a01b03811681146200036b57600080fd5b919050565b600080600080600080600060e0888a0312156200038c57600080fd5b87516001600160401b0380821115620003a457600080fd5b620003b28b838c01620002a4565b985060208a0151915080821115620003c957600080fd5b620003d78b838c01620002a4565b975060408a0151965060608a01519550620003f560808b0162000353565b945060a08a01519150808211156200040c57600080fd5b6200041a8b838c01620002a4565b935060c08a01519150808211156200043157600080fd5b50620004408a828b01620002a4565b91505092959891949750929550565b600181811c908216806200046457607f821691505b6020821081036200048557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d957600081815260208120601f850160051c81016020861015620004b45750805b601f850160051c820191505b81811015620004d557828155600101620004c0565b5050505b505050565b81516001600160401b03811115620004fa57620004fa6200028e565b62000512816200050b84546200044f565b846200048b565b602080601f8311600181146200054a5760008415620005315750858301515b600019600386901b1c1916600185901b178555620004d5565b600085815260208120601f198616915b828110156200057b578886015182559484019460019091019084016200055a565b50858210156200059a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051612dc7620005de600039600081816105490152610a1801526000818161044b0152610c610152612dc76000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806370a082311161013b578063c87b56dd116100b8578063ea211d7c1161007c578063ea211d7c14610544578063ec9cbb441461056b578063eee608a414610574578063f2fde38b14610597578063fe2a3bf3146105aa57600080fd5b8063c87b56dd146104d2578063dc78ac1c146104e5578063e4a233e1146104f8578063e8a3d48514610500578063e985e9c51461050857600080fd5b80638ef79e91116100ff5780638ef79e911461047e57806395d89b4114610491578063a22cb46514610499578063b4883703146104ac578063b88d4fde146104bf57600080fd5b806370a0823114610418578063715018a61461042b5780637f34c0dd1461043357806384ad61af146104465780638da5cb5b1461046d57600080fd5b80632f745c59116101c95780634b6026731161018d5780634b6026731461039b5780634f6ccce7146103be57806362fe2131146103d15780636352211e146103f2578063641b18e91461040557600080fd5b80632f745c591461033c5780633afb021a1461034f5780633f6805ba1461036257806342842e0e1461037557806345aeefde1461038857600080fd5b8063095ea7b311610210578063095ea7b3146102bf5780630cfcb5f1146102d257806318160ddd146102e557806323b872dd146102f75780632a55205a1461030a57600080fd5b806301ffc9a714610242578063031205061461026a57806306fdde031461027f578063081812fc14610294575b600080fd5b6102556102503660046124c9565b6105ca565b60405190151581526020015b60405180910390f35b61027d610278366004612509565b6105f5565b005b61028761061e565b6040516102619190612574565b6102a76102a2366004612587565b6106b0565b6040516001600160a01b039091168152602001610261565b61027d6102cd3660046125a0565b6106d7565b61027d6102e0366004612676565b6107f1565b6008545b604051908152602001610261565b61027d6103053660046126bd565b61095f565b61031d6103183660046126f9565b610990565b604080516001600160a01b039093168352602083019190915201610261565b6102e961034a3660046125a0565b610a50565b61027d61035d36600461271b565b610ae6565b600c546102a7906001600160a01b031681565b61027d6103833660046126bd565b610e9f565b61027d610396366004612509565b610eba565b6103ae6103a9366004612587565b610f63565b60405161026194939291906127ab565b6102e96103cc366004612587565b611123565b6103e46103df366004612587565b6111b6565b6040516102619291906127f6565b6102a7610400366004612587565b61125b565b6102e96104133660046126f9565b6112bb565b6102e9610426366004612509565b611308565b61027d61138e565b61027d61044136600461280f565b6113a2565b6102e97f000000000000000000000000000000000000000000000000000000000000000081565b600a546001600160a01b03166102a7565b61027d61048c36600461287a565b61171a565b61028761175b565b61027d6104a73660046128af565b61176a565b6102e96104ba366004612587565b611775565b61027d6104cd3660046128eb565b6117ed565b6102876104e0366004612587565b61181f565b61027d6104f3366004612509565b611985565b600f546102e9565b6102876119b1565b610255610516366004612967565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102e97f000000000000000000000000000000000000000000000000000000000000000081565b6102e961271081565b610255610582366004612509565b600b6020526000908152604090205460ff1681565b61027d6105a5366004612509565b6119c0565b6102e96105b8366004612587565b60009081526012602052604090205490565b60006001600160e01b0319821663780e9d6360e01b14806105ef57506105ef82611a39565b92915050565b6105fd611a5e565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b60606000805461062d90612991565b80601f016020809104026020016040519081016040528092919081815260200182805461065990612991565b80156106a65780601f1061067b576101008083540402835291602001916106a6565b820191906000526020600020905b81548152906001019060200180831161068957829003601f168201915b5050505050905090565b60006106bb82611ab8565b506000908152600460205260409020546001600160a01b031690565b60006106e28261125b565b9050806001600160a01b0316836001600160a01b0316036107545760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061077057506107708133610516565b6107e25760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161074b565b6107ec8383611b08565b505050565b336000908152600b602052604090205460ff16806108195750600a546001600160a01b031633145b61082257600080fd5b61082b82611b76565b6108775760405162461bcd60e51b815260206004820152601c60248201527f617274776f726b2065646974696f6e206973206e6f7420666f756e6400000000604482015260640161074b565b60148160405161088791906129cb565b9081526040519081900360200190205460ff16156108e05760405162461bcd60e51b81526020600482015260166024820152751a5c199cc81a59081a185cc81c9959da5cdd195c995960521b604482015260640161074b565b600082815260116020526040908190209051601490610903906001840190612a5a565b908152604051908190036020018120805460ff1916905560019060149061092b9085906129cb565b908152604051908190036020019020805491151560ff19909216919091179055600181016109598382612ab4565b50505050565b6109693382611b93565b6109855760405162461bcd60e51b815260040161074b90612b74565b6107ec838383611c12565b60008061099c84611b76565b610a025760405162461bcd60e51b815260206004820152603160248201527f455243323938313a20717565727920726f79616c747920696e666f20666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161074b565b600c546001600160a01b03169150612710610a3d7f000000000000000000000000000000000000000000000000000000000000000085612bd7565b610a479190612bee565b90509250929050565b6000610a5b83611308565b8210610abd5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161074b565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b336000908152600b602052604090205460ff1680610b0e5750600a546001600160a01b031633145b610b1757600080fd5b8251600003610b615760405162461bcd60e51b81526020600482015260166024820152757469746c652063616e206e6f7420626520656d70747960501b604482015260640161074b565b8151600003610bb25760405162461bcd60e51b815260206004820152601760248201527f6172746973742063616e206e6f7420626520656d707479000000000000000000604482015260640161074b565b8351600003610c035760405162461bcd60e51b815260206004820152601c60248201527f66696e6765727072696e742063616e206e6f7420626520656d70747900000000604482015260640161074b565b60008111610c5f5760405162461bcd60e51b815260206004820152602360248201527f65646974696f6e2073697a65206e6565647320746f206265206174206c65617360448201526274203160e81b606482015260840161074b565b7f0000000000000000000000000000000000000000000000000000000000000000811115610d055760405162461bcd60e51b815260206004820152604760248201527f617274776f726b2065646974696f6e2073697a6520657863656564732074686560448201527f206d6178696d756d2065646974696f6e2073697a65206f66207468652065786860648201526634b134ba34b7b760c91b608482015260a40161074b565b600084604051602001610d189190612574565b60408051601f198184030181529181528151602092830120600081815260109093529120600201805491925090610d4e90612991565b159050610dc35760405162461bcd60e51b815260206004820152603b60248201527f616e20617274776f726b2077697468207468652073616d652066696e6765727060448201527f72696e742068617320616c726561647920726567697374657265640000000000606482015260840161074b565b60408051608081018252858152602080820186905281830188905260608201859052600f8054600181019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201849055600084815260109091529190912081518291908190610e349082612ab4565b5060208201516001820190610e499082612ab4565b5060408201516002820190610e5e9082612ab4565b506060919091015160039091015560405182907f22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db089190600090a2505050505050565b6107ec838383604051806020016040528060008152506117ed565b336000908152600b602052604090205460ff1680610ee25750600a546001600160a01b031633145b610eeb57600080fd5b6001600160a01b038116610f415760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726f79616c7479207061796f757420616464726573730000604482015260640161074b565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b601060205260009081526040902080548190610f7e90612991565b80601f0160208091040260200160405190810160405280929190818152602001828054610faa90612991565b8015610ff75780601f10610fcc57610100808354040283529160200191610ff7565b820191906000526020600020905b815481529060010190602001808311610fda57829003601f168201915b50505050509080600101805461100c90612991565b80601f016020809104026020016040519081016040528092919081815260200182805461103890612991565b80156110855780601f1061105a57610100808354040283529160200191611085565b820191906000526020600020905b81548152906001019060200180831161106857829003601f168201915b50505050509080600201805461109a90612991565b80601f01602080910402602001604051908101604052809291908181526020018280546110c690612991565b80156111135780601f106110e857610100808354040283529160200191611113565b820191906000526020600020905b8154815290600101906020018083116110f657829003601f168201915b5050505050908060030154905084565b600061112e60085490565b82106111915760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161074b565b600882815481106111a4576111a4612c10565b90600052602060002001549050919050565b601160205260009081526040902080546001820180549192916111d890612991565b80601f016020809104026020016040519081016040528092919081815260200182805461120490612991565b80156112515780601f1061122657610100808354040283529160200191611251565b820191906000526020600020905b81548152906001019060200180831161123457829003601f168201915b5050505050905082565b6000818152600260205260408120546001600160a01b0316806105ef5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161074b565b60008281526012602052604081205482106112d557600080fd5b60008381526012602052604090208054839081106112f5576112f5612c10565b9060005260206000200154905092915050565b60006001600160a01b0382166113725760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161074b565b506001600160a01b031660009081526003602052604090205490565b611396611a5e565b6113a06000611d83565b565b336000908152600b602052604090205460ff16806113ca5750600a546001600160a01b031633145b6113d357600080fd5b6000858152601060205260409020600301546114285760405162461bcd60e51b8152602060048201526014602482015273185c9d1ddbdc9ac81a5cc81b9bdd08199bdd5b9960621b604482015260640161074b565b6000858152601060205260409020600301548311156114a75760405162461bcd60e51b815260206004820152603560248201527f65646974696f6e206e756d62657220657863656564207468652065646974696f6044820152746e2073697a65206f662074686520617274776f726b60581b606482015260840161074b565b6001600160a01b0382166114f55760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206f776e6572206164647265737360581b604482015260640161074b565b60008481526013602052604090205460ff16156115545760405162461bcd60e51b815260206004820152601960248201527f6269746d61726b20696420686173207265676973746572656400000000000000604482015260640161074b565b60148160405161156491906129cb565b9081526040519081900360200190205460ff16156115bd5760405162461bcd60e51b81526020600482015260166024820152751a5c199cc81a59081a185cc81c9959da5cdd195c995960521b604482015260640161074b565b60006115c98487612c26565b600081815260116020526040902054909150156116285760405162461bcd60e51b815260206004820152601760248201527f7468652065646974696f6e206973206578697374656e74000000000000000000604482015260640161074b565b6040805180820182528281526020808201858152600085815260119092529290208151815591519091829160018201906116629082612ab4565b505050600087815260126020908152604080832080546001818101835591855283852001869055898452601390925291829020805460ff19168217905590516014906116af9086906129cb565b908152604051908190036020019020805491151560ff199092169190911790556116d98483611dd5565b8187856001600160a01b03167f4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd460405160405180910390a450505050505050565b336000908152600b602052604090205460ff16806117425750600a546001600160a01b031633145b61174b57600080fd5b600d6117578282612ab4565b5050565b60606001805461062d90612991565b611757338383611def565b6000611780600f5490565b82106117da5760405162461bcd60e51b8152602060048201526024808201527f617274776f726b733a20676c6f62616c20696e646578206f7574206f6620626f604482015263756e647360e01b606482015260840161074b565b600f82815481106111a4576111a4612c10565b6117f73383611b93565b6118135760405162461bcd60e51b815260040161074b90612b74565b61095984848484611ebd565b606061182a82611b76565b61188e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161074b565b6000600d805461189d90612991565b80601f01602080910402602001604051908101604052809291908181526020018280546118c990612991565b80156119165780601f106118eb57610100808354040283529160200191611916565b820191906000526020600020905b8154815290600101906020018083116118f957829003601f168201915b5050505050905080516000036119465750604080518082019091526007815266697066733a2f2f60c81b60208201525b806011600085815260200190815260200160002060010160405160200161196e929190612c39565b604051602081830303815290604052915050919050565b61198d611a5e565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6060600e805461062d90612991565b6119c8611a5e565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074b565b611a3681611d83565b50565b60006001600160e01b0319821663780e9d6360e01b14806105ef57506105ef82611ef0565b600a546001600160a01b031633146113a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161074b565b611ac181611b76565b611a365760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161074b565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b3d8261125b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600260205260409020546001600160a01b0316151590565b600080611b9f8361125b565b9050806001600160a01b0316846001600160a01b03161480611be657506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80611c0a5750836001600160a01b0316611bff846106b0565b6001600160a01b0316145b949350505050565b826001600160a01b0316611c258261125b565b6001600160a01b031614611c4b5760405162461bcd60e51b815260040161074b90612c77565b6001600160a01b038216611cad5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161074b565b611cba8383836001611f40565b826001600160a01b0316611ccd8261125b565b6001600160a01b031614611cf35760405162461bcd60e51b815260040161074b90612c77565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611757828260405180602001604052806000815250612074565b816001600160a01b0316836001600160a01b031603611e505760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161074b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611ec8848484611c12565b611ed4848484846120a7565b6109595760405162461bcd60e51b815260040161074b90612cbc565b60006001600160e01b031982166380ac58cd60e01b1480611f2157506001600160e01b03198216635b5e139f60e01b145b806105ef57506301ffc9a760e01b6001600160e01b03198316146105ef565b6001811115611faf5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b606482015260840161074b565b816001600160a01b03851661200b5761200681600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61202e565b836001600160a01b0316856001600160a01b03161461202e5761202e85826121a8565b6001600160a01b03841661204a5761204581612245565b61206d565b846001600160a01b0316846001600160a01b03161461206d5761206d84826122f4565b5050505050565b61207e8383612338565b61208b60008484846120a7565b6107ec5760405162461bcd60e51b815260040161074b90612cbc565b60006001600160a01b0384163b1561219d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120eb903390899088908890600401612d0e565b6020604051808303816000875af1925050508015612126575060408051601f3d908101601f1916820190925261212391810190612d4b565b60015b612183573d808015612154576040519150601f19603f3d011682016040523d82523d6000602084013e612159565b606091505b50805160000361217b5760405162461bcd60e51b815260040161074b90612cbc565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c0a565b506001949350505050565b600060016121b584611308565b6121bf9190612d68565b600083815260076020526040902054909150808214612212576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061225790600190612d68565b6000838152600960205260408120546008805493945090928490811061227f5761227f612c10565b9060005260206000200154905080600883815481106122a0576122a0612c10565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806122d8576122d8612d7b565b6001900381819060005260206000200160009055905550505050565b60006122ff83611308565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b03821661238e5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161074b565b61239781611b76565b156123e45760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161074b565b6123f2600083836001611f40565b6123fb81611b76565b156124485760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161074b565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114611a3657600080fd5b6000602082840312156124db57600080fd5b81356124e6816124b3565b9392505050565b80356001600160a01b038116811461250457600080fd5b919050565b60006020828403121561251b57600080fd5b6124e6826124ed565b60005b8381101561253f578181015183820152602001612527565b50506000910152565b60008151808452612560816020860160208601612524565b601f01601f19169290920160200192915050565b6020815260006124e66020830184612548565b60006020828403121561259957600080fd5b5035919050565b600080604083850312156125b357600080fd5b6125bc836124ed565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156125fb576125fb6125ca565b604051601f8501601f19908116603f01168101908282118183101715612623576126236125ca565b8160405280935085815286868601111561263c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261266757600080fd5b6124e6838335602085016125e0565b6000806040838503121561268957600080fd5b82359150602083013567ffffffffffffffff8111156126a757600080fd5b6126b385828601612656565b9150509250929050565b6000806000606084860312156126d257600080fd5b6126db846124ed565b92506126e9602085016124ed565b9150604084013590509250925092565b6000806040838503121561270c57600080fd5b50508035926020909101359150565b6000806000806080858703121561273157600080fd5b843567ffffffffffffffff8082111561274957600080fd5b61275588838901612656565b9550602087013591508082111561276b57600080fd5b61277788838901612656565b9450604087013591508082111561278d57600080fd5b5061279a87828801612656565b949793965093946060013593505050565b6080815260006127be6080830187612548565b82810360208401526127d08187612548565b905082810360408401526127e48186612548565b91505082606083015295945050505050565b828152604060208201526000611c0a6040830184612548565b600080600080600060a0868803121561282757600080fd5b853594506020860135935060408601359250612845606087016124ed565b9150608086013567ffffffffffffffff81111561286157600080fd5b61286d88828901612656565b9150509295509295909350565b60006020828403121561288c57600080fd5b813567ffffffffffffffff8111156128a357600080fd5b611c0a84828501612656565b600080604083850312156128c257600080fd5b6128cb836124ed565b9150602083013580151581146128e057600080fd5b809150509250929050565b6000806000806080858703121561290157600080fd5b61290a856124ed565b9350612918602086016124ed565b925060408501359150606085013567ffffffffffffffff81111561293b57600080fd5b8501601f8101871361294c57600080fd5b61295b878235602084016125e0565b91505092959194509250565b6000806040838503121561297a57600080fd5b612983836124ed565b9150610a47602084016124ed565b600181811c908216806129a557607f821691505b6020821081036129c557634e487b7160e01b600052602260045260246000fd5b50919050565b600082516129dd818460208701612524565b9190910192915050565b600081546129f481612991565b60018281168015612a0c5760018114612a2157612a50565b60ff1984168752821515830287019450612a50565b8560005260208060002060005b85811015612a475781548a820152908401908201612a2e565b50505082870194505b5050505092915050565b60006124e682846129e7565b601f8211156107ec57600081815260208120601f850160051c81016020861015612a8d5750805b601f850160051c820191505b81811015612aac57828155600101612a99565b505050505050565b815167ffffffffffffffff811115612ace57612ace6125ca565b612ae281612adc8454612991565b84612a66565b602080601f831160018114612b175760008415612aff5750858301515b600019600386901b1c1916600185901b178555612aac565b600085815260208120601f198616915b82811015612b4657888601518255948401946001909101908401612b27565b5085821015612b645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105ef576105ef612bc1565b600082612c0b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156105ef576105ef612bc1565b60008351612c4b818460208801612524565b612c57818401856129e7565b6d17b6b2ba30b230ba30973539b7b760911b8152600e0195945050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612d4190830184612548565b9695505050505050565b600060208284031215612d5d57600080fd5b81516124e6816124b3565b818103818111156105ef576105ef612bc1565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220dfdde7d1ac35d0f341e3a4479555afc104dde1f0797e980aef433913e6bcf45264736f6c63430008110033", +} + +// FeralfileExhibitionV2ABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralfileExhibitionV2MetaData.ABI instead. +var FeralfileExhibitionV2ABI = FeralfileExhibitionV2MetaData.ABI + +// FeralfileExhibitionV2Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralfileExhibitionV2MetaData.Bin instead. +var FeralfileExhibitionV2Bin = FeralfileExhibitionV2MetaData.Bin + +// DeployFeralfileExhibitionV2 deploys a new Ethereum contract, binding an instance of FeralfileExhibitionV2 to it. +func DeployFeralfileExhibitionV2(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, maxEditionPerArtwork_ *big.Int, secondarySaleRoyaltyBPS_ *big.Int, royaltyPayoutAddress_ common.Address, contractURI_ string, tokenBaseURI_ string) (common.Address, *types.Transaction, *FeralfileExhibitionV2, error) { + parsed, err := FeralfileExhibitionV2MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralfileExhibitionV2Bin), backend, name_, symbol_, maxEditionPerArtwork_, secondarySaleRoyaltyBPS_, royaltyPayoutAddress_, contractURI_, tokenBaseURI_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralfileExhibitionV2{FeralfileExhibitionV2Caller: FeralfileExhibitionV2Caller{contract: contract}, FeralfileExhibitionV2Transactor: FeralfileExhibitionV2Transactor{contract: contract}, FeralfileExhibitionV2Filterer: FeralfileExhibitionV2Filterer{contract: contract}}, nil +} + +// FeralfileExhibitionV2 is an auto generated Go binding around an Ethereum contract. +type FeralfileExhibitionV2 struct { + FeralfileExhibitionV2Caller // Read-only binding to the contract + FeralfileExhibitionV2Transactor // Write-only binding to the contract + FeralfileExhibitionV2Filterer // Log filterer for contract events +} + +// FeralfileExhibitionV2Caller is an auto generated read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV2Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV2Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV2Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV2Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralfileExhibitionV2Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV2Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralfileExhibitionV2Session struct { + Contract *FeralfileExhibitionV2 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV2CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralfileExhibitionV2CallerSession struct { + Contract *FeralfileExhibitionV2Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralfileExhibitionV2TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralfileExhibitionV2TransactorSession struct { + Contract *FeralfileExhibitionV2Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV2Raw is an auto generated low-level Go binding around an Ethereum contract. +type FeralfileExhibitionV2Raw struct { + Contract *FeralfileExhibitionV2 // Generic contract binding to access the raw methods on +} + +// FeralfileExhibitionV2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV2CallerRaw struct { + Contract *FeralfileExhibitionV2Caller // Generic read-only contract binding to access the raw methods on +} + +// FeralfileExhibitionV2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV2TransactorRaw struct { + Contract *FeralfileExhibitionV2Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralfileExhibitionV2 creates a new instance of FeralfileExhibitionV2, bound to a specific deployed contract. +func NewFeralfileExhibitionV2(address common.Address, backend bind.ContractBackend) (*FeralfileExhibitionV2, error) { + contract, err := bindFeralfileExhibitionV2(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2{FeralfileExhibitionV2Caller: FeralfileExhibitionV2Caller{contract: contract}, FeralfileExhibitionV2Transactor: FeralfileExhibitionV2Transactor{contract: contract}, FeralfileExhibitionV2Filterer: FeralfileExhibitionV2Filterer{contract: contract}}, nil +} + +// NewFeralfileExhibitionV2Caller creates a new read-only instance of FeralfileExhibitionV2, bound to a specific deployed contract. +func NewFeralfileExhibitionV2Caller(address common.Address, caller bind.ContractCaller) (*FeralfileExhibitionV2Caller, error) { + contract, err := bindFeralfileExhibitionV2(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2Caller{contract: contract}, nil +} + +// NewFeralfileExhibitionV2Transactor creates a new write-only instance of FeralfileExhibitionV2, bound to a specific deployed contract. +func NewFeralfileExhibitionV2Transactor(address common.Address, transactor bind.ContractTransactor) (*FeralfileExhibitionV2Transactor, error) { + contract, err := bindFeralfileExhibitionV2(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2Transactor{contract: contract}, nil +} + +// NewFeralfileExhibitionV2Filterer creates a new log filterer instance of FeralfileExhibitionV2, bound to a specific deployed contract. +func NewFeralfileExhibitionV2Filterer(address common.Address, filterer bind.ContractFilterer) (*FeralfileExhibitionV2Filterer, error) { + contract, err := bindFeralfileExhibitionV2(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2Filterer{contract: contract}, nil +} + +// bindFeralfileExhibitionV2 binds a generic wrapper to an already deployed contract. +func bindFeralfileExhibitionV2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralfileExhibitionV2MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV2.Contract.FeralfileExhibitionV2Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.FeralfileExhibitionV2Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.FeralfileExhibitionV2Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV2.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.contract.Transact(opts, method, params...) +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) MAXROYALITYBPS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "MAX_ROYALITY_BPS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) MAXROYALITYBPS() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.MAXROYALITYBPS(&_FeralfileExhibitionV2.CallOpts) +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) MAXROYALITYBPS() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.MAXROYALITYBPS(&_FeralfileExhibitionV2.CallOpts) +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) ArtworkEditions(opts *bind.CallOpts, arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "artworkEditions", arg0) + + outstruct := new(struct { + EditionID *big.Int + IpfsCID string + }) + if err != nil { + return *outstruct, err + } + + outstruct.EditionID = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.IpfsCID = *abi.ConvertType(out[1], new(string)).(*string) + + return *outstruct, err + +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) ArtworkEditions(arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + return _FeralfileExhibitionV2.Contract.ArtworkEditions(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) ArtworkEditions(arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + return _FeralfileExhibitionV2.Contract.ArtworkEditions(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) Artworks(opts *bind.CallOpts, arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int +}, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "artworks", arg0) + + outstruct := new(struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Title = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.ArtistName = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Fingerprint = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.EditionSize = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Artworks(arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int +}, error) { + return _FeralfileExhibitionV2.Contract.Artworks(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) Artworks(arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int +}, error) { + return _FeralfileExhibitionV2.Contract.Artworks(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.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 + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.BalanceOf(&_FeralfileExhibitionV2.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.BalanceOf(&_FeralfileExhibitionV2.CallOpts, owner) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) ContractURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "contractURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) ContractURI() (string, error) { + return _FeralfileExhibitionV2.Contract.ContractURI(&_FeralfileExhibitionV2.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) ContractURI() (string, error) { + return _FeralfileExhibitionV2.Contract.ContractURI(&_FeralfileExhibitionV2.CallOpts) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV2.Contract.GetApproved(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV2.Contract.GetApproved(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) GetArtworkByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "getArtworkByIndex", index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) GetArtworkByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.GetArtworkByIndex(&_FeralfileExhibitionV2.CallOpts, index) +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) GetArtworkByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.GetArtworkByIndex(&_FeralfileExhibitionV2.CallOpts, index) +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) GetArtworkEditionByIndex(opts *bind.CallOpts, artworkID *big.Int, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "getArtworkEditionByIndex", artworkID, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) GetArtworkEditionByIndex(artworkID *big.Int, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.GetArtworkEditionByIndex(&_FeralfileExhibitionV2.CallOpts, artworkID, index) +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) GetArtworkEditionByIndex(artworkID *big.Int, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.GetArtworkEditionByIndex(&_FeralfileExhibitionV2.CallOpts, artworkID, index) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV2.Contract.IsApprovedForAll(&_FeralfileExhibitionV2.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV2.Contract.IsApprovedForAll(&_FeralfileExhibitionV2.CallOpts, owner, operator) +} + +// MaxEditionPerArtwork is a free data retrieval call binding the contract method 0x84ad61af. +// +// Solidity: function maxEditionPerArtwork() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) MaxEditionPerArtwork(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "maxEditionPerArtwork") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MaxEditionPerArtwork is a free data retrieval call binding the contract method 0x84ad61af. +// +// Solidity: function maxEditionPerArtwork() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) MaxEditionPerArtwork() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.MaxEditionPerArtwork(&_FeralfileExhibitionV2.CallOpts) +} + +// MaxEditionPerArtwork is a free data retrieval call binding the contract method 0x84ad61af. +// +// Solidity: function maxEditionPerArtwork() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) MaxEditionPerArtwork() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.MaxEditionPerArtwork(&_FeralfileExhibitionV2.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Name() (string, error) { + return _FeralfileExhibitionV2.Contract.Name(&_FeralfileExhibitionV2.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) Name() (string, error) { + return _FeralfileExhibitionV2.Contract.Name(&_FeralfileExhibitionV2.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV2.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 + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Owner() (common.Address, error) { + return _FeralfileExhibitionV2.Contract.Owner(&_FeralfileExhibitionV2.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) Owner() (common.Address, error) { + return _FeralfileExhibitionV2.Contract.Owner(&_FeralfileExhibitionV2.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV2.Contract.OwnerOf(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV2.Contract.OwnerOf(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) RoyaltyInfo(opts *bind.CallOpts, tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "royaltyInfo", tokenId, salePrice) + + outstruct := new(struct { + Receiver common.Address + RoyaltyAmount *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Receiver = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.RoyaltyAmount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) RoyaltyInfo(tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + return _FeralfileExhibitionV2.Contract.RoyaltyInfo(&_FeralfileExhibitionV2.CallOpts, tokenId, salePrice) +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) RoyaltyInfo(tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + return _FeralfileExhibitionV2.Contract.RoyaltyInfo(&_FeralfileExhibitionV2.CallOpts, tokenId, salePrice) +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) RoyaltyPayoutAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "royaltyPayoutAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) RoyaltyPayoutAddress() (common.Address, error) { + return _FeralfileExhibitionV2.Contract.RoyaltyPayoutAddress(&_FeralfileExhibitionV2.CallOpts) +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) RoyaltyPayoutAddress() (common.Address, error) { + return _FeralfileExhibitionV2.Contract.RoyaltyPayoutAddress(&_FeralfileExhibitionV2.CallOpts) +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) SecondarySaleRoyaltyBPS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "secondarySaleRoyaltyBPS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SecondarySaleRoyaltyBPS() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.SecondarySaleRoyaltyBPS(&_FeralfileExhibitionV2.CallOpts) +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) SecondarySaleRoyaltyBPS() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.SecondarySaleRoyaltyBPS(&_FeralfileExhibitionV2.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV2.Contract.SupportsInterface(&_FeralfileExhibitionV2.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV2.Contract.SupportsInterface(&_FeralfileExhibitionV2.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Symbol() (string, error) { + return _FeralfileExhibitionV2.Contract.Symbol(&_FeralfileExhibitionV2.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) Symbol() (string, error) { + return _FeralfileExhibitionV2.Contract.Symbol(&_FeralfileExhibitionV2.CallOpts) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "tokenByIndex", index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TokenByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TokenByIndex(&_FeralfileExhibitionV2.CallOpts, index) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TokenByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TokenByIndex(&_FeralfileExhibitionV2.CallOpts, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV2.CallOpts, owner, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV2.CallOpts, owner, index) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV2.Contract.TokenURI(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV2.Contract.TokenURI(&_FeralfileExhibitionV2.CallOpts, tokenId) +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TotalArtworks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "totalArtworks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TotalArtworks() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalArtworks(&_FeralfileExhibitionV2.CallOpts) +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TotalArtworks() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalArtworks(&_FeralfileExhibitionV2.CallOpts) +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TotalEditionOfArtwork(opts *bind.CallOpts, artworkID *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "totalEditionOfArtwork", artworkID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TotalEditionOfArtwork(artworkID *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalEditionOfArtwork(&_FeralfileExhibitionV2.CallOpts, artworkID) +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TotalEditionOfArtwork(artworkID *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalEditionOfArtwork(&_FeralfileExhibitionV2.CallOpts, artworkID) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV2.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) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalSupply(&_FeralfileExhibitionV2.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV2.Contract.TotalSupply(&_FeralfileExhibitionV2.CallOpts) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Caller) Trustees(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV2.contract.Call(opts, &out, "trustees", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV2.Contract.Trustees(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2CallerSession) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV2.Contract.Trustees(&_FeralfileExhibitionV2.CallOpts, arg0) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) AddTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "addTrustee", _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.AddTrustee(&_FeralfileExhibitionV2.TransactOpts, _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.AddTrustee(&_FeralfileExhibitionV2.TransactOpts, _trustee) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.Approve(&_FeralfileExhibitionV2.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.Approve(&_FeralfileExhibitionV2.TransactOpts, to, tokenId) +} + +// CreateArtwork is a paid mutator transaction binding the contract method 0x3afb021a. +// +// Solidity: function createArtwork(string fingerprint, string title, string artistName, uint256 editionSize) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) CreateArtwork(opts *bind.TransactOpts, fingerprint string, title string, artistName string, editionSize *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "createArtwork", fingerprint, title, artistName, editionSize) +} + +// CreateArtwork is a paid mutator transaction binding the contract method 0x3afb021a. +// +// Solidity: function createArtwork(string fingerprint, string title, string artistName, uint256 editionSize) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) CreateArtwork(fingerprint string, title string, artistName string, editionSize *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.CreateArtwork(&_FeralfileExhibitionV2.TransactOpts, fingerprint, title, artistName, editionSize) +} + +// CreateArtwork is a paid mutator transaction binding the contract method 0x3afb021a. +// +// Solidity: function createArtwork(string fingerprint, string title, string artistName, uint256 editionSize) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) CreateArtwork(fingerprint string, title string, artistName string, editionSize *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.CreateArtwork(&_FeralfileExhibitionV2.TransactOpts, fingerprint, title, artistName, editionSize) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) RemoveTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "removeTrustee", _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.RemoveTrustee(&_FeralfileExhibitionV2.TransactOpts, _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.RemoveTrustee(&_FeralfileExhibitionV2.TransactOpts, _trustee) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.RenounceOwnership(&_FeralfileExhibitionV2.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.RenounceOwnership(&_FeralfileExhibitionV2.TransactOpts) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SafeTransferFrom(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SafeTransferFrom(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SafeTransferFrom0(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SafeTransferFrom0(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetApprovalForAll(&_FeralfileExhibitionV2.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetApprovalForAll(&_FeralfileExhibitionV2.TransactOpts, operator, approved) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SetRoyaltyPayoutAddress(opts *bind.TransactOpts, royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "setRoyaltyPayoutAddress", royaltyPayoutAddress_) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SetRoyaltyPayoutAddress(royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetRoyaltyPayoutAddress(&_FeralfileExhibitionV2.TransactOpts, royaltyPayoutAddress_) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SetRoyaltyPayoutAddress(royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetRoyaltyPayoutAddress(&_FeralfileExhibitionV2.TransactOpts, royaltyPayoutAddress_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SetTokenBaseURI(opts *bind.TransactOpts, baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "setTokenBaseURI", baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetTokenBaseURI(&_FeralfileExhibitionV2.TransactOpts, baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SetTokenBaseURI(&_FeralfileExhibitionV2.TransactOpts, baseURI_) +} + +// SwapArtworkFromBitmark is a paid mutator transaction binding the contract method 0x7f34c0dd. +// +// Solidity: function swapArtworkFromBitmark(uint256 artworkID, uint256 bitmarkID, uint256 editionNumber, address owner, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) SwapArtworkFromBitmark(opts *bind.TransactOpts, artworkID *big.Int, bitmarkID *big.Int, editionNumber *big.Int, owner common.Address, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "swapArtworkFromBitmark", artworkID, bitmarkID, editionNumber, owner, ipfsCID) +} + +// SwapArtworkFromBitmark is a paid mutator transaction binding the contract method 0x7f34c0dd. +// +// Solidity: function swapArtworkFromBitmark(uint256 artworkID, uint256 bitmarkID, uint256 editionNumber, address owner, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) SwapArtworkFromBitmark(artworkID *big.Int, bitmarkID *big.Int, editionNumber *big.Int, owner common.Address, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SwapArtworkFromBitmark(&_FeralfileExhibitionV2.TransactOpts, artworkID, bitmarkID, editionNumber, owner, ipfsCID) +} + +// SwapArtworkFromBitmark is a paid mutator transaction binding the contract method 0x7f34c0dd. +// +// Solidity: function swapArtworkFromBitmark(uint256 artworkID, uint256 bitmarkID, uint256 editionNumber, address owner, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) SwapArtworkFromBitmark(artworkID *big.Int, bitmarkID *big.Int, editionNumber *big.Int, owner common.Address, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.SwapArtworkFromBitmark(&_FeralfileExhibitionV2.TransactOpts, artworkID, bitmarkID, editionNumber, owner, ipfsCID) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.TransferFrom(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.TransferFrom(&_FeralfileExhibitionV2.TransactOpts, from, to, tokenId) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.TransferOwnership(&_FeralfileExhibitionV2.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.TransferOwnership(&_FeralfileExhibitionV2.TransactOpts, newOwner) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Transactor) UpdateArtworkEditionIPFSCid(opts *bind.TransactOpts, tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.contract.Transact(opts, "updateArtworkEditionIPFSCid", tokenId, ipfsCID) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Session) UpdateArtworkEditionIPFSCid(tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.UpdateArtworkEditionIPFSCid(&_FeralfileExhibitionV2.TransactOpts, tokenId, ipfsCID) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2TransactorSession) UpdateArtworkEditionIPFSCid(tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV2.Contract.UpdateArtworkEditionIPFSCid(&_FeralfileExhibitionV2.TransactOpts, tokenId, ipfsCID) +} + +// FeralfileExhibitionV2ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2ApprovalIterator struct { + Event *FeralfileExhibitionV2Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2Approval represents a Approval event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV2ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2ApprovalIterator{contract: _FeralfileExhibitionV2.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2Approval) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseApproval(log types.Log) (*FeralfileExhibitionV2Approval, error) { + event := new(FeralfileExhibitionV2Approval) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV2ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2ApprovalForAllIterator struct { + Event *FeralfileExhibitionV2ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2ApprovalForAll represents a ApprovalForAll event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*FeralfileExhibitionV2ApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2ApprovalForAllIterator{contract: _FeralfileExhibitionV2.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2ApprovalForAll) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseApprovalForAll(log types.Log) (*FeralfileExhibitionV2ApprovalForAll, error) { + event := new(FeralfileExhibitionV2ApprovalForAll) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV2NewArtworkIterator is returned from FilterNewArtwork and is used to iterate over the raw logs and unpacked data for NewArtwork events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2NewArtworkIterator struct { + Event *FeralfileExhibitionV2NewArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2NewArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2NewArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2NewArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2NewArtwork represents a NewArtwork event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2NewArtwork struct { + ArtworkID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtwork is a free log retrieval operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterNewArtwork(opts *bind.FilterOpts, artworkID []*big.Int) (*FeralfileExhibitionV2NewArtworkIterator, error) { + + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "NewArtwork", artworkIDRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2NewArtworkIterator{contract: _FeralfileExhibitionV2.contract, event: "NewArtwork", logs: logs, sub: sub}, nil +} + +// WatchNewArtwork is a free log subscription operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchNewArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2NewArtwork, artworkID []*big.Int) (event.Subscription, error) { + + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "NewArtwork", artworkIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2NewArtwork) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtwork is a log parse operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseNewArtwork(log types.Log) (*FeralfileExhibitionV2NewArtwork, error) { + event := new(FeralfileExhibitionV2NewArtwork) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV2NewArtworkEditionIterator is returned from FilterNewArtworkEdition and is used to iterate over the raw logs and unpacked data for NewArtworkEdition events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2NewArtworkEditionIterator struct { + Event *FeralfileExhibitionV2NewArtworkEdition // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2NewArtworkEditionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2NewArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2NewArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2NewArtworkEditionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2NewArtworkEditionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2NewArtworkEdition represents a NewArtworkEdition event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2NewArtworkEdition struct { + Owner common.Address + ArtworkID *big.Int + EditionID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtworkEdition is a free log retrieval operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterNewArtworkEdition(opts *bind.FilterOpts, owner []common.Address, artworkID []*big.Int, editionID []*big.Int) (*FeralfileExhibitionV2NewArtworkEditionIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "NewArtworkEdition", ownerRule, artworkIDRule, editionIDRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2NewArtworkEditionIterator{contract: _FeralfileExhibitionV2.contract, event: "NewArtworkEdition", logs: logs, sub: sub}, nil +} + +// WatchNewArtworkEdition is a free log subscription operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchNewArtworkEdition(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2NewArtworkEdition, owner []common.Address, artworkID []*big.Int, editionID []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "NewArtworkEdition", ownerRule, artworkIDRule, editionIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2NewArtworkEdition) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "NewArtworkEdition", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtworkEdition is a log parse operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseNewArtworkEdition(log types.Log) (*FeralfileExhibitionV2NewArtworkEdition, error) { + event := new(FeralfileExhibitionV2NewArtworkEdition) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "NewArtworkEdition", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV2OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2OwnershipTransferredIterator struct { + Event *FeralfileExhibitionV2OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2OwnershipTransferred represents a OwnershipTransferred event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralfileExhibitionV2OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2OwnershipTransferredIterator{contract: _FeralfileExhibitionV2.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2OwnershipTransferred) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseOwnershipTransferred(log types.Log) (*FeralfileExhibitionV2OwnershipTransferred, error) { + event := new(FeralfileExhibitionV2OwnershipTransferred) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV2TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2TransferIterator struct { + Event *FeralfileExhibitionV2Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV2TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV2Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV2TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV2TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV2Transfer represents a Transfer event raised by the FeralfileExhibitionV2 contract. +type FeralfileExhibitionV2Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV2TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV2TransferIterator{contract: _FeralfileExhibitionV2.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV2Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV2.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV2Transfer) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV2 *FeralfileExhibitionV2Filterer) ParseTransfer(log types.Log) (*FeralfileExhibitionV2Transfer, error) { + event := new(FeralfileExhibitionV2Transfer) + if err := _FeralfileExhibitionV2.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/binding/feralfile-exhibition-v3/abi.go b/binding/feralfile-exhibition-v3/abi.go new file mode 100644 index 0000000..1e52bd7 --- /dev/null +++ b/binding/feralfile-exhibition-v3/abi.go @@ -0,0 +1,2549 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package feralfilev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralfileExhibitionV3Artwork is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV3Artwork struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + AEAmount *big.Int + PPAmount *big.Int +} + +// FeralfileExhibitionV3MintArtworkParam is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV3MintArtworkParam struct { + ArtworkID *big.Int + Edition *big.Int + Artist common.Address + Owner common.Address + IpfsCID string +} + +// FeralfileExhibitionV3TransferArtworkParam is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV3TransferArtworkParam struct { + From common.Address + To common.Address + TokenID *big.Int + ExpireTime *big.Int + R [32]byte + S [32]byte + V uint8 +} + +// FeralfileExhibitionV3MetaData contains all meta data concerning the FeralfileExhibitionV3 contract. +var FeralfileExhibitionV3MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"secondarySaleRoyaltyBPS_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"royaltyPayoutAddress_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tokenBaseURI_\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"isBurnable_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isBridgeable_\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionID\",\"type\":\"uint256\"}],\"name\":\"BurnArtworkEdition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"}],\"name\":\"NewArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"editionID\",\"type\":\"uint256\"}],\"name\":\"NewArtworkEdition\",\"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\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_ROYALITY_BPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artworkEditions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"editionID\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"artworks\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"artistName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"fingerprint\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"editionSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AEAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"PPAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"codeVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBridgeable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBurnable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"royaltyPayoutAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"secondarySaleRoyaltyBPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"artistName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"fingerprint\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"editionSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AEAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"PPAmount\",\"type\":\"uint256\"}],\"internalType\":\"structFeralfileExhibitionV3.Artwork[]\",\"name\":\"artworks_\",\"type\":\"tuple[]\"}],\"name\":\"createArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalArtworks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getArtworkByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"name\":\"updateArtworkEditionIPFSCid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"royaltyPayoutAddress_\",\"type\":\"address\"}],\"name\":\"setRoyaltyPayoutAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"}],\"name\":\"totalEditionOfArtwork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getArtworkEditionByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setTokenBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salePrice\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"royaltyAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expireTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"}],\"internalType\":\"structFeralfileExhibitionV3.TransferArtworkParam[]\",\"name\":\"transferParams_\",\"type\":\"tuple[]\"}],\"name\":\"authorizedTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"artworkID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"edition\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"artist\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"ipfsCID\",\"type\":\"string\"}],\"internalType\":\"structFeralfileExhibitionV3.MintArtworkParam[]\",\"name\":\"mintParams_\",\"type\":\"tuple[]\"}],\"name\":\"batchMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"editionIDs_\",\"type\":\"uint256[]\"}],\"name\":\"burnEditions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620044d3380380620044d3833981016040819052620000349162000324565b87876000620000448382620004ae565b506001620000538282620004ae565b505050620000706200006a620001db60201b60201c565b620001df565b612710861115620001065760405162461bcd60e51b815260206004820152604f60248201527f726f79616c74792042505320666f72207365636f6e646172792073616c65732060448201527f63616e206e6f742062652067726561746572207468616e20746865206d61786960648201526e6d756d20726f79616c74792042505360881b608482015260a4015b60405180910390fd5b6001600160a01b0385166200015e5760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726f79616c7479207061796f7574206164647265737300006044820152606401620000fd565b6080869052600c80546001600160a01b0319166001600160a01b038716179055600e6200018c8582620004ae565b50600d6200019b8482620004ae565b50600c805461ffff60a01b1916600160a01b9315159390930260ff60a81b191692909217600160a81b91151591909102179055506200057a945050505050565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200025957600080fd5b81516001600160401b038082111562000276576200027662000231565b604051601f8301601f19908116603f01168101908282118183101715620002a157620002a162000231565b81604052838152602092508683858801011115620002be57600080fd5b600091505b83821015620002e25785820183015181830184015290820190620002c3565b600093810190920192909252949350505050565b80516001600160a01b03811681146200030e57600080fd5b919050565b805180151581146200030e57600080fd5b600080600080600080600080610100898b0312156200034257600080fd5b88516001600160401b03808211156200035a57600080fd5b620003688c838d0162000247565b995060208b01519150808211156200037f57600080fd5b6200038d8c838d0162000247565b985060408b01519750620003a460608c01620002f6565b965060808b0151915080821115620003bb57600080fd5b620003c98c838d0162000247565b955060a08b0151915080821115620003e057600080fd5b50620003ef8b828c0162000247565b9350506200040060c08a0162000313565b91506200041060e08a0162000313565b90509295985092959890939650565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004a957600081815260208120601f850160051c81016020861015620004845750805b601f850160051c820191505b81811015620004a55782815560010162000490565b5050505b505050565b81516001600160401b03811115620004ca57620004ca62000231565b620004e281620004db84546200041f565b846200045b565b602080601f8311600181146200051a5760008415620005015750858301515b600019600386901b1c1916600185901b178555620004a5565b600085815260208120601f198616915b828110156200054b578886015182559484019460019091019084016200052a565b50858210156200056a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613f366200059d600039600081816105bf0152610b920152613f366000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c806370a0823111610151578063c87b56dd116100c3578063ea211d7c11610087578063ea211d7c146105ba578063ec9cbb44146105e1578063eee608a4146105ea578063f2fde38b1461060d578063fc05ea6814610620578063fe2a3bf31461063357600080fd5b8063c87b56dd14610548578063dc78ac1c1461055b578063e4a233e11461056e578063e8a3d48514610576578063e985e9c51461057e57600080fd5b80638ef79e91116101155780638ef79e91146104e157806395d89b41146104f45780639fbf39cd146104fc578063a22cb4651461050f578063b488370314610522578063b88d4fde1461053557600080fd5b806370a082311461048d578063715018a6146104a05780637ca5ea89146104a8578063883356d9146104bc5780638da5cb5b146104d057600080fd5b80632f745c59116101ea5780634b602673116101ae5780634b602673146103da5780634f6ccce7146103ff57806362fe2131146104125780636352211e1461043357806363e6023014610446578063641b18e91461047a57600080fd5b80632f745c591461037b5780633f6805ba1461038e57806342842e0e146103a157806343deaf76146103b457806345aeefde146103c757600080fd5b80630cfcb5f1116102315780630cfcb5f1146102fe57806312d907b91461031157806318160ddd1461032457806323b872dd146103365780632a55205a1461034957600080fd5b806301ffc9a71461026e578063031205061461029657806306fdde03146102ab578063081812fc146102c0578063095ea7b3146102eb575b600080fd5b61028161027c3660046131e0565b610653565b60405190151581526020015b60405180910390f35b6102a96102a4366004613220565b61067e565b005b6102b36106a7565b60405161028d919061328b565b6102d36102ce36600461329e565b610739565b6040516001600160a01b03909116815260200161028d565b6102a96102f93660046132b7565b610760565b6102a961030c36600461340a565b61087a565b6102a961031f366004613473565b6109e8565b6008545b60405190815260200161028d565b6102a9610344366004613594565b610ad9565b61035c6103573660046135d0565b610b0a565b604080516001600160a01b03909316835260208301919091520161028d565b6103286103893660046132b7565b610bca565b600c546102d3906001600160a01b031681565b6102a96103af366004613594565b610c60565b6102a96103c23660046135f2565b610c7b565b6102a96103d5366004613220565b610d87565b6103ed6103e836600461329e565b610e30565b60405161028d9695949392919061373e565b61032861040d36600461329e565b610ffc565b61042561042036600461329e565b61108f565b60405161028d929190613796565b6102d361044136600461329e565b611134565b6102b360405180604001604052806015815260200174466572616c66696c6545786869626974696f6e563360581b81525081565b6103286104883660046135d0565b611194565b61032861049b366004613220565b6111e1565b6102a9611267565b600c5461028190600160a81b900460ff1681565b600c5461028190600160a01b900460ff1681565b600a546001600160a01b03166102d3565b6102a96104ef3660046137af565b61127b565b6102b36112b8565b6102a961050a3660046137e3565b6112c7565b6102a961051d3660046138e6565b611338565b61032861053036600461329e565b611343565b6102a9610543366004613922565b6113bb565b6102b361055636600461329e565b6113ed565b6102a9610569366004613220565b611553565b600f54610328565b6102b361157f565b61028161058c36600461399d565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103287f000000000000000000000000000000000000000000000000000000000000000081565b61032861271081565b6102816105f8366004613220565b600b6020526000908152604090205460ff1681565b6102a961061b366004613220565b61158e565b6102a961062e3660046139c7565b611607565b61032861064136600461329e565b60009081526012602052604090205490565b60006001600160e01b0319821663780e9d6360e01b14806106785750610678826118e9565b92915050565b61068661190e565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6060600080546106b690613a57565b80601f01602080910402602001604051908101604052809291908181526020018280546106e290613a57565b801561072f5780601f106107045761010080835404028352916020019161072f565b820191906000526020600020905b81548152906001019060200180831161071257829003601f168201915b5050505050905090565b600061074482611968565b506000908152600460205260409020546001600160a01b031690565b600061076b82611134565b9050806001600160a01b0316836001600160a01b0316036107dd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107f957506107f9813361058c565b61086b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107d4565b61087583836119b8565b505050565b336000908152600b602052604090205460ff16806108a25750600a546001600160a01b031633145b6108ab57600080fd5b6108b482611a26565b6109005760405162461bcd60e51b815260206004820152601c60248201527f617274776f726b2065646974696f6e206973206e6f7420666f756e640000000060448201526064016107d4565b6013816040516109109190613a91565b9081526040519081900360200190205460ff16156109695760405162461bcd60e51b81526020600482015260166024820152751a5c199cc81a59081a185cc81c9959da5cdd195c995960521b60448201526064016107d4565b60008281526011602052604090819020905160139061098c906001840190613b20565b908152604051908190036020018120805460ff191690556001906013906109b4908590613a91565b908152604051908190036020019020805491151560ff19909216919091179055600181016109e28382613b7a565b50505050565b336000908152600b602052604090205460ff1680610a105750600a546001600160a01b031633145b610a1957600080fd5b60005b8151811015610ad557610ac3828281518110610a3a57610a3a613c39565b602002602001015160000151838381518110610a5857610a58613c39565b602002602001015160200151848481518110610a7657610a76613c39565b602002602001015160400151858581518110610a9457610a94613c39565b602002602001015160600151868681518110610ab257610ab2613c39565b602002602001015160800151611a43565b80610acd81613c65565b915050610a1c565b5050565b610ae33382611e4f565b610aff5760405162461bcd60e51b81526004016107d490613c7e565b610875838383611ece565b600080610b1684611a26565b610b7c5760405162461bcd60e51b815260206004820152603160248201527f455243323938313a20717565727920726f79616c747920696e666f20666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b60648201526084016107d4565b600c546001600160a01b03169150612710610bb77f000000000000000000000000000000000000000000000000000000000000000085613ccb565b610bc19190613ce2565b90509250929050565b6000610bd5836111e1565b8210610c375760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107d4565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610875838383604051806020016040528060008152506113bb565b336000908152600b602052604090205460ff1680610ca35750600a546001600160a01b031633145b610cac57600080fd5b60005b8151811015610ad557610d74828281518110610ccd57610ccd613c39565b602002602001015160400151838381518110610ceb57610ceb613c39565b602002602001015160000151848481518110610d0957610d09613c39565b602002602001015160200151858581518110610d2757610d27613c39565b602002602001015160600151868681518110610d4557610d45613c39565b602002602001015160800151878781518110610d6357610d63613c39565b602002602001015160a0015161203f565b5080610d7f81613c65565b915050610caf565b336000908152600b602052604090205460ff1680610daf5750600a546001600160a01b031633145b610db857600080fd5b6001600160a01b038116610e0e5760405162461bcd60e51b815260206004820152601e60248201527f696e76616c696420726f79616c7479207061796f75742061646472657373000060448201526064016107d4565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b601060205260009081526040902080548190610e4b90613a57565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7790613a57565b8015610ec45780601f10610e9957610100808354040283529160200191610ec4565b820191906000526020600020905b815481529060010190602001808311610ea757829003601f168201915b505050505090806001018054610ed990613a57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0590613a57565b8015610f525780601f10610f2757610100808354040283529160200191610f52565b820191906000526020600020905b815481529060010190602001808311610f3557829003601f168201915b505050505090806002018054610f6790613a57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9390613a57565b8015610fe05780601f10610fb557610100808354040283529160200191610fe0565b820191906000526020600020905b815481529060010190602001808311610fc357829003601f168201915b5050505050908060030154908060040154908060050154905086565b600061100760085490565b821061106a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107d4565b6008828154811061107d5761107d613c39565b90600052602060002001549050919050565b601160205260009081526040902080546001820180549192916110b190613a57565b80601f01602080910402602001604051908101604052809291908181526020018280546110dd90613a57565b801561112a5780601f106110ff5761010080835404028352916020019161112a565b820191906000526020600020905b81548152906001019060200180831161110d57829003601f168201915b5050505050905082565b6000818152600260205260408120546001600160a01b0316806106785760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d4565b60008281526012602052604081205482106111ae57600080fd5b60008381526012602052604090208054839081106111ce576111ce613c39565b9060005260206000200154905092915050565b60006001600160a01b03821661124b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107d4565b506001600160a01b031660009081526003602052604090205490565b61126f61190e565b6112796000612348565b565b336000908152600b602052604090205460ff16806112a35750600a546001600160a01b031633145b6112ac57600080fd5b600d610ad58282613b7a565b6060600180546106b690613a57565b336000908152600b602052604090205460ff16806112ef5750600a546001600160a01b031633145b6112f857600080fd5b60005b8151811015610ad55761132682828151811061131957611319613c39565b602002602001015161239a565b8061133081613c65565b9150506112fb565b610ad533838361257f565b600061134e600f5490565b82106113a85760405162461bcd60e51b8152602060048201526024808201527f617274776f726b733a20676c6f62616c20696e646578206f7574206f6620626f604482015263756e647360e01b60648201526084016107d4565b600f828154811061107d5761107d613c39565b6113c53383611e4f565b6113e15760405162461bcd60e51b81526004016107d490613c7e565b6109e28484848461264d565b60606113f882611a26565b61145c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016107d4565b6000600d805461146b90613a57565b80601f016020809104026020016040519081016040528092919081815260200182805461149790613a57565b80156114e45780601f106114b9576101008083540402835291602001916114e4565b820191906000526020600020905b8154815290600101906020018083116114c757829003601f168201915b5050505050905080516000036115145750604080518082019091526007815266697066733a2f2f60c81b60208201525b806011600085815260200190815260200160002060010160405160200161153c929190613d04565b604051602081830303815290604052915050919050565b61155b61190e565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6060600e80546106b690613a57565b61159661190e565b6001600160a01b0381166115fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d4565b61160481612348565b50565b600c54600160a01b900460ff166116765760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56333a206e6f7420616c6c6f7760448201526c10313ab9371032b234ba34b7b760991b60648201526084016107d4565b60005b8151811015610ad5576116a482828151811061169757611697613c39565b6020026020010151611a26565b6116c05760405162461bcd60e51b81526004016107d490613d2b565b6116e3338383815181106116d6576116d6613c39565b6020026020010151611e4f565b6116ff5760405162461bcd60e51b81526004016107d490613d6f565b60006011600084848151811061171757611717613c39565b602002602001015181526020019081526020016000206040518060400160405290816000820154815260200160018201805461175290613a57565b80601f016020809104026020016040519081016040528092919081815260200182805461177e90613a57565b80156117cb5780601f106117a0576101008083540402835291602001916117cb565b820191906000526020600020905b8154815290600101906020018083116117ae57829003601f168201915b5050505050815250509050601381602001516040516117ea9190613a91565b908152604051908190036020019020805460ff19169055825160119060009085908590811061181b5761181b613c39565b6020026020010151815260200190815260200160002060008082016000905560018201600061184a919061317c565b505061186e83838151811061186157611861613c39565b6020026020010151612680565b61189083838151811061188357611883613c39565b602002602001015161286e565b8282815181106118a2576118a2613c39565b60200260200101517fa5a44c7ed36966786612323ee2cb0cb453d4a9282b90c6befe72cde41d83f48860405160405180910390a250806118e181613c65565b915050611679565b60006001600160e01b0319821663780e9d6360e01b1480610678575061067882612911565b600a546001600160a01b031633146112795760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d4565b61197181611a26565b6116045760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107d4565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906119ed82611134565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000908152600260205260409020546001600160a01b0316151590565b600085815260106020526040902060030154611ab55760405162461bcd60e51b815260206004820152602b60248201527f466572616c66696c6545786869626974696f6e56333a20617274776f726b206960448201526a1cc81b9bdd08199bdd5b9960aa1b60648201526084016107d4565b6000858152601060205260409020600581015460048201546003909201549091611ade91613dbd565b611ae89190613dbd565b8410611b715760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56333a2065646974696f6e206e60448201527f756d62657220657863656564207468652065646974696f6e2073697a65206f6660648201526b2074686520617274776f726b60a01b608482015260a4016107d4565b6001600160a01b038316611bc05760405162461bcd60e51b8152602060048201526016602482015275696e76616c696420617274697374206164647265737360501b60448201526064016107d4565b6001600160a01b038216611c0e5760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206f776e6572206164647265737360581b60448201526064016107d4565b601381604051611c1e9190613a91565b9081526040519081900360200190205460ff1615611c775760405162461bcd60e51b81526020600482015260166024820152751a5c199cc81a59081a185cc81c9959da5cdd195c995960521b60448201526064016107d4565b6000611c838587613dbd565b60008181526011602052604090205490915015611cf95760405162461bcd60e51b815260206004820152602e60248201527f466572616c66696c6545786869626974696f6e56333a2074686520656469746960448201526d1bdb881a5cc8195e1a5cdd195b9d60921b60648201526084016107d4565b604080518082018252828152602080820185815260008581526011909252929020815181559151909182916001820190611d339082613b7a565b505050600087815260126020818152604080842080546001818101835582875284872090910188905582518084019093528c8352948c90529282529154919290830191611d809190613dd0565b90526000838152601460209081526040918290208351815592015160019283015551601390611db0908690613a91565b908152604051908190036020019020805491151560ff19909216919091179055611dda8583612961565b836001600160a01b0316856001600160a01b031614611e0e57611e0e8585846040518060200160405280600081525061264d565b8187856001600160a01b03167f4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd460405160405180910390a450505050505050565b600080611e5b83611134565b9050806001600160a01b0316846001600160a01b03161480611ea257506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80611ec65750836001600160a01b0316611ebb84610739565b6001600160a01b0316145b949350505050565b826001600160a01b0316611ee182611134565b6001600160a01b031614611f075760405162461bcd60e51b81526004016107d490613de3565b6001600160a01b038216611f695760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107d4565b611f76838383600161297b565b826001600160a01b0316611f8982611134565b6001600160a01b031614611faf5760405162461bcd60e51b81526004016107d490613de3565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000855160000361208b5760405162461bcd60e51b81526020600482015260166024820152757469746c652063616e206e6f7420626520656d70747960501b60448201526064016107d4565b84516000036120dc5760405162461bcd60e51b815260206004820152601760248201527f6172746973742063616e206e6f7420626520656d70747900000000000000000060448201526064016107d4565b865160000361212d5760405162461bcd60e51b815260206004820152601c60248201527f66696e6765727072696e742063616e206e6f7420626520656d7074790000000060448201526064016107d4565b600084116121895760405162461bcd60e51b815260206004820152602360248201527f65646974696f6e2073697a65206e6565647320746f206265206174206c65617360448201526274203160e81b60648201526084016107d4565b60008760405160200161219c919061328b565b60408051601f1981840301815291815281516020928301206000818152601090935291206002018054919250906121d290613a57565b1590506122475760405162461bcd60e51b815260206004820152603b60248201527f616e20617274776f726b2077697468207468652073616d652066696e6765727060448201527f72696e742068617320616c72656164792072656769737465726564000000000060648201526084016107d4565b6040805160c08101825288815260208082018990528183018b9052606082018890526080820187905260a08201869052600f8054600181019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018490556000848152601090915291909120815182919081906122c69082613b7a565b50602082015160018201906122db9082613b7a565b50604082015160028201906122f09082613b7a565b50606082015160038201556080820151600482015560a09091015160059091015560405182907f22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db089190600090a250979650505050505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6123a78160400151611a26565b6123c35760405162461bcd60e51b81526004016107d490613d2b565b6123d581600001518260400151611e4f565b6123f15760405162461bcd60e51b81526004016107d490613d6f565b80606001514211156124645760405162461bcd60e51b815260206004820152603660248201527f466572616c66696c6545786869626974696f6e56333a20746865207472616e7360448201527519995c881c995c5d595cdd081a5cc8195e1c1a5c995960521b60648201526084016107d4565b600081600001518260200151836040015184606001516040516020016124b194939291906001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6040516020818303038152906040528051906020012090506124e681836000015184608001518560a001518660c00151612aaf565b6125585760405162461bcd60e51b815260206004820152603d60248201527f466572616c66696c6545786869626974696f6e56333a20746865207472616e7360448201527f6665722072657175657374206973206e6f7420617574686f72697a656400000060648201526084016107d4565b610ad58260000151836020015184604001516040518060200160405280600081525061264d565b816001600160a01b0316836001600160a01b0316036125e05760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107d4565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612658848484611ece565b61266484848484612b07565b6109e25760405162461bcd60e51b81526004016107d490613e28565b600081815260146020908152604091829020825180840190935280548084526001909101549183019190915261272f5760405162461bcd60e51b815260206004820152604860248201527f466572616c66696c6545786869626974696f6e56333a20617274776f726b494460448201527f206973206e6f20666f756e6420666f722074686520617274776f726b456469746064820152670d2dedc92dcc8caf60c31b608482015260a4016107d4565b8051600090815260126020526040902080546127c45760405162461bcd60e51b815260206004820152604860248201527f466572616c66696c6545786869626974696f6e56333a206e6f2065646974696f60448201527f6e7320696e207468697320617274776f726b206f6620616c6c417274776f726b60648201526745646974696f6e7360c01b608482015260a4016107d4565b805460009082906127d790600190613dd0565b815481106127e7576127e7613c39565b90600052602060002001549050808284602001518154811061280b5761280b613c39565b90600052602060002001819055508180548061282957612829613e7a565b60008281526020808220830160001990810183905590920190925593840151918152601490935260408084206001908101929092559383529282208281559092015550565b600061287982611134565b905061288981600084600161297b565b61289282611134565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160e01b031982166380ac58cd60e01b148061294257506001600160e01b03198216635b5e139f60e01b145b8061067857506301ffc9a760e01b6001600160e01b0319831614610678565b610ad5828260405180602001604052806000815250612c08565b60018111156129ea5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016107d4565b816001600160a01b038516612a4657612a4181600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612a69565b836001600160a01b0316856001600160a01b031614612a6957612a698582612c3b565b6001600160a01b038416612a8557612a8081612cd8565b612aa8565b846001600160a01b0316846001600160a01b031614612aa857612aa88482612d87565b5050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c869052603c81208190612aec90848787612dcb565b6001600160a01b039081169087161491505095945050505050565b60006001600160a01b0384163b15612bfd57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b4b903390899088908890600401613e90565b6020604051808303816000875af1925050508015612b86575060408051601f3d908101601f19168201909252612b8391810190613ecd565b60015b612be3573d808015612bb4576040519150601f19603f3d011682016040523d82523d6000602084013e612bb9565b606091505b508051600003612bdb5760405162461bcd60e51b81526004016107d490613e28565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611ec6565b506001949350505050565b612c128383612df3565b612c1f6000848484612b07565b6108755760405162461bcd60e51b81526004016107d490613e28565b60006001612c48846111e1565b612c529190613dd0565b600083815260076020526040902054909150808214612ca5576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612cea90600190613dd0565b60008381526009602052604081205460088054939450909284908110612d1257612d12613c39565b906000526020600020015490508060088381548110612d3357612d33613c39565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612d6b57612d6b613e7a565b6001900381819060005260206000200160009055905550505050565b6000612d92836111e1565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6000806000612ddc87878787612f6e565b91509150612de981613032565b5095945050505050565b6001600160a01b038216612e495760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107d4565b612e5281611a26565b15612e9f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d4565b612ead60008383600161297b565b612eb681611a26565b15612f035760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107d4565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612fa55750600090506003613029565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612ff9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661302257600060019250925050613029565b9150600090505b94509492505050565b600081600481111561304657613046613eea565b0361304e5750565b600181600481111561306257613062613eea565b036130af5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107d4565b60028160048111156130c3576130c3613eea565b036131105760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107d4565b600381600481111561312457613124613eea565b036116045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016107d4565b50805461318890613a57565b6000825580601f10613198575050565b601f01602090049060005260206000209081019061160491905b808211156131c657600081556001016131b2565b5090565b6001600160e01b03198116811461160457600080fd5b6000602082840312156131f257600080fd5b81356131fd816131ca565b9392505050565b80356001600160a01b038116811461321b57600080fd5b919050565b60006020828403121561323257600080fd5b6131fd82613204565b60005b8381101561325657818101518382015260200161323e565b50506000910152565b6000815180845261327781602086016020860161323b565b601f01601f19169290920160200192915050565b6020815260006131fd602083018461325f565b6000602082840312156132b057600080fd5b5035919050565b600080604083850312156132ca57600080fd5b6132d383613204565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715613319576133196132e1565b60405290565b60405160c081016001600160401b0381118282101715613319576133196132e1565b60405160e081016001600160401b0381118282101715613319576133196132e1565b604051601f8201601f191681016001600160401b038111828210171561338b5761338b6132e1565b604052919050565b60006001600160401b038311156133ac576133ac6132e1565b6133bf601f8401601f1916602001613363565b90508281528383830111156133d357600080fd5b828260208301376000602084830101529392505050565b600082601f8301126133fb57600080fd5b6131fd83833560208501613393565b6000806040838503121561341d57600080fd5b8235915060208301356001600160401b0381111561343a57600080fd5b613446858286016133ea565b9150509250929050565b60006001600160401b03821115613469576134696132e1565b5060051b60200190565b6000602080838503121561348657600080fd5b82356001600160401b038082111561349d57600080fd5b818501915085601f8301126134b157600080fd5b81356134c46134bf82613450565b613363565b81815260059190911b830184019084810190888311156134e357600080fd5b8585015b83811015613587578035858111156134ff5760008081fd5b860160a0818c03601f19018113156135175760008081fd5b61351f6132f7565b8983013581526040808401358b830152606061353c818601613204565b828401526080915061354f828601613204565b908301529183013591888311156135665760008081fd5b6135748e8c858701016133ea565b90820152855250509186019186016134e7565b5098975050505050505050565b6000806000606084860312156135a957600080fd5b6135b284613204565b92506135c060208501613204565b9150604084013590509250925092565b600080604083850312156135e357600080fd5b50508035926020909101359150565b6000602080838503121561360557600080fd5b82356001600160401b038082111561361c57600080fd5b818501915085601f83011261363057600080fd5b813561363e6134bf82613450565b81815260059190911b8301840190848101908883111561365d57600080fd5b8585015b838110156135875780358581111561367857600080fd5b860160c0818c03601f1901121561368f5760008081fd5b61369761331f565b88820135878111156136a95760008081fd5b6136b78d8b838601016133ea565b825250604080830135888111156136ce5760008081fd5b6136dc8e8c838701016133ea565b8b84015250606080840135898111156136f55760008081fd5b6137038f8d838801016133ea565b83850152506080915081840135818401525060a0808401358284015260c0840135818401525050808552505086830192508681019050613661565b60c08152600061375160c083018961325f565b8281036020840152613763818961325f565b90508281036040840152613777818861325f565b60608401969096525050608081019290925260a0909101529392505050565b828152604060208201526000611ec6604083018461325f565b6000602082840312156137c157600080fd5b81356001600160401b038111156137d757600080fd5b611ec6848285016133ea565b600060208083850312156137f657600080fd5b82356001600160401b0381111561380c57600080fd5b8301601f8101851361381d57600080fd5b803561382b6134bf82613450565b81815260e0918202830184019184820191908884111561384a57600080fd5b938501935b838510156138da5780858a0312156138675760008081fd5b61386f613341565b61387886613204565b8152613885878701613204565b8188015260408681013590820152606080870135908201526080808701359082015260a0808701359082015260c08087013560ff811681146138c75760008081fd5b908201528352938401939185019161384f565b50979650505050505050565b600080604083850312156138f957600080fd5b61390283613204565b91506020830135801515811461391757600080fd5b809150509250929050565b6000806000806080858703121561393857600080fd5b61394185613204565b935061394f60208601613204565b92506040850135915060608501356001600160401b0381111561397157600080fd5b8501601f8101871361398257600080fd5b61399187823560208401613393565b91505092959194509250565b600080604083850312156139b057600080fd5b6139b983613204565b9150610bc160208401613204565b600060208083850312156139da57600080fd5b82356001600160401b038111156139f057600080fd5b8301601f81018513613a0157600080fd5b8035613a0f6134bf82613450565b81815260059190911b82018301908381019087831115613a2e57600080fd5b928401925b82841015613a4c57833582529284019290840190613a33565b979650505050505050565b600181811c90821680613a6b57607f821691505b602082108103613a8b57634e487b7160e01b600052602260045260246000fd5b50919050565b60008251613aa381846020870161323b565b9190910192915050565b60008154613aba81613a57565b60018281168015613ad25760018114613ae757613b16565b60ff1984168752821515830287019450613b16565b8560005260208060002060005b85811015613b0d5781548a820152908401908201613af4565b50505082870194505b5050505092915050565b60006131fd8284613aad565b601f82111561087557600081815260208120601f850160051c81016020861015613b535750805b601f850160051c820191505b81811015613b7257828155600101613b5f565b505050505050565b81516001600160401b03811115613b9357613b936132e1565b613ba781613ba18454613a57565b84613b2c565b602080601f831160018114613bdc5760008415613bc45750858301515b600019600386901b1c1916600185901b178555613b72565b600085815260208120601f198616915b82811015613c0b57888601518255948401946001909101908401613bec565b5085821015613c295787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613c7757613c77613c4f565b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b808202811582820484141761067857610678613c4f565b600082613cff57634e487b7160e01b600052601260045260246000fd5b500490565b60008351613d1681846020880161323b565b613d2281840185613aad565b95945050505050565b60208082526024908201527f4552433732313a20617274776f726b2065646974696f6e206973206e6f7420666040820152631bdd5b9960e21b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b8082018082111561067857610678613c4f565b8181038181111561067857610678613c4f565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613ec39083018461325f565b9695505050505050565b600060208284031215613edf57600080fd5b81516131fd816131ca565b634e487b7160e01b600052602160045260246000fdfea26469706673582212209288174d3e7b15610a90f59f81eef39b77360136b03e3ff81be4c9ff805fbf6264736f6c63430008110033", +} + +// FeralfileExhibitionV3ABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralfileExhibitionV3MetaData.ABI instead. +var FeralfileExhibitionV3ABI = FeralfileExhibitionV3MetaData.ABI + +// FeralfileExhibitionV3Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralfileExhibitionV3MetaData.Bin instead. +var FeralfileExhibitionV3Bin = FeralfileExhibitionV3MetaData.Bin + +// DeployFeralfileExhibitionV3 deploys a new Ethereum contract, binding an instance of FeralfileExhibitionV3 to it. +func DeployFeralfileExhibitionV3(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, secondarySaleRoyaltyBPS_ *big.Int, royaltyPayoutAddress_ common.Address, contractURI_ string, tokenBaseURI_ string, isBurnable_ bool, isBridgeable_ bool) (common.Address, *types.Transaction, *FeralfileExhibitionV3, error) { + parsed, err := FeralfileExhibitionV3MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralfileExhibitionV3Bin), backend, name_, symbol_, secondarySaleRoyaltyBPS_, royaltyPayoutAddress_, contractURI_, tokenBaseURI_, isBurnable_, isBridgeable_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralfileExhibitionV3{FeralfileExhibitionV3Caller: FeralfileExhibitionV3Caller{contract: contract}, FeralfileExhibitionV3Transactor: FeralfileExhibitionV3Transactor{contract: contract}, FeralfileExhibitionV3Filterer: FeralfileExhibitionV3Filterer{contract: contract}}, nil +} + +// FeralfileExhibitionV3 is an auto generated Go binding around an Ethereum contract. +type FeralfileExhibitionV3 struct { + FeralfileExhibitionV3Caller // Read-only binding to the contract + FeralfileExhibitionV3Transactor // Write-only binding to the contract + FeralfileExhibitionV3Filterer // Log filterer for contract events +} + +// FeralfileExhibitionV3Caller is an auto generated read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralfileExhibitionV3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralfileExhibitionV3Session struct { + Contract *FeralfileExhibitionV3 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralfileExhibitionV3CallerSession struct { + Contract *FeralfileExhibitionV3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralfileExhibitionV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralfileExhibitionV3TransactorSession struct { + Contract *FeralfileExhibitionV3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV3Raw is an auto generated low-level Go binding around an Ethereum contract. +type FeralfileExhibitionV3Raw struct { + Contract *FeralfileExhibitionV3 // Generic contract binding to access the raw methods on +} + +// FeralfileExhibitionV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV3CallerRaw struct { + Contract *FeralfileExhibitionV3Caller // Generic read-only contract binding to access the raw methods on +} + +// FeralfileExhibitionV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV3TransactorRaw struct { + Contract *FeralfileExhibitionV3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralfileExhibitionV3 creates a new instance of FeralfileExhibitionV3, bound to a specific deployed contract. +func NewFeralfileExhibitionV3(address common.Address, backend bind.ContractBackend) (*FeralfileExhibitionV3, error) { + contract, err := bindFeralfileExhibitionV3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3{FeralfileExhibitionV3Caller: FeralfileExhibitionV3Caller{contract: contract}, FeralfileExhibitionV3Transactor: FeralfileExhibitionV3Transactor{contract: contract}, FeralfileExhibitionV3Filterer: FeralfileExhibitionV3Filterer{contract: contract}}, nil +} + +// NewFeralfileExhibitionV3Caller creates a new read-only instance of FeralfileExhibitionV3, bound to a specific deployed contract. +func NewFeralfileExhibitionV3Caller(address common.Address, caller bind.ContractCaller) (*FeralfileExhibitionV3Caller, error) { + contract, err := bindFeralfileExhibitionV3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3Caller{contract: contract}, nil +} + +// NewFeralfileExhibitionV3Transactor creates a new write-only instance of FeralfileExhibitionV3, bound to a specific deployed contract. +func NewFeralfileExhibitionV3Transactor(address common.Address, transactor bind.ContractTransactor) (*FeralfileExhibitionV3Transactor, error) { + contract, err := bindFeralfileExhibitionV3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3Transactor{contract: contract}, nil +} + +// NewFeralfileExhibitionV3Filterer creates a new log filterer instance of FeralfileExhibitionV3, bound to a specific deployed contract. +func NewFeralfileExhibitionV3Filterer(address common.Address, filterer bind.ContractFilterer) (*FeralfileExhibitionV3Filterer, error) { + contract, err := bindFeralfileExhibitionV3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3Filterer{contract: contract}, nil +} + +// bindFeralfileExhibitionV3 binds a generic wrapper to an already deployed contract. +func bindFeralfileExhibitionV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralfileExhibitionV3MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV3.Contract.FeralfileExhibitionV3Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.FeralfileExhibitionV3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.FeralfileExhibitionV3Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV3.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.contract.Transact(opts, method, params...) +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) MAXROYALITYBPS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "MAX_ROYALITY_BPS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) MAXROYALITYBPS() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.MAXROYALITYBPS(&_FeralfileExhibitionV3.CallOpts) +} + +// MAXROYALITYBPS is a free data retrieval call binding the contract method 0xec9cbb44. +// +// Solidity: function MAX_ROYALITY_BPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) MAXROYALITYBPS() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.MAXROYALITYBPS(&_FeralfileExhibitionV3.CallOpts) +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) ArtworkEditions(opts *bind.CallOpts, arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "artworkEditions", arg0) + + outstruct := new(struct { + EditionID *big.Int + IpfsCID string + }) + if err != nil { + return *outstruct, err + } + + outstruct.EditionID = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.IpfsCID = *abi.ConvertType(out[1], new(string)).(*string) + + return *outstruct, err + +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) ArtworkEditions(arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + return _FeralfileExhibitionV3.Contract.ArtworkEditions(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// ArtworkEditions is a free data retrieval call binding the contract method 0x62fe2131. +// +// Solidity: function artworkEditions(uint256 ) view returns(uint256 editionID, string ipfsCID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) ArtworkEditions(arg0 *big.Int) (struct { + EditionID *big.Int + IpfsCID string +}, error) { + return _FeralfileExhibitionV3.Contract.ArtworkEditions(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize, uint256 AEAmount, uint256 PPAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) Artworks(opts *bind.CallOpts, arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + AEAmount *big.Int + PPAmount *big.Int +}, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "artworks", arg0) + + outstruct := new(struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + AEAmount *big.Int + PPAmount *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Title = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.ArtistName = *abi.ConvertType(out[1], new(string)).(*string) + outstruct.Fingerprint = *abi.ConvertType(out[2], new(string)).(*string) + outstruct.EditionSize = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int) + outstruct.AEAmount = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.PPAmount = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize, uint256 AEAmount, uint256 PPAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Artworks(arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + AEAmount *big.Int + PPAmount *big.Int +}, error) { + return _FeralfileExhibitionV3.Contract.Artworks(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// Artworks is a free data retrieval call binding the contract method 0x4b602673. +// +// Solidity: function artworks(uint256 ) view returns(string title, string artistName, string fingerprint, uint256 editionSize, uint256 AEAmount, uint256 PPAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) Artworks(arg0 *big.Int) (struct { + Title string + ArtistName string + Fingerprint string + EditionSize *big.Int + AEAmount *big.Int + PPAmount *big.Int +}, error) { + return _FeralfileExhibitionV3.Contract.Artworks(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.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 + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.BalanceOf(&_FeralfileExhibitionV3.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.BalanceOf(&_FeralfileExhibitionV3.CallOpts, owner) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) CodeVersion(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "codeVersion") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) CodeVersion() (string, error) { + return _FeralfileExhibitionV3.Contract.CodeVersion(&_FeralfileExhibitionV3.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) CodeVersion() (string, error) { + return _FeralfileExhibitionV3.Contract.CodeVersion(&_FeralfileExhibitionV3.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) ContractURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "contractURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) ContractURI() (string, error) { + return _FeralfileExhibitionV3.Contract.ContractURI(&_FeralfileExhibitionV3.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) ContractURI() (string, error) { + return _FeralfileExhibitionV3.Contract.ContractURI(&_FeralfileExhibitionV3.CallOpts) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV3.Contract.GetApproved(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV3.Contract.GetApproved(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) GetArtworkByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "getArtworkByIndex", index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) GetArtworkByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.GetArtworkByIndex(&_FeralfileExhibitionV3.CallOpts, index) +} + +// GetArtworkByIndex is a free data retrieval call binding the contract method 0xb4883703. +// +// Solidity: function getArtworkByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) GetArtworkByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.GetArtworkByIndex(&_FeralfileExhibitionV3.CallOpts, index) +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) GetArtworkEditionByIndex(opts *bind.CallOpts, artworkID *big.Int, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "getArtworkEditionByIndex", artworkID, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) GetArtworkEditionByIndex(artworkID *big.Int, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.GetArtworkEditionByIndex(&_FeralfileExhibitionV3.CallOpts, artworkID, index) +} + +// GetArtworkEditionByIndex is a free data retrieval call binding the contract method 0x641b18e9. +// +// Solidity: function getArtworkEditionByIndex(uint256 artworkID, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) GetArtworkEditionByIndex(artworkID *big.Int, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.GetArtworkEditionByIndex(&_FeralfileExhibitionV3.CallOpts, artworkID, index) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV3.Contract.IsApprovedForAll(&_FeralfileExhibitionV3.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV3.Contract.IsApprovedForAll(&_FeralfileExhibitionV3.CallOpts, owner, operator) +} + +// IsBridgeable is a free data retrieval call binding the contract method 0x7ca5ea89. +// +// Solidity: function isBridgeable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) IsBridgeable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "isBridgeable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsBridgeable is a free data retrieval call binding the contract method 0x7ca5ea89. +// +// Solidity: function isBridgeable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) IsBridgeable() (bool, error) { + return _FeralfileExhibitionV3.Contract.IsBridgeable(&_FeralfileExhibitionV3.CallOpts) +} + +// IsBridgeable is a free data retrieval call binding the contract method 0x7ca5ea89. +// +// Solidity: function isBridgeable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) IsBridgeable() (bool, error) { + return _FeralfileExhibitionV3.Contract.IsBridgeable(&_FeralfileExhibitionV3.CallOpts) +} + +// IsBurnable is a free data retrieval call binding the contract method 0x883356d9. +// +// Solidity: function isBurnable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) IsBurnable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "isBurnable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsBurnable is a free data retrieval call binding the contract method 0x883356d9. +// +// Solidity: function isBurnable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) IsBurnable() (bool, error) { + return _FeralfileExhibitionV3.Contract.IsBurnable(&_FeralfileExhibitionV3.CallOpts) +} + +// IsBurnable is a free data retrieval call binding the contract method 0x883356d9. +// +// Solidity: function isBurnable() view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) IsBurnable() (bool, error) { + return _FeralfileExhibitionV3.Contract.IsBurnable(&_FeralfileExhibitionV3.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Name() (string, error) { + return _FeralfileExhibitionV3.Contract.Name(&_FeralfileExhibitionV3.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) Name() (string, error) { + return _FeralfileExhibitionV3.Contract.Name(&_FeralfileExhibitionV3.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV3.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 + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Owner() (common.Address, error) { + return _FeralfileExhibitionV3.Contract.Owner(&_FeralfileExhibitionV3.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) Owner() (common.Address, error) { + return _FeralfileExhibitionV3.Contract.Owner(&_FeralfileExhibitionV3.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV3.Contract.OwnerOf(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV3.Contract.OwnerOf(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) RoyaltyInfo(opts *bind.CallOpts, tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "royaltyInfo", tokenId, salePrice) + + outstruct := new(struct { + Receiver common.Address + RoyaltyAmount *big.Int + }) + if err != nil { + return *outstruct, err + } + + outstruct.Receiver = *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + outstruct.RoyaltyAmount = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return *outstruct, err + +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) RoyaltyInfo(tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + return _FeralfileExhibitionV3.Contract.RoyaltyInfo(&_FeralfileExhibitionV3.CallOpts, tokenId, salePrice) +} + +// RoyaltyInfo is a free data retrieval call binding the contract method 0x2a55205a. +// +// Solidity: function royaltyInfo(uint256 tokenId, uint256 salePrice) view returns(address receiver, uint256 royaltyAmount) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) RoyaltyInfo(tokenId *big.Int, salePrice *big.Int) (struct { + Receiver common.Address + RoyaltyAmount *big.Int +}, error) { + return _FeralfileExhibitionV3.Contract.RoyaltyInfo(&_FeralfileExhibitionV3.CallOpts, tokenId, salePrice) +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) RoyaltyPayoutAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "royaltyPayoutAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) RoyaltyPayoutAddress() (common.Address, error) { + return _FeralfileExhibitionV3.Contract.RoyaltyPayoutAddress(&_FeralfileExhibitionV3.CallOpts) +} + +// RoyaltyPayoutAddress is a free data retrieval call binding the contract method 0x3f6805ba. +// +// Solidity: function royaltyPayoutAddress() view returns(address) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) RoyaltyPayoutAddress() (common.Address, error) { + return _FeralfileExhibitionV3.Contract.RoyaltyPayoutAddress(&_FeralfileExhibitionV3.CallOpts) +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) SecondarySaleRoyaltyBPS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "secondarySaleRoyaltyBPS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SecondarySaleRoyaltyBPS() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.SecondarySaleRoyaltyBPS(&_FeralfileExhibitionV3.CallOpts) +} + +// SecondarySaleRoyaltyBPS is a free data retrieval call binding the contract method 0xea211d7c. +// +// Solidity: function secondarySaleRoyaltyBPS() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) SecondarySaleRoyaltyBPS() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.SecondarySaleRoyaltyBPS(&_FeralfileExhibitionV3.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV3.Contract.SupportsInterface(&_FeralfileExhibitionV3.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV3.Contract.SupportsInterface(&_FeralfileExhibitionV3.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Symbol() (string, error) { + return _FeralfileExhibitionV3.Contract.Symbol(&_FeralfileExhibitionV3.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) Symbol() (string, error) { + return _FeralfileExhibitionV3.Contract.Symbol(&_FeralfileExhibitionV3.CallOpts) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "tokenByIndex", index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TokenByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TokenByIndex(&_FeralfileExhibitionV3.CallOpts, index) +} + +// TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7. +// +// Solidity: function tokenByIndex(uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TokenByIndex(index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TokenByIndex(&_FeralfileExhibitionV3.CallOpts, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV3.CallOpts, owner, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV3.CallOpts, owner, index) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV3.Contract.TokenURI(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV3.Contract.TokenURI(&_FeralfileExhibitionV3.CallOpts, tokenId) +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TotalArtworks(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "totalArtworks") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TotalArtworks() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalArtworks(&_FeralfileExhibitionV3.CallOpts) +} + +// TotalArtworks is a free data retrieval call binding the contract method 0xe4a233e1. +// +// Solidity: function totalArtworks() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TotalArtworks() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalArtworks(&_FeralfileExhibitionV3.CallOpts) +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TotalEditionOfArtwork(opts *bind.CallOpts, artworkID *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "totalEditionOfArtwork", artworkID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TotalEditionOfArtwork(artworkID *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalEditionOfArtwork(&_FeralfileExhibitionV3.CallOpts, artworkID) +} + +// TotalEditionOfArtwork is a free data retrieval call binding the contract method 0xfe2a3bf3. +// +// Solidity: function totalEditionOfArtwork(uint256 artworkID) view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TotalEditionOfArtwork(artworkID *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalEditionOfArtwork(&_FeralfileExhibitionV3.CallOpts, artworkID) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV3.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) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalSupply(&_FeralfileExhibitionV3.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV3.Contract.TotalSupply(&_FeralfileExhibitionV3.CallOpts) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Caller) Trustees(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV3.contract.Call(opts, &out, "trustees", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV3.Contract.Trustees(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3CallerSession) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV3.Contract.Trustees(&_FeralfileExhibitionV3.CallOpts, arg0) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) AddTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "addTrustee", _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.AddTrustee(&_FeralfileExhibitionV3.TransactOpts, _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.AddTrustee(&_FeralfileExhibitionV3.TransactOpts, _trustee) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "approve", to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.Approve(&_FeralfileExhibitionV3.TransactOpts, to, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.Approve(&_FeralfileExhibitionV3.TransactOpts, to, tokenId) +} + +// AuthorizedTransfer is a paid mutator transaction binding the contract method 0x9fbf39cd. +// +// Solidity: function authorizedTransfer((address,address,uint256,uint256,bytes32,bytes32,uint8)[] transferParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) AuthorizedTransfer(opts *bind.TransactOpts, transferParams_ []FeralfileExhibitionV3TransferArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "authorizedTransfer", transferParams_) +} + +// AuthorizedTransfer is a paid mutator transaction binding the contract method 0x9fbf39cd. +// +// Solidity: function authorizedTransfer((address,address,uint256,uint256,bytes32,bytes32,uint8)[] transferParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) AuthorizedTransfer(transferParams_ []FeralfileExhibitionV3TransferArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.AuthorizedTransfer(&_FeralfileExhibitionV3.TransactOpts, transferParams_) +} + +// AuthorizedTransfer is a paid mutator transaction binding the contract method 0x9fbf39cd. +// +// Solidity: function authorizedTransfer((address,address,uint256,uint256,bytes32,bytes32,uint8)[] transferParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) AuthorizedTransfer(transferParams_ []FeralfileExhibitionV3TransferArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.AuthorizedTransfer(&_FeralfileExhibitionV3.TransactOpts, transferParams_) +} + +// BatchMint is a paid mutator transaction binding the contract method 0x12d907b9. +// +// Solidity: function batchMint((uint256,uint256,address,address,string)[] mintParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) BatchMint(opts *bind.TransactOpts, mintParams_ []FeralfileExhibitionV3MintArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "batchMint", mintParams_) +} + +// BatchMint is a paid mutator transaction binding the contract method 0x12d907b9. +// +// Solidity: function batchMint((uint256,uint256,address,address,string)[] mintParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) BatchMint(mintParams_ []FeralfileExhibitionV3MintArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.BatchMint(&_FeralfileExhibitionV3.TransactOpts, mintParams_) +} + +// BatchMint is a paid mutator transaction binding the contract method 0x12d907b9. +// +// Solidity: function batchMint((uint256,uint256,address,address,string)[] mintParams_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) BatchMint(mintParams_ []FeralfileExhibitionV3MintArtworkParam) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.BatchMint(&_FeralfileExhibitionV3.TransactOpts, mintParams_) +} + +// BurnEditions is a paid mutator transaction binding the contract method 0xfc05ea68. +// +// Solidity: function burnEditions(uint256[] editionIDs_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) BurnEditions(opts *bind.TransactOpts, editionIDs_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "burnEditions", editionIDs_) +} + +// BurnEditions is a paid mutator transaction binding the contract method 0xfc05ea68. +// +// Solidity: function burnEditions(uint256[] editionIDs_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) BurnEditions(editionIDs_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.BurnEditions(&_FeralfileExhibitionV3.TransactOpts, editionIDs_) +} + +// BurnEditions is a paid mutator transaction binding the contract method 0xfc05ea68. +// +// Solidity: function burnEditions(uint256[] editionIDs_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) BurnEditions(editionIDs_ []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.BurnEditions(&_FeralfileExhibitionV3.TransactOpts, editionIDs_) +} + +// CreateArtworks is a paid mutator transaction binding the contract method 0x43deaf76. +// +// Solidity: function createArtworks((string,string,string,uint256,uint256,uint256)[] artworks_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) CreateArtworks(opts *bind.TransactOpts, artworks_ []FeralfileExhibitionV3Artwork) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "createArtworks", artworks_) +} + +// CreateArtworks is a paid mutator transaction binding the contract method 0x43deaf76. +// +// Solidity: function createArtworks((string,string,string,uint256,uint256,uint256)[] artworks_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) CreateArtworks(artworks_ []FeralfileExhibitionV3Artwork) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.CreateArtworks(&_FeralfileExhibitionV3.TransactOpts, artworks_) +} + +// CreateArtworks is a paid mutator transaction binding the contract method 0x43deaf76. +// +// Solidity: function createArtworks((string,string,string,uint256,uint256,uint256)[] artworks_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) CreateArtworks(artworks_ []FeralfileExhibitionV3Artwork) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.CreateArtworks(&_FeralfileExhibitionV3.TransactOpts, artworks_) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) RemoveTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "removeTrustee", _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.RemoveTrustee(&_FeralfileExhibitionV3.TransactOpts, _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.RemoveTrustee(&_FeralfileExhibitionV3.TransactOpts, _trustee) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.RenounceOwnership(&_FeralfileExhibitionV3.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.RenounceOwnership(&_FeralfileExhibitionV3.TransactOpts) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SafeTransferFrom(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SafeTransferFrom(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SafeTransferFrom0(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SafeTransferFrom0(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetApprovalForAll(&_FeralfileExhibitionV3.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetApprovalForAll(&_FeralfileExhibitionV3.TransactOpts, operator, approved) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) SetRoyaltyPayoutAddress(opts *bind.TransactOpts, royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "setRoyaltyPayoutAddress", royaltyPayoutAddress_) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SetRoyaltyPayoutAddress(royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetRoyaltyPayoutAddress(&_FeralfileExhibitionV3.TransactOpts, royaltyPayoutAddress_) +} + +// SetRoyaltyPayoutAddress is a paid mutator transaction binding the contract method 0x45aeefde. +// +// Solidity: function setRoyaltyPayoutAddress(address royaltyPayoutAddress_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) SetRoyaltyPayoutAddress(royaltyPayoutAddress_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetRoyaltyPayoutAddress(&_FeralfileExhibitionV3.TransactOpts, royaltyPayoutAddress_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) SetTokenBaseURI(opts *bind.TransactOpts, baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "setTokenBaseURI", baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetTokenBaseURI(&_FeralfileExhibitionV3.TransactOpts, baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.SetTokenBaseURI(&_FeralfileExhibitionV3.TransactOpts, baseURI_) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.TransferFrom(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.TransferFrom(&_FeralfileExhibitionV3.TransactOpts, from, to, tokenId) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.TransferOwnership(&_FeralfileExhibitionV3.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.TransferOwnership(&_FeralfileExhibitionV3.TransactOpts, newOwner) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Transactor) UpdateArtworkEditionIPFSCid(opts *bind.TransactOpts, tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.contract.Transact(opts, "updateArtworkEditionIPFSCid", tokenId, ipfsCID) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Session) UpdateArtworkEditionIPFSCid(tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.UpdateArtworkEditionIPFSCid(&_FeralfileExhibitionV3.TransactOpts, tokenId, ipfsCID) +} + +// UpdateArtworkEditionIPFSCid is a paid mutator transaction binding the contract method 0x0cfcb5f1. +// +// Solidity: function updateArtworkEditionIPFSCid(uint256 tokenId, string ipfsCID) returns() +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3TransactorSession) UpdateArtworkEditionIPFSCid(tokenId *big.Int, ipfsCID string) (*types.Transaction, error) { + return _FeralfileExhibitionV3.Contract.UpdateArtworkEditionIPFSCid(&_FeralfileExhibitionV3.TransactOpts, tokenId, ipfsCID) +} + +// FeralfileExhibitionV3ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3ApprovalIterator struct { + Event *FeralfileExhibitionV3Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3Approval represents a Approval event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV3ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3ApprovalIterator{contract: _FeralfileExhibitionV3.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3Approval) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseApproval(log types.Log) (*FeralfileExhibitionV3Approval, error) { + event := new(FeralfileExhibitionV3Approval) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3ApprovalForAllIterator struct { + Event *FeralfileExhibitionV3ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3ApprovalForAll represents a ApprovalForAll event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*FeralfileExhibitionV3ApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3ApprovalForAllIterator{contract: _FeralfileExhibitionV3.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3ApprovalForAll) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseApprovalForAll(log types.Log) (*FeralfileExhibitionV3ApprovalForAll, error) { + event := new(FeralfileExhibitionV3ApprovalForAll) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3BurnArtworkEditionIterator is returned from FilterBurnArtworkEdition and is used to iterate over the raw logs and unpacked data for BurnArtworkEdition events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3BurnArtworkEditionIterator struct { + Event *FeralfileExhibitionV3BurnArtworkEdition // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3BurnArtworkEditionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3BurnArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3BurnArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3BurnArtworkEditionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3BurnArtworkEditionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3BurnArtworkEdition represents a BurnArtworkEdition event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3BurnArtworkEdition struct { + EditionID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnArtworkEdition is a free log retrieval operation binding the contract event 0xa5a44c7ed36966786612323ee2cb0cb453d4a9282b90c6befe72cde41d83f488. +// +// Solidity: event BurnArtworkEdition(uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterBurnArtworkEdition(opts *bind.FilterOpts, editionID []*big.Int) (*FeralfileExhibitionV3BurnArtworkEditionIterator, error) { + + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "BurnArtworkEdition", editionIDRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3BurnArtworkEditionIterator{contract: _FeralfileExhibitionV3.contract, event: "BurnArtworkEdition", logs: logs, sub: sub}, nil +} + +// WatchBurnArtworkEdition is a free log subscription operation binding the contract event 0xa5a44c7ed36966786612323ee2cb0cb453d4a9282b90c6befe72cde41d83f488. +// +// Solidity: event BurnArtworkEdition(uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchBurnArtworkEdition(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3BurnArtworkEdition, editionID []*big.Int) (event.Subscription, error) { + + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "BurnArtworkEdition", editionIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3BurnArtworkEdition) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "BurnArtworkEdition", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnArtworkEdition is a log parse operation binding the contract event 0xa5a44c7ed36966786612323ee2cb0cb453d4a9282b90c6befe72cde41d83f488. +// +// Solidity: event BurnArtworkEdition(uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseBurnArtworkEdition(log types.Log) (*FeralfileExhibitionV3BurnArtworkEdition, error) { + event := new(FeralfileExhibitionV3BurnArtworkEdition) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "BurnArtworkEdition", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3NewArtworkIterator is returned from FilterNewArtwork and is used to iterate over the raw logs and unpacked data for NewArtwork events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3NewArtworkIterator struct { + Event *FeralfileExhibitionV3NewArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3NewArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3NewArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3NewArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3NewArtwork represents a NewArtwork event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3NewArtwork struct { + ArtworkID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtwork is a free log retrieval operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterNewArtwork(opts *bind.FilterOpts, artworkID []*big.Int) (*FeralfileExhibitionV3NewArtworkIterator, error) { + + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "NewArtwork", artworkIDRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3NewArtworkIterator{contract: _FeralfileExhibitionV3.contract, event: "NewArtwork", logs: logs, sub: sub}, nil +} + +// WatchNewArtwork is a free log subscription operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchNewArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3NewArtwork, artworkID []*big.Int) (event.Subscription, error) { + + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "NewArtwork", artworkIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3NewArtwork) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtwork is a log parse operation binding the contract event 0x22350b25f1b72bb3621199a79abefeb4fcd77bb1e65638cd09350666e4db0891. +// +// Solidity: event NewArtwork(uint256 indexed artworkID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseNewArtwork(log types.Log) (*FeralfileExhibitionV3NewArtwork, error) { + event := new(FeralfileExhibitionV3NewArtwork) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3NewArtworkEditionIterator is returned from FilterNewArtworkEdition and is used to iterate over the raw logs and unpacked data for NewArtworkEdition events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3NewArtworkEditionIterator struct { + Event *FeralfileExhibitionV3NewArtworkEdition // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3NewArtworkEditionIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3NewArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3NewArtworkEdition) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3NewArtworkEditionIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3NewArtworkEditionIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3NewArtworkEdition represents a NewArtworkEdition event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3NewArtworkEdition struct { + Owner common.Address + ArtworkID *big.Int + EditionID *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtworkEdition is a free log retrieval operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterNewArtworkEdition(opts *bind.FilterOpts, owner []common.Address, artworkID []*big.Int, editionID []*big.Int) (*FeralfileExhibitionV3NewArtworkEditionIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "NewArtworkEdition", ownerRule, artworkIDRule, editionIDRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3NewArtworkEditionIterator{contract: _FeralfileExhibitionV3.contract, event: "NewArtworkEdition", logs: logs, sub: sub}, nil +} + +// WatchNewArtworkEdition is a free log subscription operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchNewArtworkEdition(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3NewArtworkEdition, owner []common.Address, artworkID []*big.Int, editionID []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var artworkIDRule []interface{} + for _, artworkIDItem := range artworkID { + artworkIDRule = append(artworkIDRule, artworkIDItem) + } + var editionIDRule []interface{} + for _, editionIDItem := range editionID { + editionIDRule = append(editionIDRule, editionIDItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "NewArtworkEdition", ownerRule, artworkIDRule, editionIDRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3NewArtworkEdition) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "NewArtworkEdition", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtworkEdition is a log parse operation binding the contract event 0x4f21e8cd53f1df1da42ec94ba03f881c1185607b26e4dcb81941535157d73dd4. +// +// Solidity: event NewArtworkEdition(address indexed owner, uint256 indexed artworkID, uint256 indexed editionID) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseNewArtworkEdition(log types.Log) (*FeralfileExhibitionV3NewArtworkEdition, error) { + event := new(FeralfileExhibitionV3NewArtworkEdition) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "NewArtworkEdition", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3OwnershipTransferredIterator struct { + Event *FeralfileExhibitionV3OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3OwnershipTransferred represents a OwnershipTransferred event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralfileExhibitionV3OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3OwnershipTransferredIterator{contract: _FeralfileExhibitionV3.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3OwnershipTransferred) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseOwnershipTransferred(log types.Log) (*FeralfileExhibitionV3OwnershipTransferred, error) { + event := new(FeralfileExhibitionV3OwnershipTransferred) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV3TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3TransferIterator struct { + Event *FeralfileExhibitionV3Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV3TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV3Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV3TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV3TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV3Transfer represents a Transfer event raised by the FeralfileExhibitionV3 contract. +type FeralfileExhibitionV3Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV3TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV3TransferIterator{contract: _FeralfileExhibitionV3.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV3Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV3.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV3Transfer) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV3 *FeralfileExhibitionV3Filterer) ParseTransfer(log types.Log) (*FeralfileExhibitionV3Transfer, error) { + event := new(FeralfileExhibitionV3Transfer) + if err := _FeralfileExhibitionV3.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/binding/feralfile-exhibition-v4/abi.go b/binding/feralfile-exhibition-v4/abi.go new file mode 100644 index 0000000..1d36444 --- /dev/null +++ b/binding/feralfile-exhibition-v4/abi.go @@ -0,0 +1,2643 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package feralfilev4 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// FeralfileExhibitionV4Artwork is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV4Artwork struct { + SeriesId *big.Int + TokenId *big.Int +} + +// FeralfileExhibitionV4MintData is an auto generated low-level Go binding around an user-defined struct. +type FeralfileExhibitionV4MintData struct { + SeriesId *big.Int + TokenId *big.Int + Owner common.Address +} + +// IFeralfileSaleDataRevenueShare is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataRevenueShare struct { + Recipient common.Address + Bps *big.Int +} + +// IFeralfileSaleDataSaleData is an auto generated low-level Go binding around an user-defined struct. +type IFeralfileSaleDataSaleData struct { + Price *big.Int + Cost *big.Int + ExpiryTime *big.Int + Destination common.Address + TokenIds []*big.Int + RevenueShares [][]IFeralfileSaleDataRevenueShare + PayByVaultContract bool +} + +// FeralfileExhibitionV4MetaData contains all meta data concerning the FeralfileExhibitionV4 contract. +var FeralfileExhibitionV4MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"burnable_\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"bridgeable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"contractURI_\",\"type\":\"string\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesIds_\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"seriesMaxSupplies_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BurnArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"BuyArtwork\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NewArtwork\",\"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\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OperatorFilterRegistry\",\"outputs\":[{\"internalType\":\"contractIOperatorFilterRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"addTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"codeVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"costReceiver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mintable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trustee\",\"type\":\"address\"}],\"name\":\"removeTrustee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer_\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenBaseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"trustees\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorFilterRegisterAddress\",\"type\":\"address\"}],\"name\":\"updateOperatorFilterRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contractIFeralfileVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesMaxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"}],\"name\":\"seriesTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getArtwork\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"internalType\":\"structFeralfileExhibitionV4.Artwork\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"}],\"name\":\"setVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selling\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resumeSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseSale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stopSaleAndBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"seriesIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"recipientAddresses\",\"type\":\"address[]\"}],\"name\":\"stopSaleAndTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"baseURI_\",\"type\":\"string\"}],\"name\":\"setTokenBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"costReceiver_\",\"type\":\"address\"}],\"name\":\"setCostReceiver\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"r_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s_\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v_\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiryTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"bps\",\"type\":\"uint256\"}],\"internalType\":\"structIFeralfileSaleData.RevenueShare[][]\",\"name\":\"revenueShares\",\"type\":\"tuple[][]\"},{\"internalType\":\"bool\",\"name\":\"payByVaultContract\",\"type\":\"bool\"}],\"internalType\":\"structIFeralfileSaleData.SaleData\",\"name\":\"saleData_\",\"type\":\"tuple\"}],\"name\":\"buyArtworks\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seriesId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"internalType\":\"structFeralfileExhibitionV4.MintData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"name\":\"mintArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"burnArtworks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x6080604052600880546001600160a01b0319166daaeb6d7670e522a718067333cd4e179055600d805463ff000000191663010000001790553480156200004457600080fd5b5060405162004f5538038062004f5583398101604081905262000067916200095d565b858a8a600062000078838262000b2c565b50600162000087828262000b2c565b505050620000a46200009e6200077b60201b60201c565b6200077f565b6008546001600160a01b03163b156200013157600854604051633e9f1edf60e11b8152306004820152733cc6cdda760b79bafa08df41ecfa224f810dceb660248201526001600160a01b0390911690637d3e3dbe90604401600060405180830381600087803b1580156200011757600080fd5b505af11580156200012c573d6000803e3d6000fd5b505050505b6001600160a01b038116620001985760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b60648201526084015b60405180910390fd5b600980546001600160a01b0319166001600160a01b03929092169190911790558951620002165760405162461bcd60e51b815260206004820152602560248201527f466572616c66696c6545786869626974696f6e56343a206e616d655f20697320604482015264656d70747960d81b60648201526084016200018f565b6000895111620002795760405162461bcd60e51b815260206004820152602760248201527f466572616c66696c6545786869626974696f6e56343a2073796d626f6c5f20696044820152667320656d70747960c81b60648201526084016200018f565b6001600160a01b038516620002f75760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a207661756c744164647260448201527f6573735f206973207a65726f206164647265737300000000000000000000000060648201526084016200018f565b6001600160a01b038416620003755760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f7374526563656960448201527f7665725f206973207a65726f206164647265737300000000000000000000000060648201526084016200018f565b6000835111620003dd5760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20636f6e74726163745560448201526b52495f20697320656d70747960a01b60648201526084016200018f565b6000825111620004435760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a207365726965734964736044820152695f20697320656d70747960b01b60648201526084016200018f565b6000815111620004b15760405162461bcd60e51b815260206004820152603260248201527f466572616c66696c6545786869626974696f6e56343a205f7365726965734d6160448201527178537570706c69657320697320656d70747960701b60648201526084016200018f565b8051825114620005445760405162461bcd60e51b815260206004820152605160248201527f466572616c66696c6545786869626974696f6e56343a207365726965734d617860448201527f537570706c6965735f20616e64207365726965734964735f206c656e6774687360648201527020617265206e6f74207468652073616d6560781b608482015260a4016200018f565b600d805461ffff191689151561ff001916176101008915150217600160201b600160c01b0319166401000000006001600160a01b038781169190910291909117909155600e80546001600160a01b031916918716919091179055600b620005ac848262000b2c565b5060005b82518110156200076a576000620005c982600162000c0e565b90505b83518110156200068657838181518110620005eb57620005eb62000c2a565b602002602001015184838151811062000608576200060862000c2a565b602002602001015103620006715760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206475706c6963617465604482015268081cd95c9a595cd25960ba1b60648201526084016200018f565b806200067d8162000c40565b915050620005cc565b5060008282815181106200069e576200069e62000c2a565b602002602001015111620007045760405162461bcd60e51b815260206004820152602660248201527f466572616c66696c6545786869626974696f6e56343a207a65726f206d617820604482015265737570706c7960d01b60648201526084016200018f565b81818151811062000719576200071962000c2a565b6020026020010151600f60008584815181106200073a576200073a62000c2a565b60200260200101518152602001908152602001600020819055508080620007619062000c40565b915050620005b0565b505050505050505050505062000c5c565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620008125762000812620007d1565b604052919050565b600082601f8301126200082c57600080fd5b81516001600160401b03811115620008485762000848620007d1565b60206200085e601f8301601f19168201620007e7565b82815285828487010111156200087357600080fd5b60005b838110156200089357858101830151828201840152820162000876565b506000928101909101919091529392505050565b80518015158114620008b857600080fd5b919050565b80516001600160a01b0381168114620008b857600080fd5b600082601f830112620008e757600080fd5b815160206001600160401b03821115620009055762000905620007d1565b8160051b62000916828201620007e7565b92835284810182019282810190878511156200093157600080fd5b83870192505b84831015620009525782518252918301919083019062000937565b979650505050505050565b6000806000806000806000806000806101408b8d0312156200097e57600080fd5b8a516001600160401b03808211156200099657600080fd5b620009a48e838f016200081a565b9b5060208d0151915080821115620009bb57600080fd5b620009c98e838f016200081a565b9a50620009d960408e01620008a7565b9950620009e960608e01620008a7565b9850620009f960808e01620008bd565b975062000a0960a08e01620008bd565b965062000a1960c08e01620008bd565b955060e08d015191508082111562000a3057600080fd5b62000a3e8e838f016200081a565b94506101008d015191508082111562000a5657600080fd5b62000a648e838f01620008d5565b93506101208d015191508082111562000a7c57600080fd5b5062000a8b8d828e01620008d5565b9150509295989b9194979a5092959850565b600181811c9082168062000ab257607f821691505b60208210810362000ad357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b2757600081815260208120601f850160051c8101602086101562000b025750805b601f850160051c820191505b8181101562000b235782815560010162000b0e565b5050505b505050565b81516001600160401b0381111562000b485762000b48620007d1565b62000b608162000b59845462000a9d565b8462000ad9565b602080601f83116001811462000b98576000841562000b7f5750858301515b600019600386901b1c1916600185901b17855562000b23565b600085815260208120601f198616915b8281101562000bc95788860151825594840194600190910190840162000ba8565b508582101562000be85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000c245762000c2462000bf8565b92915050565b634e487b7160e01b600052603260045260246000fd5b60006001820162000c555762000c5562000bf8565b5060010190565b6142e98062000c6c6000396000f3fe6080604052600436106102b25760003560e01c80636817031b11610175578063b66a0e5d116100dc578063e985e9c511610095578063f07e7fd01161006f578063f07e7fd014610941578063f2fde38b14610961578063f4e638be14610981578063fbfa77cf146109a957600080fd5b8063e985e9c51461089b578063eb5c60f2146108e4578063eee608a41461091157600080fd5b8063b66a0e5d146107fc578063b88d4fde14610811578063b9b8311a14610831578063c87b56dd14610846578063dc78ac1c14610866578063e8a3d4851461088657600080fd5b80638cba1c671161012e5780638cba1c671461074f5780638da5cb5b1461076f5780638ef79e911461078d57806395d89b41146107ad578063a07c7ce4146107c2578063a22cb465146107dc57600080fd5b80636817031b146106805780636c19e783146106a057806370a08231146106c0578063715018a6146106e05780637f06ee06146106f55780638462151c1461072257600080fd5b806323b872dd116102195780634e99b800116101d25780634e99b800146105b6578063530da8ef146105cb57806355367ba9146105ea5780636352211e146105ff57806363e602301461061f57806365a46e081461066057600080fd5b806323b872dd1461050d5780632977e4b31461052d5780632f745c591461054057806333e364cb1461056057806342842e0e146105755780634bf365df1461059557600080fd5b80631623528f1161026b5780631623528f14610432578063167ddf6e1461045257806318160ddd1461048d57806321fe0c64146104b1578063238ac933146104d157806323aed228146104ef57600080fd5b806301ffc9a714610343578063031205061461037857806306fdde0314610398578063081812fc146103ba578063095ea7b3146103f2578063114ba8ee1461041257600080fd5b3661033e57600e546001600160a01b0316331461033c5760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a206f6e6c79206163636560448201527f70742066756e642066726f6d207661756c7420636f6e74726163742e0000000060648201526084015b60405180910390fd5b005b600080fd5b34801561034f57600080fd5b5061036361035e366004613486565b6109c9565b60405190151581526020015b60405180910390f35b34801561038457600080fd5b5061033c6103933660046134c6565b610a1b565b3480156103a457600080fd5b506103ad610a44565b60405161036f9190613531565b3480156103c657600080fd5b506103da6103d5366004613544565b610ad6565b6040516001600160a01b03909116815260200161036f565b3480156103fe57600080fd5b5061033c61040d36600461355d565b610afd565b34801561041e57600080fd5b5061033c61042d3660046134c6565b610b16565b34801561043e57600080fd5b5061033c61044d3660046134c6565b610b40565b34801561045e57600080fd5b5061047261046d366004613544565b610be9565b6040805182518152602092830151928101929092520161036f565b34801561049957600080fd5b506104a3600c5481565b60405190815260200161036f565b3480156104bd57600080fd5b5061033c6104cc36600461365b565b610c4c565b3480156104dd57600080fd5b506009546001600160a01b03166103da565b3480156104fb57600080fd5b50600d5462010000900460ff16610363565b34801561051957600080fd5b5061033c61052836600461368f565b610d36565b61033c61053b3660046136cb565b610d89565b34801561054c57600080fd5b506104a361055b36600461355d565b611366565b34801561056c57600080fd5b5061033c611410565b34801561058157600080fd5b5061033c61059036600461368f565b6114d3565b3480156105a157600080fd5b50600d54610363906301000000900460ff1681565b3480156105c257600080fd5b506103ad611520565b3480156105d757600080fd5b50600d5461036390610100900460ff1681565b3480156105f657600080fd5b5061033c6115ae565b34801561060b57600080fd5b506103da61061a366004613544565b611662565b34801561062b57600080fd5b506103ad6040518060400160405280601581526020017411995c985b199a5b19515e1a1a589a5d1a5bdb958d605a1b81525081565b34801561066c57600080fd5b5061033c61067b366004613738565b611697565b34801561068c57600080fd5b5061033c61069b3660046134c6565b611995565b3480156106ac57600080fd5b5061033c6106bb3660046134c6565b611a2b565b3480156106cc57600080fd5b506104a36106db3660046134c6565b611ab6565b3480156106ec57600080fd5b5061033c611b3c565b34801561070157600080fd5b506104a3610710366004613544565b60009081526010602052604090205490565b34801561072e57600080fd5b5061074261073d3660046134c6565b611b50565b60405161036f91906137f9565b34801561075b57600080fd5b5061033c61076a36600461383d565b611bbc565b34801561077b57600080fd5b506006546001600160a01b03166103da565b34801561079957600080fd5b5061033c6107a8366004613908565b611ceb565b3480156107b957600080fd5b506103ad611d5a565b3480156107ce57600080fd5b50600d546103639060ff1681565b3480156107e857600080fd5b5061033c6107f7366004613969565b611d69565b34801561080857600080fd5b5061033c611d7d565b34801561081d57600080fd5b5061033c61082c3660046139a0565b611d9a565b34801561083d57600080fd5b5061033c611def565b34801561085257600080fd5b506103ad610861366004613544565b611e90565b34801561087257600080fd5b5061033c6108813660046134c6565b611f9e565b34801561089257600080fd5b506103ad611fca565b3480156108a757600080fd5b506103636108b6366004613a1b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156108f057600080fd5b506104a36108ff366004613544565b6000908152600f602052604090205490565b34801561091d57600080fd5b5061036361092c3660046134c6565b60076020526000908152604090205460ff1681565b34801561094d57600080fd5b506008546103da906001600160a01b031681565b34801561096d57600080fd5b5061033c61097c3660046134c6565b611fd7565b34801561098d57600080fd5b50600d546103da9064010000000090046001600160a01b031681565b3480156109b557600080fd5b50600e546103da906001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b14806109fa57506001600160e01b03198216635b5e139f60e01b145b80610a1557506301ffc9a760e01b6001600160e01b03198316145b92915050565b610a23612050565b6001600160a01b03166000908152600760205260409020805460ff19169055565b606060008054610a5390613a4e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7f90613a4e565b8015610acc5780601f10610aa157610100808354040283529160200191610acc565b820191906000526020600020905b815481529060010190602001808311610aaf57829003601f168201915b5050505050905090565b6000610ae1826120aa565b506000908152600460205260409020546001600160a01b031690565b81610b07816120cf565b610b1183836121a1565b505050565b610b1e612050565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610b48612050565b6001600160a01b038116610bbb5760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a20636f737452656365696044820152737665725f206973207a65726f206164647265737360601b6064820152608401610333565b600d80546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b6040805180820190915260008082526020820152610c06826122b1565b610c225760405162461bcd60e51b815260040161033390613a88565b50600090815260116020908152604091829020825180840190935280548352600101549082015290565b600d5460ff16610cb35760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f6b656e2069732060448201526b6e6f74206275726e61626c6560a01b6064820152608401610333565b60005b8151811015610d3257610ce233838381518110610cd557610cd5613abf565b60200260200101516122ce565b610cfe5760405162461bcd60e51b815260040161033390613ad5565b610d20828281518110610d1357610d13613abf565b602002602001015161234d565b80610d2a81613b38565b915050610cb6565b5050565b826001600160a01b0381163314610d5057610d50336120cf565b306001600160a01b03841603610d785760405162461bcd60e51b815260040161033390613b51565b610d83848484612423565b50505050565b600d5462010000900460ff16610df45760405162461bcd60e51b815260206004820152602a60248201527f466572616c66696c6545786869626974696f6e56343a2073616c65206973206e6044820152691bdd081cdd185c9d195960b21b6064820152608401610333565b610dfc612454565b610e05816124cf565b610e1560e0820160c08301613bae565b610e845780353414610e7f5760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207060448201526c185e5b595b9d08185b5bdd5b9d609a1b6064820152608401610333565b610eed565b600e54604051632eeee16360e01b81526001600160a01b0390911690632eeee16390610eba908790879087908790600401613dba565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b6000463083604051602001610f0493929190613dec565b604051602081830303815290604052805190602001209050610f2881868686612628565b610f855760405162461bcd60e51b815260206004820152602860248201527f466572616c66696c6545786869626974696f6e56343a20696e76616c6964207360448201526769676e617475726560c01b6064820152608401610333565b6000602083013583351115610fbf57610fa16080840184613e1f565b9050610fb260208501358535613e68565b610fbc9190613e7b565b90505b60008060005b610fd26080870187613e1f565b90508110156112865761102830610fef6080890160608a016134c6565b610ffc60808a018a613e1f565b8581811061100c5761100c613abf565b9050602002013560405180602001604052806000815250612680565b83156112085760005b61103e60a0880188613e1f565b8381811061104e5761104e613abf565b90506020028101906110609190613e9d565b905081101561120657600061271061107b60a08a018a613e1f565b8581811061108b5761108b613abf565b905060200281019061109d9190613e9d565b848181106110ad576110ad613abf565b90506040020160200135876110c29190613ee6565b6110cc9190613e7b565b600d5490915064010000000090046001600160a01b03166110f060a08a018a613e1f565b8581811061110057611100613abf565b90506020028101906111129190613e9d565b8481811061112257611122613abf565b61113892602060409092020190810191506134c6565b6001600160a01b031603611158576111508185613efd565b9350506111f4565b6111628186613efd565b945061117160a0890189613e1f565b8481811061118157611181613abf565b90506020028101906111939190613e9d565b838181106111a3576111a3613abf565b6111b992602060409092020190810191506134c6565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156111f1573d6000803e3d6000fd5b50505b806111fe81613b38565b915050611031565b505b6112156080870187613e1f565b8281811061122557611225613abf565b9050602002013586606001602081019061123f91906134c6565b6001600160a01b03167f0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f60405160405180910390a38061127e81613b38565b915050610fc5565b506112918183613efd565b6112a060208701358735613e68565b10156113035760405162461bcd60e51b815260206004820152602c60248201527f466572616c66696c6545786869626974696f6e56343a20746f74616c2062707360448201526b0206f7665722031302c3030360a41b6064820152608401610333565b6000611310838735613e68565b9050801561135b57600d546040516401000000009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611359573d6000803e3d6000fd5b505b505050505050505050565b600061137183611ab6565b82106113d35760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610333565b6001600160a01b03831660009081526012602052604090208054839081106113fd576113fd613abf565b9060005260206000200154905092915050565b611418612050565b600d546301000000900460ff16156114425760405162461bcd60e51b815260040161033390613f10565b600d5462010000900460ff16156114b85760405162461bcd60e51b815260206004820152603460248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015273726571756972656420746f2062652066616c736560601b6064820152608401610333565b6114c0612454565b600d805462ff0000191662010000179055565b826001600160a01b03811633146114ed576114ed336120cf565b306001600160a01b038416036115155760405162461bcd60e51b815260040161033390613b51565b610d838484846126b3565b600a805461152d90613a4e565b80601f016020809104026020016040519081016040528092919081815260200182805461155990613a4e565b80156115a65780601f1061157b576101008083540402835291602001916115a6565b820191906000526020600020905b81548152906001019060200180831161158957829003601f168201915b505050505081565b6115b6612050565b600d546301000000900460ff16156115e05760405162461bcd60e51b815260040161033390613f10565b600d5462010000900460ff166116545760405162461bcd60e51b815260206004820152603360248201527f466572616c66696c6545786869626974696f6e56343a205f73656c6c696e6720604482015272726571756972656420746f206265207472756560681b6064820152608401610333565b600d805462ff000019169055565b6000818152600260205260408120546001600160a01b031680610a155760405162461bcd60e51b815260040161033390613a88565b61169f612050565b600082511180156116b1575060008151115b6117315760405162461bcd60e51b815260206004820152604560248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206f7220726563697069656e74416464726573736573206c656e677468206973606482015264207a65726f60d81b608482015260a401610333565b80518251146117bd5760405162461bcd60e51b815260206004820152604c60248201527f466572616c66696c6545786869626974696f6e56343a2073657269657349647360448201527f206c656e67746820697320646966666572656e742066726f6d2072656369706960648201526b656e7441646472657373657360a01b608482015260a401610333565b6117c56115ae565b3060008181526012602090815260408083208054825181850281018501909352808352919290919083018282801561181c57602002820191906000526020600020905b815481526020019060010190808311611808575b5050505050905060005b815181101561191857600082828151811061184357611843613abf565b602090810291909101810151600081815260118352604080822081518083019092528054825260010154938101939093529092505b87518161ffff16101561190257878161ffff168151811061189b5761189b613abf565b60200260200101518260000151036118f0576000878261ffff16815181106118c5576118c5613abf565b602002602001015190506118ea87828660405180602001604052806000815250612680565b50611902565b806118fa81613f64565b915050611878565b505050808061191090613b38565b915050611826565b5061192282611ab6565b15610d835760405162461bcd60e51b815260206004820152603c60248201527f466572616c66696c6545786869626974696f6e56343a20546f6b656e20666f7260448201527f2073616c652062616c616e63652068617320746f206265207a65726f000000006064820152608401610333565b61199d612050565b6001600160a01b038116611a095760405162461bcd60e51b815260206004820152602d60248201527f466572616c66696c6545786869626974696f6e56343a207661756c745f20697360448201526c207a65726f206164647265737360981b6064820152608401610333565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b611a33612050565b6001600160a01b038116611a945760405162461bcd60e51b815260206004820152602260248201527f45434453415369676e3a207369676e65725f206973207a65726f206164647265604482015261737360f01b6064820152608401610333565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b038216611b205760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610333565b506001600160a01b031660009081526003602052604090205490565b611b44612050565b611b4e60006126ce565b565b6001600160a01b038116600090815260126020908152604091829020805483518184028101840190945280845260609392830182828015611bb057602002820191906000526020600020905b815481526020019060010190808311611b9c575b50505050509050919050565b3360009081526007602052604090205460ff1680611be457506006546001600160a01b031633145b611bed57600080fd5b600d546301000000900460ff16611c645760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a20636f6e747261637420604482015274191bd95cdb89dd08185b1b1bddc81d1bc81b5a5b9d605a1b6064820152608401610333565b60005b81811015610b1157611cd9838383818110611c8457611c84613abf565b90506060020160000135848484818110611ca057611ca0613abf565b90506060020160200135858585818110611cbc57611cbc613abf565b9050606002016040016020810190611cd491906134c6565b612720565b80611ce381613b38565b915050611c67565b611cf3612050565b6000815111611d4e5760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a20626173655552495f20697320656d70746044820152607960f81b6064820152608401610333565b600a610d328282613fd3565b606060018054610a5390613a4e565b81611d73816120cf565b610b1183836128a2565b611d85612050565b600d805463ff00000019169055611b4e611410565b836001600160a01b0381163314611db457611db4336120cf565b306001600160a01b03851603611ddc5760405162461bcd60e51b815260040161033390613b51565b611de8858585856128ad565b5050505050565b611df7612050565b611dff6115ae565b30600090815260126020908152604080832080548251818502810185019093528083529192909190830182828015611e5657602002820191906000526020600020905b815481526020019060010190808311611e42575b5050505050905060005b8151811015610d3257611e7e828281518110610d1357610d13613abf565b80611e8881613b38565b915050611e60565b60606000600a8054611ea190613a4e565b905011611eff5760405162461bcd60e51b815260206004820152602660248201527f4552433732314d657461646174613a205f746f6b656e4261736555524920697360448201526520656d70747960d01b6064820152608401610333565b611f08826122b1565b611f6c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610333565b600a611f77836128df565b604051602001611f88929190614092565b6040516020818303038152906040529050919050565b611fa6612050565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b600b805461152d90613a4e565b611fdf612050565b6001600160a01b0381166120445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610333565b61204d816126ce565b50565b6006546001600160a01b03163314611b4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610333565b6120b3816122b1565b61204d5760405162461bcd60e51b815260040161033390613a88565b6008546001600160a01b03163b1561204d57600854604051633185c44d60e21b81523060048201526001600160a01b0383811660248301529091169063c617113490604401602060405180830381865afa158015612131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121559190614126565b61204d5760405162461bcd60e51b815260206004820152601760248201527f6f70657261746f72206973206e6f7420616c6c6f7765640000000000000000006044820152606401610333565b60006121ac82611662565b9050806001600160a01b0316836001600160a01b0316036122195760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610333565b336001600160a01b0382161480612235575061223581336108b6565b6122a75760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610333565b610b118383612972565b6000908152600260205260409020546001600160a01b0316151590565b6000806122da83611662565b9050806001600160a01b0316846001600160a01b0316148061232157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806123455750836001600160a01b031661233a84610ad6565b6001600160a01b0316145b949350505050565b612356816122b1565b6123725760405162461bcd60e51b815260040161033390613a88565b600081815260116020908152604080832081518083018352815480825260019283015482860152855260109093529083208054929391929091906123b7908490613e68565b925050819055506001600c60008282546123d19190613e68565b90915550506000828152601160205260408120818155600101556123f4826129e0565b60405182907fbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d590600090a25050565b61242d33826122ce565b6124495760405162461bcd60e51b815260040161033390613ad5565b610b11838383612a83565b600061245f30611ab6565b90506000811161204d5760405162461bcd60e51b815260206004820152603560248201527f466572616c66696c6545786869626974696f6e56343a204e6f20746f6b656e206044820152741bdddb995908189e481d1a194818dbdb9d1c9858dd605a1b6064820152608401610333565b60006124de6080830183613e1f565b9050116125395760405162461bcd60e51b8152602060048201526024808201527f466572616c66696c6553616c65446174613a20746f6b656e49647320697320656044820152636d70747960e01b6064820152608401610333565b61254660a0820182613e1f565b90506125556080830183613e1f565b9050146125ca5760405162461bcd60e51b815260206004820152603d60248201527f466572616c66696c6553616c65446174613a20746f6b656e49647320616e642060448201527f726576656e7565536861726573206c656e677468206d69736d617463680000006064820152608401610333565b4281604001351161204d5760405162461bcd60e51b815260206004820152602260248201527f466572616c66696c6553616c65446174613a2073616c65206973206578706972604482015261195960f21b6064820152608401610333565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c8120819061266590848787612bf4565b6009546001600160a01b039081169116149695505050505050565b61268b848484612a83565b61269784848484612c1c565b610d835760405162461bcd60e51b815260040161033390614143565b610b1183838360405180602001604052806000815250611d9a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000838152600f6020526040902054151561273a846128df565b60405160200161274a9190614195565b604051602081830303815290604052906127775760405162461bcd60e51b81526004016103339190613531565b506000838152600f6020908152604080832054601090925290912054106127f25760405162461bcd60e51b815260206004820152602960248201527f466572616c66696c6545786869626974696f6e56343a206e6f20736c6f747320604482015268617661696c61626c6560b81b6064820152608401610333565b6001600c60008282546128059190613efd565b90915550506000838152601060205260408120805460019290612829908490613efd565b90915550506040805180820182528481526020808201858152600086815260119092529290209051815590516001909101556128658183612d1a565b8183826001600160a01b03167f407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea60405160405180910390a4505050565b610d32338383612e95565b6128b733836122ce565b6128d35760405162461bcd60e51b815260040161033390613ad5565b610d8384848484612680565b606060006128ec83612f63565b60010190506000816001600160401b0381111561290b5761290b613587565b6040519080825280601f01601f191660200182016040528015612935576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461293f575b509392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906129a782611662565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006129eb82611662565b90506129fb81600084600161303b565b612a0482611662565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b826001600160a01b0316612a9682611662565b6001600160a01b031614612abc5760405162461bcd60e51b8152600401610333906141f2565b6001600160a01b038216612b1e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610333565b612b2b838383600161303b565b826001600160a01b0316612b3e82611662565b6001600160a01b031614612b645760405162461bcd60e51b8152600401610333906141f2565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000806000612c0587878787613152565b91509150612c1281613216565b5095945050505050565b60006001600160a01b0384163b15612d1257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612c60903390899088908890600401614237565b6020604051808303816000875af1925050508015612c9b575060408051601f3d908101601f19168201909252612c989181019061426a565b60015b612cf8573d808015612cc9576040519150601f19603f3d011682016040523d82523d6000602084013e612cce565b606091505b508051600003612cf05760405162461bcd60e51b815260040161033390614143565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612345565b506001612345565b6001600160a01b038216612d705760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610333565b612d79816122b1565b15612dc65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610333565b612dd460008383600161303b565b612ddd816122b1565b15612e2a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610333565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b031603612ef65760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610333565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612fa25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612fce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612fec57662386f26fc10000830492506010015b6305f5e1008310613004576305f5e100830492506008015b612710831061301857612710830492506004015b6064831061302a576064830492506002015b600a8310610a155760010192915050565b60018111156130aa5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610333565b816001600160a01b038516158015906130d55750836001600160a01b0316856001600160a01b031614155b156130e4576130e48582613360565b6001600160a01b0384161580159061310e5750846001600160a01b0316846001600160a01b031614155b15611de8576001600160a01b038416600090815260126020908152604080832080546001810182559084528284208101859055848452601390925290912055611de8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613189575060009050600361320d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156131dd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132065760006001925092505061320d565b9150600090505b94509492505050565b600081600481111561322a5761322a614287565b036132325750565b600181600481111561324657613246614287565b036132935760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610333565b60028160048111156132a7576132a7614287565b036132f45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610333565b600381600481111561330857613308614287565b0361204d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610333565b6000600161336d84611ab6565b6133779190613e68565b60008381526013602052604090205490915080821461341e576001600160a01b03841660009081526012602052604081208054849081106133ba576133ba613abf565b906000526020600020015490508060126000876001600160a01b03166001600160a01b0316815260200190815260200160002083815481106133fe576133fe613abf565b600091825260208083209091019290925591825260139052604090208190555b60008381526013602090815260408083208390556001600160a01b0387168352601290915290208054806134545761345461429d565b6001900381819060005260206000200160009055905550505050565b6001600160e01b03198116811461204d57600080fd5b60006020828403121561349857600080fd5b81356134a381613470565b9392505050565b80356001600160a01b03811681146134c157600080fd5b919050565b6000602082840312156134d857600080fd5b6134a3826134aa565b60005b838110156134fc5781810151838201526020016134e4565b50506000910152565b6000815180845261351d8160208601602086016134e1565b601f01601f19169290920160200192915050565b6020815260006134a36020830184613505565b60006020828403121561355657600080fd5b5035919050565b6000806040838503121561357057600080fd5b613579836134aa565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156135c5576135c5613587565b604052919050565b60006001600160401b038211156135e6576135e6613587565b5060051b60200190565b600082601f83011261360157600080fd5b81356020613616613611836135cd565b61359d565b82815260059290921b8401810191818101908684111561363557600080fd5b8286015b848110156136505780358352918301918301613639565b509695505050505050565b60006020828403121561366d57600080fd5b81356001600160401b0381111561368357600080fd5b612345848285016135f0565b6000806000606084860312156136a457600080fd5b6136ad846134aa565b92506136bb602085016134aa565b9150604084013590509250925092565b600080600080608085870312156136e157600080fd5b8435935060208501359250604085013560ff8116811461370057600080fd5b915060608501356001600160401b0381111561371b57600080fd5b850160e0818803121561372d57600080fd5b939692955090935050565b6000806040838503121561374b57600080fd5b82356001600160401b038082111561376257600080fd5b61376e868387016135f0565b935060209150818501358181111561378557600080fd5b85019050601f8101861361379857600080fd5b80356137a6613611826135cd565b81815260059190911b820183019083810190888311156137c557600080fd5b928401925b828410156137ea576137db846134aa565b825292840192908401906137ca565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561383157835183529284019291840191600101613815565b50909695505050505050565b6000806020838503121561385057600080fd5b82356001600160401b038082111561386757600080fd5b818501915085601f83011261387b57600080fd5b81358181111561388a57600080fd5b86602060608302850101111561389f57600080fd5b60209290920196919550909350505050565b60006001600160401b038311156138ca576138ca613587565b6138dd601f8401601f191660200161359d565b90508281528383830111156138f157600080fd5b828260208301376000602084830101529392505050565b60006020828403121561391a57600080fd5b81356001600160401b0381111561393057600080fd5b8201601f8101841361394157600080fd5b612345848235602084016138b1565b801515811461204d57600080fd5b80356134c181613950565b6000806040838503121561397c57600080fd5b613985836134aa565b9150602083013561399581613950565b809150509250929050565b600080600080608085870312156139b657600080fd5b6139bf856134aa565b93506139cd602086016134aa565b92506040850135915060608501356001600160401b038111156139ef57600080fd5b8501601f81018713613a0057600080fd5b613a0f878235602084016138b1565b91505092959194509250565b60008060408385031215613a2e57600080fd5b613a37836134aa565b9150613a45602084016134aa565b90509250929050565b600181811c90821680613a6257607f821691505b602082108103613a8257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060018201613b4a57613b4a613b22565b5060010190565b6020808252603e908201527f466572616c66696c6545786869626974696f6e56343a20436f6e74726163742060408201527f69736e277420616c6c6f77656420746f207265636569766520746f6b656e0000606082015260800190565b600060208284031215613bc057600080fd5b81356134a381613950565b6000808335601e19843603018112613be257600080fd5b83016020810192503590506001600160401b03811115613c0157600080fd5b8060051b3603821315613c1357600080fd5b9250929050565b8183526000602080850194508260005b85811015613c60576001600160a01b03613c43836134aa565b168752818301358388015260409687019690910190600101613c2a565b509495945050505050565b81835260006020808501808196508560051b810191508460005b87811015613cf25782840389528135601e19883603018112613ca657600080fd5b870185810190356001600160401b03811115613cc157600080fd5b8060061b3603821315613cd357600080fd5b613cde868284613c1a565b9a87019a9550505090840190600101613c85565b5091979650505050505050565b8035825260208082013590830152604080820135908301526001600160a01b03613d2b606083016134aa565b1660608301526000613d406080830183613bcb565b60e06080860181905285018190526101006001600160fb1b03821115613d6557600080fd5b8160051b91508183828801378186019250613d8360a0860186613bcb565b9250818785030160a0880152613d9c8285018483613c6b565b9350505050613dad60c0840161395e565b80151560c086015261296a565b84815283602082015260ff83166040820152608060608201526000613de26080830184613cff565b9695505050505050565b8381526001600160a01b0383166020820152606060408201819052600090613e1690830184613cff565b95945050505050565b6000808335601e19843603018112613e3657600080fd5b8301803591506001600160401b03821115613e5057600080fd5b6020019150600581901b3603821315613c1357600080fd5b81810381811115610a1557610a15613b22565b600082613e9857634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e19843603018112613eb457600080fd5b8301803591506001600160401b03821115613ece57600080fd5b6020019150600681901b3603821315613c1357600080fd5b8082028115828204841417610a1557610a15613b22565b80820180821115610a1557610a15613b22565b60208082526034908201527f466572616c66696c6545786869626974696f6e56343a206d696e7461626c6520604082015273726571756972656420746f2062652066616c736560601b606082015260800190565b600061ffff808316818103613f7b57613f7b613b22565b6001019392505050565b601f821115610b1157600081815260208120601f850160051c81016020861015613fac5750805b601f850160051c820191505b81811015613fcb57828155600101613fb8565b505050505050565b81516001600160401b03811115613fec57613fec613587565b61400081613ffa8454613a4e565b84613f85565b602080601f831160018114614035576000841561401d5750858301515b600019600386901b1c1916600185901b178555613fcb565b600085815260208120601f198616915b8281101561406457888601518255948401946001909101908401614045565b50858210156140825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008084546140a081613a4e565b600182811680156140b857600181146140cd576140fc565b60ff19841687528215158302870194506140fc565b8860005260208060002060005b858110156140f35781548a8201529084019082016140da565b50505082870194505b50602f60f81b8452865192506141188382860160208a016134e1565b919092010195945050505050565b60006020828403121561413857600080fd5b81516134a381613950565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f466572616c66696c6545786869626974696f6e56343a2073657269657349642081526e03237b2b9b713ba1032bc34b9ba1d1608d1b6020820152600082516141e581602f8501602087016134e1565b91909101602f0192915050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613de290830184613505565b60006020828403121561427c57600080fd5b81516134a381613470565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea264697066735822122054b47d0b9dc755bd2838e20ef5647012627f7d7e1a0bd2fb64fb967ca3e11ad464736f6c63430008110033", +} + +// FeralfileExhibitionV4ABI is the input ABI used to generate the binding from. +// Deprecated: Use FeralfileExhibitionV4MetaData.ABI instead. +var FeralfileExhibitionV4ABI = FeralfileExhibitionV4MetaData.ABI + +// FeralfileExhibitionV4Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use FeralfileExhibitionV4MetaData.Bin instead. +var FeralfileExhibitionV4Bin = FeralfileExhibitionV4MetaData.Bin + +// DeployFeralfileExhibitionV4 deploys a new Ethereum contract, binding an instance of FeralfileExhibitionV4 to it. +func DeployFeralfileExhibitionV4(auth *bind.TransactOpts, backend bind.ContractBackend, name_ string, symbol_ string, burnable_ bool, bridgeable_ bool, signer_ common.Address, vault_ common.Address, costReceiver_ common.Address, contractURI_ string, seriesIds_ []*big.Int, seriesMaxSupplies_ []*big.Int) (common.Address, *types.Transaction, *FeralfileExhibitionV4, error) { + parsed, err := FeralfileExhibitionV4MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(FeralfileExhibitionV4Bin), backend, name_, symbol_, burnable_, bridgeable_, signer_, vault_, costReceiver_, contractURI_, seriesIds_, seriesMaxSupplies_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &FeralfileExhibitionV4{FeralfileExhibitionV4Caller: FeralfileExhibitionV4Caller{contract: contract}, FeralfileExhibitionV4Transactor: FeralfileExhibitionV4Transactor{contract: contract}, FeralfileExhibitionV4Filterer: FeralfileExhibitionV4Filterer{contract: contract}}, nil +} + +// FeralfileExhibitionV4 is an auto generated Go binding around an Ethereum contract. +type FeralfileExhibitionV4 struct { + FeralfileExhibitionV4Caller // Read-only binding to the contract + FeralfileExhibitionV4Transactor // Write-only binding to the contract + FeralfileExhibitionV4Filterer // Log filterer for contract events +} + +// FeralfileExhibitionV4Caller is an auto generated read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV4Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV4Transactor is an auto generated write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV4Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV4Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type FeralfileExhibitionV4Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// FeralfileExhibitionV4Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type FeralfileExhibitionV4Session struct { + Contract *FeralfileExhibitionV4 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV4CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type FeralfileExhibitionV4CallerSession struct { + Contract *FeralfileExhibitionV4Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// FeralfileExhibitionV4TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type FeralfileExhibitionV4TransactorSession struct { + Contract *FeralfileExhibitionV4Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// FeralfileExhibitionV4Raw is an auto generated low-level Go binding around an Ethereum contract. +type FeralfileExhibitionV4Raw struct { + Contract *FeralfileExhibitionV4 // Generic contract binding to access the raw methods on +} + +// FeralfileExhibitionV4CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type FeralfileExhibitionV4CallerRaw struct { + Contract *FeralfileExhibitionV4Caller // Generic read-only contract binding to access the raw methods on +} + +// FeralfileExhibitionV4TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type FeralfileExhibitionV4TransactorRaw struct { + Contract *FeralfileExhibitionV4Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewFeralfileExhibitionV4 creates a new instance of FeralfileExhibitionV4, bound to a specific deployed contract. +func NewFeralfileExhibitionV4(address common.Address, backend bind.ContractBackend) (*FeralfileExhibitionV4, error) { + contract, err := bindFeralfileExhibitionV4(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4{FeralfileExhibitionV4Caller: FeralfileExhibitionV4Caller{contract: contract}, FeralfileExhibitionV4Transactor: FeralfileExhibitionV4Transactor{contract: contract}, FeralfileExhibitionV4Filterer: FeralfileExhibitionV4Filterer{contract: contract}}, nil +} + +// NewFeralfileExhibitionV4Caller creates a new read-only instance of FeralfileExhibitionV4, bound to a specific deployed contract. +func NewFeralfileExhibitionV4Caller(address common.Address, caller bind.ContractCaller) (*FeralfileExhibitionV4Caller, error) { + contract, err := bindFeralfileExhibitionV4(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4Caller{contract: contract}, nil +} + +// NewFeralfileExhibitionV4Transactor creates a new write-only instance of FeralfileExhibitionV4, bound to a specific deployed contract. +func NewFeralfileExhibitionV4Transactor(address common.Address, transactor bind.ContractTransactor) (*FeralfileExhibitionV4Transactor, error) { + contract, err := bindFeralfileExhibitionV4(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4Transactor{contract: contract}, nil +} + +// NewFeralfileExhibitionV4Filterer creates a new log filterer instance of FeralfileExhibitionV4, bound to a specific deployed contract. +func NewFeralfileExhibitionV4Filterer(address common.Address, filterer bind.ContractFilterer) (*FeralfileExhibitionV4Filterer, error) { + contract, err := bindFeralfileExhibitionV4(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4Filterer{contract: contract}, nil +} + +// bindFeralfileExhibitionV4 binds a generic wrapper to an already deployed contract. +func bindFeralfileExhibitionV4(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := FeralfileExhibitionV4MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV4.Contract.FeralfileExhibitionV4Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.FeralfileExhibitionV4Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.FeralfileExhibitionV4Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _FeralfileExhibitionV4.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.contract.Transact(opts, method, params...) +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) OperatorFilterRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "OperatorFilterRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) OperatorFilterRegistry() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.OperatorFilterRegistry(&_FeralfileExhibitionV4.CallOpts) +} + +// OperatorFilterRegistry is a free data retrieval call binding the contract method 0xf07e7fd0. +// +// Solidity: function OperatorFilterRegistry() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) OperatorFilterRegistry() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.OperatorFilterRegistry(&_FeralfileExhibitionV4.CallOpts) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.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 + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.BalanceOf(&_FeralfileExhibitionV4.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.BalanceOf(&_FeralfileExhibitionV4.CallOpts, owner) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Bridgeable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "bridgeable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Bridgeable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Bridgeable(&_FeralfileExhibitionV4.CallOpts) +} + +// Bridgeable is a free data retrieval call binding the contract method 0x530da8ef. +// +// Solidity: function bridgeable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Bridgeable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Bridgeable(&_FeralfileExhibitionV4.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Burnable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "burnable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Burnable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Burnable(&_FeralfileExhibitionV4.CallOpts) +} + +// Burnable is a free data retrieval call binding the contract method 0xa07c7ce4. +// +// Solidity: function burnable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Burnable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Burnable(&_FeralfileExhibitionV4.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) CodeVersion(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "codeVersion") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) CodeVersion() (string, error) { + return _FeralfileExhibitionV4.Contract.CodeVersion(&_FeralfileExhibitionV4.CallOpts) +} + +// CodeVersion is a free data retrieval call binding the contract method 0x63e60230. +// +// Solidity: function codeVersion() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) CodeVersion() (string, error) { + return _FeralfileExhibitionV4.Contract.CodeVersion(&_FeralfileExhibitionV4.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) ContractURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "contractURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) ContractURI() (string, error) { + return _FeralfileExhibitionV4.Contract.ContractURI(&_FeralfileExhibitionV4.CallOpts) +} + +// ContractURI is a free data retrieval call binding the contract method 0xe8a3d485. +// +// Solidity: function contractURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) ContractURI() (string, error) { + return _FeralfileExhibitionV4.Contract.ContractURI(&_FeralfileExhibitionV4.CallOpts) +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) CostReceiver(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "costReceiver") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) CostReceiver() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.CostReceiver(&_FeralfileExhibitionV4.CallOpts) +} + +// CostReceiver is a free data retrieval call binding the contract method 0xf4e638be. +// +// Solidity: function costReceiver() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) CostReceiver() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.CostReceiver(&_FeralfileExhibitionV4.CallOpts) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "getApproved", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV4.Contract.GetApproved(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// GetApproved is a free data retrieval call binding the contract method 0x081812fc. +// +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV4.Contract.GetApproved(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) GetArtwork(opts *bind.CallOpts, tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "getArtwork", tokenId) + + if err != nil { + return *new(FeralfileExhibitionV4Artwork), err + } + + out0 := *abi.ConvertType(out[0], new(FeralfileExhibitionV4Artwork)).(*FeralfileExhibitionV4Artwork) + + return out0, err + +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) GetArtwork(tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + return _FeralfileExhibitionV4.Contract.GetArtwork(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// GetArtwork is a free data retrieval call binding the contract method 0x167ddf6e. +// +// Solidity: function getArtwork(uint256 tokenId) view returns((uint256,uint256)) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) GetArtwork(tokenId *big.Int) (FeralfileExhibitionV4Artwork, error) { + return _FeralfileExhibitionV4.Contract.GetArtwork(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "isApprovedForAll", owner, operator) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV4.Contract.IsApprovedForAll(&_FeralfileExhibitionV4.CallOpts, owner, operator) +} + +// IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. +// +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _FeralfileExhibitionV4.Contract.IsApprovedForAll(&_FeralfileExhibitionV4.CallOpts, owner, operator) +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Mintable(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "mintable") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Mintable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Mintable(&_FeralfileExhibitionV4.CallOpts) +} + +// Mintable is a free data retrieval call binding the contract method 0x4bf365df. +// +// Solidity: function mintable() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Mintable() (bool, error) { + return _FeralfileExhibitionV4.Contract.Mintable(&_FeralfileExhibitionV4.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Name() (string, error) { + return _FeralfileExhibitionV4.Contract.Name(&_FeralfileExhibitionV4.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Name() (string, error) { + return _FeralfileExhibitionV4.Contract.Name(&_FeralfileExhibitionV4.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.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 + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Owner() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Owner(&_FeralfileExhibitionV4.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Owner() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Owner(&_FeralfileExhibitionV4.CallOpts) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "ownerOf", tokenId) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV4.Contract.OwnerOf(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// OwnerOf is a free data retrieval call binding the contract method 0x6352211e. +// +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _FeralfileExhibitionV4.Contract.OwnerOf(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Selling(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "selling") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Selling() (bool, error) { + return _FeralfileExhibitionV4.Contract.Selling(&_FeralfileExhibitionV4.CallOpts) +} + +// Selling is a free data retrieval call binding the contract method 0x23aed228. +// +// Solidity: function selling() view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Selling() (bool, error) { + return _FeralfileExhibitionV4.Contract.Selling(&_FeralfileExhibitionV4.CallOpts) +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) SeriesMaxSupply(opts *bind.CallOpts, seriesId *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "seriesMaxSupply", seriesId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SeriesMaxSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.SeriesMaxSupply(&_FeralfileExhibitionV4.CallOpts, seriesId) +} + +// SeriesMaxSupply is a free data retrieval call binding the contract method 0xeb5c60f2. +// +// Solidity: function seriesMaxSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) SeriesMaxSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.SeriesMaxSupply(&_FeralfileExhibitionV4.CallOpts, seriesId) +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) SeriesTotalSupply(opts *bind.CallOpts, seriesId *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "seriesTotalSupply", seriesId) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SeriesTotalSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.SeriesTotalSupply(&_FeralfileExhibitionV4.CallOpts, seriesId) +} + +// SeriesTotalSupply is a free data retrieval call binding the contract method 0x7f06ee06. +// +// Solidity: function seriesTotalSupply(uint256 seriesId) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) SeriesTotalSupply(seriesId *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.SeriesTotalSupply(&_FeralfileExhibitionV4.CallOpts, seriesId) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Signer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "signer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Signer() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Signer(&_FeralfileExhibitionV4.CallOpts) +} + +// Signer is a free data retrieval call binding the contract method 0x238ac933. +// +// Solidity: function signer() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Signer() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Signer(&_FeralfileExhibitionV4.CallOpts) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "supportsInterface", interfaceId) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV4.Contract.SupportsInterface(&_FeralfileExhibitionV4.CallOpts, interfaceId) +} + +// SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. +// +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { + return _FeralfileExhibitionV4.Contract.SupportsInterface(&_FeralfileExhibitionV4.CallOpts, interfaceId) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Symbol() (string, error) { + return _FeralfileExhibitionV4.Contract.Symbol(&_FeralfileExhibitionV4.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Symbol() (string, error) { + return _FeralfileExhibitionV4.Contract.Symbol(&_FeralfileExhibitionV4.CallOpts) +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) TokenBaseURI(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "tokenBaseURI") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TokenBaseURI() (string, error) { + return _FeralfileExhibitionV4.Contract.TokenBaseURI(&_FeralfileExhibitionV4.CallOpts) +} + +// TokenBaseURI is a free data retrieval call binding the contract method 0x4e99b800. +// +// Solidity: function tokenBaseURI() view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) TokenBaseURI() (string, error) { + return _FeralfileExhibitionV4.Contract.TokenBaseURI(&_FeralfileExhibitionV4.CallOpts) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV4.CallOpts, owner, index) +} + +// TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59. +// +// Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TokenOfOwnerByIndex(&_FeralfileExhibitionV4.CallOpts, owner, index) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV4.Contract.TokenURI(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _FeralfileExhibitionV4.Contract.TokenURI(&_FeralfileExhibitionV4.CallOpts, tokenId) +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) TokensOfOwner(opts *bind.CallOpts, owner common.Address) ([]*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "tokensOfOwner", owner) + + if err != nil { + return *new([]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + + return out0, err + +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TokensOfOwner(owner common.Address) ([]*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TokensOfOwner(&_FeralfileExhibitionV4.CallOpts, owner) +} + +// TokensOfOwner is a free data retrieval call binding the contract method 0x8462151c. +// +// Solidity: function tokensOfOwner(address owner) view returns(uint256[]) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) TokensOfOwner(owner common.Address) ([]*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TokensOfOwner(&_FeralfileExhibitionV4.CallOpts, owner) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _FeralfileExhibitionV4.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) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TotalSupply(&_FeralfileExhibitionV4.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) TotalSupply() (*big.Int, error) { + return _FeralfileExhibitionV4.Contract.TotalSupply(&_FeralfileExhibitionV4.CallOpts) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Trustees(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "trustees", arg0) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV4.Contract.Trustees(&_FeralfileExhibitionV4.CallOpts, arg0) +} + +// Trustees is a free data retrieval call binding the contract method 0xeee608a4. +// +// Solidity: function trustees(address ) view returns(bool) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Trustees(arg0 common.Address) (bool, error) { + return _FeralfileExhibitionV4.Contract.Trustees(&_FeralfileExhibitionV4.CallOpts, arg0) +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Caller) Vault(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _FeralfileExhibitionV4.contract.Call(opts, &out, "vault") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Vault() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Vault(&_FeralfileExhibitionV4.CallOpts) +} + +// Vault is a free data retrieval call binding the contract method 0xfbfa77cf. +// +// Solidity: function vault() view returns(address) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4CallerSession) Vault() (common.Address, error) { + return _FeralfileExhibitionV4.Contract.Vault(&_FeralfileExhibitionV4.CallOpts) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) AddTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "addTrustee", _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.AddTrustee(&_FeralfileExhibitionV4.TransactOpts, _trustee) +} + +// AddTrustee is a paid mutator transaction binding the contract method 0xdc78ac1c. +// +// Solidity: function addTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) AddTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.AddTrustee(&_FeralfileExhibitionV4.TransactOpts, _trustee) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) Approve(opts *bind.TransactOpts, operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "approve", operator, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Approve(operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.Approve(&_FeralfileExhibitionV4.TransactOpts, operator, tokenId) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address operator, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) Approve(operator common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.Approve(&_FeralfileExhibitionV4.TransactOpts, operator, tokenId) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) BurnArtworks(opts *bind.TransactOpts, tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "burnArtworks", tokenIds) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) BurnArtworks(tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.BurnArtworks(&_FeralfileExhibitionV4.TransactOpts, tokenIds) +} + +// BurnArtworks is a paid mutator transaction binding the contract method 0x21fe0c64. +// +// Solidity: function burnArtworks(uint256[] tokenIds) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) BurnArtworks(tokenIds []*big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.BurnArtworks(&_FeralfileExhibitionV4.TransactOpts, tokenIds) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_) payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) BuyArtworks(opts *bind.TransactOpts, r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "buyArtworks", r_, s_, v_, saleData_) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_) payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) BuyArtworks(r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.BuyArtworks(&_FeralfileExhibitionV4.TransactOpts, r_, s_, v_, saleData_) +} + +// BuyArtworks is a paid mutator transaction binding the contract method 0x2977e4b3. +// +// Solidity: function buyArtworks(bytes32 r_, bytes32 s_, uint8 v_, (uint256,uint256,uint256,address,uint256[],(address,uint256)[][],bool) saleData_) payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) BuyArtworks(r_ [32]byte, s_ [32]byte, v_ uint8, saleData_ IFeralfileSaleDataSaleData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.BuyArtworks(&_FeralfileExhibitionV4.TransactOpts, r_, s_, v_, saleData_) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) MintArtworks(opts *bind.TransactOpts, data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "mintArtworks", data) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) MintArtworks(data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.MintArtworks(&_FeralfileExhibitionV4.TransactOpts, data) +} + +// MintArtworks is a paid mutator transaction binding the contract method 0x8cba1c67. +// +// Solidity: function mintArtworks((uint256,uint256,address)[] data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) MintArtworks(data []FeralfileExhibitionV4MintData) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.MintArtworks(&_FeralfileExhibitionV4.TransactOpts, data) +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) PauseSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "pauseSale") +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) PauseSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.PauseSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// PauseSale is a paid mutator transaction binding the contract method 0x55367ba9. +// +// Solidity: function pauseSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) PauseSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.PauseSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) RemoveTrustee(opts *bind.TransactOpts, _trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "removeTrustee", _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.RemoveTrustee(&_FeralfileExhibitionV4.TransactOpts, _trustee) +} + +// RemoveTrustee is a paid mutator transaction binding the contract method 0x03120506. +// +// Solidity: function removeTrustee(address _trustee) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) RemoveTrustee(_trustee common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.RemoveTrustee(&_FeralfileExhibitionV4.TransactOpts, _trustee) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.RenounceOwnership(&_FeralfileExhibitionV4.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.RenounceOwnership(&_FeralfileExhibitionV4.TransactOpts) +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) ResumeSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "resumeSale") +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) ResumeSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.ResumeSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// ResumeSale is a paid mutator transaction binding the contract method 0x33e364cb. +// +// Solidity: function resumeSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) ResumeSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.ResumeSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SafeTransferFrom(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SafeTransferFrom(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SafeTransferFrom0(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId, data) +} + +// SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. +// +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SafeTransferFrom0(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId, data) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "setApprovalForAll", operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetApprovalForAll(&_FeralfileExhibitionV4.TransactOpts, operator, approved) +} + +// SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. +// +// Solidity: function setApprovalForAll(address operator, bool approved) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetApprovalForAll(&_FeralfileExhibitionV4.TransactOpts, operator, approved) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SetCostReceiver(opts *bind.TransactOpts, costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "setCostReceiver", costReceiver_) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SetCostReceiver(costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetCostReceiver(&_FeralfileExhibitionV4.TransactOpts, costReceiver_) +} + +// SetCostReceiver is a paid mutator transaction binding the contract method 0x1623528f. +// +// Solidity: function setCostReceiver(address costReceiver_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SetCostReceiver(costReceiver_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetCostReceiver(&_FeralfileExhibitionV4.TransactOpts, costReceiver_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SetSigner(opts *bind.TransactOpts, signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "setSigner", signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetSigner(&_FeralfileExhibitionV4.TransactOpts, signer_) +} + +// SetSigner is a paid mutator transaction binding the contract method 0x6c19e783. +// +// Solidity: function setSigner(address signer_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SetSigner(signer_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetSigner(&_FeralfileExhibitionV4.TransactOpts, signer_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SetTokenBaseURI(opts *bind.TransactOpts, baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "setTokenBaseURI", baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetTokenBaseURI(&_FeralfileExhibitionV4.TransactOpts, baseURI_) +} + +// SetTokenBaseURI is a paid mutator transaction binding the contract method 0x8ef79e91. +// +// Solidity: function setTokenBaseURI(string baseURI_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SetTokenBaseURI(baseURI_ string) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetTokenBaseURI(&_FeralfileExhibitionV4.TransactOpts, baseURI_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) SetVault(opts *bind.TransactOpts, vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "setVault", vault_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) SetVault(vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetVault(&_FeralfileExhibitionV4.TransactOpts, vault_) +} + +// SetVault is a paid mutator transaction binding the contract method 0x6817031b. +// +// Solidity: function setVault(address vault_) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) SetVault(vault_ common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.SetVault(&_FeralfileExhibitionV4.TransactOpts, vault_) +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) StartSale(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "startSale") +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) StartSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StartSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// StartSale is a paid mutator transaction binding the contract method 0xb66a0e5d. +// +// Solidity: function startSale() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) StartSale() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StartSale(&_FeralfileExhibitionV4.TransactOpts) +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) StopSaleAndBurn(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "stopSaleAndBurn") +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) StopSaleAndBurn() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StopSaleAndBurn(&_FeralfileExhibitionV4.TransactOpts) +} + +// StopSaleAndBurn is a paid mutator transaction binding the contract method 0xb9b8311a. +// +// Solidity: function stopSaleAndBurn() returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) StopSaleAndBurn() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StopSaleAndBurn(&_FeralfileExhibitionV4.TransactOpts) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) StopSaleAndTransfer(opts *bind.TransactOpts, seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "stopSaleAndTransfer", seriesIds, recipientAddresses) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) StopSaleAndTransfer(seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StopSaleAndTransfer(&_FeralfileExhibitionV4.TransactOpts, seriesIds, recipientAddresses) +} + +// StopSaleAndTransfer is a paid mutator transaction binding the contract method 0x65a46e08. +// +// Solidity: function stopSaleAndTransfer(uint256[] seriesIds, address[] recipientAddresses) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) StopSaleAndTransfer(seriesIds []*big.Int, recipientAddresses []common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.StopSaleAndTransfer(&_FeralfileExhibitionV4.TransactOpts, seriesIds, recipientAddresses) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "transferFrom", from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.TransferFrom(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.TransferFrom(&_FeralfileExhibitionV4.TransactOpts, from, to, tokenId) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.TransferOwnership(&_FeralfileExhibitionV4.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.TransferOwnership(&_FeralfileExhibitionV4.TransactOpts, newOwner) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) UpdateOperatorFilterRegistry(opts *bind.TransactOpts, operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.Transact(opts, "updateOperatorFilterRegistry", operatorFilterRegisterAddress) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) UpdateOperatorFilterRegistry(operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.UpdateOperatorFilterRegistry(&_FeralfileExhibitionV4.TransactOpts, operatorFilterRegisterAddress) +} + +// UpdateOperatorFilterRegistry is a paid mutator transaction binding the contract method 0x114ba8ee. +// +// Solidity: function updateOperatorFilterRegistry(address operatorFilterRegisterAddress) returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) UpdateOperatorFilterRegistry(operatorFilterRegisterAddress common.Address) (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.UpdateOperatorFilterRegistry(&_FeralfileExhibitionV4.TransactOpts, operatorFilterRegisterAddress) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _FeralfileExhibitionV4.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Session) Receive() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.Receive(&_FeralfileExhibitionV4.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4TransactorSession) Receive() (*types.Transaction, error) { + return _FeralfileExhibitionV4.Contract.Receive(&_FeralfileExhibitionV4.TransactOpts) +} + +// FeralfileExhibitionV4ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4ApprovalIterator struct { + Event *FeralfileExhibitionV4Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4Approval represents a Approval event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4Approval struct { + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV4ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4ApprovalIterator{contract: _FeralfileExhibitionV4.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4Approval) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseApproval(log types.Log) (*FeralfileExhibitionV4Approval, error) { + event := new(FeralfileExhibitionV4Approval) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4ApprovalForAllIterator struct { + Event *FeralfileExhibitionV4ApprovalForAll // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4ApprovalForAllIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4ApprovalForAll) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4ApprovalForAllIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4ApprovalForAllIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4ApprovalForAll represents a ApprovalForAll event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4ApprovalForAll struct { + Owner common.Address + Operator common.Address + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*FeralfileExhibitionV4ApprovalForAllIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4ApprovalForAllIterator{contract: _FeralfileExhibitionV4.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil +} + +// WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var operatorRule []interface{} + for _, operatorItem := range operator { + operatorRule = append(operatorRule, operatorItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4ApprovalForAll) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31. +// +// Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseApprovalForAll(log types.Log) (*FeralfileExhibitionV4ApprovalForAll, error) { + event := new(FeralfileExhibitionV4ApprovalForAll) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "ApprovalForAll", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4BurnArtworkIterator is returned from FilterBurnArtwork and is used to iterate over the raw logs and unpacked data for BurnArtwork events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4BurnArtworkIterator struct { + Event *FeralfileExhibitionV4BurnArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4BurnArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4BurnArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4BurnArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4BurnArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4BurnArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4BurnArtwork represents a BurnArtwork event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4BurnArtwork struct { + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBurnArtwork is a free log retrieval operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterBurnArtwork(opts *bind.FilterOpts, tokenId []*big.Int) (*FeralfileExhibitionV4BurnArtworkIterator, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "BurnArtwork", tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4BurnArtworkIterator{contract: _FeralfileExhibitionV4.contract, event: "BurnArtwork", logs: logs, sub: sub}, nil +} + +// WatchBurnArtwork is a free log subscription operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchBurnArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4BurnArtwork, tokenId []*big.Int) (event.Subscription, error) { + + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "BurnArtwork", tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4BurnArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "BurnArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBurnArtwork is a log parse operation binding the contract event 0xbde7938970372996ff103863625e348ef2bf8f38a5b02181be75aafef17c23d5. +// +// Solidity: event BurnArtwork(uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseBurnArtwork(log types.Log) (*FeralfileExhibitionV4BurnArtwork, error) { + event := new(FeralfileExhibitionV4BurnArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "BurnArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4BuyArtworkIterator is returned from FilterBuyArtwork and is used to iterate over the raw logs and unpacked data for BuyArtwork events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4BuyArtworkIterator struct { + Event *FeralfileExhibitionV4BuyArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4BuyArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4BuyArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4BuyArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4BuyArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4BuyArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4BuyArtwork represents a BuyArtwork event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4BuyArtwork struct { + Buyer common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBuyArtwork is a free log retrieval operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterBuyArtwork(opts *bind.FilterOpts, buyer []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV4BuyArtworkIterator, error) { + + var buyerRule []interface{} + for _, buyerItem := range buyer { + buyerRule = append(buyerRule, buyerItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "BuyArtwork", buyerRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4BuyArtworkIterator{contract: _FeralfileExhibitionV4.contract, event: "BuyArtwork", logs: logs, sub: sub}, nil +} + +// WatchBuyArtwork is a free log subscription operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchBuyArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4BuyArtwork, buyer []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var buyerRule []interface{} + for _, buyerItem := range buyer { + buyerRule = append(buyerRule, buyerItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "BuyArtwork", buyerRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4BuyArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "BuyArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBuyArtwork is a log parse operation binding the contract event 0x0475389cd69b8d3163620b43283bf74e8fc71020c3c6cef2a529b5c405e9687f. +// +// Solidity: event BuyArtwork(address indexed buyer, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseBuyArtwork(log types.Log) (*FeralfileExhibitionV4BuyArtwork, error) { + event := new(FeralfileExhibitionV4BuyArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "BuyArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4NewArtworkIterator is returned from FilterNewArtwork and is used to iterate over the raw logs and unpacked data for NewArtwork events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4NewArtworkIterator struct { + Event *FeralfileExhibitionV4NewArtwork // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4NewArtworkIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4NewArtwork) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4NewArtworkIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4NewArtworkIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4NewArtwork represents a NewArtwork event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4NewArtwork struct { + Owner common.Address + SeriesId *big.Int + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewArtwork is a free log retrieval operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterNewArtwork(opts *bind.FilterOpts, owner []common.Address, seriesId []*big.Int, tokenId []*big.Int) (*FeralfileExhibitionV4NewArtworkIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var seriesIdRule []interface{} + for _, seriesIdItem := range seriesId { + seriesIdRule = append(seriesIdRule, seriesIdItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "NewArtwork", ownerRule, seriesIdRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4NewArtworkIterator{contract: _FeralfileExhibitionV4.contract, event: "NewArtwork", logs: logs, sub: sub}, nil +} + +// WatchNewArtwork is a free log subscription operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchNewArtwork(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4NewArtwork, owner []common.Address, seriesId []*big.Int, tokenId []*big.Int) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var seriesIdRule []interface{} + for _, seriesIdItem := range seriesId { + seriesIdRule = append(seriesIdRule, seriesIdItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "NewArtwork", ownerRule, seriesIdRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4NewArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNewArtwork is a log parse operation binding the contract event 0x407d7da1d3b2b1871fbfa2b5b1c4657a3cc5711d3023c552798551c7ee301eea. +// +// Solidity: event NewArtwork(address indexed owner, uint256 indexed seriesId, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseNewArtwork(log types.Log) (*FeralfileExhibitionV4NewArtwork, error) { + event := new(FeralfileExhibitionV4NewArtwork) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "NewArtwork", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4OwnershipTransferredIterator struct { + Event *FeralfileExhibitionV4OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4OwnershipTransferred represents a OwnershipTransferred event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*FeralfileExhibitionV4OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4OwnershipTransferredIterator{contract: _FeralfileExhibitionV4.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4OwnershipTransferred) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseOwnershipTransferred(log types.Log) (*FeralfileExhibitionV4OwnershipTransferred, error) { + event := new(FeralfileExhibitionV4OwnershipTransferred) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// FeralfileExhibitionV4TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4TransferIterator struct { + Event *FeralfileExhibitionV4Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *FeralfileExhibitionV4TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(FeralfileExhibitionV4Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *FeralfileExhibitionV4TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *FeralfileExhibitionV4TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// FeralfileExhibitionV4Transfer represents a Transfer event raised by the FeralfileExhibitionV4 contract. +type FeralfileExhibitionV4Transfer struct { + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*FeralfileExhibitionV4TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return &FeralfileExhibitionV4TransferIterator{contract: _FeralfileExhibitionV4.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *FeralfileExhibitionV4Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) + } + + logs, sub, err := _FeralfileExhibitionV4.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(FeralfileExhibitionV4Transfer) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_FeralfileExhibitionV4 *FeralfileExhibitionV4Filterer) ParseTransfer(log types.Log) (*FeralfileExhibitionV4Transfer, error) { + event := new(FeralfileExhibitionV4Transfer) + if err := _FeralfileExhibitionV4.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +}