From d3ee6e443cf9d46d8a16ab49aa4c805758401a65 Mon Sep 17 00:00:00 2001 From: laisolizq Date: Wed, 9 Sep 2020 13:10:03 +0200 Subject: [PATCH] Add contracts & ethclient auction --- eth/auction.go | 144 +- eth/auction_test.go | 108 + eth/contracts/README.md | 14 + .../auction/HermezAuctionProtocol.go | 3296 +++++++++++++++++ eth/contracts/hermez/Hermez.go | 2764 ++++++++++++++ .../withdrawdelayer/WithdrawalDelayer.go | 1810 +++++++++ 6 files changed, 8126 insertions(+), 10 deletions(-) create mode 100644 eth/auction_test.go create mode 100644 eth/contracts/README.md create mode 100644 eth/contracts/auction/HermezAuctionProtocol.go create mode 100644 eth/contracts/hermez/Hermez.go create mode 100644 eth/contracts/withdrawdelayer/WithdrawalDelayer.go diff --git a/eth/auction.go b/eth/auction.go index 0ea1778..bd664dd 100644 --- a/eth/auction.go +++ b/eth/auction.go @@ -5,6 +5,8 @@ import ( ethCommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/ethclient" + HermezAuctionProtocol "github.com/hermeznetwork/hermez-node/eth/contracts/auction" ) // AuctionConstants are the constants of the Rollup Smart Contract @@ -252,6 +254,16 @@ type AuctionInterface interface { // AuctionClient is the implementation of the interface to the Auction Smart Contract in ethereum. type AuctionClient struct { + client *EthereumClient + address ethCommon.Address +} + +// NewAuctionClient creates a new AuctionClient +func NewAuctionClient(client *EthereumClient, address ethCommon.Address) *AuctionClient { + return &AuctionClient{ + client: client, + address: address, + } } // AuctionSetSlotDeadline is the interface to call the smart contract function @@ -261,7 +273,18 @@ func (c *AuctionClient) AuctionSetSlotDeadline(newDeadline uint8) (*types.Transa // AuctionGetSlotDeadline is the interface to call the smart contract function func (c *AuctionClient) AuctionGetSlotDeadline() (uint8, error) { - return 0, errTODO + var slotDeadline uint8 + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + slotDeadline, err = auction.GetSlotDeadline(nil) + return err + }); err != nil { + return 0, err + } + return slotDeadline, nil } // AuctionSetOpenAuctionSlots is the interface to call the smart contract function @@ -271,7 +294,18 @@ func (c *AuctionClient) AuctionSetOpenAuctionSlots(newOpenAuctionSlots uint16) ( // AuctionGetOpenAuctionSlots is the interface to call the smart contract function func (c *AuctionClient) AuctionGetOpenAuctionSlots() (uint16, error) { - return 0, errTODO + var openAuctionSlots uint16 + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + openAuctionSlots, err = auction.GetOpenAuctionSlots(nil) + return err + }); err != nil { + return 0, err + } + return openAuctionSlots, nil } // AuctionSetClosedAuctionSlots is the interface to call the smart contract function @@ -281,7 +315,18 @@ func (c *AuctionClient) AuctionSetClosedAuctionSlots(newClosedAuctionSlots uint1 // AuctionGetClosedAuctionSlots is the interface to call the smart contract function func (c *AuctionClient) AuctionGetClosedAuctionSlots() (uint16, error) { - return 0, errTODO + var closedAuctionSlots uint16 + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + closedAuctionSlots, err = auction.GetClosedAuctionSlots(nil) + return err + }); err != nil { + return 0, err + } + return closedAuctionSlots, nil } // AuctionSetOutbidding is the interface to call the smart contract function @@ -291,7 +336,18 @@ func (c *AuctionClient) AuctionSetOutbidding(newOutbidding uint8) (*types.Transa // AuctionGetOutbidding is the interface to call the smart contract function func (c *AuctionClient) AuctionGetOutbidding() (uint8, error) { - return 0, errTODO + var outbidding uint8 + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + outbidding, err = auction.GetOutbidding(nil) + return err + }); err != nil { + return 0, err + } + return outbidding, nil } // AuctionSetAllocationRatio is the interface to call the smart contract function @@ -301,7 +357,18 @@ func (c *AuctionClient) AuctionSetAllocationRatio(newAllocationRatio [3]uint8) ( // AuctionGetAllocationRatio is the interface to call the smart contract function func (c *AuctionClient) AuctionGetAllocationRatio() ([3]uint8, error) { - return [3]uint8{}, errTODO + var allocationRation [3]uint8 + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + allocationRation, err = auction.GetAllocationRatio(nil) + return err + }); err != nil { + return [3]uint8{}, err + } + return allocationRation, nil } // AuctionSetDonationAddress is the interface to call the smart contract function @@ -311,7 +378,18 @@ func (c *AuctionClient) AuctionSetDonationAddress(newDonationAddress ethCommon.A // AuctionGetDonationAddress is the interface to call the smart contract function func (c *AuctionClient) AuctionGetDonationAddress() (*ethCommon.Address, error) { - return nil, errTODO + var donationAddress ethCommon.Address + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + donationAddress, err = auction.GetDonationAddress(nil) + return err + }); err != nil { + return nil, err + } + return &donationAddress, nil } // AuctionSetBootCoordinator is the interface to call the smart contract function @@ -321,7 +399,18 @@ func (c *AuctionClient) AuctionSetBootCoordinator(newBootCoordinator ethCommon.A // AuctionGetBootCoordinator is the interface to call the smart contract function func (c *AuctionClient) AuctionGetBootCoordinator() (*ethCommon.Address, error) { - return nil, errTODO + var bootCoordinator ethCommon.Address + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + bootCoordinator, err = auction.GetBootCoordinator(nil) + return err + }); err != nil { + return nil, err + } + return &bootCoordinator, nil } // AuctionChangeEpochMinBid is the interface to call the smart contract function @@ -346,17 +435,52 @@ func (c *AuctionClient) AuctionUpdateCoordinatorInfo(forgerAddress ethCommon.Add // AuctionGetCurrentSlotNumber is the interface to call the smart contract function func (c *AuctionClient) AuctionGetCurrentSlotNumber() (int64, error) { - return 0, errTODO + var _currentSlotNumber *big.Int + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + _currentSlotNumber, err = auction.GetCurrentSlotNumber(nil) + return err + }); err != nil { + return 0, err + } + currentSlotNumber := _currentSlotNumber.Int64() + return currentSlotNumber, nil } // AuctionGetMinBidBySlot is the interface to call the smart contract function func (c *AuctionClient) AuctionGetMinBidBySlot(slot int64) (*big.Int, error) { - return nil, errTODO + var minBid *big.Int + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + slotToSend := big.NewInt(slot) + minBid, err = auction.GetMinBidBySlot(nil, slotToSend) + return err + }); err != nil { + return big.NewInt(0), err + } + return minBid, nil } // AuctionGetMinBidEpoch is the interface to call the smart contract function func (c *AuctionClient) AuctionGetMinBidEpoch(epoch uint8) (*big.Int, error) { - return nil, errTODO + var minBidEpoch *big.Int + if err := c.client.Call(func(ec *ethclient.Client) error { + auction, err := HermezAuctionProtocol.NewHermezAuctionProtocol(c.address, ec) + if err != nil { + return err + } + minBidEpoch, err = auction.GetMinBidEpoch(nil, epoch) + return err + }); err != nil { + return big.NewInt(0), err + } + return minBidEpoch, nil } // AuctionTokensReceived is the interface to call the smart contract function diff --git a/eth/auction_test.go b/eth/auction_test.go new file mode 100644 index 0000000..5ffa952 --- /dev/null +++ b/eth/auction_test.go @@ -0,0 +1,108 @@ +package eth + +import ( + "os" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +const slotDeadlineConst = uint8(20) +const openAuctionSlotsConst = 4320 +const closedAuctionSlotsConst = 2 +const outbiddingConst = 10 +const currentSlotConst = 0 + +var allocationRatioConst [3]uint8 = [3]uint8{40, 40, 20} + +var auctionClient *AuctionClient + +var donationAddressConstStr = os.Getenv("DONATION_ADDRESS") +var bootCoordinatorConstStr = os.Getenv("BOOT_COORDINATOR_ADDRESS") +var integration = os.Getenv("INTEGRATION") +var ehtClientDialURL = os.Getenv("ETHCLIENT_DIAL_URL") +var auctionAddressStr = os.Getenv("AUCTION_ADDRESS") + +func TestNewAction(t *testing.T) { + if integration != "" { + // Init eth client + ethClient, err := ethclient.Dial(ehtClientDialURL) + require.Nil(t, err) + ethereumClient := NewEthereumClient(ethClient, nil, nil, nil) + auctionAddress := common.HexToAddress(auctionAddressStr) + auctionClient = NewAuctionClient(ethereumClient, auctionAddress) + } +} + +func TestAuctionGetSlotDeadline(t *testing.T) { + if auctionClient != nil { + slotDeadline, err := auctionClient.AuctionGetSlotDeadline() + require.Nil(t, err) + assert.Equal(t, slotDeadlineConst, slotDeadline) + } +} + +func TestAuctionGetOpenAuctionSlots(t *testing.T) { + if auctionClient != nil { + openAuctionSlots, err := auctionClient.AuctionGetOpenAuctionSlots() + require.Nil(t, err) + openAuctionSlotsInt := int(openAuctionSlots) + assert.Equal(t, openAuctionSlotsConst, openAuctionSlotsInt) + } +} + +func TestAuctionGetClosedAuctionSlots(t *testing.T) { + if auctionClient != nil { + closedAuctionSlots, err := auctionClient.AuctionGetClosedAuctionSlots() + require.Nil(t, err) + closedAuctionSlotsInt := int(closedAuctionSlots) + assert.Equal(t, closedAuctionSlotsConst, closedAuctionSlotsInt) + } +} + +func TestAuctionGetOutbidding(t *testing.T) { + if auctionClient != nil { + outbidding, err := auctionClient.AuctionGetOutbidding() + require.Nil(t, err) + outbiddingInt := int(outbidding) + assert.Equal(t, outbiddingConst, outbiddingInt) + } +} + +func TestAuctionGetAllocationRatio(t *testing.T) { + if auctionClient != nil { + allocationRatio, err := auctionClient.AuctionGetAllocationRatio() + require.Nil(t, err) + assert.Equal(t, allocationRatioConst, allocationRatio) + } +} + +func TestAuctionGetDonationAddress(t *testing.T) { + if auctionClient != nil { + donationAddress, err := auctionClient.AuctionGetDonationAddress() + require.Nil(t, err) + donationAddressConst := common.HexToAddress(donationAddressConstStr) + assert.Equal(t, &donationAddressConst, donationAddress) + } +} + +func TestAuctionGetBootCoordinator(t *testing.T) { + if auctionClient != nil { + bootCoordinator, err := auctionClient.AuctionGetBootCoordinator() + require.Nil(t, err) + bootCoordinatorConst := common.HexToAddress(bootCoordinatorConstStr) + assert.Equal(t, &bootCoordinatorConst, bootCoordinator) + } +} + +func TestAuctionGetCurrentSlotNumber(t *testing.T) { + if auctionClient != nil { + currentSlot, err := auctionClient.AuctionGetCurrentSlotNumber() + require.Nil(t, err) + currentSlotInt := int(currentSlot) + assert.Equal(t, currentSlotConst, currentSlotInt) + } +} diff --git a/eth/contracts/README.md b/eth/contracts/README.md new file mode 100644 index 0000000..25e8cac --- /dev/null +++ b/eth/contracts/README.md @@ -0,0 +1,14 @@ +## Contracts + +The go code of the contracts has been generated with the following command: + +``` +abigen --abi=WithdrawalDelayer.abi --bin=WithdrawalDelayer.bin --pkg=WithdrawalDelayer --out=WithdrawalDelayer.go +abigen --abi=Hermez.abi --bin=Hermez.bin --pkg=Hermez --out=Hermez.go +abigen --abi=HermezAuctionProtocol.abi --bin=HermezAuctionProtocol.bin --pkg=HermezAuctionProtocol --out=HermezAuctionProtocol.go +``` +You must compile the contracts to get the `.bin` and `.abi` files. The contracts used are in the repo: https://github.com/hermeznetwork/contracts-circuits + +Specifically they have been processed in the commit with hash: `0ba124d60e192afda99ef4703aa13b8fef4a392a` + +> abigen version 1.9.21 \ No newline at end of file diff --git a/eth/contracts/auction/HermezAuctionProtocol.go b/eth/contracts/auction/HermezAuctionProtocol.go new file mode 100644 index 0000000..fa889a1 --- /dev/null +++ b/eth/contracts/auction/HermezAuctionProtocol.go @@ -0,0 +1,3296 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package HermezAuctionProtocol + +import ( + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// HermezAuctionProtocolABI is the input ABI used to generate the binding from. +const HermezAuctionProtocolABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forgerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"coordinatorURL\",\"type\":\"string\"}],\"name\":\"CoordinatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"HEZClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8[3]\",\"name\":\"newAllocationRatio\",\"type\":\"uint8[3]\"}],\"name\":\"NewAllocationRatio\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"slot\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"bidAmount\",\"type\":\"uint128\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"coordinatorForger\",\"type\":\"address\"}],\"name\":\"NewBid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBootCoordinator\",\"type\":\"address\"}],\"name\":\"NewBootCoordinator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newClosedAuctionSlots\",\"type\":\"uint16\"}],\"name\":\"NewClosedAuctionSlots\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forgerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"coordinatorURL\",\"type\":\"string\"}],\"name\":\"NewCoordinator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDonationAddress\",\"type\":\"address\"}],\"name\":\"NewDonationAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"forger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"slotToForge\",\"type\":\"uint128\"}],\"name\":\"NewForge\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"forger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint128\",\"name\":\"slotToForge\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"burnAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"donationAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"governanceAmount\",\"type\":\"uint128\"}],\"name\":\"NewForgeAllocated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"slotEpoch\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"newInitialMinBid\",\"type\":\"uint128\"}],\"name\":\"NewMinBidEpoch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newOpenAuctionSlots\",\"type\":\"uint16\"}],\"name\":\"NewOpenAuctionSlots\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newOutbidding\",\"type\":\"uint8\"}],\"name\":\"NewOutbidding\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newSlotDeadline\",\"type\":\"uint8\"}],\"name\":\"NewSlotDeadline\",\"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\":[],\"name\":\"BLOCKS_PER_SLOT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DELAY_GENESIS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIAL_MINIMAL_BIDDING\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"canForge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"slotEpoch\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"newInitialMinBid\",\"type\":\"uint128\"}],\"name\":\"changeEpochMinBid\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"}],\"name\":\"claimHEZ\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"coordinators\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"withdrawalAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"coordinatorURL\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forger\",\"type\":\"address\"}],\"name\":\"forge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlock\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllocationRatio\",\"outputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"\",\"type\":\"uint8[3]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBootCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"}],\"name\":\"getClaimableHEZ\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getClosedAuctionSlots\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentSlotNumber\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDonationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"slot\",\"type\":\"uint128\"}],\"name\":\"getEpoch\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"slot\",\"type\":\"uint128\"}],\"name\":\"getMinBidBySlot\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"epoch\",\"type\":\"uint8\"}],\"name\":\"getMinBidEpoch\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOpenAuctionSlots\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOutbidding\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlotDeadline\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"blockNumber\",\"type\":\"uint128\"}],\"name\":\"getSlotNumber\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezRollup\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenERC777\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hermezRollupAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"governanceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"donationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bootCoordinatorAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forgerAddress\",\"type\":\"address\"}],\"name\":\"isRegisteredCoordinator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pendingBalances\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forgerAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"coordinatorURL\",\"type\":\"string\"}],\"name\":\"registerCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8[3]\",\"name\":\"newAllocationRatio\",\"type\":\"uint8[3]\"}],\"name\":\"setAllocationRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBootCoordinator\",\"type\":\"address\"}],\"name\":\"setBootCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newClosedAuctionSlots\",\"type\":\"uint16\"}],\"name\":\"setClosedAuctionSlots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newDonationAddress\",\"type\":\"address\"}],\"name\":\"setDonationAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newOpenAuctionSlots\",\"type\":\"uint16\"}],\"name\":\"setOpenAuctionSlots\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newOutbidding\",\"type\":\"uint8\"}],\"name\":\"setOutbidding\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newDeadline\",\"type\":\"uint8\"}],\"name\":\"setSlotDeadline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"name\":\"slots\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"forger\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"bidAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"closedMinBid\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHEZ\",\"outputs\":[{\"internalType\":\"contractIERC777\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forgerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newWithdrawAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newURL\",\"type\":\"string\"}],\"name\":\"updateCoordinatorInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + +// HermezAuctionProtocolBin is the compiled bytecode used for deploying new contracts. +var HermezAuctionProtocolBin = "0x610140604052678ac7230489e80000608081815260a082905260c082905260e0829052610100829052610120919091526200003f90603a906006620000b7565b503480156200004d57600080fd5b50600160335560006200005f620000b3565b603480546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000184565b3390565b600383019183908215620001515791602002820160005b838211156200011a57835183826101000a8154816001600160801b0302191690836001600160801b031602179055509260200192601001602081600f01049283019260010302620000ce565b80156200014f5782816101000a8154906001600160801b030219169055601001602081600f010492830192600103026200011a565b505b506200015f92915062000163565b5090565b5b808211156200015f5780546001600160801b031916815560010162000164565b613b6880620001946000396000f3fe608060405234801561001057600080fd5b50600436106102525760003560e01c806379a135e311610146578063b3f69047116100c3578063d92bdda311610087578063d92bdda314610922578063e3498da714610943578063e606591414610995578063ec29159b1461099d578063ecdae41b146109dd578063f2fde38b14610a0357610252565b8063b3f69047146107db578063b5f7f2f01461088f578063bc41556714610897578063bf06b765146108f9578063c63de5151461090157610252565b8063a0c477a11161010a578063a0c477a1146106d7578063a48af096146106f7578063ac4b9012146107a5578063aebd6d98146107ad578063b3dc7bb1146107b557610252565b806379a135e3146105be57806383b1f6a0146105c657806387e6b6bb146105f2578063892075c8146106125780638da5cb5b146106cf57610252565b80634cdc9c63116101d45780635cca4903116101985780635cca49031461051e57806362945af2146105445780636f48e79b1461056a578063715018a614610590578063763889fa1461059857610252565b80634cdc9c63146104a55780634da9639d146104ad5780634e5a5178146104cc57806354c03ab7146104f257806355b442e61461051657610252565b80632243de471161021b5780632243de47146103e95780632d9bfd3a146103f157806337d1bd0b1461041f5780633bebeb06146104455780633f2d0c7b1461047f57610252565b806223de291461025757806307e38ac61461033f5780630c4da4f61461035f57806313de9af2146103835780631459457a146103a1575b600080fd5b61033d600480360360c081101561026d57600080fd5b6001600160a01b03823581169260208101358216926040820135909216916060820135919081019060a081016080820135600160201b8111156102af57600080fd5b8201836020820111156102c157600080fd5b803590602001918460018302840111600160201b831117156102e257600080fd5b919390929091602081019035600160201b8111156102ff57600080fd5b82018360208201111561031157600080fd5b803590602001918460018302840111600160201b8311171561033257600080fd5b509092509050610a29565b005b61033d6004803603602081101561035557600080fd5b503560ff16610c35565b610367610cdb565b604080516001600160801b039092168252519081900360200190f35b61038b610ceb565b6040805160ff9092168252519081900360200190f35b61033d600480360360a08110156103b757600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516610cf9565b61038b610f24565b61033d6004803603604081101561040757600080fd5b506001600160801b0381358116916020013516610f29565b6103676004803603602081101561043557600080fd5b50356001600160801b03166111c0565b61046b6004803603602081101561045b57600080fd5b50356001600160a01b0316611377565b604080519115158252519081900360200190f35b61033d6004803603602081101561049557600080fd5b50356001600160a01b0316611397565b6103676114e6565b6104b56114f5565b6040805161ffff9092168252519081900360200190f35b61033d600480360360208110156104e257600080fd5b50356001600160a01b0316611506565b6104fa611a18565b604080516001600160a01b039092168252519081900360200190f35b61038b611a27565b6103676004803603602081101561053457600080fd5b50356001600160a01b0316611a30565b61033d6004803603602081101561055a57600080fd5b50356001600160a01b0316611a54565b61033d6004803603602081101561058057600080fd5b50356001600160a01b0316611b06565b61033d611bb8565b610367600480360360208110156105ae57600080fd5b50356001600160801b0316611c5a565b6104fa611c76565b61046b600480360360408110156105dc57600080fd5b506001600160a01b038135169060200135611c85565b61033d6004803603602081101561060857600080fd5b503560ff16611f61565b61033d6004803603606081101561062857600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561065b57600080fd5b82018360208201111561066d57600080fd5b803590602001918460018302840111600160201b8311171561068e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061206a945050505050565b6104fa6122b4565b610367600480360360208110156106ed57600080fd5b503560ff166122c3565b61071d6004803603602081101561070d57600080fd5b50356001600160a01b03166122fb565b60405180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610769578181015183820152602001610751565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6104b56123af565b6104fa6123c0565b610367600480360360208110156107cb57600080fd5b50356001600160801b03166123cf565b61033d600480360360408110156107f157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561081b57600080fd5b82018360208201111561082d57600080fd5b803590602001918460018302840111600160201b8311171561084e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612409945050505050565b6104fa612583565b6108bd600480360360208110156108ad57600080fd5b50356001600160801b0316612592565b604080516001600160a01b0390951685526001600160801b03938416602086015291909216838201529015156060830152519081900360800190f35b6104b56125d5565b61033d6004803603602081101561091757600080fd5b503561ffff166125db565b61033d6004803603602081101561093857600080fd5b503561ffff166126f7565b61033d6004803603606081101561095957600080fd5b81019080806060019060038060200260405190810160405280929190826003602002808284376000920191909152509194506128139350505050565b610367612959565b6109a5612965565b6040518082606080838360005b838110156109ca5781810151838201526020016109b2565b5050505090500191505060405180910390f35b610367600480360360208110156109f357600080fd5b50356001600160a01b03166129bd565b61033d60048036036020811015610a1957600080fd5b50356001600160a01b03166129d8565b60026033541415610a81576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026033556035546001600160a01b03163314610adc576040805162461bcd60e51b815260206004820152601460248201527324b73b30b634b21022a9219b9b9b903a37b5b2b760611b604482015290519081900360640190fd5b82610b26576040805162461bcd60e51b815260206004820152601560248201527453656e642048455a20776974686f7574206461746160581b604482015290519081900360640190fd5b600160801b8510610b7e576040805162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206d757374206265206c657373207468616e20325f3132380000604482015290519081900360640190fd5b600084846020811015610b9057600080fd5b50356001600160e01b0319169050636007a2af60e01b811415610bbd57610bb8868686612ad1565b610c25565b6001600160e01b03198116637a5b973560e11b1415610be157610bb8868686612dc3565b6040805162461bcd60e51b81526020600482015260146024820152734e6f7420612076616c69642063616c6c6461746160601b604482015290519081900360640190fd5b5050600160335550505050505050565b610c3d613243565b6034546001600160a01b03908116911614610c8d576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b603f805460ff191660ff838116919091179182905560408051929091168252517fbb54a221330f9969afbf14ba2ad1a2301a279cb9a86dc639af155c8af6eb5479916020908290030190a150565b6000610ce6436123cf565b905090565b603f54610100900460ff1690565b600054610100900460ff1680610d125750610d12613247565b80610d20575060005460ff16155b610d5b5760405162461bcd60e51b815260040180806020018281038252602e815260200180613b05602e913960400191505060405180910390fd5b600054610100900460ff16158015610d86576000805460ff1961ff0019909116610100171660011790555b603d8054603f8054600a60ff199091161761ff0019166114001790556001600160801b0319166103e843016001600160801b03161761ffff60801b1916600160811b1761ffff60901b1916608760951b179055603580546001600160a01b0319166001600160a01b0388161790556040805160608101825260288082526020820152601491810191909152610e1f90603e9060036138fe565b50603680546001600160a01b03199081166001600160a01b0388811691909117909255603980548216858416179055603880548216868416179055603780549091168683161790819055610e7391166129d8565b604080516329965a1d60e01b815230600482018190527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b602483015260448201529051731820a4b7618bde71dce8cdc73aab6c95905fad24916329965a1d91606480830192600092919082900301818387803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050508015610f1c576000805461ff00191690555b505050505050565b602881565b610f31613243565b6034546001600160a01b03908116911614610f81576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b6006826001600160801b03161115610fd8576040805162461bcd60e51b815260206004820152601560248201527409cdee840c240ecc2d8d2c840e6d8dee88ae0dec6d605b1b604482015290519081900360640190fd5b603a826001600160801b031660068110610fee57fe5b60028104919091015460019091166010026101000a90046001600160801b031661105f576040805162461bcd60e51b815260206004820152601b60248201527f546869732045706f636820697320646563656e7472616c697a65640000000000604482015290519081900360640190fd5b6000611069610cdb565b9050805b603d54600160801b900461ffff1682016001600160801b0390811690821611611123576001600160801b03808216600090815260406020819052902060010154600160801b90041661111b57603a6110c482611c5a565b6001600160801b0316600681106110d757fe5b6002810491909101546001600160801b038381166000908152604060208190529020600190810180548316919094166010026101000a90920416600160801b021790555b60010161106d565b5081603a846001600160801b03166006811061113b57fe5b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b031602179055507f7eaf5be1f9cd1e33195565552e1b0a6fedc1a225aa861987e3c64f463060449a838360405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390a1505050565b603d54600090600160801b900461ffff166111d9610cdb565b016001600160801b0316826001600160801b03161015611240576040805162461bcd60e51b815260206004820152601f60248201527f41756374696f6e2068617320616c7265616479206265656e20636c6f73656400604482015290519081900360640190fd5b600061124b83611c5a565b6001600160801b0380851660009081526040602081905290206001015491925016156112e357603f546001600160801b038085166000908152604060208190529020600101546112de926112ba926064926112ab9291169060ff1661324d565b6001600160801b0316906132c7565b6001600160801b038086166000908152604060208190529020600101541690613309565b611370565b603f5461137090611334906064906112ab9060ff16603a6001600160801b0387166006811061130e57fe5b60028104919091015460019091166010026101000a90046001600160801b03169061324d565b603a836001600160801b03166006811061134a57fe5b60028104919091015460019091166010026101000a90046001600160801b031690613309565b9392505050565b6001600160a01b0390811660009081526042602052604090205416151590565b600260335414156113ef576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260335560006113ff82611a30565b90506000816001600160801b03161161145f576040805162461bcd60e51b815260206004820152601b60248201527f446f65736e2774206861766520656e6f7567682062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b03808316600090815260416020526040902080546001600160801b03191690556035546114959116838361336f565b604080516001600160801b038316815290516001600160a01b038416917f199ef0cb54d2b296ff6eaec2721bacf0ca3fd8344a43f5bdf4548b34dfa2594f919081900360200190a250506001603355565b603d546001600160801b031681565b603d54600160801b900461ffff1690565b6036546001600160a01b03163314611565576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204865726d657a20526f6c6c75702041646472657373000000000000604482015290519081900360640190fd5b61156f8143611c85565b6115ae576040805162461bcd60e51b815260206004820152600b60248201526a43616e277420666f72676560a81b604482015290519081900360640190fd5b60006115b8610cdb565b6001600160801b038181166000908152604060208190528120600281018054600160ff198216811790925591015493945060ff16929091600160801b909104161561162957506001600160801b03808316600090815260406020819052902060010154600160801b9004168061166a565b603a61163484611c5a565b6001600160801b03166006811061164757fe5b600291828204019190066010029054906101000a90046001600160801b03169050805b50816119d3576039546001600160a01b0385811691161480156116a957506001600160801b038084166000908152604060208190529020600101541615155b80156116d457506001600160801b038381166000908152604060208190529020600101548183169116105b15611779576001600160801b038381166000908152604060208181528183206001810180548616600160801b88881602179081905590546001600160a01b03908116855260428352838520541680855260419092529190922054919261173d9281169116613309565b6001600160a01b0391909116600090815260416020526040902080546001600160801b0319166001600160801b039092169190911790556119d3565b6039546001600160a01b038581169116146119d3576001600160801b03838116600090815260406020819052812060010180548316600160801b81021790819055603e5491926117d4926064926112ab92169060ff1661324d565b603e546001600160801b0386811660009081526040602081905281206001015493945092611812926064926112ab921690610100900460ff1661324d565b603e546001600160801b0387811660009081526040602081905281206001015493945092611851926064926112ab92169062010000900460ff1661324d565b6035546040805163fe9d930360e01b81526001600160801b03871660048201526024810182905260006044820181905291519394506001600160a01b039092169263fe9d930392608480820193929182900301818387803b1580156118b557600080fd5b505af11580156118c9573d6000803e3d6000fd5b50506038546001600160a01b03166000908152604160205260409020546118fc92506001600160801b0316905083613309565b6038546001600160a01b0390811660009081526041602052604080822080546001600160801b0319166001600160801b0395861617905560375490921681522054611948911682613309565b6037546001600160a01b0390811660009081526041602090815260409182902080546001600160801b0319166001600160801b03958616179055815187851681528685169181019190915284841681830152905192891692918a16917f9c1175e346e9ec25b59d991c43dd2c3c982970d169dbd7315ad3d8bb91e0acf5916060908290030190a35050505b6040516001600160801b038416906001600160a01b038616907f7cae662d4cfa9d9c5575c65f0cc41a858c51ca14ebcbd02a802a62376c3ad23890600090a350505050565b6038546001600160a01b031690565b603f5460ff1690565b6001600160a01b03166000908152604160205260409020546001600160801b031690565b611a5c613243565b6034546001600160a01b03908116911614611aac576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b603980546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f2161bd0f0e056d18046a81683e5bc845980367451cf4ca5148523a147c51be55916020908290030190a150565b611b0e613243565b6034546001600160a01b03908116911614611b5e576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b603880546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fa62863cbad1647a2855e9cd39d04fa6dfd32e1b9cfaff1aaf6523f4aaafeccd7916020908290030190a150565b611bc0613243565b6034546001600160a01b03908116911614611c10576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b6034546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603480546001600160a01b0319169055565b6000611c706001600160801b038316600661350c565b92915050565b6035546001600160a01b031681565b6000600160801b8210611cdf576040805162461bcd60e51b815260206004820152601d60248201527f626c6f636b4e756d62657220686967686572207468616e20325f313238000000604482015290519081900360640190fd5b603d546001600160801b0316821015611d3f576040805162461bcd60e51b815260206004820152601b60248201527f41756374696f6e20686173206e6f742073746172746564207965740000000000604482015290519081900360640190fd5b6000611d4a836123cf565b603d54909150600090611d9390611d83906001600160801b0390811690611d74908616602861324d565b6001600160801b031690613309565b6001600160801b0386169061354e565b6001600160801b0380841660009081526040602081905281206001015492935091600160801b90041615611ded57506001600160801b03808316600090815260406020819052902060010154600160801b90041680611e2e565b603a611df884611c5a565b6001600160801b031660068110611e0b57fe5b600291828204019190066010029054906101000a90046001600160801b03169050805b506001600160801b03831660009081526040602081905290206002015460ff16158015611e6e5750603f54610100900460ff166001600160801b03831610155b15611e7f5760019350505050611c70565b6001600160801b0383166000908152604060208190529020546001600160a01b038781169116148015611ed257506001600160801b03838116600090815260406020819052902060010154818316911610155b15611ee35760019350505050611c70565b6039546001600160a01b038781169116148015611f4457506001600160801b0383811660009081526040602081905290206001015481831691161080611f4457506001600160801b0380841660009081526040602081905290206001015416155b15611f555760019350505050611c70565b50600095945050505050565b611f69613243565b6034546001600160a01b03908116911614611fb9576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b602860ff82161115612012576040805162461bcd60e51b815260206004820152601c60248201527f47726561746572207468616e20424c4f434b535f5045525f534c4f5400000000604482015290519081900360640190fd5b603f805460ff80841661010090810261ff00199093169290921792839055604080519290930416815290517f4a0d90b611c15e02dbf23b10f35b936cf2c77665f8c77822d3eca131f9d986d39181900360200190a150565b61207383611377565b6120bc576040805162461bcd60e51b8152602060048201526015602482015274466f7267657220646f65736e27742065786973747360581b604482015290519081900360640190fd5b6001600160a01b0383811660009081526042602052604090205416331461212a576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920746865207769746864726177616c41646472657373000000000000604482015290519081900360640190fd5b6001600160a01b038216612185576040805162461bcd60e51b815260206004820152601e60248201527f5769746864726177616c416464726573732063616e2774206265203078300000604482015290519081900360640190fd5b6001600160a01b03838116600090815260426020908152604090912080546001600160a01b03191692851692909217825582516121c89260010191840190613991565b506001600160a01b0380841660008181526042602090815260409182902080548351948552909416908301819052606091830182815260019485018054600260001997821615610100029790970116959095049284018390527f384460dae6dd1682b71131272b0e47bcd8ecef844d632c5062db277378a868c594889492939092919060808301908490801561229f5780601f106122745761010080835404028352916020019161229f565b820191906000526020600020905b81548152906001019060200180831161228257829003601f168201915b505094505050505060405180910390a1505050565b6034546001600160a01b031690565b6000603a8260ff16600681106122d557fe5b600291828204019190066010029054906101000a90046001600160801b03169050919050565b6042602090815260009182526040918290208054600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582526001600160a01b039092169492939092908301828280156123a55780601f1061237a576101008083540402835291602001916123a5565b820191906000526020600020905b81548152906001019060200180831161238857829003601f168201915b5050505050905082565b603d54600160901b900461ffff1690565b6036546001600160a01b031681565b603d546000906001600160801b0390811690831610156123f0576000611c70565b50603d5460286001600160801b03918216909203160490565b61241282611377565b15612459576040805162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b6001600160a01b038216600090815260426020908152604090912080546001600160a01b03191633178155825161249892600190920191840190613991565b506001600160a01b0380831660008181526042602090815260409182902080548351948552909416908301819052606091830182815260019485018054600260001997821615610100029790970116959095049284018390527f669c2ad52258689ce95b5b33025822b1afde214fff3a61dd00007d98b5b2ca3694879492939092919060808301908490801561256f5780601f106125445761010080835404028352916020019161256f565b820191906000526020600020905b81548152906001019060200180831161255257829003601f168201915b505094505050505060405180910390a15050565b6039546001600160a01b031690565b6040602081905260009182529020805460018201546002909201546001600160a01b03909116916001600160801b0380821692600160801b909204169060ff1684565b6103e881565b6125e3613243565b6034546001600160a01b03908116911614612633576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b603d5461ffff600160801b90910481169082161015612699576040805162461bcd60e51b815260206004820152601f60248201527f536d616c6c6572207468616e20636c6f73656441756374696f6e536c6f747300604482015290519081900360640190fd5b603d805461ffff808416600160901b90810261ffff60901b199093169290921792839055604080519290930416815290517f3da0492dea7298351bc14d1c0699905fd0657c33487449751af50fc0c8b593f19181900360200190a150565b6126ff613243565b6034546001600160a01b0390811691161461274f576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b603d5461ffff600160901b909104811690821611156127b5576040805162461bcd60e51b815260206004820152601f60248201527f47726561746572207468616e20636c6f73656441756374696f6e536c6f747300604482015290519081900360640190fd5b603d805461ffff808416600160801b90810261ffff60801b199093169290921792839055604080519290930416815290517fc78051d3757db196b1e445f3a9a1380944518c69b5d7922ec747c54f0340a4ea9181900360200190a150565b61281b613243565b6034546001600160a01b0390811691161461286b576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b806002602002015181600160200201518260006020020151010160ff166064146128dc576040805162461bcd60e51b815260206004820152601e60248201527f416c6c6f636174696f6e526174696f2068617320746f20626520313030250000604482015290519081900360640190fd5b6128e9603e8260036138fe565b506040517f065446964eb025d703d01a33acfb9cf2aa2a362fc961d7e92ca0a7d927f3d44d90603e9060608101826000835b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161291b579050505091505060405180910390a150565b678ac7230489e8000081565b61296d613a0b565b60408051606081019182905290603e90600390826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116129855790505050505050905090565b6041602052600090815260409020546001600160801b031681565b6129e0613243565b6034546001600160a01b03908116911614612a30576040805162461bcd60e51b81526020600482018190526024820152600080516020613ae5833981519152604482015290519081900360640190fd5b6001600160a01b038116612a755760405162461bcd60e51b8152600401808060200182810382526026815260200180613a9e6026913960400191505060405180910390fd5b6034546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603480546001600160a01b0319166001600160a01b0392909216919091179055565b60008080612ae28460048188613a75565b6060811015612af057600080fd5b5080356001600160801b0390811694506020820135169250604001356001600160a01b03169050612b2081611377565b612b71576040805162461bcd60e51b815260206004820152601a60248201527f436f6f7264696e61746f72206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b603d54600160801b900461ffff16612b87610cdb565b016001600160801b0316836001600160801b03161015612bee576040805162461bcd60e51b815260206004820152601f60248201527f41756374696f6e2068617320616c7265616479206265656e20636c6f73656400604482015290519081900360640190fd5b612bf7836111c0565b6001600160801b0316826001600160801b03161015612c51576040805162461bcd60e51b81526020600482015260116024820152704269642062656c6f77206d696e696d756d60781b604482015290519081900360640190fd5b603d5461ffff600160901b8204811691600160801b900416612c71610cdb565b01016001600160801b0316836001600160801b031610612cd8576040805162461bcd60e51b815260206004820152601b60248201527f42696420686173206e6f74206265656e206f70656e6564207965740000000000604482015290519081900360640190fd5b6001600160a01b038082166000908152604260209081526040808320549093168252604190522054612d13906001600160801b031687613309565b6001600160a01b038281166000908152604260209081526040808320805485168452604190925280832080546001600160801b0319166001600160801b0396871617905590549092168152205483821691161015612db8576040805162461bcd60e51b815260206004820152601a60248201527f446f206e6f74206861766520656e6f7567682062616c616e6365000000000000604482015290519081900360640190fd5b610f1c838383613590565b600080612dce613a29565b60008080612ddf876004818b613a75565b610160811015612dee57600080fd5b6040805160c081810183526001600160801b03853581169560208101359091169481019390926101008401929091840190600690839083908082843760009201919091525050603d54969c50949a50985080356001600160801b0390811698506020820135169650604001356001600160a01b031694505050600160801b90910461ffff169050612e7d610cdb565b016001600160801b0316866001600160801b03161015612ee4576040805162461bcd60e51b815260206004820152601f60248201527f41756374696f6e2068617320616c7265616479206265656e20636c6f73656400604482015290519081900360640190fd5b603d5461ffff600160901b8204811691600160801b900416612f04610cdb565b01016001600160801b0316856001600160801b031610612f6b576040805162461bcd60e51b815260206004820152601b60248201527f42696420686173206e6f74206265656e206f70656e6564207965740000000000604482015290519081900360640190fd5b816001600160801b0316836001600160801b03161015612fd2576040805162461bcd60e51b815260206004820181905260248201527f6d61784269642073686f756c64206265203e3d20636c6f7365644d696e426964604482015290519081900360640190fd5b612fdb81611377565b61302c576040805162461bcd60e51b815260206004820152601a60248201527f436f6f7264696e61746f72206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b6000805b600681101561305e5785816006811061304557fe5b602002015115613056576001909101905b600101613030565b506001600160a01b03808316600090815260426020908152604080832054909316825260419052205461309a906001600160801b03168b613309565b6001600160a01b0383811660009081526042602090815260408083205490931682526041905290812080546001600160801b0319166001600160801b039390931692909217909155875b876001600160801b0316816001600160801b031611613235576000613108826111c0565b9050856001600160801b0316816001600160801b03161161312b57859250613171565b856001600160801b0316816001600160801b031611801561315e5750866001600160801b0316816001600160801b031611155b1561316b57809250613171565b5061322d565b8761317b83611c5a565b6001600160801b03166006811061318e57fe5b60200201511561322b576001600160a01b0380861660009081526042602090815260408083205490931682526041905220546001600160801b0380851691161015613220576040805162461bcd60e51b815260206004820152601a60248201527f446f206e6f74206861766520656e6f7567682062616c616e6365000000000000604482015290519081900360640190fd5b61322b828487613590565b505b6001016130e4565b505050505050505050505050565b3390565b303b1590565b60006001600160801b03831661326557506000611c70565b8282026001600160801b03808416908086169083168161328157fe5b046001600160801b0316146113705760405162461bcd60e51b8152600401808060200182810382526021815260200180613ac46021913960400191505060405180910390fd5b600061137083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613757565b60008282016001600160801b038085169082161015611370576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526001600160801b038516604480840191909152845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106134275780518252601f199092019160209182019101613408565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613489576040519150601f19603f3d011682016040523d82523d6000602084013e61348e565b606091505b50915091508180156134bc5750805115806134bc57508080602001905160208110156134b957600080fd5b50515b613505576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b88151c985b9cd9995c8811985a5b1959605a1b604482015290519081900360640190fd5b5050505050565b600061137083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250613814565b600061137083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613891565b6001600160801b0380841660009081526040602081815281832080546001909101546001600160a01b03878116865260428452848620548116865260419093529290932054921692908116916135e791168561354e565b6001600160a01b03848116600081815260426020908152604080832054851683526041825280832080546001600160801b03199081166001600160801b03988916179091558b871684529181905290912080546001600160a01b031916909217825560019190910180549091169287169290921790915582161580159061367657506001600160801b03811615155b156136fc576001600160a01b0380831660009081526042602090815260408083205490931682526041905220546136b6906001600160801b031682613309565b6001600160a01b038381166000908152604260209081526040808320549093168252604190522080546001600160801b0319166001600160801b03929092169190911790555b826001600160a01b0316856001600160801b03167fd48e8329cdb2fb109b4fe445d7b681a74b256bff16e6f7f33b9d4fbe9038e4338660405180826001600160801b0316815260200191505060405180910390a35050505050565b6000816001600160801b0384166137ec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137b1578181015183820152602001613799565b50505050905090810190601f1680156137de5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000836001600160801b0316856001600160801b03168161380a57fe5b0495945050505050565b6000816001600160801b03841661386c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156137b1578181015183820152602001613799565b50826001600160801b0316846001600160801b03168161388857fe5b06949350505050565b6000836001600160801b0316836001600160801b0316111582906138f65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156137b1578181015183820152602001613799565b505050900390565b6001830191839082156139815791602002820160005b8382111561395257835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613914565b801561397f5782816101000a81549060ff0219169055600101602081600001049283019260010302613952565b505b5061398d929150613a47565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139d257805160ff19168380011785556139ff565b828001600101855582156139ff579182015b828111156139ff5782518255916020019190600101906139e4565b5061398d929150613a60565b60405180606001604052806003906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b5b8082111561398d57805460ff19168155600101613a48565b5b8082111561398d5760008155600101613a61565b60008085851115613a84578182fd5b83861115613a90578182fd5b505082019391909203915056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212206fc0f7f42a55361590382c9b9e2cc5069ccdd7a72b18ef6d99aedc4cf091bacb64736f6c634300060c0033" + +// DeployHermezAuctionProtocol deploys a new Ethereum contract, binding an instance of HermezAuctionProtocol to it. +func DeployHermezAuctionProtocol(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *HermezAuctionProtocol, error) { + parsed, err := abi.JSON(strings.NewReader(HermezAuctionProtocolABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(HermezAuctionProtocolBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &HermezAuctionProtocol{HermezAuctionProtocolCaller: HermezAuctionProtocolCaller{contract: contract}, HermezAuctionProtocolTransactor: HermezAuctionProtocolTransactor{contract: contract}, HermezAuctionProtocolFilterer: HermezAuctionProtocolFilterer{contract: contract}}, nil +} + +// HermezAuctionProtocol is an auto generated Go binding around an Ethereum contract. +type HermezAuctionProtocol struct { + HermezAuctionProtocolCaller // Read-only binding to the contract + HermezAuctionProtocolTransactor // Write-only binding to the contract + HermezAuctionProtocolFilterer // Log filterer for contract events +} + +// HermezAuctionProtocolCaller is an auto generated read-only Go binding around an Ethereum contract. +type HermezAuctionProtocolCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezAuctionProtocolTransactor is an auto generated write-only Go binding around an Ethereum contract. +type HermezAuctionProtocolTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezAuctionProtocolFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type HermezAuctionProtocolFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezAuctionProtocolSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type HermezAuctionProtocolSession struct { + Contract *HermezAuctionProtocol // 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 +} + +// HermezAuctionProtocolCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type HermezAuctionProtocolCallerSession struct { + Contract *HermezAuctionProtocolCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// HermezAuctionProtocolTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type HermezAuctionProtocolTransactorSession struct { + Contract *HermezAuctionProtocolTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// HermezAuctionProtocolRaw is an auto generated low-level Go binding around an Ethereum contract. +type HermezAuctionProtocolRaw struct { + Contract *HermezAuctionProtocol // Generic contract binding to access the raw methods on +} + +// HermezAuctionProtocolCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type HermezAuctionProtocolCallerRaw struct { + Contract *HermezAuctionProtocolCaller // Generic read-only contract binding to access the raw methods on +} + +// HermezAuctionProtocolTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type HermezAuctionProtocolTransactorRaw struct { + Contract *HermezAuctionProtocolTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewHermezAuctionProtocol creates a new instance of HermezAuctionProtocol, bound to a specific deployed contract. +func NewHermezAuctionProtocol(address common.Address, backend bind.ContractBackend) (*HermezAuctionProtocol, error) { + contract, err := bindHermezAuctionProtocol(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &HermezAuctionProtocol{HermezAuctionProtocolCaller: HermezAuctionProtocolCaller{contract: contract}, HermezAuctionProtocolTransactor: HermezAuctionProtocolTransactor{contract: contract}, HermezAuctionProtocolFilterer: HermezAuctionProtocolFilterer{contract: contract}}, nil +} + +// NewHermezAuctionProtocolCaller creates a new read-only instance of HermezAuctionProtocol, bound to a specific deployed contract. +func NewHermezAuctionProtocolCaller(address common.Address, caller bind.ContractCaller) (*HermezAuctionProtocolCaller, error) { + contract, err := bindHermezAuctionProtocol(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolCaller{contract: contract}, nil +} + +// NewHermezAuctionProtocolTransactor creates a new write-only instance of HermezAuctionProtocol, bound to a specific deployed contract. +func NewHermezAuctionProtocolTransactor(address common.Address, transactor bind.ContractTransactor) (*HermezAuctionProtocolTransactor, error) { + contract, err := bindHermezAuctionProtocol(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolTransactor{contract: contract}, nil +} + +// NewHermezAuctionProtocolFilterer creates a new log filterer instance of HermezAuctionProtocol, bound to a specific deployed contract. +func NewHermezAuctionProtocolFilterer(address common.Address, filterer bind.ContractFilterer) (*HermezAuctionProtocolFilterer, error) { + contract, err := bindHermezAuctionProtocol(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolFilterer{contract: contract}, nil +} + +// bindHermezAuctionProtocol binds a generic wrapper to an already deployed contract. +func bindHermezAuctionProtocol(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(HermezAuctionProtocolABI)) + 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 (_HermezAuctionProtocol *HermezAuctionProtocolRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _HermezAuctionProtocol.Contract.HermezAuctionProtocolCaller.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 (_HermezAuctionProtocol *HermezAuctionProtocolRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.HermezAuctionProtocolTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_HermezAuctionProtocol *HermezAuctionProtocolRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.HermezAuctionProtocolTransactor.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 (_HermezAuctionProtocol *HermezAuctionProtocolCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _HermezAuctionProtocol.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 (_HermezAuctionProtocol *HermezAuctionProtocolTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.contract.Transact(opts, method, params...) +} + +// BLOCKSPERSLOT is a free data retrieval call binding the contract method 0x2243de47. +// +// Solidity: function BLOCKS_PER_SLOT() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) BLOCKSPERSLOT(opts *bind.CallOpts) (uint8, error) { + var ( + ret0 = new(uint8) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "BLOCKS_PER_SLOT") + return *ret0, err +} + +// BLOCKSPERSLOT is a free data retrieval call binding the contract method 0x2243de47. +// +// Solidity: function BLOCKS_PER_SLOT() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) BLOCKSPERSLOT() (uint8, error) { + return _HermezAuctionProtocol.Contract.BLOCKSPERSLOT(&_HermezAuctionProtocol.CallOpts) +} + +// BLOCKSPERSLOT is a free data retrieval call binding the contract method 0x2243de47. +// +// Solidity: function BLOCKS_PER_SLOT() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) BLOCKSPERSLOT() (uint8, error) { + return _HermezAuctionProtocol.Contract.BLOCKSPERSLOT(&_HermezAuctionProtocol.CallOpts) +} + +// DELAYGENESIS is a free data retrieval call binding the contract method 0xbf06b765. +// +// Solidity: function DELAY_GENESIS() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) DELAYGENESIS(opts *bind.CallOpts) (uint16, error) { + var ( + ret0 = new(uint16) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "DELAY_GENESIS") + return *ret0, err +} + +// DELAYGENESIS is a free data retrieval call binding the contract method 0xbf06b765. +// +// Solidity: function DELAY_GENESIS() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) DELAYGENESIS() (uint16, error) { + return _HermezAuctionProtocol.Contract.DELAYGENESIS(&_HermezAuctionProtocol.CallOpts) +} + +// DELAYGENESIS is a free data retrieval call binding the contract method 0xbf06b765. +// +// Solidity: function DELAY_GENESIS() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) DELAYGENESIS() (uint16, error) { + return _HermezAuctionProtocol.Contract.DELAYGENESIS(&_HermezAuctionProtocol.CallOpts) +} + +// INITIALMINIMALBIDDING is a free data retrieval call binding the contract method 0xe6065914. +// +// Solidity: function INITIAL_MINIMAL_BIDDING() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) INITIALMINIMALBIDDING(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "INITIAL_MINIMAL_BIDDING") + return *ret0, err +} + +// INITIALMINIMALBIDDING is a free data retrieval call binding the contract method 0xe6065914. +// +// Solidity: function INITIAL_MINIMAL_BIDDING() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) INITIALMINIMALBIDDING() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.INITIALMINIMALBIDDING(&_HermezAuctionProtocol.CallOpts) +} + +// INITIALMINIMALBIDDING is a free data retrieval call binding the contract method 0xe6065914. +// +// Solidity: function INITIAL_MINIMAL_BIDDING() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) INITIALMINIMALBIDDING() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.INITIALMINIMALBIDDING(&_HermezAuctionProtocol.CallOpts) +} + +// CanForge is a free data retrieval call binding the contract method 0x83b1f6a0. +// +// Solidity: function canForge(address forger, uint256 blockNumber) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) CanForge(opts *bind.CallOpts, forger common.Address, blockNumber *big.Int) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "canForge", forger, blockNumber) + return *ret0, err +} + +// CanForge is a free data retrieval call binding the contract method 0x83b1f6a0. +// +// Solidity: function canForge(address forger, uint256 blockNumber) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) CanForge(forger common.Address, blockNumber *big.Int) (bool, error) { + return _HermezAuctionProtocol.Contract.CanForge(&_HermezAuctionProtocol.CallOpts, forger, blockNumber) +} + +// CanForge is a free data retrieval call binding the contract method 0x83b1f6a0. +// +// Solidity: function canForge(address forger, uint256 blockNumber) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) CanForge(forger common.Address, blockNumber *big.Int) (bool, error) { + return _HermezAuctionProtocol.Contract.CanForge(&_HermezAuctionProtocol.CallOpts, forger, blockNumber) +} + +// Coordinators is a free data retrieval call binding the contract method 0xa48af096. +// +// Solidity: function coordinators(address ) view returns(address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) Coordinators(opts *bind.CallOpts, arg0 common.Address) (struct { + WithdrawalAddress common.Address + CoordinatorURL string +}, error) { + ret := new(struct { + WithdrawalAddress common.Address + CoordinatorURL string + }) + out := ret + err := _HermezAuctionProtocol.contract.Call(opts, out, "coordinators", arg0) + return *ret, err +} + +// Coordinators is a free data retrieval call binding the contract method 0xa48af096. +// +// Solidity: function coordinators(address ) view returns(address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) Coordinators(arg0 common.Address) (struct { + WithdrawalAddress common.Address + CoordinatorURL string +}, error) { + return _HermezAuctionProtocol.Contract.Coordinators(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// Coordinators is a free data retrieval call binding the contract method 0xa48af096. +// +// Solidity: function coordinators(address ) view returns(address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) Coordinators(arg0 common.Address) (struct { + WithdrawalAddress common.Address + CoordinatorURL string +}, error) { + return _HermezAuctionProtocol.Contract.Coordinators(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// GenesisBlock is a free data retrieval call binding the contract method 0x4cdc9c63. +// +// Solidity: function genesisBlock() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GenesisBlock(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "genesisBlock") + return *ret0, err +} + +// GenesisBlock is a free data retrieval call binding the contract method 0x4cdc9c63. +// +// Solidity: function genesisBlock() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GenesisBlock() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GenesisBlock(&_HermezAuctionProtocol.CallOpts) +} + +// GenesisBlock is a free data retrieval call binding the contract method 0x4cdc9c63. +// +// Solidity: function genesisBlock() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GenesisBlock() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GenesisBlock(&_HermezAuctionProtocol.CallOpts) +} + +// GetAllocationRatio is a free data retrieval call binding the contract method 0xec29159b. +// +// Solidity: function getAllocationRatio() view returns(uint8[3]) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetAllocationRatio(opts *bind.CallOpts) ([3]uint8, error) { + var ( + ret0 = new([3]uint8) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getAllocationRatio") + return *ret0, err +} + +// GetAllocationRatio is a free data retrieval call binding the contract method 0xec29159b. +// +// Solidity: function getAllocationRatio() view returns(uint8[3]) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetAllocationRatio() ([3]uint8, error) { + return _HermezAuctionProtocol.Contract.GetAllocationRatio(&_HermezAuctionProtocol.CallOpts) +} + +// GetAllocationRatio is a free data retrieval call binding the contract method 0xec29159b. +// +// Solidity: function getAllocationRatio() view returns(uint8[3]) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetAllocationRatio() ([3]uint8, error) { + return _HermezAuctionProtocol.Contract.GetAllocationRatio(&_HermezAuctionProtocol.CallOpts) +} + +// GetBootCoordinator is a free data retrieval call binding the contract method 0xb5f7f2f0. +// +// Solidity: function getBootCoordinator() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetBootCoordinator(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getBootCoordinator") + return *ret0, err +} + +// GetBootCoordinator is a free data retrieval call binding the contract method 0xb5f7f2f0. +// +// Solidity: function getBootCoordinator() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetBootCoordinator() (common.Address, error) { + return _HermezAuctionProtocol.Contract.GetBootCoordinator(&_HermezAuctionProtocol.CallOpts) +} + +// GetBootCoordinator is a free data retrieval call binding the contract method 0xb5f7f2f0. +// +// Solidity: function getBootCoordinator() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetBootCoordinator() (common.Address, error) { + return _HermezAuctionProtocol.Contract.GetBootCoordinator(&_HermezAuctionProtocol.CallOpts) +} + +// GetClaimableHEZ is a free data retrieval call binding the contract method 0x5cca4903. +// +// Solidity: function getClaimableHEZ(address claimAddress) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetClaimableHEZ(opts *bind.CallOpts, claimAddress common.Address) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getClaimableHEZ", claimAddress) + return *ret0, err +} + +// GetClaimableHEZ is a free data retrieval call binding the contract method 0x5cca4903. +// +// Solidity: function getClaimableHEZ(address claimAddress) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetClaimableHEZ(claimAddress common.Address) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetClaimableHEZ(&_HermezAuctionProtocol.CallOpts, claimAddress) +} + +// GetClaimableHEZ is a free data retrieval call binding the contract method 0x5cca4903. +// +// Solidity: function getClaimableHEZ(address claimAddress) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetClaimableHEZ(claimAddress common.Address) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetClaimableHEZ(&_HermezAuctionProtocol.CallOpts, claimAddress) +} + +// GetClosedAuctionSlots is a free data retrieval call binding the contract method 0x4da9639d. +// +// Solidity: function getClosedAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetClosedAuctionSlots(opts *bind.CallOpts) (uint16, error) { + var ( + ret0 = new(uint16) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getClosedAuctionSlots") + return *ret0, err +} + +// GetClosedAuctionSlots is a free data retrieval call binding the contract method 0x4da9639d. +// +// Solidity: function getClosedAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetClosedAuctionSlots() (uint16, error) { + return _HermezAuctionProtocol.Contract.GetClosedAuctionSlots(&_HermezAuctionProtocol.CallOpts) +} + +// GetClosedAuctionSlots is a free data retrieval call binding the contract method 0x4da9639d. +// +// Solidity: function getClosedAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetClosedAuctionSlots() (uint16, error) { + return _HermezAuctionProtocol.Contract.GetClosedAuctionSlots(&_HermezAuctionProtocol.CallOpts) +} + +// GetCurrentSlotNumber is a free data retrieval call binding the contract method 0x0c4da4f6. +// +// Solidity: function getCurrentSlotNumber() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetCurrentSlotNumber(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getCurrentSlotNumber") + return *ret0, err +} + +// GetCurrentSlotNumber is a free data retrieval call binding the contract method 0x0c4da4f6. +// +// Solidity: function getCurrentSlotNumber() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetCurrentSlotNumber() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetCurrentSlotNumber(&_HermezAuctionProtocol.CallOpts) +} + +// GetCurrentSlotNumber is a free data retrieval call binding the contract method 0x0c4da4f6. +// +// Solidity: function getCurrentSlotNumber() view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetCurrentSlotNumber() (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetCurrentSlotNumber(&_HermezAuctionProtocol.CallOpts) +} + +// GetDonationAddress is a free data retrieval call binding the contract method 0x54c03ab7. +// +// Solidity: function getDonationAddress() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetDonationAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getDonationAddress") + return *ret0, err +} + +// GetDonationAddress is a free data retrieval call binding the contract method 0x54c03ab7. +// +// Solidity: function getDonationAddress() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetDonationAddress() (common.Address, error) { + return _HermezAuctionProtocol.Contract.GetDonationAddress(&_HermezAuctionProtocol.CallOpts) +} + +// GetDonationAddress is a free data retrieval call binding the contract method 0x54c03ab7. +// +// Solidity: function getDonationAddress() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetDonationAddress() (common.Address, error) { + return _HermezAuctionProtocol.Contract.GetDonationAddress(&_HermezAuctionProtocol.CallOpts) +} + +// GetEpoch is a free data retrieval call binding the contract method 0x763889fa. +// +// Solidity: function getEpoch(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetEpoch(opts *bind.CallOpts, slot *big.Int) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getEpoch", slot) + return *ret0, err +} + +// GetEpoch is a free data retrieval call binding the contract method 0x763889fa. +// +// Solidity: function getEpoch(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetEpoch(slot *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetEpoch(&_HermezAuctionProtocol.CallOpts, slot) +} + +// GetEpoch is a free data retrieval call binding the contract method 0x763889fa. +// +// Solidity: function getEpoch(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetEpoch(slot *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetEpoch(&_HermezAuctionProtocol.CallOpts, slot) +} + +// GetMinBidBySlot is a free data retrieval call binding the contract method 0x37d1bd0b. +// +// Solidity: function getMinBidBySlot(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetMinBidBySlot(opts *bind.CallOpts, slot *big.Int) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getMinBidBySlot", slot) + return *ret0, err +} + +// GetMinBidBySlot is a free data retrieval call binding the contract method 0x37d1bd0b. +// +// Solidity: function getMinBidBySlot(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetMinBidBySlot(slot *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetMinBidBySlot(&_HermezAuctionProtocol.CallOpts, slot) +} + +// GetMinBidBySlot is a free data retrieval call binding the contract method 0x37d1bd0b. +// +// Solidity: function getMinBidBySlot(uint128 slot) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetMinBidBySlot(slot *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetMinBidBySlot(&_HermezAuctionProtocol.CallOpts, slot) +} + +// GetMinBidEpoch is a free data retrieval call binding the contract method 0xa0c477a1. +// +// Solidity: function getMinBidEpoch(uint8 epoch) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetMinBidEpoch(opts *bind.CallOpts, epoch uint8) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getMinBidEpoch", epoch) + return *ret0, err +} + +// GetMinBidEpoch is a free data retrieval call binding the contract method 0xa0c477a1. +// +// Solidity: function getMinBidEpoch(uint8 epoch) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetMinBidEpoch(epoch uint8) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetMinBidEpoch(&_HermezAuctionProtocol.CallOpts, epoch) +} + +// GetMinBidEpoch is a free data retrieval call binding the contract method 0xa0c477a1. +// +// Solidity: function getMinBidEpoch(uint8 epoch) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetMinBidEpoch(epoch uint8) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetMinBidEpoch(&_HermezAuctionProtocol.CallOpts, epoch) +} + +// GetOpenAuctionSlots is a free data retrieval call binding the contract method 0xac4b9012. +// +// Solidity: function getOpenAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetOpenAuctionSlots(opts *bind.CallOpts) (uint16, error) { + var ( + ret0 = new(uint16) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getOpenAuctionSlots") + return *ret0, err +} + +// GetOpenAuctionSlots is a free data retrieval call binding the contract method 0xac4b9012. +// +// Solidity: function getOpenAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetOpenAuctionSlots() (uint16, error) { + return _HermezAuctionProtocol.Contract.GetOpenAuctionSlots(&_HermezAuctionProtocol.CallOpts) +} + +// GetOpenAuctionSlots is a free data retrieval call binding the contract method 0xac4b9012. +// +// Solidity: function getOpenAuctionSlots() view returns(uint16) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetOpenAuctionSlots() (uint16, error) { + return _HermezAuctionProtocol.Contract.GetOpenAuctionSlots(&_HermezAuctionProtocol.CallOpts) +} + +// GetOutbidding is a free data retrieval call binding the contract method 0x55b442e6. +// +// Solidity: function getOutbidding() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetOutbidding(opts *bind.CallOpts) (uint8, error) { + var ( + ret0 = new(uint8) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getOutbidding") + return *ret0, err +} + +// GetOutbidding is a free data retrieval call binding the contract method 0x55b442e6. +// +// Solidity: function getOutbidding() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetOutbidding() (uint8, error) { + return _HermezAuctionProtocol.Contract.GetOutbidding(&_HermezAuctionProtocol.CallOpts) +} + +// GetOutbidding is a free data retrieval call binding the contract method 0x55b442e6. +// +// Solidity: function getOutbidding() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetOutbidding() (uint8, error) { + return _HermezAuctionProtocol.Contract.GetOutbidding(&_HermezAuctionProtocol.CallOpts) +} + +// GetSlotDeadline is a free data retrieval call binding the contract method 0x13de9af2. +// +// Solidity: function getSlotDeadline() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetSlotDeadline(opts *bind.CallOpts) (uint8, error) { + var ( + ret0 = new(uint8) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getSlotDeadline") + return *ret0, err +} + +// GetSlotDeadline is a free data retrieval call binding the contract method 0x13de9af2. +// +// Solidity: function getSlotDeadline() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetSlotDeadline() (uint8, error) { + return _HermezAuctionProtocol.Contract.GetSlotDeadline(&_HermezAuctionProtocol.CallOpts) +} + +// GetSlotDeadline is a free data retrieval call binding the contract method 0x13de9af2. +// +// Solidity: function getSlotDeadline() view returns(uint8) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetSlotDeadline() (uint8, error) { + return _HermezAuctionProtocol.Contract.GetSlotDeadline(&_HermezAuctionProtocol.CallOpts) +} + +// GetSlotNumber is a free data retrieval call binding the contract method 0xb3dc7bb1. +// +// Solidity: function getSlotNumber(uint128 blockNumber) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) GetSlotNumber(opts *bind.CallOpts, blockNumber *big.Int) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "getSlotNumber", blockNumber) + return *ret0, err +} + +// GetSlotNumber is a free data retrieval call binding the contract method 0xb3dc7bb1. +// +// Solidity: function getSlotNumber(uint128 blockNumber) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) GetSlotNumber(blockNumber *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetSlotNumber(&_HermezAuctionProtocol.CallOpts, blockNumber) +} + +// GetSlotNumber is a free data retrieval call binding the contract method 0xb3dc7bb1. +// +// Solidity: function getSlotNumber(uint128 blockNumber) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) GetSlotNumber(blockNumber *big.Int) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.GetSlotNumber(&_HermezAuctionProtocol.CallOpts, blockNumber) +} + +// HermezRollup is a free data retrieval call binding the contract method 0xaebd6d98. +// +// Solidity: function hermezRollup() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) HermezRollup(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "hermezRollup") + return *ret0, err +} + +// HermezRollup is a free data retrieval call binding the contract method 0xaebd6d98. +// +// Solidity: function hermezRollup() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) HermezRollup() (common.Address, error) { + return _HermezAuctionProtocol.Contract.HermezRollup(&_HermezAuctionProtocol.CallOpts) +} + +// HermezRollup is a free data retrieval call binding the contract method 0xaebd6d98. +// +// Solidity: function hermezRollup() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) HermezRollup() (common.Address, error) { + return _HermezAuctionProtocol.Contract.HermezRollup(&_HermezAuctionProtocol.CallOpts) +} + +// IsRegisteredCoordinator is a free data retrieval call binding the contract method 0x3bebeb06. +// +// Solidity: function isRegisteredCoordinator(address forgerAddress) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) IsRegisteredCoordinator(opts *bind.CallOpts, forgerAddress common.Address) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "isRegisteredCoordinator", forgerAddress) + return *ret0, err +} + +// IsRegisteredCoordinator is a free data retrieval call binding the contract method 0x3bebeb06. +// +// Solidity: function isRegisteredCoordinator(address forgerAddress) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) IsRegisteredCoordinator(forgerAddress common.Address) (bool, error) { + return _HermezAuctionProtocol.Contract.IsRegisteredCoordinator(&_HermezAuctionProtocol.CallOpts, forgerAddress) +} + +// IsRegisteredCoordinator is a free data retrieval call binding the contract method 0x3bebeb06. +// +// Solidity: function isRegisteredCoordinator(address forgerAddress) view returns(bool) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) IsRegisteredCoordinator(forgerAddress common.Address) (bool, error) { + return _HermezAuctionProtocol.Contract.IsRegisteredCoordinator(&_HermezAuctionProtocol.CallOpts, forgerAddress) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "owner") + return *ret0, err +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) Owner() (common.Address, error) { + return _HermezAuctionProtocol.Contract.Owner(&_HermezAuctionProtocol.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) Owner() (common.Address, error) { + return _HermezAuctionProtocol.Contract.Owner(&_HermezAuctionProtocol.CallOpts) +} + +// PendingBalances is a free data retrieval call binding the contract method 0xecdae41b. +// +// Solidity: function pendingBalances(address ) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) PendingBalances(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "pendingBalances", arg0) + return *ret0, err +} + +// PendingBalances is a free data retrieval call binding the contract method 0xecdae41b. +// +// Solidity: function pendingBalances(address ) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) PendingBalances(arg0 common.Address) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.PendingBalances(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// PendingBalances is a free data retrieval call binding the contract method 0xecdae41b. +// +// Solidity: function pendingBalances(address ) view returns(uint128) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) PendingBalances(arg0 common.Address) (*big.Int, error) { + return _HermezAuctionProtocol.Contract.PendingBalances(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// Slots is a free data retrieval call binding the contract method 0xbc415567. +// +// Solidity: function slots(uint128 ) view returns(address forger, uint128 bidAmount, uint128 closedMinBid, bool fulfilled) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) Slots(opts *bind.CallOpts, arg0 *big.Int) (struct { + Forger common.Address + BidAmount *big.Int + ClosedMinBid *big.Int + Fulfilled bool +}, error) { + ret := new(struct { + Forger common.Address + BidAmount *big.Int + ClosedMinBid *big.Int + Fulfilled bool + }) + out := ret + err := _HermezAuctionProtocol.contract.Call(opts, out, "slots", arg0) + return *ret, err +} + +// Slots is a free data retrieval call binding the contract method 0xbc415567. +// +// Solidity: function slots(uint128 ) view returns(address forger, uint128 bidAmount, uint128 closedMinBid, bool fulfilled) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) Slots(arg0 *big.Int) (struct { + Forger common.Address + BidAmount *big.Int + ClosedMinBid *big.Int + Fulfilled bool +}, error) { + return _HermezAuctionProtocol.Contract.Slots(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// Slots is a free data retrieval call binding the contract method 0xbc415567. +// +// Solidity: function slots(uint128 ) view returns(address forger, uint128 bidAmount, uint128 closedMinBid, bool fulfilled) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) Slots(arg0 *big.Int) (struct { + Forger common.Address + BidAmount *big.Int + ClosedMinBid *big.Int + Fulfilled bool +}, error) { + return _HermezAuctionProtocol.Contract.Slots(&_HermezAuctionProtocol.CallOpts, arg0) +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCaller) TokenHEZ(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _HermezAuctionProtocol.contract.Call(opts, out, "tokenHEZ") + return *ret0, err +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) TokenHEZ() (common.Address, error) { + return _HermezAuctionProtocol.Contract.TokenHEZ(&_HermezAuctionProtocol.CallOpts) +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_HermezAuctionProtocol *HermezAuctionProtocolCallerSession) TokenHEZ() (common.Address, error) { + return _HermezAuctionProtocol.Contract.TokenHEZ(&_HermezAuctionProtocol.CallOpts) +} + +// ChangeEpochMinBid is a paid mutator transaction binding the contract method 0x2d9bfd3a. +// +// Solidity: function changeEpochMinBid(uint128 slotEpoch, uint128 newInitialMinBid) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) ChangeEpochMinBid(opts *bind.TransactOpts, slotEpoch *big.Int, newInitialMinBid *big.Int) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "changeEpochMinBid", slotEpoch, newInitialMinBid) +} + +// ChangeEpochMinBid is a paid mutator transaction binding the contract method 0x2d9bfd3a. +// +// Solidity: function changeEpochMinBid(uint128 slotEpoch, uint128 newInitialMinBid) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) ChangeEpochMinBid(slotEpoch *big.Int, newInitialMinBid *big.Int) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.ChangeEpochMinBid(&_HermezAuctionProtocol.TransactOpts, slotEpoch, newInitialMinBid) +} + +// ChangeEpochMinBid is a paid mutator transaction binding the contract method 0x2d9bfd3a. +// +// Solidity: function changeEpochMinBid(uint128 slotEpoch, uint128 newInitialMinBid) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) ChangeEpochMinBid(slotEpoch *big.Int, newInitialMinBid *big.Int) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.ChangeEpochMinBid(&_HermezAuctionProtocol.TransactOpts, slotEpoch, newInitialMinBid) +} + +// ClaimHEZ is a paid mutator transaction binding the contract method 0x3f2d0c7b. +// +// Solidity: function claimHEZ(address claimAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) ClaimHEZ(opts *bind.TransactOpts, claimAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "claimHEZ", claimAddress) +} + +// ClaimHEZ is a paid mutator transaction binding the contract method 0x3f2d0c7b. +// +// Solidity: function claimHEZ(address claimAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) ClaimHEZ(claimAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.ClaimHEZ(&_HermezAuctionProtocol.TransactOpts, claimAddress) +} + +// ClaimHEZ is a paid mutator transaction binding the contract method 0x3f2d0c7b. +// +// Solidity: function claimHEZ(address claimAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) ClaimHEZ(claimAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.ClaimHEZ(&_HermezAuctionProtocol.TransactOpts, claimAddress) +} + +// Forge is a paid mutator transaction binding the contract method 0x4e5a5178. +// +// Solidity: function forge(address forger) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) Forge(opts *bind.TransactOpts, forger common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "forge", forger) +} + +// Forge is a paid mutator transaction binding the contract method 0x4e5a5178. +// +// Solidity: function forge(address forger) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) Forge(forger common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.Forge(&_HermezAuctionProtocol.TransactOpts, forger) +} + +// Forge is a paid mutator transaction binding the contract method 0x4e5a5178. +// +// Solidity: function forge(address forger) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) Forge(forger common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.Forge(&_HermezAuctionProtocol.TransactOpts, forger) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1459457a. +// +// Solidity: function initialize(address tokenERC777, address hermezRollupAddress, address governanceAddress, address donationAddress, address bootCoordinatorAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) Initialize(opts *bind.TransactOpts, tokenERC777 common.Address, hermezRollupAddress common.Address, governanceAddress common.Address, donationAddress common.Address, bootCoordinatorAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "initialize", tokenERC777, hermezRollupAddress, governanceAddress, donationAddress, bootCoordinatorAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1459457a. +// +// Solidity: function initialize(address tokenERC777, address hermezRollupAddress, address governanceAddress, address donationAddress, address bootCoordinatorAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) Initialize(tokenERC777 common.Address, hermezRollupAddress common.Address, governanceAddress common.Address, donationAddress common.Address, bootCoordinatorAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.Initialize(&_HermezAuctionProtocol.TransactOpts, tokenERC777, hermezRollupAddress, governanceAddress, donationAddress, bootCoordinatorAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x1459457a. +// +// Solidity: function initialize(address tokenERC777, address hermezRollupAddress, address governanceAddress, address donationAddress, address bootCoordinatorAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) Initialize(tokenERC777 common.Address, hermezRollupAddress common.Address, governanceAddress common.Address, donationAddress common.Address, bootCoordinatorAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.Initialize(&_HermezAuctionProtocol.TransactOpts, tokenERC777, hermezRollupAddress, governanceAddress, donationAddress, bootCoordinatorAddress) +} + +// RegisterCoordinator is a paid mutator transaction binding the contract method 0xb3f69047. +// +// Solidity: function registerCoordinator(address forgerAddress, string coordinatorURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) RegisterCoordinator(opts *bind.TransactOpts, forgerAddress common.Address, coordinatorURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "registerCoordinator", forgerAddress, coordinatorURL) +} + +// RegisterCoordinator is a paid mutator transaction binding the contract method 0xb3f69047. +// +// Solidity: function registerCoordinator(address forgerAddress, string coordinatorURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) RegisterCoordinator(forgerAddress common.Address, coordinatorURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.RegisterCoordinator(&_HermezAuctionProtocol.TransactOpts, forgerAddress, coordinatorURL) +} + +// RegisterCoordinator is a paid mutator transaction binding the contract method 0xb3f69047. +// +// Solidity: function registerCoordinator(address forgerAddress, string coordinatorURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) RegisterCoordinator(forgerAddress common.Address, coordinatorURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.RegisterCoordinator(&_HermezAuctionProtocol.TransactOpts, forgerAddress, coordinatorURL) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) RenounceOwnership() (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.RenounceOwnership(&_HermezAuctionProtocol.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.RenounceOwnership(&_HermezAuctionProtocol.TransactOpts) +} + +// SetAllocationRatio is a paid mutator transaction binding the contract method 0xe3498da7. +// +// Solidity: function setAllocationRatio(uint8[3] newAllocationRatio) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetAllocationRatio(opts *bind.TransactOpts, newAllocationRatio [3]uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setAllocationRatio", newAllocationRatio) +} + +// SetAllocationRatio is a paid mutator transaction binding the contract method 0xe3498da7. +// +// Solidity: function setAllocationRatio(uint8[3] newAllocationRatio) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetAllocationRatio(newAllocationRatio [3]uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetAllocationRatio(&_HermezAuctionProtocol.TransactOpts, newAllocationRatio) +} + +// SetAllocationRatio is a paid mutator transaction binding the contract method 0xe3498da7. +// +// Solidity: function setAllocationRatio(uint8[3] newAllocationRatio) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetAllocationRatio(newAllocationRatio [3]uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetAllocationRatio(&_HermezAuctionProtocol.TransactOpts, newAllocationRatio) +} + +// SetBootCoordinator is a paid mutator transaction binding the contract method 0x62945af2. +// +// Solidity: function setBootCoordinator(address newBootCoordinator) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetBootCoordinator(opts *bind.TransactOpts, newBootCoordinator common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setBootCoordinator", newBootCoordinator) +} + +// SetBootCoordinator is a paid mutator transaction binding the contract method 0x62945af2. +// +// Solidity: function setBootCoordinator(address newBootCoordinator) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetBootCoordinator(newBootCoordinator common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetBootCoordinator(&_HermezAuctionProtocol.TransactOpts, newBootCoordinator) +} + +// SetBootCoordinator is a paid mutator transaction binding the contract method 0x62945af2. +// +// Solidity: function setBootCoordinator(address newBootCoordinator) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetBootCoordinator(newBootCoordinator common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetBootCoordinator(&_HermezAuctionProtocol.TransactOpts, newBootCoordinator) +} + +// SetClosedAuctionSlots is a paid mutator transaction binding the contract method 0xd92bdda3. +// +// Solidity: function setClosedAuctionSlots(uint16 newClosedAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetClosedAuctionSlots(opts *bind.TransactOpts, newClosedAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setClosedAuctionSlots", newClosedAuctionSlots) +} + +// SetClosedAuctionSlots is a paid mutator transaction binding the contract method 0xd92bdda3. +// +// Solidity: function setClosedAuctionSlots(uint16 newClosedAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetClosedAuctionSlots(newClosedAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetClosedAuctionSlots(&_HermezAuctionProtocol.TransactOpts, newClosedAuctionSlots) +} + +// SetClosedAuctionSlots is a paid mutator transaction binding the contract method 0xd92bdda3. +// +// Solidity: function setClosedAuctionSlots(uint16 newClosedAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetClosedAuctionSlots(newClosedAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetClosedAuctionSlots(&_HermezAuctionProtocol.TransactOpts, newClosedAuctionSlots) +} + +// SetDonationAddress is a paid mutator transaction binding the contract method 0x6f48e79b. +// +// Solidity: function setDonationAddress(address newDonationAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetDonationAddress(opts *bind.TransactOpts, newDonationAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setDonationAddress", newDonationAddress) +} + +// SetDonationAddress is a paid mutator transaction binding the contract method 0x6f48e79b. +// +// Solidity: function setDonationAddress(address newDonationAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetDonationAddress(newDonationAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetDonationAddress(&_HermezAuctionProtocol.TransactOpts, newDonationAddress) +} + +// SetDonationAddress is a paid mutator transaction binding the contract method 0x6f48e79b. +// +// Solidity: function setDonationAddress(address newDonationAddress) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetDonationAddress(newDonationAddress common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetDonationAddress(&_HermezAuctionProtocol.TransactOpts, newDonationAddress) +} + +// SetOpenAuctionSlots is a paid mutator transaction binding the contract method 0xc63de515. +// +// Solidity: function setOpenAuctionSlots(uint16 newOpenAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetOpenAuctionSlots(opts *bind.TransactOpts, newOpenAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setOpenAuctionSlots", newOpenAuctionSlots) +} + +// SetOpenAuctionSlots is a paid mutator transaction binding the contract method 0xc63de515. +// +// Solidity: function setOpenAuctionSlots(uint16 newOpenAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetOpenAuctionSlots(newOpenAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetOpenAuctionSlots(&_HermezAuctionProtocol.TransactOpts, newOpenAuctionSlots) +} + +// SetOpenAuctionSlots is a paid mutator transaction binding the contract method 0xc63de515. +// +// Solidity: function setOpenAuctionSlots(uint16 newOpenAuctionSlots) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetOpenAuctionSlots(newOpenAuctionSlots uint16) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetOpenAuctionSlots(&_HermezAuctionProtocol.TransactOpts, newOpenAuctionSlots) +} + +// SetOutbidding is a paid mutator transaction binding the contract method 0x07e38ac6. +// +// Solidity: function setOutbidding(uint8 newOutbidding) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetOutbidding(opts *bind.TransactOpts, newOutbidding uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setOutbidding", newOutbidding) +} + +// SetOutbidding is a paid mutator transaction binding the contract method 0x07e38ac6. +// +// Solidity: function setOutbidding(uint8 newOutbidding) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetOutbidding(newOutbidding uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetOutbidding(&_HermezAuctionProtocol.TransactOpts, newOutbidding) +} + +// SetOutbidding is a paid mutator transaction binding the contract method 0x07e38ac6. +// +// Solidity: function setOutbidding(uint8 newOutbidding) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetOutbidding(newOutbidding uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetOutbidding(&_HermezAuctionProtocol.TransactOpts, newOutbidding) +} + +// SetSlotDeadline is a paid mutator transaction binding the contract method 0x87e6b6bb. +// +// Solidity: function setSlotDeadline(uint8 newDeadline) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) SetSlotDeadline(opts *bind.TransactOpts, newDeadline uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "setSlotDeadline", newDeadline) +} + +// SetSlotDeadline is a paid mutator transaction binding the contract method 0x87e6b6bb. +// +// Solidity: function setSlotDeadline(uint8 newDeadline) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) SetSlotDeadline(newDeadline uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetSlotDeadline(&_HermezAuctionProtocol.TransactOpts, newDeadline) +} + +// SetSlotDeadline is a paid mutator transaction binding the contract method 0x87e6b6bb. +// +// Solidity: function setSlotDeadline(uint8 newDeadline) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) SetSlotDeadline(newDeadline uint8) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.SetSlotDeadline(&_HermezAuctionProtocol.TransactOpts, newDeadline) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes userData, bytes operatorData) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) TokensReceived(opts *bind.TransactOpts, operator common.Address, from common.Address, to common.Address, amount *big.Int, userData []byte, operatorData []byte) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "tokensReceived", operator, from, to, amount, userData, operatorData) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes userData, bytes operatorData) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) TokensReceived(operator common.Address, from common.Address, to common.Address, amount *big.Int, userData []byte, operatorData []byte) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.TokensReceived(&_HermezAuctionProtocol.TransactOpts, operator, from, to, amount, userData, operatorData) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes userData, bytes operatorData) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) TokensReceived(operator common.Address, from common.Address, to common.Address, amount *big.Int, userData []byte, operatorData []byte) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.TokensReceived(&_HermezAuctionProtocol.TransactOpts, operator, from, to, amount, userData, operatorData) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.TransferOwnership(&_HermezAuctionProtocol.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.TransferOwnership(&_HermezAuctionProtocol.TransactOpts, newOwner) +} + +// UpdateCoordinatorInfo is a paid mutator transaction binding the contract method 0x892075c8. +// +// Solidity: function updateCoordinatorInfo(address forgerAddress, address newWithdrawAddress, string newURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactor) UpdateCoordinatorInfo(opts *bind.TransactOpts, forgerAddress common.Address, newWithdrawAddress common.Address, newURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.contract.Transact(opts, "updateCoordinatorInfo", forgerAddress, newWithdrawAddress, newURL) +} + +// UpdateCoordinatorInfo is a paid mutator transaction binding the contract method 0x892075c8. +// +// Solidity: function updateCoordinatorInfo(address forgerAddress, address newWithdrawAddress, string newURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolSession) UpdateCoordinatorInfo(forgerAddress common.Address, newWithdrawAddress common.Address, newURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.UpdateCoordinatorInfo(&_HermezAuctionProtocol.TransactOpts, forgerAddress, newWithdrawAddress, newURL) +} + +// UpdateCoordinatorInfo is a paid mutator transaction binding the contract method 0x892075c8. +// +// Solidity: function updateCoordinatorInfo(address forgerAddress, address newWithdrawAddress, string newURL) returns() +func (_HermezAuctionProtocol *HermezAuctionProtocolTransactorSession) UpdateCoordinatorInfo(forgerAddress common.Address, newWithdrawAddress common.Address, newURL string) (*types.Transaction, error) { + return _HermezAuctionProtocol.Contract.UpdateCoordinatorInfo(&_HermezAuctionProtocol.TransactOpts, forgerAddress, newWithdrawAddress, newURL) +} + +// HermezAuctionProtocolCoordinatorUpdatedIterator is returned from FilterCoordinatorUpdated and is used to iterate over the raw logs and unpacked data for CoordinatorUpdated events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolCoordinatorUpdatedIterator struct { + Event *HermezAuctionProtocolCoordinatorUpdated // 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 *HermezAuctionProtocolCoordinatorUpdatedIterator) 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(HermezAuctionProtocolCoordinatorUpdated) + 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(HermezAuctionProtocolCoordinatorUpdated) + 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 *HermezAuctionProtocolCoordinatorUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolCoordinatorUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolCoordinatorUpdated represents a CoordinatorUpdated event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolCoordinatorUpdated struct { + ForgerAddress common.Address + WithdrawalAddress common.Address + CoordinatorURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCoordinatorUpdated is a free log retrieval operation binding the contract event 0x384460dae6dd1682b71131272b0e47bcd8ecef844d632c5062db277378a868c5. +// +// Solidity: event CoordinatorUpdated(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterCoordinatorUpdated(opts *bind.FilterOpts) (*HermezAuctionProtocolCoordinatorUpdatedIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "CoordinatorUpdated") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolCoordinatorUpdatedIterator{contract: _HermezAuctionProtocol.contract, event: "CoordinatorUpdated", logs: logs, sub: sub}, nil +} + +// WatchCoordinatorUpdated is a free log subscription operation binding the contract event 0x384460dae6dd1682b71131272b0e47bcd8ecef844d632c5062db277378a868c5. +// +// Solidity: event CoordinatorUpdated(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchCoordinatorUpdated(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolCoordinatorUpdated) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "CoordinatorUpdated") + 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(HermezAuctionProtocolCoordinatorUpdated) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "CoordinatorUpdated", 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 +} + +// ParseCoordinatorUpdated is a log parse operation binding the contract event 0x384460dae6dd1682b71131272b0e47bcd8ecef844d632c5062db277378a868c5. +// +// Solidity: event CoordinatorUpdated(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseCoordinatorUpdated(log types.Log) (*HermezAuctionProtocolCoordinatorUpdated, error) { + event := new(HermezAuctionProtocolCoordinatorUpdated) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "CoordinatorUpdated", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolHEZClaimedIterator is returned from FilterHEZClaimed and is used to iterate over the raw logs and unpacked data for HEZClaimed events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolHEZClaimedIterator struct { + Event *HermezAuctionProtocolHEZClaimed // 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 *HermezAuctionProtocolHEZClaimedIterator) 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(HermezAuctionProtocolHEZClaimed) + 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(HermezAuctionProtocolHEZClaimed) + 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 *HermezAuctionProtocolHEZClaimedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolHEZClaimedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolHEZClaimed represents a HEZClaimed event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolHEZClaimed struct { + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterHEZClaimed is a free log retrieval operation binding the contract event 0x199ef0cb54d2b296ff6eaec2721bacf0ca3fd8344a43f5bdf4548b34dfa2594f. +// +// Solidity: event HEZClaimed(address indexed owner, uint128 amount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterHEZClaimed(opts *bind.FilterOpts, owner []common.Address) (*HermezAuctionProtocolHEZClaimedIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "HEZClaimed", ownerRule) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolHEZClaimedIterator{contract: _HermezAuctionProtocol.contract, event: "HEZClaimed", logs: logs, sub: sub}, nil +} + +// WatchHEZClaimed is a free log subscription operation binding the contract event 0x199ef0cb54d2b296ff6eaec2721bacf0ca3fd8344a43f5bdf4548b34dfa2594f. +// +// Solidity: event HEZClaimed(address indexed owner, uint128 amount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchHEZClaimed(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolHEZClaimed, owner []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "HEZClaimed", ownerRule) + 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(HermezAuctionProtocolHEZClaimed) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "HEZClaimed", 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 +} + +// ParseHEZClaimed is a log parse operation binding the contract event 0x199ef0cb54d2b296ff6eaec2721bacf0ca3fd8344a43f5bdf4548b34dfa2594f. +// +// Solidity: event HEZClaimed(address indexed owner, uint128 amount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseHEZClaimed(log types.Log) (*HermezAuctionProtocolHEZClaimed, error) { + event := new(HermezAuctionProtocolHEZClaimed) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "HEZClaimed", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewAllocationRatioIterator is returned from FilterNewAllocationRatio and is used to iterate over the raw logs and unpacked data for NewAllocationRatio events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewAllocationRatioIterator struct { + Event *HermezAuctionProtocolNewAllocationRatio // 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 *HermezAuctionProtocolNewAllocationRatioIterator) 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(HermezAuctionProtocolNewAllocationRatio) + 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(HermezAuctionProtocolNewAllocationRatio) + 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 *HermezAuctionProtocolNewAllocationRatioIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewAllocationRatioIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewAllocationRatio represents a NewAllocationRatio event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewAllocationRatio struct { + NewAllocationRatio [3]uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewAllocationRatio is a free log retrieval operation binding the contract event 0x065446964eb025d703d01a33acfb9cf2aa2a362fc961d7e92ca0a7d927f3d44d. +// +// Solidity: event NewAllocationRatio(uint8[3] newAllocationRatio) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewAllocationRatio(opts *bind.FilterOpts) (*HermezAuctionProtocolNewAllocationRatioIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewAllocationRatio") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewAllocationRatioIterator{contract: _HermezAuctionProtocol.contract, event: "NewAllocationRatio", logs: logs, sub: sub}, nil +} + +// WatchNewAllocationRatio is a free log subscription operation binding the contract event 0x065446964eb025d703d01a33acfb9cf2aa2a362fc961d7e92ca0a7d927f3d44d. +// +// Solidity: event NewAllocationRatio(uint8[3] newAllocationRatio) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewAllocationRatio(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewAllocationRatio) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewAllocationRatio") + 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(HermezAuctionProtocolNewAllocationRatio) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewAllocationRatio", 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 +} + +// ParseNewAllocationRatio is a log parse operation binding the contract event 0x065446964eb025d703d01a33acfb9cf2aa2a362fc961d7e92ca0a7d927f3d44d. +// +// Solidity: event NewAllocationRatio(uint8[3] newAllocationRatio) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewAllocationRatio(log types.Log) (*HermezAuctionProtocolNewAllocationRatio, error) { + event := new(HermezAuctionProtocolNewAllocationRatio) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewAllocationRatio", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewBidIterator is returned from FilterNewBid and is used to iterate over the raw logs and unpacked data for NewBid events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewBidIterator struct { + Event *HermezAuctionProtocolNewBid // 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 *HermezAuctionProtocolNewBidIterator) 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(HermezAuctionProtocolNewBid) + 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(HermezAuctionProtocolNewBid) + 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 *HermezAuctionProtocolNewBidIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewBidIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewBid represents a NewBid event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewBid struct { + Slot *big.Int + BidAmount *big.Int + CoordinatorForger common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewBid is a free log retrieval operation binding the contract event 0xd48e8329cdb2fb109b4fe445d7b681a74b256bff16e6f7f33b9d4fbe9038e433. +// +// Solidity: event NewBid(uint128 indexed slot, uint128 bidAmount, address indexed coordinatorForger) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewBid(opts *bind.FilterOpts, slot []*big.Int, coordinatorForger []common.Address) (*HermezAuctionProtocolNewBidIterator, error) { + + var slotRule []interface{} + for _, slotItem := range slot { + slotRule = append(slotRule, slotItem) + } + + var coordinatorForgerRule []interface{} + for _, coordinatorForgerItem := range coordinatorForger { + coordinatorForgerRule = append(coordinatorForgerRule, coordinatorForgerItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewBid", slotRule, coordinatorForgerRule) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewBidIterator{contract: _HermezAuctionProtocol.contract, event: "NewBid", logs: logs, sub: sub}, nil +} + +// WatchNewBid is a free log subscription operation binding the contract event 0xd48e8329cdb2fb109b4fe445d7b681a74b256bff16e6f7f33b9d4fbe9038e433. +// +// Solidity: event NewBid(uint128 indexed slot, uint128 bidAmount, address indexed coordinatorForger) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewBid(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewBid, slot []*big.Int, coordinatorForger []common.Address) (event.Subscription, error) { + + var slotRule []interface{} + for _, slotItem := range slot { + slotRule = append(slotRule, slotItem) + } + + var coordinatorForgerRule []interface{} + for _, coordinatorForgerItem := range coordinatorForger { + coordinatorForgerRule = append(coordinatorForgerRule, coordinatorForgerItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewBid", slotRule, coordinatorForgerRule) + 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(HermezAuctionProtocolNewBid) + if err := _HermezAuctionProtocol.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 0xd48e8329cdb2fb109b4fe445d7b681a74b256bff16e6f7f33b9d4fbe9038e433. +// +// Solidity: event NewBid(uint128 indexed slot, uint128 bidAmount, address indexed coordinatorForger) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewBid(log types.Log) (*HermezAuctionProtocolNewBid, error) { + event := new(HermezAuctionProtocolNewBid) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewBid", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewBootCoordinatorIterator is returned from FilterNewBootCoordinator and is used to iterate over the raw logs and unpacked data for NewBootCoordinator events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewBootCoordinatorIterator struct { + Event *HermezAuctionProtocolNewBootCoordinator // 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 *HermezAuctionProtocolNewBootCoordinatorIterator) 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(HermezAuctionProtocolNewBootCoordinator) + 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(HermezAuctionProtocolNewBootCoordinator) + 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 *HermezAuctionProtocolNewBootCoordinatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewBootCoordinatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewBootCoordinator represents a NewBootCoordinator event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewBootCoordinator struct { + NewBootCoordinator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewBootCoordinator is a free log retrieval operation binding the contract event 0x2161bd0f0e056d18046a81683e5bc845980367451cf4ca5148523a147c51be55. +// +// Solidity: event NewBootCoordinator(address newBootCoordinator) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewBootCoordinator(opts *bind.FilterOpts) (*HermezAuctionProtocolNewBootCoordinatorIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewBootCoordinator") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewBootCoordinatorIterator{contract: _HermezAuctionProtocol.contract, event: "NewBootCoordinator", logs: logs, sub: sub}, nil +} + +// WatchNewBootCoordinator is a free log subscription operation binding the contract event 0x2161bd0f0e056d18046a81683e5bc845980367451cf4ca5148523a147c51be55. +// +// Solidity: event NewBootCoordinator(address newBootCoordinator) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewBootCoordinator(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewBootCoordinator) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewBootCoordinator") + 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(HermezAuctionProtocolNewBootCoordinator) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewBootCoordinator", 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 +} + +// ParseNewBootCoordinator is a log parse operation binding the contract event 0x2161bd0f0e056d18046a81683e5bc845980367451cf4ca5148523a147c51be55. +// +// Solidity: event NewBootCoordinator(address newBootCoordinator) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewBootCoordinator(log types.Log) (*HermezAuctionProtocolNewBootCoordinator, error) { + event := new(HermezAuctionProtocolNewBootCoordinator) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewBootCoordinator", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewClosedAuctionSlotsIterator is returned from FilterNewClosedAuctionSlots and is used to iterate over the raw logs and unpacked data for NewClosedAuctionSlots events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewClosedAuctionSlotsIterator struct { + Event *HermezAuctionProtocolNewClosedAuctionSlots // 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 *HermezAuctionProtocolNewClosedAuctionSlotsIterator) 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(HermezAuctionProtocolNewClosedAuctionSlots) + 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(HermezAuctionProtocolNewClosedAuctionSlots) + 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 *HermezAuctionProtocolNewClosedAuctionSlotsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewClosedAuctionSlotsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewClosedAuctionSlots represents a NewClosedAuctionSlots event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewClosedAuctionSlots struct { + NewClosedAuctionSlots uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewClosedAuctionSlots is a free log retrieval operation binding the contract event 0xc78051d3757db196b1e445f3a9a1380944518c69b5d7922ec747c54f0340a4ea. +// +// Solidity: event NewClosedAuctionSlots(uint16 newClosedAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewClosedAuctionSlots(opts *bind.FilterOpts) (*HermezAuctionProtocolNewClosedAuctionSlotsIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewClosedAuctionSlots") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewClosedAuctionSlotsIterator{contract: _HermezAuctionProtocol.contract, event: "NewClosedAuctionSlots", logs: logs, sub: sub}, nil +} + +// WatchNewClosedAuctionSlots is a free log subscription operation binding the contract event 0xc78051d3757db196b1e445f3a9a1380944518c69b5d7922ec747c54f0340a4ea. +// +// Solidity: event NewClosedAuctionSlots(uint16 newClosedAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewClosedAuctionSlots(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewClosedAuctionSlots) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewClosedAuctionSlots") + 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(HermezAuctionProtocolNewClosedAuctionSlots) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewClosedAuctionSlots", 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 +} + +// ParseNewClosedAuctionSlots is a log parse operation binding the contract event 0xc78051d3757db196b1e445f3a9a1380944518c69b5d7922ec747c54f0340a4ea. +// +// Solidity: event NewClosedAuctionSlots(uint16 newClosedAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewClosedAuctionSlots(log types.Log) (*HermezAuctionProtocolNewClosedAuctionSlots, error) { + event := new(HermezAuctionProtocolNewClosedAuctionSlots) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewClosedAuctionSlots", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewCoordinatorIterator is returned from FilterNewCoordinator and is used to iterate over the raw logs and unpacked data for NewCoordinator events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewCoordinatorIterator struct { + Event *HermezAuctionProtocolNewCoordinator // 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 *HermezAuctionProtocolNewCoordinatorIterator) 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(HermezAuctionProtocolNewCoordinator) + 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(HermezAuctionProtocolNewCoordinator) + 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 *HermezAuctionProtocolNewCoordinatorIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewCoordinatorIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewCoordinator represents a NewCoordinator event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewCoordinator struct { + ForgerAddress common.Address + WithdrawalAddress common.Address + CoordinatorURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewCoordinator is a free log retrieval operation binding the contract event 0x669c2ad52258689ce95b5b33025822b1afde214fff3a61dd00007d98b5b2ca36. +// +// Solidity: event NewCoordinator(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewCoordinator(opts *bind.FilterOpts) (*HermezAuctionProtocolNewCoordinatorIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewCoordinator") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewCoordinatorIterator{contract: _HermezAuctionProtocol.contract, event: "NewCoordinator", logs: logs, sub: sub}, nil +} + +// WatchNewCoordinator is a free log subscription operation binding the contract event 0x669c2ad52258689ce95b5b33025822b1afde214fff3a61dd00007d98b5b2ca36. +// +// Solidity: event NewCoordinator(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewCoordinator(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewCoordinator) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewCoordinator") + 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(HermezAuctionProtocolNewCoordinator) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewCoordinator", 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 +} + +// ParseNewCoordinator is a log parse operation binding the contract event 0x669c2ad52258689ce95b5b33025822b1afde214fff3a61dd00007d98b5b2ca36. +// +// Solidity: event NewCoordinator(address forgerAddress, address withdrawalAddress, string coordinatorURL) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewCoordinator(log types.Log) (*HermezAuctionProtocolNewCoordinator, error) { + event := new(HermezAuctionProtocolNewCoordinator) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewCoordinator", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewDonationAddressIterator is returned from FilterNewDonationAddress and is used to iterate over the raw logs and unpacked data for NewDonationAddress events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewDonationAddressIterator struct { + Event *HermezAuctionProtocolNewDonationAddress // 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 *HermezAuctionProtocolNewDonationAddressIterator) 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(HermezAuctionProtocolNewDonationAddress) + 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(HermezAuctionProtocolNewDonationAddress) + 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 *HermezAuctionProtocolNewDonationAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewDonationAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewDonationAddress represents a NewDonationAddress event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewDonationAddress struct { + NewDonationAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewDonationAddress is a free log retrieval operation binding the contract event 0xa62863cbad1647a2855e9cd39d04fa6dfd32e1b9cfaff1aaf6523f4aaafeccd7. +// +// Solidity: event NewDonationAddress(address newDonationAddress) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewDonationAddress(opts *bind.FilterOpts) (*HermezAuctionProtocolNewDonationAddressIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewDonationAddress") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewDonationAddressIterator{contract: _HermezAuctionProtocol.contract, event: "NewDonationAddress", logs: logs, sub: sub}, nil +} + +// WatchNewDonationAddress is a free log subscription operation binding the contract event 0xa62863cbad1647a2855e9cd39d04fa6dfd32e1b9cfaff1aaf6523f4aaafeccd7. +// +// Solidity: event NewDonationAddress(address newDonationAddress) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewDonationAddress(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewDonationAddress) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewDonationAddress") + 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(HermezAuctionProtocolNewDonationAddress) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewDonationAddress", 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 +} + +// ParseNewDonationAddress is a log parse operation binding the contract event 0xa62863cbad1647a2855e9cd39d04fa6dfd32e1b9cfaff1aaf6523f4aaafeccd7. +// +// Solidity: event NewDonationAddress(address newDonationAddress) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewDonationAddress(log types.Log) (*HermezAuctionProtocolNewDonationAddress, error) { + event := new(HermezAuctionProtocolNewDonationAddress) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewDonationAddress", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewForgeIterator is returned from FilterNewForge and is used to iterate over the raw logs and unpacked data for NewForge events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewForgeIterator struct { + Event *HermezAuctionProtocolNewForge // 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 *HermezAuctionProtocolNewForgeIterator) 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(HermezAuctionProtocolNewForge) + 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(HermezAuctionProtocolNewForge) + 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 *HermezAuctionProtocolNewForgeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewForgeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewForge represents a NewForge event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewForge struct { + Forger common.Address + SlotToForge *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewForge is a free log retrieval operation binding the contract event 0x7cae662d4cfa9d9c5575c65f0cc41a858c51ca14ebcbd02a802a62376c3ad238. +// +// Solidity: event NewForge(address indexed forger, uint128 indexed slotToForge) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewForge(opts *bind.FilterOpts, forger []common.Address, slotToForge []*big.Int) (*HermezAuctionProtocolNewForgeIterator, error) { + + var forgerRule []interface{} + for _, forgerItem := range forger { + forgerRule = append(forgerRule, forgerItem) + } + var slotToForgeRule []interface{} + for _, slotToForgeItem := range slotToForge { + slotToForgeRule = append(slotToForgeRule, slotToForgeItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewForge", forgerRule, slotToForgeRule) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewForgeIterator{contract: _HermezAuctionProtocol.contract, event: "NewForge", logs: logs, sub: sub}, nil +} + +// WatchNewForge is a free log subscription operation binding the contract event 0x7cae662d4cfa9d9c5575c65f0cc41a858c51ca14ebcbd02a802a62376c3ad238. +// +// Solidity: event NewForge(address indexed forger, uint128 indexed slotToForge) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewForge(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewForge, forger []common.Address, slotToForge []*big.Int) (event.Subscription, error) { + + var forgerRule []interface{} + for _, forgerItem := range forger { + forgerRule = append(forgerRule, forgerItem) + } + var slotToForgeRule []interface{} + for _, slotToForgeItem := range slotToForge { + slotToForgeRule = append(slotToForgeRule, slotToForgeItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewForge", forgerRule, slotToForgeRule) + 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(HermezAuctionProtocolNewForge) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewForge", 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 +} + +// ParseNewForge is a log parse operation binding the contract event 0x7cae662d4cfa9d9c5575c65f0cc41a858c51ca14ebcbd02a802a62376c3ad238. +// +// Solidity: event NewForge(address indexed forger, uint128 indexed slotToForge) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewForge(log types.Log) (*HermezAuctionProtocolNewForge, error) { + event := new(HermezAuctionProtocolNewForge) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewForge", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewForgeAllocatedIterator is returned from FilterNewForgeAllocated and is used to iterate over the raw logs and unpacked data for NewForgeAllocated events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewForgeAllocatedIterator struct { + Event *HermezAuctionProtocolNewForgeAllocated // 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 *HermezAuctionProtocolNewForgeAllocatedIterator) 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(HermezAuctionProtocolNewForgeAllocated) + 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(HermezAuctionProtocolNewForgeAllocated) + 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 *HermezAuctionProtocolNewForgeAllocatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewForgeAllocatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewForgeAllocated represents a NewForgeAllocated event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewForgeAllocated struct { + Forger common.Address + SlotToForge *big.Int + BurnAmount *big.Int + DonationAmount *big.Int + GovernanceAmount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewForgeAllocated is a free log retrieval operation binding the contract event 0x9c1175e346e9ec25b59d991c43dd2c3c982970d169dbd7315ad3d8bb91e0acf5. +// +// Solidity: event NewForgeAllocated(address indexed forger, uint128 indexed slotToForge, uint128 burnAmount, uint128 donationAmount, uint128 governanceAmount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewForgeAllocated(opts *bind.FilterOpts, forger []common.Address, slotToForge []*big.Int) (*HermezAuctionProtocolNewForgeAllocatedIterator, error) { + + var forgerRule []interface{} + for _, forgerItem := range forger { + forgerRule = append(forgerRule, forgerItem) + } + var slotToForgeRule []interface{} + for _, slotToForgeItem := range slotToForge { + slotToForgeRule = append(slotToForgeRule, slotToForgeItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewForgeAllocated", forgerRule, slotToForgeRule) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewForgeAllocatedIterator{contract: _HermezAuctionProtocol.contract, event: "NewForgeAllocated", logs: logs, sub: sub}, nil +} + +// WatchNewForgeAllocated is a free log subscription operation binding the contract event 0x9c1175e346e9ec25b59d991c43dd2c3c982970d169dbd7315ad3d8bb91e0acf5. +// +// Solidity: event NewForgeAllocated(address indexed forger, uint128 indexed slotToForge, uint128 burnAmount, uint128 donationAmount, uint128 governanceAmount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewForgeAllocated(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewForgeAllocated, forger []common.Address, slotToForge []*big.Int) (event.Subscription, error) { + + var forgerRule []interface{} + for _, forgerItem := range forger { + forgerRule = append(forgerRule, forgerItem) + } + var slotToForgeRule []interface{} + for _, slotToForgeItem := range slotToForge { + slotToForgeRule = append(slotToForgeRule, slotToForgeItem) + } + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewForgeAllocated", forgerRule, slotToForgeRule) + 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(HermezAuctionProtocolNewForgeAllocated) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewForgeAllocated", 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 +} + +// ParseNewForgeAllocated is a log parse operation binding the contract event 0x9c1175e346e9ec25b59d991c43dd2c3c982970d169dbd7315ad3d8bb91e0acf5. +// +// Solidity: event NewForgeAllocated(address indexed forger, uint128 indexed slotToForge, uint128 burnAmount, uint128 donationAmount, uint128 governanceAmount) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewForgeAllocated(log types.Log) (*HermezAuctionProtocolNewForgeAllocated, error) { + event := new(HermezAuctionProtocolNewForgeAllocated) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewForgeAllocated", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewMinBidEpochIterator is returned from FilterNewMinBidEpoch and is used to iterate over the raw logs and unpacked data for NewMinBidEpoch events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewMinBidEpochIterator struct { + Event *HermezAuctionProtocolNewMinBidEpoch // 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 *HermezAuctionProtocolNewMinBidEpochIterator) 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(HermezAuctionProtocolNewMinBidEpoch) + 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(HermezAuctionProtocolNewMinBidEpoch) + 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 *HermezAuctionProtocolNewMinBidEpochIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewMinBidEpochIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewMinBidEpoch represents a NewMinBidEpoch event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewMinBidEpoch struct { + SlotEpoch *big.Int + NewInitialMinBid *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewMinBidEpoch is a free log retrieval operation binding the contract event 0x7eaf5be1f9cd1e33195565552e1b0a6fedc1a225aa861987e3c64f463060449a. +// +// Solidity: event NewMinBidEpoch(uint128 slotEpoch, uint128 newInitialMinBid) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewMinBidEpoch(opts *bind.FilterOpts) (*HermezAuctionProtocolNewMinBidEpochIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewMinBidEpoch") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewMinBidEpochIterator{contract: _HermezAuctionProtocol.contract, event: "NewMinBidEpoch", logs: logs, sub: sub}, nil +} + +// WatchNewMinBidEpoch is a free log subscription operation binding the contract event 0x7eaf5be1f9cd1e33195565552e1b0a6fedc1a225aa861987e3c64f463060449a. +// +// Solidity: event NewMinBidEpoch(uint128 slotEpoch, uint128 newInitialMinBid) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewMinBidEpoch(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewMinBidEpoch) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewMinBidEpoch") + 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(HermezAuctionProtocolNewMinBidEpoch) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewMinBidEpoch", 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 +} + +// ParseNewMinBidEpoch is a log parse operation binding the contract event 0x7eaf5be1f9cd1e33195565552e1b0a6fedc1a225aa861987e3c64f463060449a. +// +// Solidity: event NewMinBidEpoch(uint128 slotEpoch, uint128 newInitialMinBid) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewMinBidEpoch(log types.Log) (*HermezAuctionProtocolNewMinBidEpoch, error) { + event := new(HermezAuctionProtocolNewMinBidEpoch) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewMinBidEpoch", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewOpenAuctionSlotsIterator is returned from FilterNewOpenAuctionSlots and is used to iterate over the raw logs and unpacked data for NewOpenAuctionSlots events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewOpenAuctionSlotsIterator struct { + Event *HermezAuctionProtocolNewOpenAuctionSlots // 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 *HermezAuctionProtocolNewOpenAuctionSlotsIterator) 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(HermezAuctionProtocolNewOpenAuctionSlots) + 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(HermezAuctionProtocolNewOpenAuctionSlots) + 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 *HermezAuctionProtocolNewOpenAuctionSlotsIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewOpenAuctionSlotsIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewOpenAuctionSlots represents a NewOpenAuctionSlots event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewOpenAuctionSlots struct { + NewOpenAuctionSlots uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewOpenAuctionSlots is a free log retrieval operation binding the contract event 0x3da0492dea7298351bc14d1c0699905fd0657c33487449751af50fc0c8b593f1. +// +// Solidity: event NewOpenAuctionSlots(uint16 newOpenAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewOpenAuctionSlots(opts *bind.FilterOpts) (*HermezAuctionProtocolNewOpenAuctionSlotsIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewOpenAuctionSlots") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewOpenAuctionSlotsIterator{contract: _HermezAuctionProtocol.contract, event: "NewOpenAuctionSlots", logs: logs, sub: sub}, nil +} + +// WatchNewOpenAuctionSlots is a free log subscription operation binding the contract event 0x3da0492dea7298351bc14d1c0699905fd0657c33487449751af50fc0c8b593f1. +// +// Solidity: event NewOpenAuctionSlots(uint16 newOpenAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewOpenAuctionSlots(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewOpenAuctionSlots) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewOpenAuctionSlots") + 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(HermezAuctionProtocolNewOpenAuctionSlots) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewOpenAuctionSlots", 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 +} + +// ParseNewOpenAuctionSlots is a log parse operation binding the contract event 0x3da0492dea7298351bc14d1c0699905fd0657c33487449751af50fc0c8b593f1. +// +// Solidity: event NewOpenAuctionSlots(uint16 newOpenAuctionSlots) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewOpenAuctionSlots(log types.Log) (*HermezAuctionProtocolNewOpenAuctionSlots, error) { + event := new(HermezAuctionProtocolNewOpenAuctionSlots) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewOpenAuctionSlots", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewOutbiddingIterator is returned from FilterNewOutbidding and is used to iterate over the raw logs and unpacked data for NewOutbidding events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewOutbiddingIterator struct { + Event *HermezAuctionProtocolNewOutbidding // 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 *HermezAuctionProtocolNewOutbiddingIterator) 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(HermezAuctionProtocolNewOutbidding) + 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(HermezAuctionProtocolNewOutbidding) + 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 *HermezAuctionProtocolNewOutbiddingIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewOutbiddingIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewOutbidding represents a NewOutbidding event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewOutbidding struct { + NewOutbidding uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewOutbidding is a free log retrieval operation binding the contract event 0xbb54a221330f9969afbf14ba2ad1a2301a279cb9a86dc639af155c8af6eb5479. +// +// Solidity: event NewOutbidding(uint8 newOutbidding) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewOutbidding(opts *bind.FilterOpts) (*HermezAuctionProtocolNewOutbiddingIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewOutbidding") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewOutbiddingIterator{contract: _HermezAuctionProtocol.contract, event: "NewOutbidding", logs: logs, sub: sub}, nil +} + +// WatchNewOutbidding is a free log subscription operation binding the contract event 0xbb54a221330f9969afbf14ba2ad1a2301a279cb9a86dc639af155c8af6eb5479. +// +// Solidity: event NewOutbidding(uint8 newOutbidding) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewOutbidding(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewOutbidding) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewOutbidding") + 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(HermezAuctionProtocolNewOutbidding) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewOutbidding", 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 +} + +// ParseNewOutbidding is a log parse operation binding the contract event 0xbb54a221330f9969afbf14ba2ad1a2301a279cb9a86dc639af155c8af6eb5479. +// +// Solidity: event NewOutbidding(uint8 newOutbidding) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewOutbidding(log types.Log) (*HermezAuctionProtocolNewOutbidding, error) { + event := new(HermezAuctionProtocolNewOutbidding) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewOutbidding", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolNewSlotDeadlineIterator is returned from FilterNewSlotDeadline and is used to iterate over the raw logs and unpacked data for NewSlotDeadline events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewSlotDeadlineIterator struct { + Event *HermezAuctionProtocolNewSlotDeadline // 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 *HermezAuctionProtocolNewSlotDeadlineIterator) 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(HermezAuctionProtocolNewSlotDeadline) + 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(HermezAuctionProtocolNewSlotDeadline) + 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 *HermezAuctionProtocolNewSlotDeadlineIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolNewSlotDeadlineIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolNewSlotDeadline represents a NewSlotDeadline event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolNewSlotDeadline struct { + NewSlotDeadline uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewSlotDeadline is a free log retrieval operation binding the contract event 0x4a0d90b611c15e02dbf23b10f35b936cf2c77665f8c77822d3eca131f9d986d3. +// +// Solidity: event NewSlotDeadline(uint8 newSlotDeadline) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterNewSlotDeadline(opts *bind.FilterOpts) (*HermezAuctionProtocolNewSlotDeadlineIterator, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.FilterLogs(opts, "NewSlotDeadline") + if err != nil { + return nil, err + } + return &HermezAuctionProtocolNewSlotDeadlineIterator{contract: _HermezAuctionProtocol.contract, event: "NewSlotDeadline", logs: logs, sub: sub}, nil +} + +// WatchNewSlotDeadline is a free log subscription operation binding the contract event 0x4a0d90b611c15e02dbf23b10f35b936cf2c77665f8c77822d3eca131f9d986d3. +// +// Solidity: event NewSlotDeadline(uint8 newSlotDeadline) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchNewSlotDeadline(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolNewSlotDeadline) (event.Subscription, error) { + + logs, sub, err := _HermezAuctionProtocol.contract.WatchLogs(opts, "NewSlotDeadline") + 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(HermezAuctionProtocolNewSlotDeadline) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewSlotDeadline", 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 +} + +// ParseNewSlotDeadline is a log parse operation binding the contract event 0x4a0d90b611c15e02dbf23b10f35b936cf2c77665f8c77822d3eca131f9d986d3. +// +// Solidity: event NewSlotDeadline(uint8 newSlotDeadline) +func (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseNewSlotDeadline(log types.Log) (*HermezAuctionProtocolNewSlotDeadline, error) { + event := new(HermezAuctionProtocolNewSlotDeadline) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "NewSlotDeadline", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezAuctionProtocolOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolOwnershipTransferredIterator struct { + Event *HermezAuctionProtocolOwnershipTransferred // 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 *HermezAuctionProtocolOwnershipTransferredIterator) 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(HermezAuctionProtocolOwnershipTransferred) + 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(HermezAuctionProtocolOwnershipTransferred) + 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 *HermezAuctionProtocolOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAuctionProtocolOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAuctionProtocolOwnershipTransferred represents a OwnershipTransferred event raised by the HermezAuctionProtocol contract. +type HermezAuctionProtocolOwnershipTransferred 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 (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*HermezAuctionProtocolOwnershipTransferredIterator, 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 := _HermezAuctionProtocol.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &HermezAuctionProtocolOwnershipTransferredIterator{contract: _HermezAuctionProtocol.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 (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *HermezAuctionProtocolOwnershipTransferred, 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 := _HermezAuctionProtocol.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(HermezAuctionProtocolOwnershipTransferred) + if err := _HermezAuctionProtocol.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 (_HermezAuctionProtocol *HermezAuctionProtocolFilterer) ParseOwnershipTransferred(log types.Log) (*HermezAuctionProtocolOwnershipTransferred, error) { + event := new(HermezAuctionProtocolOwnershipTransferred) + if err := _HermezAuctionProtocol.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + return event, nil +} diff --git a/eth/contracts/hermez/Hermez.go b/eth/contracts/hermez/Hermez.go new file mode 100644 index 0000000..d4bcb46 --- /dev/null +++ b/eth/contracts/hermez/Hermez.go @@ -0,0 +1,2764 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package Hermez + +import ( + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// HermezABI is the input ABI used to generate the binding from. +const HermezABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"AddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ForgeBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"L1UserTxEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"UpdateFeeAddToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"UpdateFeeL1UserTx\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"UpdateForgeL1Timeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"UpdateTokenHEZ\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"WithdrawEvent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"EXIT_IDX\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FIRST_IDX\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L1_COORDINATOR_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L1_USER_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_BYTES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAST_IDX\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_AMOUNT_DEPOSIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_AMOUNT_L2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_L1_TX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_L1_USER_TX\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TOKENS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NO_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NUM_BUCKETS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RFIELD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"addToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ceilUSD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockStamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockWithdrawalRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWithdrawals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"circuitVerifiers\",\"outputs\":[{\"internalType\":\"contractVerifierInterface\",\"name\":\"verifierInt\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxTx\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"consensusContract\",\"outputs\":[{\"internalType\":\"contractConsensusInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"createAccountDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"accountCreationAuthSig\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"createAccountDepositFromRelayer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"toIdx\",\"type\":\"uint32\"}],\"name\":\"createAccountDepositTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentIdx\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentToForgeL1TxsNum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"fromIdx\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"fromIdx\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"loadAmountF\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"toIdx\",\"type\":\"uint32\"}],\"name\":\"depositTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exitNullifierMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"exitRoots\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeAddToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeL1UserTx\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"fromIdx\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"fromIdx\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"amountF\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"toIdx\",\"type\":\"uint32\"}],\"name\":\"forceTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"proofA\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2][2]\",\"name\":\"proofB\",\"type\":\"uint256[2][2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"proofC\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint32\",\"name\":\"newLastIdx\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"newStRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newExitRoot\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"compressedL1CoordinatorTx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"l2TxsData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"feeIdxCoordinator\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"verifierIdx\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"l1Batch\",\"type\":\"bool\"}],\"name\":\"forgeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forgeL1Timeout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"queue\",\"type\":\"uint256\"}],\"name\":\"getQueue\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"}],\"name\":\"getTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_verifiers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_maxTxVerifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_tokenHEZ\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_governanceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_safetyBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_consensusContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon2Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon3Elements\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_poseidon4Elements\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_feeAddToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_forgeL1Timeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_feeL1UserTx\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_withdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastL1L2Batch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastL1TxBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastToForgeL1TxsNum\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"mapL1TxQueue\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"l1TxQueue\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"totalL1TxFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safeMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"safetyBot\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateRoot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenExchange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenHEZ\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenList\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[4][5]\",\"name\":\"arrayBuckets\",\"type\":\"uint256[4][5]\"}],\"name\":\"updateBucketsParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFeeAddToken\",\"type\":\"uint256\"}],\"name\":\"updateFeeAddToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFeeL1UserTx\",\"type\":\"uint256\"}],\"name\":\"updateFeeL1UserTx\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newForgeL1Timeout\",\"type\":\"uint256\"}],\"name\":\"updateForgeL1Timeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"addressArray\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"valueArray\",\"type\":\"uint256[]\"}],\"name\":\"updateTokenExchange\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTokenHEZ\",\"type\":\"address\"}],\"name\":\"updateTokenHEZ\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"updateWithdrawalDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"tokenID\",\"type\":\"uint32\"},{\"internalType\":\"uint192\",\"name\":\"balance\",\"type\":\"uint192\"},{\"internalType\":\"uint256\",\"name\":\"babyPubKey\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numExitRoot\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"siblings\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"idx\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"instantWithdraw\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalContract\",\"outputs\":[{\"internalType\":\"contractWithdrawalDelayerInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + +// HermezBin is the compiled bytecode used for deploying new contracts. +var HermezBin = "0x608060405234801561001057600080fd5b50614f3b806100206000396000f3fe6080604052600436106103965760003560e01c806384ef9ed4116101dc578063bded9bb811610102578063d7d207c0116100a0578063ef4a5c4a1161006f578063ef4a5c4a146111d9578063f47c84c51461120d578063f6fb49e414611222578063ffd3dcf91461124c57610396565b8063d7d207c0146110bf578063e617115014611178578063e760bffc146111af578063eadf0337146111c457610396565b8063c56ca84e116100dc578063c56ca84e14610e06578063c8464ed114610e1b578063cadedd8214610f69578063d48bfca71461109957610396565b8063bded9bb814610ce2578063be8e25db14610cf7578063c36e512414610dd357610396565b80639ead72221161017a578063a7ab696111610149578063a7ab696114610c71578063ab94317414610ca3578063abe3219c14610cb8578063ac3851cd14610ccd57610396565b80639ead722214610bd0578063a238f9df14610bfa578063a4b457ca14610c0f578063a60034fb14610c5c57610396565b806393f4d252116101b657806393f4d25214610b085780639588eca214610b1d5780639612518a14610b325780639b51fb0d14610b7b57610396565b806384ef9ed414610ac95780638e65ab4f14610ade578063931cc2d414610af357610396565b80634fc51559116102c15780635bfac41f1161025f578063795053d31161022e578063795053d314610a7557806379a135e314610a8a5780637e4e06d714610a9f57806381842c2c14610ab457610396565b80635bfac41f1461099057806367ccdf38146109a557806368e95e53146109cf5780636d78e57214610a6057610396565b806355ed3fd21161029b57806355ed3fd214610788578063568bc1c51461092157806358de75c4146109665780635adb5bcd1461097b57610396565b80634fc515591461073457806350263f8c1461074957806351ff68b01461077357610396565b806330501fcb116103395780633787f591116103085780633787f591146106245780633ec0b07c1461066157806345d1c25b1461070a5780634d09f3fd1461071f57610396565b806330501fcb14610562578063314e5eda1461059557806335aa27aa146105bf578063363e2a22146105ed57610396565b80630cc4e8dc116103755780630cc4e8dc146104a85780630dd94b96146104d957806314fc04191461050c5780632bf41a2f1461053857610396565b80624aca6e1461039b57806308220e0f146103e25780630be8fffc14610409575b600080fd5b3480156103a757600080fd5b506103ce600480360360208110156103be57600080fd5b50356001600160a01b0316611261565b604080519115158252519081900360200190f35b3480156103ee57600080fd5b506103f7611276565b60408051918252519081900360200190f35b34801561041557600080fd5b506104336004803603602081101561042c57600080fd5b503561127c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561046d578181015183820152602001610455565b50505050905090810190601f16801561049a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104b457600080fd5b506104bd61131e565b604080516001600160a01b039092168252519081900360200190f35b3480156104e557600080fd5b506103f7600480360360208110156104fc57600080fd5b50356001600160a01b031661132d565b34801561051857600080fd5b506105366004803603602081101561052f57600080fd5b503561133f565b005b34801561054457600080fd5b506103ce6004803603602081101561055b57600080fd5b503561141c565b6105366004803603606081101561057857600080fd5b50803590602081013561ffff16906040013563ffffffff16611431565b3480156105a157600080fd5b50610536600480360360208110156105b857600080fd5b5035611621565b3480156105cb57600080fd5b506105d46116a9565b6040805163ffffffff9092168252519081900360200190f35b6105366004803603606081101561060357600080fd5b5063ffffffff813581169161ffff60208201351691604090910135166116ae565b6105366004803603608081101561063a57600080fd5b5063ffffffff813581169161ffff60208201351691604082013581169160600135166118e1565b34801561066d57600080fd5b5061068b6004803603602081101561068457600080fd5b5035611b40565b6040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156106ce5781810151838201526020016106b6565b50505050905090810190601f1680156106fb5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561071657600080fd5b506103f7611be7565b34801561072b57600080fd5b506103f7611bed565b34801561074057600080fd5b506103f7611bf2565b34801561075557600080fd5b506103f76004803603602081101561076c57600080fd5b5035611bf7565b34801561077f57600080fd5b506103f7611c15565b34801561079457600080fd5b5061053660048036036101c08110156107ac57600080fd5b810190602081018135600160201b8111156107c657600080fd5b8201836020820111156107d857600080fd5b803590602001918460208302840111600160201b831117156107f957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561084857600080fd5b82018360208201111561085a57600080fd5b803590602001918460208302840111600160201b8311171561087b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b038335811694506020840135811693604081013582169350606081013582169250608081013582169160a082013581169160c081013582169160e0820135169061010081013590610120810135906101408101359067ffffffffffffffff6101609091013516611c1a565b610536600480360360a081101561093757600080fd5b5080359061ffff602082013581169160408101359091169063ffffffff60608201358116916080013516611d80565b34801561097257600080fd5b506103f761204e565b34801561098757600080fd5b506103f7612072565b34801561099c57600080fd5b506105d461207a565b3480156109b157600080fd5b506104bd600480360360208110156109c857600080fd5b5035612086565b3480156109db57600080fd5b5061053660048036036102808110156109f357600080fd5b6040805160a0810190915290820191906102808201908260056000835b82821015610a515760408051608081810190925290808402860190600490839083908082843760009201919091525050508152600190910190602001610a10565b50929550612160945050505050565b348015610a6c57600080fd5b506103f7612329565b348015610a8157600080fd5b506104bd61232e565b348015610a9657600080fd5b506104bd61233d565b348015610aab57600080fd5b506103f761234c565b348015610ac057600080fd5b506104bd612352565b348015610ad557600080fd5b506103f7612361565b348015610aea57600080fd5b506105d4612367565b348015610aff57600080fd5b506104bd61236f565b348015610b1457600080fd5b506103f761237e565b348015610b2957600080fd5b506103f7612386565b610536600480360360a0811015610b4857600080fd5b5063ffffffff813581169161ffff602082013581169260408301359091169160608101358216916080909101351661238c565b348015610b8757600080fd5b50610ba560048036036020811015610b9e57600080fd5b503561268b565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b348015610bdc57600080fd5b506104bd60048036036020811015610bf357600080fd5b50356126bd565b348015610c0657600080fd5b506103f76126e4565b348015610c1b57600080fd5b50610c3960048036036020811015610c3257600080fd5b50356126eb565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610c6857600080fd5b506103f7612720565b348015610c7d57600080fd5b50610c86612726565b6040805167ffffffffffffffff9092168252519081900360200190f35b348015610caf57600080fd5b506103f761273d565b348015610cc457600080fd5b50610536612743565b348015610cd957600080fd5b506103f76128c2565b348015610cee57600080fd5b506103f76128c8565b348015610d0357600080fd5b50610536600480360360e0811015610d1a57600080fd5b63ffffffff823516916001600160c01b036020820135169160408201359160608101359181019060a081016080820135600160201b811115610d5b57600080fd5b820183602082011115610d6d57600080fd5b803590602001918460208302840111600160201b83111715610d8e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550508235935050506020013515156128ce565b348015610ddf57600080fd5b5061053660048036036020811015610df657600080fd5b50356001600160a01b0316612cde565b348015610e1257600080fd5b506103f7612d7f565b348015610e2757600080fd5b506105366004803603610200811015610e3f57600080fd5b604082019060c083019063ffffffff610100850135169061012085013590610140860135908601866101808101610160820135600160201b811115610e8357600080fd5b820183602082011115610e9557600080fd5b803590602001918460018302840111600160201b83111715610eb657600080fd5b919390929091602081019035600160201b811115610ed357600080fd5b820183602082011115610ee557600080fd5b803590602001918460018302840111600160201b83111715610f0657600080fd5b919390929091602081019035600160201b811115610f2357600080fd5b820183602082011115610f3557600080fd5b803590602001918460018302840111600160201b83111715610f5657600080fd5b9193509150803590602001351515612d84565b348015610f7557600080fd5b5061053660048036036040811015610f8c57600080fd5b810190602081018135600160201b811115610fa657600080fd5b820183602082011115610fb857600080fd5b803590602001918460208302840111600160201b83111715610fd957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561102857600080fd5b82018360208201111561103a57600080fd5b803590602001918460208302840111600160201b8311171561105b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613052945050505050565b610536600480360360208110156110af57600080fd5b50356001600160a01b0316613112565b610536600480360360808110156110d557600080fd5b810190602081018135600160201b8111156110ef57600080fd5b82018360208201111561110157600080fd5b803590602001918460018302840111600160201b8311171561112257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602081013561ffff16906040013563ffffffff166132de565b6105366004803603606081101561118e57600080fd5b5063ffffffff813581169161ffff60208201351691604090910135166134e9565b3480156111bb57600080fd5b506103f76136dc565b3480156111d057600080fd5b506103f76136e2565b3480156111e557600080fd5b50610536600480360360208110156111fc57600080fd5b503567ffffffffffffffff166136e8565b34801561121957600080fd5b506103f7612367565b34801561122e57600080fd5b506105366004803603602081101561124557600080fd5b50356137c5565b34801561125857600080fd5b506105d461388d565b60586020526000908152604090205460ff1681565b60605481565b6000818152605c602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113115780601f106112e657610100808354040283529160200191611311565b820191906000526020600020905b8154815290600101906020018083116112f457829003601f168201915b505050505090505b919050565b6050546001600160a01b031681565b60526020526000908152604090205481565b604f546001600160a01b0316331461138c576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b6702c68af0bb1400008111156113e1576040805162461bcd60e51b81526020600482015260156024820152740cccaca40d8cae6e640e8d0c2dc40605c6440cae8d605b1b604482015290519081900360640190fd5b60628190556040805182815290517f22f1e7967fe95a20c5a53350895f57d897240d953409d6377bc2f02df6b6e3789181900360200190a150565b60566020526000908152604090205460ff1681565b606254341015611476576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578263ffffffff168154811061149457fe5b6000918252602090912001546001600160a01b031614156114ea576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b60006114f583613892565b9050600160801b811061153d576040805162461bcd60e51b815260206004820152601e6024820152600080516020614ee6833981519152604482015290519081900360640190fd5b61156f60578363ffffffff168154811061155357fe5b6000918252602090912001546001600160a01b031682306138d6565b6115ae576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b6040805133606090811b6020830152603482018790526000605483018190526001600160f01b031960f088901b166058840152605a83018190526001600160e01b031960e087901b16605c8401529082015281516044818303018152606490910190915261161b90613963565b50505050565b604f546001600160a01b0316331461166e576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b60598190556040805182815290517fd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c19181900360200190a150565b60ff81565b6062543410156116f3576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578263ffffffff168154811061171157fe5b6000918252602090912001546001600160a01b03161415611767576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b600061177283613892565b9050600160801b81106117ba576040805162461bcd60e51b815260206004820152601e6024820152600080516020614ee6833981519152604482015290519081900360640190fd5b60ff63ffffffff85161180156117dc575060635463ffffffff90811690851611155b61181f576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b61183560578363ffffffff168154811061155357fe5b611874576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b60408051600060208201819052603482018190526001600160e01b031960e088811b821660548501526001600160f01b031960f089901b166058850152605a840183905286901b16605c830152606082015281516044818303018152606490910190915261161b90613963565b606254341015611926576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578363ffffffff168154811061194457fe5b6000918252602090912001546001600160a01b0316141561199a576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b60006119a584613892565b9050600160c01b81106119f8576040805162461bcd60e51b81526020600482015260166024820152750c2dadeeadce840d8c2e4cecae440e8d0c2dc40dac2f60531b604482015290519081900360640190fd5b60ff63ffffffff8616118015611a1a575060635463ffffffff90811690861611155b611a5d576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b60ff63ffffffff8316118015611a7f575060635463ffffffff90811690831611155b611ac2576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b6040805133606090811b60208301526000603483018190526001600160e01b031960e08a811b8216605486015260588501929092526001600160f01b031960f08a901b16605a85015287821b8116605c8501529086901b1690820152815160448183030181526064909101909152611b3990613963565b5050505050565b605c6020908152600091825260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909291839190830182828015611bd75780601f10611bac57610100808354040283529160200191611bd7565b820191906000526020600020905b815481529060010190602001808311611bba57829003601f168201915b5050505050908060010154905082565b61010081565b606581565b600b81565b60558181548110611c0457fe5b600091825260209091200154905081565b608081565b600054610100900460ff1680611c335750611c33613b48565b80611c41575060005460ff16155b611c7c5760405162461bcd60e51b815260040180806020018281038252602e815260200180614e0c602e913960400191505060405180910390fd5b600054610100900460ff16158015611ca7576000805460ff1961ff0019909116610100171660011790555b611cb18f8f613b4e565b89605b60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508460598190555083605e819055508260628190555060ff606360006101000a81548163ffffffff021916908363ffffffff1602179055508c605a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000605f819055506001606181905550611d51888888613bf4565b611d5d8c8c848c613cd5565b8015611d6f576000805461ff00191690555b505050505050505050505050505050565b606254341015611dc5576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578363ffffffff1681548110611de357fe5b6000918252602090912001546001600160a01b03161415611e39576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b6000611e4485613892565b9050600160801b8110611e9e576040805162461bcd60e51b815260206004820152601e60248201527f6465706f73697420616d6f756e74206c6172676572207468616e204d61780000604482015290519081900360640190fd5b6000611ea985613892565b9050600160c01b8110611efc576040805162461bcd60e51b81526020600482015260166024820152750c2dadeeadce840d8c2e4cecae440e8d0c2dc40dac2f60531b604482015290519081900360640190fd5b60ff63ffffffff8416118015611f1e575060635463ffffffff90811690841611155b611f61576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b611f9360578563ffffffff1681548110611f7757fe5b6000918252602090912001546001600160a01b031683306138d6565b611fd2576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b6040805133606090811b6020830152603482018a9052600060548301526001600160f01b031960f08a811b8216605885015289901b16605a8301526001600160e01b031960e088811b8216605c85015287901b169082015281516044818303018152606490910190915261204590613963565b50505050505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b600160c01b81565b60635463ffffffff1681565b6057546000906120dd576040805162461bcd60e51b815260206004820152601a60248201527f546865726520617265206e6f20746f6b656e73206c6973746564000000000000604482015290519081900360640190fd5b60575460001901821115612138576040805162461bcd60e51b815260206004820152601f60248201527f546f6b656e206964656e74696669657220646f6573206e6f7420657869737400604482015290519081900360640190fd5b6057828154811061214557fe5b6000918252602090912001546001600160a01b031692915050565b604f546001600160a01b031633146121ad576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b60005b60058163ffffffff16101561232557818163ffffffff16600581106121d157fe5b602002015160016020020151828263ffffffff16600581106121ef57fe5b60200201516060015110156122355760405162461bcd60e51b815260040180806020018281038252602e815260200180614dde602e913960400191505060405180910390fd5b6040518060a00160405280838363ffffffff166005811061225257fe5b6020020151600060200201518152602001438152602001838363ffffffff166005811061227b57fe5b6020020151600160200201518152602001838363ffffffff166005811061229e57fe5b6020020151600260200201518152602001838363ffffffff16600581106122c157fe5b6020020151606001519052603663ffffffff8316600581106122df57fe5b60050201600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505080806001019150506121b0565b5050565b604481565b604f546001600160a01b031681565b605a546001600160a01b031681565b605e5481565b6051546001600160a01b031681565b605f5481565b63ffffffff81565b605b546001600160a01b031681565b600160801b81565b60545481565b6062543410156123d1576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578363ffffffff16815481106123ef57fe5b6000918252602090912001546001600160a01b03161415612445576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b600061245085613892565b9050600160801b8110612498576040805162461bcd60e51b815260206004820152601e6024820152600080516020614ee6833981519152604482015290519081900360640190fd5b60006124a385613892565b9050600160c01b81106124f6576040805162461bcd60e51b81526020600482015260166024820152750c2dadeeadce840d8c2e4cecae440e8d0c2dc40dac2f60531b604482015290519081900360640190fd5b60ff63ffffffff8816118015612518575060635463ffffffff90811690881611155b61255b576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b60ff63ffffffff841611801561257d575060635463ffffffff90811690841611155b6125c0576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b6125d660578563ffffffff1681548110611f7757fe5b612615576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b6040805133606090811b6020830152600060348301526001600160e01b031960e08b811b821660548501526001600160f01b031960f08c811b821660588701528b901b16605a85015288811b8216605c85015287901b169082015281516044818303018152606490910190915261204590613963565b6036816005811061269857fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b605781815481106126ca57fe5b6000918252602090912001546001600160a01b0316905081565b6212750081565b605381815481106126f857fe5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b61ffff81565b605054600160a01b900467ffffffffffffffff1681565b60625481565b6050546001600160a01b03163314806127665750604f546001600160a01b031633145b6127b7576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c79207361666520626f74206f7220676f766572616e6365000000000000604482015290519081900360640190fd5b60005b60058163ffffffff16101561284e576040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525060368263ffffffff166005811061280857fe5b60050201600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505080806001019150506127ba565b5060515460505460408051630e670af560e01b8152600160a01b90920467ffffffffffffffff166004830152516001600160a01b0390921691630e670af59160248082019260009290919082900301818387803b1580156128ae57600080fd5b505af115801561161b573d6000803e3d6000fd5b60555490565b60595481565b60606128e7886000896001600160c01b03168933613dd8565b905060006128f482613ee5565b905060006055600188038154811061290857fe5b600091825260209182902001546040805160038082526080820190925291935060609282018380368337019050509050828160008151811061294657fe5b602002602001018181525050600188038160018151811061296357fe5b602002602001018181525050818160028151811061297d57fe5b602002602001018181525050600061299482613f9a565b60008181526056602052604090205490915060ff16156129fb576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720686173206265656e20616c726561647920646f6e650000604482015290519081900360640190fd5b612a0783898987613ff7565b1515600114612a4d576040805162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b604482015290519081900360640190fd5b6000818152605660205260409020805460ff191660011790558515612b8357612aa660578d63ffffffff1681548110612a8257fe5b6000918252602090912001546001600160a01b03166001600160c01b038d1661407e565b1515600114612afc576040805162461bcd60e51b815260206004820152601860248201527f6d7573742062652064656c617965642077697468647261770000000000000000604482015290519081900360640190fd5b612b3760578d63ffffffff1681548110612b1257fe5b6000918252602090912001546001600160a01b0316336001600160c01b038e16614189565b612b7e576040805162461bcd60e51b81526020600482015260136024820152724661696c20455243323020776974686472617760681b604482015290519081900360640190fd5b612c95565b612bc560578d63ffffffff1681548110612b9957fe5b6000918252602090912001546051546001600160a01b03918216916001600160c01b038f1691166141e2565b50605160009054906101000a90046001600160a01b03166001600160a01b031663cfc0b6413360578f63ffffffff1681548110612bfe57fe5b9060005260206000200160009054906101000a90046001600160a01b03168e6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b03168152602001826001600160c01b031681526020019350505050600060405180830381600087803b158015612c7c57600080fd5b505af1158015612c90573d6000803e3d6000fd5b505050505b60408051888152602081018b905281517f5188a9b05231b9c11371d3781428e6cd9b070184775722b58267d4d6f580a21b929181900390910190a1505050505050505050505050565b604f546001600160a01b03163314612d2b576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b605a80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4d1f446ae5e3b4a60fd49ae4618238eaeb54a43bbae8aa9fbfded816be9faeb19181900360200190a150565b600581565b605b546040805163041d8fb560e51b815233600482015243602482015290516001600160a01b03909216916383b1f6a091604480820192602092909190829003018186803b158015612dd557600080fd5b505afa158015612de9573d6000803e3d6000fd5b505050506040513d6020811015612dff57600080fd5b50511515600114612e48576040805162461bcd60e51b815260206004820152600e60248201526d1a5b98dbdc9c9958dd081cdb1bdd60921b604482015290519081900360640190fd5b6000612ed78c8c8c8c8c8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508d915061423b9050565b9050612ee68f8f8f84876144e3565b60548b9055605580546001810182556000919091527f71beda120aafdd3bb922b360a066d10b7ce81d7ac2ad9874daac46e2282f6b45018a90556063805463ffffffff191663ffffffff8e161790558115612f4d5743605f55612f4833614623565b612fa7565b43605e54605f540111612fa7576040805162461bcd60e51b815260206004820152601d60248201527f74696d656f75742c206d75737420666f726765204c314c324261746368000000604482015290519081900360640190fd5b605b54604080516309cb4a2f60e31b815233600482015290516001600160a01b0390921691634e5a51789160248082019260009290919082900301818387803b158015612ff357600080fd5b505af1158015613007573d6000803e3d6000fd5b505060555460408051918252517f9b346777a734ffed277bddd87dee3490eb9dcc5378c095eac5af3e0f5da04f419350908190036020019150a1505050505050505050505050505050565b604f546001600160a01b0316331461309f576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b60005b82518163ffffffff16101561310d57818163ffffffff16815181106130c357fe5b602002602001015160526000858463ffffffff16815181106130e157fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020556001016130a2565b505050565b60575463ffffffff1015613162576040805162461bcd60e51b81526020600482015260126024820152711d1bdad95b881b1a5cdd081a5cc8199d5b1b60721b604482015290519081900360640190fd5b6001600160a01b03811660009081526058602052604090205460ff16156131d0576040805162461bcd60e51b815260206004820152601b60248201527f746f6b656e206164647265737320616c72656164792061646465640000000000604482015290519081900360640190fd5b6057805460018082019092557fe8e5595d268aaa85b36c3557e9d96c14a4fffaee9f45bcae0c407968a71096300180546001600160a01b0319166001600160a01b038481169182179092556000908152605860205260409020805460ff1916909217909155605a54605954604f5461324c9392831692166138d6565b61328b576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b605754604080516001600160a01b038416815260001990920163ffffffff16602083015280517fcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde9281900390910190a150565b606254341015613323576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578263ffffffff168154811061334157fe5b6000918252602090912001546001600160a01b03161415613397576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b60006133a283613892565b9050600160801b81106133ea576040805162461bcd60e51b815260206004820152601e6024820152600080516020614ee6833981519152604482015290519081900360640190fd5b61340060578363ffffffff168154811061155357fe5b61343f576040805162461bcd60e51b815260206004820152601e6024820152600080516020614e3a833981519152604482015290519081900360640190fd5b602085015160408601516060870151600090811a90613460888585856146a7565b60408051606083811b6bffffffffffffffffffffffff19166020830152603482018c905260006054830181905260f08c901b6001600160f01b0319166058840152605a830181905260e08b901b6001600160e01b031916605c840152908201528151808203604401815260649091019091529091506134de90613963565b505050505050505050565b60625434101561352e576040805162461bcd60e51b81526020600482018190526024820152600080516020614e84833981519152604482015290519081900360640190fd5b60006001600160a01b031660578263ffffffff168154811061354c57fe5b6000918252602090912001546001600160a01b031614156135a2576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b60006135ad83613892565b9050600160c01b8110613600576040805162461bcd60e51b81526020600482015260166024820152750c2dadeeadce840d8c2e4cecae440e8d0c2dc40dac2f60531b604482015290519081900360640190fd5b60ff63ffffffff8516118015613622575060635463ffffffff90811690851611155b613665576040805162461bcd60e51b815260206004820152600f60248201526e0d2dcecc2d8d2c840cce4deda92c8f608b1b604482015290519081900360640190fd5b6040805133606090811b60208301526000603483018190526001600160e01b031960e089811b8216605486015260588501929092526001600160f01b031960f089901b16605a8501529086901b16605c830152600160e01b9082015281516044818303018152606490910190915261161b90613963565b60615481565b605d5481565b604f546001600160a01b03163314613735576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b621275008167ffffffffffffffff161115613797576040805162461bcd60e51b815260206004820152601c60248201527f45786365656473204d41585f5749544844524157414c5f44454c415900000000604482015290519081900360640190fd5b6050805467ffffffffffffffff909216600160a01b0267ffffffffffffffff60a01b19909216919091179055565b604f546001600160a01b03163314613812576040805162461bcd60e51b81526020600482015260166024820152600080516020614dbe833981519152604482015290519081900360640190fd5b60f08111156138525760405162461bcd60e51b815260040180806020018281038252602a815260200180614e5a602a913960400191505060405180910390fd5b605e8190556040805182815290517fd8b1725791f444b20ed722612b608bdabde06e3f099a1234b4a4caa5dcc19eb89181900360200190a150565b600181565b60006103ff8216601f600b84901c166001600a85811c8216919083900a9081850290831480156138c157508315155b156138cc5760028204015b9695505050505050565b604080516323b872dd60e01b81523360048201526001600160a01b0383811660248301526044820185905291516000928616916323b872dd91606480830192602092919082900301818787803b15801561392f57600080fd5b505af1158015613943573d6000803e3d6000fd5b505050506040513d602081101561395957600080fd5b5051949350505050565b6000605c600060615481526020019081526020016000209050806000018260405160200180838054600181600116156101000203166002900480156139df5780601f106139bd5761010080835404028352918201916139df565b820191906000526020600020905b8154815290600101906020018083116139cb575b5050825160208401908083835b60208310613a0b5780518252601f1990920191602091820191016139ec565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529093528051613a4e965087955092019250614cca9050565b5080546000906044906002600019610100600184161502019091160404905060006062541115613a875760625460018301805490910190555b7f44ed7960659190edb7acf74ac1bd6c7e8803bfa3aebe02c4599a0770fac3f88483606154836040518080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015613af6578181015183820152602001613ade565b50505050905090810190601f168015613b235780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a16080811061310d57606180546001019055505050565b303b1590565b60005b82518161ffff16101561310d5760536040518060400160405280858461ffff1681518110613b7b57fe5b60200260200101516001600160a01b03168152602001848461ffff1681518110613ba157fe5b602090810291909101810151909152825460018082018555600094855293829020835160029092020180546001600160a01b0319166001600160a01b039092169190911781559101519082015501613b51565b600054610100900460ff1680613c0d5750613c0d613b48565b80613c1b575060005460ff16155b613c565760405162461bcd60e51b815260040180806020018281038252602e815260200180614e0c602e913960400191505060405180910390fd5b600054610100900460ff16158015613c81576000805460ff1961ff0019909116610100171660011790555b603380546001600160a01b038087166001600160a01b031992831617909255603480548684169083161790556035805492851692909116919091179055801561161b576000805461ff001916905550505050565b600054610100900460ff1680613cee5750613cee613b48565b80613cfc575060005460ff16155b613d375760405162461bcd60e51b815260040180806020018281038252602e815260200180614e0c602e913960400191505060405180910390fd5b600054610100900460ff16158015613d62576000805460ff1961ff0019909116610100171660011790555b604f80546001600160a01b03199081166001600160a01b03888116919091179092556050805482168784161767ffffffffffffffff60a01b1916600160a01b67ffffffffffffffff881602179055605180549091169184169190911790558015611b39576000805461ff00191690555050505050565b60408051600480825260a08201909252606091829190602082016080803683370190505090508663ffffffff1681600081518110613e1257fe5b60200260200101818152505060208665ffffffffffff16901b65ffffffffffff1681600081518110613e4057fe5b602002602001018181511791508181525050604860ff85901c901b81600081518110613e6857fe5b6020026020010181815117915081815250508481600181518110613e8857fe5b602090810291909101015280516001600160ff1b0385169082906002908110613ead57fe5b602002602001018181525050826001600160a01b031681600381518110613ed057fe5b60209081029190910101529695505050505050565b60355460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019180860191028083838b5b83811015613f45578181015183820152602001613f2d565b505050509050019250505060206040518083038186803b158015613f6857600080fd5b505afa158015613f7c573d6000803e3d6000fd5b505050506040513d6020811015613f9257600080fd5b505192915050565b60345460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019185810191028083838b8315613f45578181015183820152602001613f2d565b6000806140048484614775565b8551909150600090600019015b600081126140715786818151811061402557fe5b6020026020010151915060008187600082121561403e57fe5b6001911c81161490508061405b5761405684846147fb565b614065565b61406583856147fb565b93505060001901614011565b5050909414949350505050565b60008061408b848461485e565b90506000614098826148ae565b905061ffff811461417c576140ac81614945565b6000603682600581106140bb57fe5b600502016002015411614115576040805162461bcd60e51b815260206004820152601960248201527f696e7374616e74207769746864726177616c2077617374656400000000000000604482015290519081900360640190fd5b6036816005811061412257fe5b60050201600401546036826005811061413757fe5b6005020160020154141561415f57436036826005811061415357fe5b60050201600101819055505b6036816005811061416c57fe5b6005020160020180546000190190555b6001925050505b92915050565b6000836001600160a01b031663a9059cbb84846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561392f57600080fd5b6000836001600160a01b031663095ea7b383856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561392f57600080fd5b6000466060841561428c5761428589898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506149e492505050565b90506142af565b604080516144008082526144208201909252906020820181803683370190505090505b6060600b605386815481106142c057fe5b9060005260206000209060020201600101540261456a0167ffffffffffffffff811180156142ed57600080fd5b506040519080825280601f01601f191660200182016040528015614318576020820181803683370190505b5090506060606360009054906101000a900463ffffffff168e6054548f8f604051602001808663ffffffff1660e01b81526004018563ffffffff1660e01b81526004018481526020018381526020018281526020019550505050505060405160208183030381529060405290506000806020830191506020840190506143a082828551614c2c565b8251810190506020850191506143b882828751614c2c565b84518101905060208b0191508a51600b60538a815481106143d557fe5b9060005260206000209060020201600101540203810190506143f982828d51614c2c565b8a518101905060208a01915061441182828c51614c2c565b8951810190508560f01b81527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002856040518082805190602001908083835b602083106144705780518252601f199092019160209182019101614451565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156144af573d6000803e3d6000fd5b5050506040513d60208110156144c457600080fd5b5051816144cd57fe5b0696505050505050509998505050505050505050565b605381815481106144f057fe5b60009182526020909120600290910201546040805163624c8f8760e01b81526001600160a01b039092169163624c8f879188918891889188916004909101908190869080828437600083820152601f01601f1916909101905084608080828437600083820152601f01601f1916909101905083604080828437600083820152601f01601f19169091019283525050604051602080830195509350915081900382018186803b1580156145a157600080fd5b505afa1580156145b5573d6000803e3d6000fd5b505050506040513d60208110156145cb57600080fd5b50511515600114611b39576040805162461bcd60e51b815260206004820152601b60248201527f7a6b2d736e61726b2070726f6f66206973206e6f742076616c69640000000000604482015290519081900360640190fd5b6060546000908152605c602052604081206001810154916146448282614d48565b5060006001918201556060805490910190819055606154141561466b576061805460010190555b8015612325576040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561310d573d6000803e3d6000fd5b6000808560405160200180807f19457468657265756d205369676e6564204d6573736167653a0a393800000000815250601c0180614ea46042913960420182815260200191505060405160208183030381529060405280519060200120905060018184878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015614760573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b604080516003808252608082019092526000916060919060208201838036833701905050905083816000815181106147a957fe5b60200260200101818152505082816001815181106147c357fe5b6020026020010181815250506001816002815181106147de57fe5b6020026020010181815250506147f381613f9a565b949350505050565b6040805160028082526060808301845260009390929190602083019080368337019050509050838160008151811061482f57fe5b602002602001018181525050828160018151811061484957fe5b6020026020010181815250506147f381614c6d565b6001600160a01b03821660009081526052602052604081205461488357506000614183565b506001600160a01b0391909116600090815260526020526040902054670de0b6b3a764000091020490565b6000816148be575061ffff611319565b60005b60058163ffffffff1610156149035760368163ffffffff16600581106148e357fe5b600502015483116148fb5763ffffffff169050611319565b6001016148c1565b506040805162461bcd60e51b8152602060048201526011602482015270195e18d95959081b585e08185b5bdd5b9d607a1b604482015290519081900360640190fd5b4360006036836005811061495557fe5b600502019050600081600101548303905081600401548260020154148061497f5750816003015481105b1561498c575050506149e1565b60008260030154828161499b57fe5b049050826004015481846002015401106149be5760048301546002840155611b39565b600283018054820190556003830154600184018054918302919091019055505050505b50565b6060600060658351816149f357fe5b606080546000908152605c60209081526040918290208054835160026001831615610100026000190190921691909104601f810184900484028201840190945283815295909404955091939291830182828015614a915780601f10614a6657610100808354040283529160200191614a91565b820191906000526020600020905b815481529060010190602001808311614a7457829003601f168201915b5050505050905060006044825181614aa557fe5b0490506101008382011115614af2576040805162461bcd60e51b815260206004820152600e60248201526d4c31205458206f766572666c6f7760901b604482015290519081900360640190fd5b604080516144008082526144208201909252606091602082018180368337019050509050600080602085019150602083019050614b3182828751614c2c565b6020888101906044860285010160005b88811015614c1d578251600184015160218501516041860151606187015160578054606590990198919560f81c9493929160e087901c9160009182919084908110614b8857fe5b6000918252602090912001546001600160a01b03161415614bde576040805162461bcd60e51b815260206004820152601d6024820152600080516020614d9e833981519152604482015290519081900360640190fd5b60ff861615614bf657614bf3838587896146a7565b90505b60601b8852601488019190915260e01b603c87015250506044909301925050600101614b41565b50939998505050505050505050565b5b60208110614c4c578251825260209283019290910190601f1901614c2d565b915181516020939093036101000a6000190180199091169216919091179052565b60335460405163311083ed60e21b81526020600482018181528451602484015284516000946001600160a01b03169363c4420fb49387939283926044019185810191028083838b8315613f45578181015183820152602001613f2d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614d0b57805160ff1916838001178555614d38565b82800160010185558215614d38579182015b82811115614d38578251825591602001919060010190614d1d565b50614d44929150614d88565b5090565b50805460018160011615610100020316600290046000825580601f10614d6e57506149e1565b601f0160209004906000526020600020908101906149e191905b5b80821115614d445760008155600101614d8956fe746f6b656e20686173206e6f74206265656e20726567697374657265640000004f6e6c7920676f766572616e636520616464726573730000000000000000000063616e2774206265206d6f7265207769746864726177616c73207468616e204d6178207769746864726177616c73436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65644661696c206465706f736974204552433230207472616e73616374696f6e0000666f7267652074696d656f7574206d757374206265206c657373207468616e2032343020626c6f636b736d73672e76616c7565206c657373207468616e206665652072657175697265644920617574686f72697a65207468697320626162796a75626a7562206b657920666f72206865726d657a20726f6c6c7570206163636f756e74206372656174696f6e6465706f73697420616d6f756e74206c6172676572207468616e206d61780000a264697066735822122019f777a93b096084a8ea02d678666282e64b6038e800ae2517763ad99bef7d1464736f6c634300060c0033" + +// DeployHermez deploys a new Ethereum contract, binding an instance of Hermez to it. +func DeployHermez(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Hermez, error) { + parsed, err := abi.JSON(strings.NewReader(HermezABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(HermezBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil +} + +// Hermez is an auto generated Go binding around an Ethereum contract. +type Hermez struct { + HermezCaller // Read-only binding to the contract + HermezTransactor // Write-only binding to the contract + HermezFilterer // Log filterer for contract events +} + +// HermezCaller is an auto generated read-only Go binding around an Ethereum contract. +type HermezCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezTransactor is an auto generated write-only Go binding around an Ethereum contract. +type HermezTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type HermezFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// HermezSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type HermezSession struct { + Contract *Hermez // 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 +} + +// HermezCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type HermezCallerSession struct { + Contract *HermezCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// HermezTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type HermezTransactorSession struct { + Contract *HermezTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// HermezRaw is an auto generated low-level Go binding around an Ethereum contract. +type HermezRaw struct { + Contract *Hermez // Generic contract binding to access the raw methods on +} + +// HermezCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type HermezCallerRaw struct { + Contract *HermezCaller // Generic read-only contract binding to access the raw methods on +} + +// HermezTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type HermezTransactorRaw struct { + Contract *HermezTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewHermez creates a new instance of Hermez, bound to a specific deployed contract. +func NewHermez(address common.Address, backend bind.ContractBackend) (*Hermez, error) { + contract, err := bindHermez(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Hermez{HermezCaller: HermezCaller{contract: contract}, HermezTransactor: HermezTransactor{contract: contract}, HermezFilterer: HermezFilterer{contract: contract}}, nil +} + +// NewHermezCaller creates a new read-only instance of Hermez, bound to a specific deployed contract. +func NewHermezCaller(address common.Address, caller bind.ContractCaller) (*HermezCaller, error) { + contract, err := bindHermez(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &HermezCaller{contract: contract}, nil +} + +// NewHermezTransactor creates a new write-only instance of Hermez, bound to a specific deployed contract. +func NewHermezTransactor(address common.Address, transactor bind.ContractTransactor) (*HermezTransactor, error) { + contract, err := bindHermez(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &HermezTransactor{contract: contract}, nil +} + +// NewHermezFilterer creates a new log filterer instance of Hermez, bound to a specific deployed contract. +func NewHermezFilterer(address common.Address, filterer bind.ContractFilterer) (*HermezFilterer, error) { + contract, err := bindHermez(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &HermezFilterer{contract: contract}, nil +} + +// bindHermez binds a generic wrapper to an already deployed contract. +func bindHermez(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(HermezABI)) + 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 (_Hermez *HermezRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _Hermez.Contract.HermezCaller.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 (_Hermez *HermezRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Hermez.Contract.HermezTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Hermez *HermezRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Hermez.Contract.HermezTransactor.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 (_Hermez *HermezCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _Hermez.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 (_Hermez *HermezTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Hermez.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Hermez *HermezTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Hermez.Contract.contract.Transact(opts, method, params...) +} + +// EXITIDX is a free data retrieval call binding the contract method 0xffd3dcf9. +// +// Solidity: function EXIT_IDX() view returns(uint32) +func (_Hermez *HermezCaller) EXITIDX(opts *bind.CallOpts) (uint32, error) { + var ( + ret0 = new(uint32) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "EXIT_IDX") + return *ret0, err +} + +// EXITIDX is a free data retrieval call binding the contract method 0xffd3dcf9. +// +// Solidity: function EXIT_IDX() view returns(uint32) +func (_Hermez *HermezSession) EXITIDX() (uint32, error) { + return _Hermez.Contract.EXITIDX(&_Hermez.CallOpts) +} + +// EXITIDX is a free data retrieval call binding the contract method 0xffd3dcf9. +// +// Solidity: function EXIT_IDX() view returns(uint32) +func (_Hermez *HermezCallerSession) EXITIDX() (uint32, error) { + return _Hermez.Contract.EXITIDX(&_Hermez.CallOpts) +} + +// FIRSTIDX is a free data retrieval call binding the contract method 0x35aa27aa. +// +// Solidity: function FIRST_IDX() view returns(uint32) +func (_Hermez *HermezCaller) FIRSTIDX(opts *bind.CallOpts) (uint32, error) { + var ( + ret0 = new(uint32) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "FIRST_IDX") + return *ret0, err +} + +// FIRSTIDX is a free data retrieval call binding the contract method 0x35aa27aa. +// +// Solidity: function FIRST_IDX() view returns(uint32) +func (_Hermez *HermezSession) FIRSTIDX() (uint32, error) { + return _Hermez.Contract.FIRSTIDX(&_Hermez.CallOpts) +} + +// FIRSTIDX is a free data retrieval call binding the contract method 0x35aa27aa. +// +// Solidity: function FIRST_IDX() view returns(uint32) +func (_Hermez *HermezCallerSession) FIRSTIDX() (uint32, error) { + return _Hermez.Contract.FIRSTIDX(&_Hermez.CallOpts) +} + +// L1COORDINATORBYTES is a free data retrieval call binding the contract method 0x4d09f3fd. +// +// Solidity: function L1_COORDINATOR_BYTES() view returns(uint256) +func (_Hermez *HermezCaller) L1COORDINATORBYTES(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "L1_COORDINATOR_BYTES") + return *ret0, err +} + +// L1COORDINATORBYTES is a free data retrieval call binding the contract method 0x4d09f3fd. +// +// Solidity: function L1_COORDINATOR_BYTES() view returns(uint256) +func (_Hermez *HermezSession) L1COORDINATORBYTES() (*big.Int, error) { + return _Hermez.Contract.L1COORDINATORBYTES(&_Hermez.CallOpts) +} + +// L1COORDINATORBYTES is a free data retrieval call binding the contract method 0x4d09f3fd. +// +// Solidity: function L1_COORDINATOR_BYTES() view returns(uint256) +func (_Hermez *HermezCallerSession) L1COORDINATORBYTES() (*big.Int, error) { + return _Hermez.Contract.L1COORDINATORBYTES(&_Hermez.CallOpts) +} + +// L1USERBYTES is a free data retrieval call binding the contract method 0x6d78e572. +// +// Solidity: function L1_USER_BYTES() view returns(uint256) +func (_Hermez *HermezCaller) L1USERBYTES(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "L1_USER_BYTES") + return *ret0, err +} + +// L1USERBYTES is a free data retrieval call binding the contract method 0x6d78e572. +// +// Solidity: function L1_USER_BYTES() view returns(uint256) +func (_Hermez *HermezSession) L1USERBYTES() (*big.Int, error) { + return _Hermez.Contract.L1USERBYTES(&_Hermez.CallOpts) +} + +// L1USERBYTES is a free data retrieval call binding the contract method 0x6d78e572. +// +// Solidity: function L1_USER_BYTES() view returns(uint256) +func (_Hermez *HermezCallerSession) L1USERBYTES() (*big.Int, error) { + return _Hermez.Contract.L1USERBYTES(&_Hermez.CallOpts) +} + +// L2BYTES is a free data retrieval call binding the contract method 0x4fc51559. +// +// Solidity: function L2_BYTES() view returns(uint256) +func (_Hermez *HermezCaller) L2BYTES(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "L2_BYTES") + return *ret0, err +} + +// L2BYTES is a free data retrieval call binding the contract method 0x4fc51559. +// +// Solidity: function L2_BYTES() view returns(uint256) +func (_Hermez *HermezSession) L2BYTES() (*big.Int, error) { + return _Hermez.Contract.L2BYTES(&_Hermez.CallOpts) +} + +// L2BYTES is a free data retrieval call binding the contract method 0x4fc51559. +// +// Solidity: function L2_BYTES() view returns(uint256) +func (_Hermez *HermezCallerSession) L2BYTES() (*big.Int, error) { + return _Hermez.Contract.L2BYTES(&_Hermez.CallOpts) +} + +// LASTIDX is a free data retrieval call binding the contract method 0x8e65ab4f. +// +// Solidity: function LAST_IDX() view returns(uint32) +func (_Hermez *HermezCaller) LASTIDX(opts *bind.CallOpts) (uint32, error) { + var ( + ret0 = new(uint32) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "LAST_IDX") + return *ret0, err +} + +// LASTIDX is a free data retrieval call binding the contract method 0x8e65ab4f. +// +// Solidity: function LAST_IDX() view returns(uint32) +func (_Hermez *HermezSession) LASTIDX() (uint32, error) { + return _Hermez.Contract.LASTIDX(&_Hermez.CallOpts) +} + +// LASTIDX is a free data retrieval call binding the contract method 0x8e65ab4f. +// +// Solidity: function LAST_IDX() view returns(uint32) +func (_Hermez *HermezCallerSession) LASTIDX() (uint32, error) { + return _Hermez.Contract.LASTIDX(&_Hermez.CallOpts) +} + +// MAXAMOUNTDEPOSIT is a free data retrieval call binding the contract method 0x93f4d252. +// +// Solidity: function MAX_AMOUNT_DEPOSIT() view returns(uint256) +func (_Hermez *HermezCaller) MAXAMOUNTDEPOSIT(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_AMOUNT_DEPOSIT") + return *ret0, err +} + +// MAXAMOUNTDEPOSIT is a free data retrieval call binding the contract method 0x93f4d252. +// +// Solidity: function MAX_AMOUNT_DEPOSIT() view returns(uint256) +func (_Hermez *HermezSession) MAXAMOUNTDEPOSIT() (*big.Int, error) { + return _Hermez.Contract.MAXAMOUNTDEPOSIT(&_Hermez.CallOpts) +} + +// MAXAMOUNTDEPOSIT is a free data retrieval call binding the contract method 0x93f4d252. +// +// Solidity: function MAX_AMOUNT_DEPOSIT() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXAMOUNTDEPOSIT() (*big.Int, error) { + return _Hermez.Contract.MAXAMOUNTDEPOSIT(&_Hermez.CallOpts) +} + +// MAXAMOUNTL2 is a free data retrieval call binding the contract method 0x5adb5bcd. +// +// Solidity: function MAX_AMOUNT_L2() view returns(uint256) +func (_Hermez *HermezCaller) MAXAMOUNTL2(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_AMOUNT_L2") + return *ret0, err +} + +// MAXAMOUNTL2 is a free data retrieval call binding the contract method 0x5adb5bcd. +// +// Solidity: function MAX_AMOUNT_L2() view returns(uint256) +func (_Hermez *HermezSession) MAXAMOUNTL2() (*big.Int, error) { + return _Hermez.Contract.MAXAMOUNTL2(&_Hermez.CallOpts) +} + +// MAXAMOUNTL2 is a free data retrieval call binding the contract method 0x5adb5bcd. +// +// Solidity: function MAX_AMOUNT_L2() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXAMOUNTL2() (*big.Int, error) { + return _Hermez.Contract.MAXAMOUNTL2(&_Hermez.CallOpts) +} + +// MAXL1TX is a free data retrieval call binding the contract method 0x45d1c25b. +// +// Solidity: function MAX_L1_TX() view returns(uint256) +func (_Hermez *HermezCaller) MAXL1TX(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_L1_TX") + return *ret0, err +} + +// MAXL1TX is a free data retrieval call binding the contract method 0x45d1c25b. +// +// Solidity: function MAX_L1_TX() view returns(uint256) +func (_Hermez *HermezSession) MAXL1TX() (*big.Int, error) { + return _Hermez.Contract.MAXL1TX(&_Hermez.CallOpts) +} + +// MAXL1TX is a free data retrieval call binding the contract method 0x45d1c25b. +// +// Solidity: function MAX_L1_TX() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXL1TX() (*big.Int, error) { + return _Hermez.Contract.MAXL1TX(&_Hermez.CallOpts) +} + +// MAXL1USERTX is a free data retrieval call binding the contract method 0x51ff68b0. +// +// Solidity: function MAX_L1_USER_TX() view returns(uint256) +func (_Hermez *HermezCaller) MAXL1USERTX(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_L1_USER_TX") + return *ret0, err +} + +// MAXL1USERTX is a free data retrieval call binding the contract method 0x51ff68b0. +// +// Solidity: function MAX_L1_USER_TX() view returns(uint256) +func (_Hermez *HermezSession) MAXL1USERTX() (*big.Int, error) { + return _Hermez.Contract.MAXL1USERTX(&_Hermez.CallOpts) +} + +// MAXL1USERTX is a free data retrieval call binding the contract method 0x51ff68b0. +// +// Solidity: function MAX_L1_USER_TX() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXL1USERTX() (*big.Int, error) { + return _Hermez.Contract.MAXL1USERTX(&_Hermez.CallOpts) +} + +// MAXTOKENS is a free data retrieval call binding the contract method 0xf47c84c5. +// +// Solidity: function MAX_TOKENS() view returns(uint256) +func (_Hermez *HermezCaller) MAXTOKENS(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_TOKENS") + return *ret0, err +} + +// MAXTOKENS is a free data retrieval call binding the contract method 0xf47c84c5. +// +// Solidity: function MAX_TOKENS() view returns(uint256) +func (_Hermez *HermezSession) MAXTOKENS() (*big.Int, error) { + return _Hermez.Contract.MAXTOKENS(&_Hermez.CallOpts) +} + +// MAXTOKENS is a free data retrieval call binding the contract method 0xf47c84c5. +// +// Solidity: function MAX_TOKENS() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXTOKENS() (*big.Int, error) { + return _Hermez.Contract.MAXTOKENS(&_Hermez.CallOpts) +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint256) +func (_Hermez *HermezCaller) MAXWITHDRAWALDELAY(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "MAX_WITHDRAWAL_DELAY") + return *ret0, err +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint256) +func (_Hermez *HermezSession) MAXWITHDRAWALDELAY() (*big.Int, error) { + return _Hermez.Contract.MAXWITHDRAWALDELAY(&_Hermez.CallOpts) +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint256) +func (_Hermez *HermezCallerSession) MAXWITHDRAWALDELAY() (*big.Int, error) { + return _Hermez.Contract.MAXWITHDRAWALDELAY(&_Hermez.CallOpts) +} + +// NOLIMIT is a free data retrieval call binding the contract method 0xa60034fb. +// +// Solidity: function NO_LIMIT() view returns(uint256) +func (_Hermez *HermezCaller) NOLIMIT(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "NO_LIMIT") + return *ret0, err +} + +// NOLIMIT is a free data retrieval call binding the contract method 0xa60034fb. +// +// Solidity: function NO_LIMIT() view returns(uint256) +func (_Hermez *HermezSession) NOLIMIT() (*big.Int, error) { + return _Hermez.Contract.NOLIMIT(&_Hermez.CallOpts) +} + +// NOLIMIT is a free data retrieval call binding the contract method 0xa60034fb. +// +// Solidity: function NO_LIMIT() view returns(uint256) +func (_Hermez *HermezCallerSession) NOLIMIT() (*big.Int, error) { + return _Hermez.Contract.NOLIMIT(&_Hermez.CallOpts) +} + +// NUMBUCKETS is a free data retrieval call binding the contract method 0xc56ca84e. +// +// Solidity: function NUM_BUCKETS() view returns(uint256) +func (_Hermez *HermezCaller) NUMBUCKETS(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "NUM_BUCKETS") + return *ret0, err +} + +// NUMBUCKETS is a free data retrieval call binding the contract method 0xc56ca84e. +// +// Solidity: function NUM_BUCKETS() view returns(uint256) +func (_Hermez *HermezSession) NUMBUCKETS() (*big.Int, error) { + return _Hermez.Contract.NUMBUCKETS(&_Hermez.CallOpts) +} + +// NUMBUCKETS is a free data retrieval call binding the contract method 0xc56ca84e. +// +// Solidity: function NUM_BUCKETS() view returns(uint256) +func (_Hermez *HermezCallerSession) NUMBUCKETS() (*big.Int, error) { + return _Hermez.Contract.NUMBUCKETS(&_Hermez.CallOpts) +} + +// RFIELD is a free data retrieval call binding the contract method 0x58de75c4. +// +// Solidity: function RFIELD() view returns(uint256) +func (_Hermez *HermezCaller) RFIELD(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "RFIELD") + return *ret0, err +} + +// RFIELD is a free data retrieval call binding the contract method 0x58de75c4. +// +// Solidity: function RFIELD() view returns(uint256) +func (_Hermez *HermezSession) RFIELD() (*big.Int, error) { + return _Hermez.Contract.RFIELD(&_Hermez.CallOpts) +} + +// RFIELD is a free data retrieval call binding the contract method 0x58de75c4. +// +// Solidity: function RFIELD() view returns(uint256) +func (_Hermez *HermezCallerSession) RFIELD() (*big.Int, error) { + return _Hermez.Contract.RFIELD(&_Hermez.CallOpts) +} + +// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d. +// +// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals) +func (_Hermez *HermezCaller) Buckets(opts *bind.CallOpts, arg0 *big.Int) (struct { + CeilUSD *big.Int + BlockStamp *big.Int + Withdrawals *big.Int + BlockWithdrawalRate *big.Int + MaxWithdrawals *big.Int +}, error) { + ret := new(struct { + CeilUSD *big.Int + BlockStamp *big.Int + Withdrawals *big.Int + BlockWithdrawalRate *big.Int + MaxWithdrawals *big.Int + }) + out := ret + err := _Hermez.contract.Call(opts, out, "buckets", arg0) + return *ret, err +} + +// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d. +// +// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals) +func (_Hermez *HermezSession) Buckets(arg0 *big.Int) (struct { + CeilUSD *big.Int + BlockStamp *big.Int + Withdrawals *big.Int + BlockWithdrawalRate *big.Int + MaxWithdrawals *big.Int +}, error) { + return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0) +} + +// Buckets is a free data retrieval call binding the contract method 0x9b51fb0d. +// +// Solidity: function buckets(uint256 ) view returns(uint256 ceilUSD, uint256 blockStamp, uint256 withdrawals, uint256 blockWithdrawalRate, uint256 maxWithdrawals) +func (_Hermez *HermezCallerSession) Buckets(arg0 *big.Int) (struct { + CeilUSD *big.Int + BlockStamp *big.Int + Withdrawals *big.Int + BlockWithdrawalRate *big.Int + MaxWithdrawals *big.Int +}, error) { + return _Hermez.Contract.Buckets(&_Hermez.CallOpts, arg0) +} + +// CircuitVerifiers is a free data retrieval call binding the contract method 0xa4b457ca. +// +// Solidity: function circuitVerifiers(uint256 ) view returns(address verifierInt, uint256 maxTx) +func (_Hermez *HermezCaller) CircuitVerifiers(opts *bind.CallOpts, arg0 *big.Int) (struct { + VerifierInt common.Address + MaxTx *big.Int +}, error) { + ret := new(struct { + VerifierInt common.Address + MaxTx *big.Int + }) + out := ret + err := _Hermez.contract.Call(opts, out, "circuitVerifiers", arg0) + return *ret, err +} + +// CircuitVerifiers is a free data retrieval call binding the contract method 0xa4b457ca. +// +// Solidity: function circuitVerifiers(uint256 ) view returns(address verifierInt, uint256 maxTx) +func (_Hermez *HermezSession) CircuitVerifiers(arg0 *big.Int) (struct { + VerifierInt common.Address + MaxTx *big.Int +}, error) { + return _Hermez.Contract.CircuitVerifiers(&_Hermez.CallOpts, arg0) +} + +// CircuitVerifiers is a free data retrieval call binding the contract method 0xa4b457ca. +// +// Solidity: function circuitVerifiers(uint256 ) view returns(address verifierInt, uint256 maxTx) +func (_Hermez *HermezCallerSession) CircuitVerifiers(arg0 *big.Int) (struct { + VerifierInt common.Address + MaxTx *big.Int +}, error) { + return _Hermez.Contract.CircuitVerifiers(&_Hermez.CallOpts, arg0) +} + +// ConsensusContract is a free data retrieval call binding the contract method 0x931cc2d4. +// +// Solidity: function consensusContract() view returns(address) +func (_Hermez *HermezCaller) ConsensusContract(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "consensusContract") + return *ret0, err +} + +// ConsensusContract is a free data retrieval call binding the contract method 0x931cc2d4. +// +// Solidity: function consensusContract() view returns(address) +func (_Hermez *HermezSession) ConsensusContract() (common.Address, error) { + return _Hermez.Contract.ConsensusContract(&_Hermez.CallOpts) +} + +// ConsensusContract is a free data retrieval call binding the contract method 0x931cc2d4. +// +// Solidity: function consensusContract() view returns(address) +func (_Hermez *HermezCallerSession) ConsensusContract() (common.Address, error) { + return _Hermez.Contract.ConsensusContract(&_Hermez.CallOpts) +} + +// CurrentIdx is a free data retrieval call binding the contract method 0x5bfac41f. +// +// Solidity: function currentIdx() view returns(uint32) +func (_Hermez *HermezCaller) CurrentIdx(opts *bind.CallOpts) (uint32, error) { + var ( + ret0 = new(uint32) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "currentIdx") + return *ret0, err +} + +// CurrentIdx is a free data retrieval call binding the contract method 0x5bfac41f. +// +// Solidity: function currentIdx() view returns(uint32) +func (_Hermez *HermezSession) CurrentIdx() (uint32, error) { + return _Hermez.Contract.CurrentIdx(&_Hermez.CallOpts) +} + +// CurrentIdx is a free data retrieval call binding the contract method 0x5bfac41f. +// +// Solidity: function currentIdx() view returns(uint32) +func (_Hermez *HermezCallerSession) CurrentIdx() (uint32, error) { + return _Hermez.Contract.CurrentIdx(&_Hermez.CallOpts) +} + +// CurrentToForgeL1TxsNum is a free data retrieval call binding the contract method 0x08220e0f. +// +// Solidity: function currentToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezCaller) CurrentToForgeL1TxsNum(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "currentToForgeL1TxsNum") + return *ret0, err +} + +// CurrentToForgeL1TxsNum is a free data retrieval call binding the contract method 0x08220e0f. +// +// Solidity: function currentToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezSession) CurrentToForgeL1TxsNum() (*big.Int, error) { + return _Hermez.Contract.CurrentToForgeL1TxsNum(&_Hermez.CallOpts) +} + +// CurrentToForgeL1TxsNum is a free data retrieval call binding the contract method 0x08220e0f. +// +// Solidity: function currentToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezCallerSession) CurrentToForgeL1TxsNum() (*big.Int, error) { + return _Hermez.Contract.CurrentToForgeL1TxsNum(&_Hermez.CallOpts) +} + +// ExitNullifierMap is a free data retrieval call binding the contract method 0x2bf41a2f. +// +// Solidity: function exitNullifierMap(uint256 ) view returns(bool) +func (_Hermez *HermezCaller) ExitNullifierMap(opts *bind.CallOpts, arg0 *big.Int) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "exitNullifierMap", arg0) + return *ret0, err +} + +// ExitNullifierMap is a free data retrieval call binding the contract method 0x2bf41a2f. +// +// Solidity: function exitNullifierMap(uint256 ) view returns(bool) +func (_Hermez *HermezSession) ExitNullifierMap(arg0 *big.Int) (bool, error) { + return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0) +} + +// ExitNullifierMap is a free data retrieval call binding the contract method 0x2bf41a2f. +// +// Solidity: function exitNullifierMap(uint256 ) view returns(bool) +func (_Hermez *HermezCallerSession) ExitNullifierMap(arg0 *big.Int) (bool, error) { + return _Hermez.Contract.ExitNullifierMap(&_Hermez.CallOpts, arg0) +} + +// ExitRoots is a free data retrieval call binding the contract method 0x50263f8c. +// +// Solidity: function exitRoots(uint256 ) view returns(uint256) +func (_Hermez *HermezCaller) ExitRoots(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "exitRoots", arg0) + return *ret0, err +} + +// ExitRoots is a free data retrieval call binding the contract method 0x50263f8c. +// +// Solidity: function exitRoots(uint256 ) view returns(uint256) +func (_Hermez *HermezSession) ExitRoots(arg0 *big.Int) (*big.Int, error) { + return _Hermez.Contract.ExitRoots(&_Hermez.CallOpts, arg0) +} + +// ExitRoots is a free data retrieval call binding the contract method 0x50263f8c. +// +// Solidity: function exitRoots(uint256 ) view returns(uint256) +func (_Hermez *HermezCallerSession) ExitRoots(arg0 *big.Int) (*big.Int, error) { + return _Hermez.Contract.ExitRoots(&_Hermez.CallOpts, arg0) +} + +// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8. +// +// Solidity: function feeAddToken() view returns(uint256) +func (_Hermez *HermezCaller) FeeAddToken(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "feeAddToken") + return *ret0, err +} + +// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8. +// +// Solidity: function feeAddToken() view returns(uint256) +func (_Hermez *HermezSession) FeeAddToken() (*big.Int, error) { + return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts) +} + +// FeeAddToken is a free data retrieval call binding the contract method 0xbded9bb8. +// +// Solidity: function feeAddToken() view returns(uint256) +func (_Hermez *HermezCallerSession) FeeAddToken() (*big.Int, error) { + return _Hermez.Contract.FeeAddToken(&_Hermez.CallOpts) +} + +// FeeL1UserTx is a free data retrieval call binding the contract method 0xab943174. +// +// Solidity: function feeL1UserTx() view returns(uint256) +func (_Hermez *HermezCaller) FeeL1UserTx(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "feeL1UserTx") + return *ret0, err +} + +// FeeL1UserTx is a free data retrieval call binding the contract method 0xab943174. +// +// Solidity: function feeL1UserTx() view returns(uint256) +func (_Hermez *HermezSession) FeeL1UserTx() (*big.Int, error) { + return _Hermez.Contract.FeeL1UserTx(&_Hermez.CallOpts) +} + +// FeeL1UserTx is a free data retrieval call binding the contract method 0xab943174. +// +// Solidity: function feeL1UserTx() view returns(uint256) +func (_Hermez *HermezCallerSession) FeeL1UserTx() (*big.Int, error) { + return _Hermez.Contract.FeeL1UserTx(&_Hermez.CallOpts) +} + +// ForgeL1Timeout is a free data retrieval call binding the contract method 0x7e4e06d7. +// +// Solidity: function forgeL1Timeout() view returns(uint256) +func (_Hermez *HermezCaller) ForgeL1Timeout(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "forgeL1Timeout") + return *ret0, err +} + +// ForgeL1Timeout is a free data retrieval call binding the contract method 0x7e4e06d7. +// +// Solidity: function forgeL1Timeout() view returns(uint256) +func (_Hermez *HermezSession) ForgeL1Timeout() (*big.Int, error) { + return _Hermez.Contract.ForgeL1Timeout(&_Hermez.CallOpts) +} + +// ForgeL1Timeout is a free data retrieval call binding the contract method 0x7e4e06d7. +// +// Solidity: function forgeL1Timeout() view returns(uint256) +func (_Hermez *HermezCallerSession) ForgeL1Timeout() (*big.Int, error) { + return _Hermez.Contract.ForgeL1Timeout(&_Hermez.CallOpts) +} + +// GetCurrentBatch is a free data retrieval call binding the contract method 0xac3851cd. +// +// Solidity: function getCurrentBatch() view returns(uint256) +func (_Hermez *HermezCaller) GetCurrentBatch(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "getCurrentBatch") + return *ret0, err +} + +// GetCurrentBatch is a free data retrieval call binding the contract method 0xac3851cd. +// +// Solidity: function getCurrentBatch() view returns(uint256) +func (_Hermez *HermezSession) GetCurrentBatch() (*big.Int, error) { + return _Hermez.Contract.GetCurrentBatch(&_Hermez.CallOpts) +} + +// GetCurrentBatch is a free data retrieval call binding the contract method 0xac3851cd. +// +// Solidity: function getCurrentBatch() view returns(uint256) +func (_Hermez *HermezCallerSession) GetCurrentBatch() (*big.Int, error) { + return _Hermez.Contract.GetCurrentBatch(&_Hermez.CallOpts) +} + +// GetQueue is a free data retrieval call binding the contract method 0x0be8fffc. +// +// Solidity: function getQueue(uint256 queue) view returns(bytes) +func (_Hermez *HermezCaller) GetQueue(opts *bind.CallOpts, queue *big.Int) ([]byte, error) { + var ( + ret0 = new([]byte) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "getQueue", queue) + return *ret0, err +} + +// GetQueue is a free data retrieval call binding the contract method 0x0be8fffc. +// +// Solidity: function getQueue(uint256 queue) view returns(bytes) +func (_Hermez *HermezSession) GetQueue(queue *big.Int) ([]byte, error) { + return _Hermez.Contract.GetQueue(&_Hermez.CallOpts, queue) +} + +// GetQueue is a free data retrieval call binding the contract method 0x0be8fffc. +// +// Solidity: function getQueue(uint256 queue) view returns(bytes) +func (_Hermez *HermezCallerSession) GetQueue(queue *big.Int) ([]byte, error) { + return _Hermez.Contract.GetQueue(&_Hermez.CallOpts, queue) +} + +// GetTokenAddress is a free data retrieval call binding the contract method 0x67ccdf38. +// +// Solidity: function getTokenAddress(uint256 tokenID) view returns(address) +func (_Hermez *HermezCaller) GetTokenAddress(opts *bind.CallOpts, tokenID *big.Int) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "getTokenAddress", tokenID) + return *ret0, err +} + +// GetTokenAddress is a free data retrieval call binding the contract method 0x67ccdf38. +// +// Solidity: function getTokenAddress(uint256 tokenID) view returns(address) +func (_Hermez *HermezSession) GetTokenAddress(tokenID *big.Int) (common.Address, error) { + return _Hermez.Contract.GetTokenAddress(&_Hermez.CallOpts, tokenID) +} + +// GetTokenAddress is a free data retrieval call binding the contract method 0x67ccdf38. +// +// Solidity: function getTokenAddress(uint256 tokenID) view returns(address) +func (_Hermez *HermezCallerSession) GetTokenAddress(tokenID *big.Int) (common.Address, error) { + return _Hermez.Contract.GetTokenAddress(&_Hermez.CallOpts, tokenID) +} + +// GovernanceAddress is a free data retrieval call binding the contract method 0x795053d3. +// +// Solidity: function governanceAddress() view returns(address) +func (_Hermez *HermezCaller) GovernanceAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "governanceAddress") + return *ret0, err +} + +// GovernanceAddress is a free data retrieval call binding the contract method 0x795053d3. +// +// Solidity: function governanceAddress() view returns(address) +func (_Hermez *HermezSession) GovernanceAddress() (common.Address, error) { + return _Hermez.Contract.GovernanceAddress(&_Hermez.CallOpts) +} + +// GovernanceAddress is a free data retrieval call binding the contract method 0x795053d3. +// +// Solidity: function governanceAddress() view returns(address) +func (_Hermez *HermezCallerSession) GovernanceAddress() (common.Address, error) { + return _Hermez.Contract.GovernanceAddress(&_Hermez.CallOpts) +} + +// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4. +// +// Solidity: function lastL1L2Batch() view returns(uint256) +func (_Hermez *HermezCaller) LastL1L2Batch(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "lastL1L2Batch") + return *ret0, err +} + +// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4. +// +// Solidity: function lastL1L2Batch() view returns(uint256) +func (_Hermez *HermezSession) LastL1L2Batch() (*big.Int, error) { + return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts) +} + +// LastL1L2Batch is a free data retrieval call binding the contract method 0x84ef9ed4. +// +// Solidity: function lastL1L2Batch() view returns(uint256) +func (_Hermez *HermezCallerSession) LastL1L2Batch() (*big.Int, error) { + return _Hermez.Contract.LastL1L2Batch(&_Hermez.CallOpts) +} + +// LastL1TxBatch is a free data retrieval call binding the contract method 0xeadf0337. +// +// Solidity: function lastL1TxBatch() view returns(uint256) +func (_Hermez *HermezCaller) LastL1TxBatch(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "lastL1TxBatch") + return *ret0, err +} + +// LastL1TxBatch is a free data retrieval call binding the contract method 0xeadf0337. +// +// Solidity: function lastL1TxBatch() view returns(uint256) +func (_Hermez *HermezSession) LastL1TxBatch() (*big.Int, error) { + return _Hermez.Contract.LastL1TxBatch(&_Hermez.CallOpts) +} + +// LastL1TxBatch is a free data retrieval call binding the contract method 0xeadf0337. +// +// Solidity: function lastL1TxBatch() view returns(uint256) +func (_Hermez *HermezCallerSession) LastL1TxBatch() (*big.Int, error) { + return _Hermez.Contract.LastL1TxBatch(&_Hermez.CallOpts) +} + +// LastToForgeL1TxsNum is a free data retrieval call binding the contract method 0xe760bffc. +// +// Solidity: function lastToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezCaller) LastToForgeL1TxsNum(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "lastToForgeL1TxsNum") + return *ret0, err +} + +// LastToForgeL1TxsNum is a free data retrieval call binding the contract method 0xe760bffc. +// +// Solidity: function lastToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezSession) LastToForgeL1TxsNum() (*big.Int, error) { + return _Hermez.Contract.LastToForgeL1TxsNum(&_Hermez.CallOpts) +} + +// LastToForgeL1TxsNum is a free data retrieval call binding the contract method 0xe760bffc. +// +// Solidity: function lastToForgeL1TxsNum() view returns(uint256) +func (_Hermez *HermezCallerSession) LastToForgeL1TxsNum() (*big.Int, error) { + return _Hermez.Contract.LastToForgeL1TxsNum(&_Hermez.CallOpts) +} + +// MapL1TxQueue is a free data retrieval call binding the contract method 0x3ec0b07c. +// +// Solidity: function mapL1TxQueue(uint256 ) view returns(bytes l1TxQueue, uint256 totalL1TxFee) +func (_Hermez *HermezCaller) MapL1TxQueue(opts *bind.CallOpts, arg0 *big.Int) (struct { + L1TxQueue []byte + TotalL1TxFee *big.Int +}, error) { + ret := new(struct { + L1TxQueue []byte + TotalL1TxFee *big.Int + }) + out := ret + err := _Hermez.contract.Call(opts, out, "mapL1TxQueue", arg0) + return *ret, err +} + +// MapL1TxQueue is a free data retrieval call binding the contract method 0x3ec0b07c. +// +// Solidity: function mapL1TxQueue(uint256 ) view returns(bytes l1TxQueue, uint256 totalL1TxFee) +func (_Hermez *HermezSession) MapL1TxQueue(arg0 *big.Int) (struct { + L1TxQueue []byte + TotalL1TxFee *big.Int +}, error) { + return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0) +} + +// MapL1TxQueue is a free data retrieval call binding the contract method 0x3ec0b07c. +// +// Solidity: function mapL1TxQueue(uint256 ) view returns(bytes l1TxQueue, uint256 totalL1TxFee) +func (_Hermez *HermezCallerSession) MapL1TxQueue(arg0 *big.Int) (struct { + L1TxQueue []byte + TotalL1TxFee *big.Int +}, error) { + return _Hermez.Contract.MapL1TxQueue(&_Hermez.CallOpts, arg0) +} + +// SafetyBot is a free data retrieval call binding the contract method 0x0cc4e8dc. +// +// Solidity: function safetyBot() view returns(address) +func (_Hermez *HermezCaller) SafetyBot(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "safetyBot") + return *ret0, err +} + +// SafetyBot is a free data retrieval call binding the contract method 0x0cc4e8dc. +// +// Solidity: function safetyBot() view returns(address) +func (_Hermez *HermezSession) SafetyBot() (common.Address, error) { + return _Hermez.Contract.SafetyBot(&_Hermez.CallOpts) +} + +// SafetyBot is a free data retrieval call binding the contract method 0x0cc4e8dc. +// +// Solidity: function safetyBot() view returns(address) +func (_Hermez *HermezCallerSession) SafetyBot() (common.Address, error) { + return _Hermez.Contract.SafetyBot(&_Hermez.CallOpts) +} + +// StateRoot is a free data retrieval call binding the contract method 0x9588eca2. +// +// Solidity: function stateRoot() view returns(uint256) +func (_Hermez *HermezCaller) StateRoot(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "stateRoot") + return *ret0, err +} + +// StateRoot is a free data retrieval call binding the contract method 0x9588eca2. +// +// Solidity: function stateRoot() view returns(uint256) +func (_Hermez *HermezSession) StateRoot() (*big.Int, error) { + return _Hermez.Contract.StateRoot(&_Hermez.CallOpts) +} + +// StateRoot is a free data retrieval call binding the contract method 0x9588eca2. +// +// Solidity: function stateRoot() view returns(uint256) +func (_Hermez *HermezCallerSession) StateRoot() (*big.Int, error) { + return _Hermez.Contract.StateRoot(&_Hermez.CallOpts) +} + +// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96. +// +// Solidity: function tokenExchange(address ) view returns(uint256) +func (_Hermez *HermezCaller) TokenExchange(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "tokenExchange", arg0) + return *ret0, err +} + +// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96. +// +// Solidity: function tokenExchange(address ) view returns(uint256) +func (_Hermez *HermezSession) TokenExchange(arg0 common.Address) (*big.Int, error) { + return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0) +} + +// TokenExchange is a free data retrieval call binding the contract method 0x0dd94b96. +// +// Solidity: function tokenExchange(address ) view returns(uint256) +func (_Hermez *HermezCallerSession) TokenExchange(arg0 common.Address) (*big.Int, error) { + return _Hermez.Contract.TokenExchange(&_Hermez.CallOpts, arg0) +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_Hermez *HermezCaller) TokenHEZ(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "tokenHEZ") + return *ret0, err +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_Hermez *HermezSession) TokenHEZ() (common.Address, error) { + return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts) +} + +// TokenHEZ is a free data retrieval call binding the contract method 0x79a135e3. +// +// Solidity: function tokenHEZ() view returns(address) +func (_Hermez *HermezCallerSession) TokenHEZ() (common.Address, error) { + return _Hermez.Contract.TokenHEZ(&_Hermez.CallOpts) +} + +// TokenList is a free data retrieval call binding the contract method 0x9ead7222. +// +// Solidity: function tokenList(uint256 ) view returns(address) +func (_Hermez *HermezCaller) TokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "tokenList", arg0) + return *ret0, err +} + +// TokenList is a free data retrieval call binding the contract method 0x9ead7222. +// +// Solidity: function tokenList(uint256 ) view returns(address) +func (_Hermez *HermezSession) TokenList(arg0 *big.Int) (common.Address, error) { + return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0) +} + +// TokenList is a free data retrieval call binding the contract method 0x9ead7222. +// +// Solidity: function tokenList(uint256 ) view returns(address) +func (_Hermez *HermezCallerSession) TokenList(arg0 *big.Int) (common.Address, error) { + return _Hermez.Contract.TokenList(&_Hermez.CallOpts, arg0) +} + +// TokenMap is a free data retrieval call binding the contract method 0x004aca6e. +// +// Solidity: function tokenMap(address ) view returns(bool) +func (_Hermez *HermezCaller) TokenMap(opts *bind.CallOpts, arg0 common.Address) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "tokenMap", arg0) + return *ret0, err +} + +// TokenMap is a free data retrieval call binding the contract method 0x004aca6e. +// +// Solidity: function tokenMap(address ) view returns(bool) +func (_Hermez *HermezSession) TokenMap(arg0 common.Address) (bool, error) { + return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0) +} + +// TokenMap is a free data retrieval call binding the contract method 0x004aca6e. +// +// Solidity: function tokenMap(address ) view returns(bool) +func (_Hermez *HermezCallerSession) TokenMap(arg0 common.Address) (bool, error) { + return _Hermez.Contract.TokenMap(&_Hermez.CallOpts, arg0) +} + +// WithdrawalContract is a free data retrieval call binding the contract method 0x81842c2c. +// +// Solidity: function withdrawalContract() view returns(address) +func (_Hermez *HermezCaller) WithdrawalContract(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "withdrawalContract") + return *ret0, err +} + +// WithdrawalContract is a free data retrieval call binding the contract method 0x81842c2c. +// +// Solidity: function withdrawalContract() view returns(address) +func (_Hermez *HermezSession) WithdrawalContract() (common.Address, error) { + return _Hermez.Contract.WithdrawalContract(&_Hermez.CallOpts) +} + +// WithdrawalContract is a free data retrieval call binding the contract method 0x81842c2c. +// +// Solidity: function withdrawalContract() view returns(address) +func (_Hermez *HermezCallerSession) WithdrawalContract() (common.Address, error) { + return _Hermez.Contract.WithdrawalContract(&_Hermez.CallOpts) +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint64) +func (_Hermez *HermezCaller) WithdrawalDelay(opts *bind.CallOpts) (uint64, error) { + var ( + ret0 = new(uint64) + ) + out := ret0 + err := _Hermez.contract.Call(opts, out, "withdrawalDelay") + return *ret0, err +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint64) +func (_Hermez *HermezSession) WithdrawalDelay() (uint64, error) { + return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts) +} + +// WithdrawalDelay is a free data retrieval call binding the contract method 0xa7ab6961. +// +// Solidity: function withdrawalDelay() view returns(uint64) +func (_Hermez *HermezCallerSession) WithdrawalDelay() (uint64, error) { + return _Hermez.Contract.WithdrawalDelay(&_Hermez.CallOpts) +} + +// AddToken is a paid mutator transaction binding the contract method 0xd48bfca7. +// +// Solidity: function addToken(address tokenAddress) payable returns() +func (_Hermez *HermezTransactor) AddToken(opts *bind.TransactOpts, tokenAddress common.Address) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "addToken", tokenAddress) +} + +// AddToken is a paid mutator transaction binding the contract method 0xd48bfca7. +// +// Solidity: function addToken(address tokenAddress) payable returns() +func (_Hermez *HermezSession) AddToken(tokenAddress common.Address) (*types.Transaction, error) { + return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress) +} + +// AddToken is a paid mutator transaction binding the contract method 0xd48bfca7. +// +// Solidity: function addToken(address tokenAddress) payable returns() +func (_Hermez *HermezTransactorSession) AddToken(tokenAddress common.Address) (*types.Transaction, error) { + return _Hermez.Contract.AddToken(&_Hermez.TransactOpts, tokenAddress) +} + +// CreateAccountDeposit is a paid mutator transaction binding the contract method 0x30501fcb. +// +// Solidity: function createAccountDeposit(uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactor) CreateAccountDeposit(opts *bind.TransactOpts, babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "createAccountDeposit", babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDeposit is a paid mutator transaction binding the contract method 0x30501fcb. +// +// Solidity: function createAccountDeposit(uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezSession) CreateAccountDeposit(babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDeposit(&_Hermez.TransactOpts, babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDeposit is a paid mutator transaction binding the contract method 0x30501fcb. +// +// Solidity: function createAccountDeposit(uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactorSession) CreateAccountDeposit(babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDeposit(&_Hermez.TransactOpts, babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDepositFromRelayer is a paid mutator transaction binding the contract method 0xd7d207c0. +// +// Solidity: function createAccountDepositFromRelayer(bytes accountCreationAuthSig, uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactor) CreateAccountDepositFromRelayer(opts *bind.TransactOpts, accountCreationAuthSig []byte, babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "createAccountDepositFromRelayer", accountCreationAuthSig, babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDepositFromRelayer is a paid mutator transaction binding the contract method 0xd7d207c0. +// +// Solidity: function createAccountDepositFromRelayer(bytes accountCreationAuthSig, uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezSession) CreateAccountDepositFromRelayer(accountCreationAuthSig []byte, babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDepositFromRelayer(&_Hermez.TransactOpts, accountCreationAuthSig, babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDepositFromRelayer is a paid mutator transaction binding the contract method 0xd7d207c0. +// +// Solidity: function createAccountDepositFromRelayer(bytes accountCreationAuthSig, uint256 babyPubKey, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactorSession) CreateAccountDepositFromRelayer(accountCreationAuthSig []byte, babyPubKey *big.Int, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDepositFromRelayer(&_Hermez.TransactOpts, accountCreationAuthSig, babyPubKey, loadAmountF, tokenID) +} + +// CreateAccountDepositTransfer is a paid mutator transaction binding the contract method 0x568bc1c5. +// +// Solidity: function createAccountDepositTransfer(uint256 babyPubKey, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactor) CreateAccountDepositTransfer(opts *bind.TransactOpts, babyPubKey *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "createAccountDepositTransfer", babyPubKey, loadAmountF, amountF, tokenID, toIdx) +} + +// CreateAccountDepositTransfer is a paid mutator transaction binding the contract method 0x568bc1c5. +// +// Solidity: function createAccountDepositTransfer(uint256 babyPubKey, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezSession) CreateAccountDepositTransfer(babyPubKey *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDepositTransfer(&_Hermez.TransactOpts, babyPubKey, loadAmountF, amountF, tokenID, toIdx) +} + +// CreateAccountDepositTransfer is a paid mutator transaction binding the contract method 0x568bc1c5. +// +// Solidity: function createAccountDepositTransfer(uint256 babyPubKey, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactorSession) CreateAccountDepositTransfer(babyPubKey *big.Int, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.CreateAccountDepositTransfer(&_Hermez.TransactOpts, babyPubKey, loadAmountF, amountF, tokenID, toIdx) +} + +// Deposit is a paid mutator transaction binding the contract method 0x363e2a22. +// +// Solidity: function deposit(uint32 fromIdx, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactor) Deposit(opts *bind.TransactOpts, fromIdx uint32, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "deposit", fromIdx, loadAmountF, tokenID) +} + +// Deposit is a paid mutator transaction binding the contract method 0x363e2a22. +// +// Solidity: function deposit(uint32 fromIdx, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezSession) Deposit(fromIdx uint32, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.Deposit(&_Hermez.TransactOpts, fromIdx, loadAmountF, tokenID) +} + +// Deposit is a paid mutator transaction binding the contract method 0x363e2a22. +// +// Solidity: function deposit(uint32 fromIdx, uint16 loadAmountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactorSession) Deposit(fromIdx uint32, loadAmountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.Deposit(&_Hermez.TransactOpts, fromIdx, loadAmountF, tokenID) +} + +// DepositTransfer is a paid mutator transaction binding the contract method 0x9612518a. +// +// Solidity: function depositTransfer(uint32 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactor) DepositTransfer(opts *bind.TransactOpts, fromIdx uint32, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "depositTransfer", fromIdx, loadAmountF, amountF, tokenID, toIdx) +} + +// DepositTransfer is a paid mutator transaction binding the contract method 0x9612518a. +// +// Solidity: function depositTransfer(uint32 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezSession) DepositTransfer(fromIdx uint32, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.DepositTransfer(&_Hermez.TransactOpts, fromIdx, loadAmountF, amountF, tokenID, toIdx) +} + +// DepositTransfer is a paid mutator transaction binding the contract method 0x9612518a. +// +// Solidity: function depositTransfer(uint32 fromIdx, uint16 loadAmountF, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactorSession) DepositTransfer(fromIdx uint32, loadAmountF uint16, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.DepositTransfer(&_Hermez.TransactOpts, fromIdx, loadAmountF, amountF, tokenID, toIdx) +} + +// ForceExit is a paid mutator transaction binding the contract method 0xe6171150. +// +// Solidity: function forceExit(uint32 fromIdx, uint16 amountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactor) ForceExit(opts *bind.TransactOpts, fromIdx uint32, amountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "forceExit", fromIdx, amountF, tokenID) +} + +// ForceExit is a paid mutator transaction binding the contract method 0xe6171150. +// +// Solidity: function forceExit(uint32 fromIdx, uint16 amountF, uint32 tokenID) payable returns() +func (_Hermez *HermezSession) ForceExit(fromIdx uint32, amountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.ForceExit(&_Hermez.TransactOpts, fromIdx, amountF, tokenID) +} + +// ForceExit is a paid mutator transaction binding the contract method 0xe6171150. +// +// Solidity: function forceExit(uint32 fromIdx, uint16 amountF, uint32 tokenID) payable returns() +func (_Hermez *HermezTransactorSession) ForceExit(fromIdx uint32, amountF uint16, tokenID uint32) (*types.Transaction, error) { + return _Hermez.Contract.ForceExit(&_Hermez.TransactOpts, fromIdx, amountF, tokenID) +} + +// ForceTransfer is a paid mutator transaction binding the contract method 0x3787f591. +// +// Solidity: function forceTransfer(uint32 fromIdx, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactor) ForceTransfer(opts *bind.TransactOpts, fromIdx uint32, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "forceTransfer", fromIdx, amountF, tokenID, toIdx) +} + +// ForceTransfer is a paid mutator transaction binding the contract method 0x3787f591. +// +// Solidity: function forceTransfer(uint32 fromIdx, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezSession) ForceTransfer(fromIdx uint32, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.ForceTransfer(&_Hermez.TransactOpts, fromIdx, amountF, tokenID, toIdx) +} + +// ForceTransfer is a paid mutator transaction binding the contract method 0x3787f591. +// +// Solidity: function forceTransfer(uint32 fromIdx, uint16 amountF, uint32 tokenID, uint32 toIdx) payable returns() +func (_Hermez *HermezTransactorSession) ForceTransfer(fromIdx uint32, amountF uint16, tokenID uint32, toIdx uint32) (*types.Transaction, error) { + return _Hermez.Contract.ForceTransfer(&_Hermez.TransactOpts, fromIdx, amountF, tokenID, toIdx) +} + +// ForgeBatch is a paid mutator transaction binding the contract method 0xc8464ed1. +// +// Solidity: function forgeBatch(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes compressedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint256 verifierIdx, bool l1Batch) returns() +func (_Hermez *HermezTransactor) ForgeBatch(opts *bind.TransactOpts, proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, newLastIdx uint32, newStRoot *big.Int, newExitRoot *big.Int, compressedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx *big.Int, l1Batch bool) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "forgeBatch", proofA, proofB, proofC, newLastIdx, newStRoot, newExitRoot, compressedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch) +} + +// ForgeBatch is a paid mutator transaction binding the contract method 0xc8464ed1. +// +// Solidity: function forgeBatch(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes compressedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint256 verifierIdx, bool l1Batch) returns() +func (_Hermez *HermezSession) ForgeBatch(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, newLastIdx uint32, newStRoot *big.Int, newExitRoot *big.Int, compressedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx *big.Int, l1Batch bool) (*types.Transaction, error) { + return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, proofA, proofB, proofC, newLastIdx, newStRoot, newExitRoot, compressedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch) +} + +// ForgeBatch is a paid mutator transaction binding the contract method 0xc8464ed1. +// +// Solidity: function forgeBatch(uint256[2] proofA, uint256[2][2] proofB, uint256[2] proofC, uint32 newLastIdx, uint256 newStRoot, uint256 newExitRoot, bytes compressedL1CoordinatorTx, bytes l2TxsData, bytes feeIdxCoordinator, uint256 verifierIdx, bool l1Batch) returns() +func (_Hermez *HermezTransactorSession) ForgeBatch(proofA [2]*big.Int, proofB [2][2]*big.Int, proofC [2]*big.Int, newLastIdx uint32, newStRoot *big.Int, newExitRoot *big.Int, compressedL1CoordinatorTx []byte, l2TxsData []byte, feeIdxCoordinator []byte, verifierIdx *big.Int, l1Batch bool) (*types.Transaction, error) { + return _Hermez.Contract.ForgeBatch(&_Hermez.TransactOpts, proofA, proofB, proofC, newLastIdx, newStRoot, newExitRoot, compressedL1CoordinatorTx, l2TxsData, feeIdxCoordinator, verifierIdx, l1Batch) +} + +// Initialize is a paid mutator transaction binding the contract method 0x55ed3fd2. +// +// Solidity: function initialize(address[] _verifiers, uint256[] _maxTxVerifiers, address _tokenHEZ, address _governanceAddress, address _safetyBot, address _consensusContract, address _withdrawalContract, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, uint256 _feeAddToken, uint256 _forgeL1Timeout, uint256 _feeL1UserTx, uint64 _withdrawalDelay) returns() +func (_Hermez *HermezTransactor) Initialize(opts *bind.TransactOpts, _verifiers []common.Address, _maxTxVerifiers []*big.Int, _tokenHEZ common.Address, _governanceAddress common.Address, _safetyBot common.Address, _consensusContract common.Address, _withdrawalContract common.Address, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _feeAddToken *big.Int, _forgeL1Timeout *big.Int, _feeL1UserTx *big.Int, _withdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "initialize", _verifiers, _maxTxVerifiers, _tokenHEZ, _governanceAddress, _safetyBot, _consensusContract, _withdrawalContract, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _feeAddToken, _forgeL1Timeout, _feeL1UserTx, _withdrawalDelay) +} + +// Initialize is a paid mutator transaction binding the contract method 0x55ed3fd2. +// +// Solidity: function initialize(address[] _verifiers, uint256[] _maxTxVerifiers, address _tokenHEZ, address _governanceAddress, address _safetyBot, address _consensusContract, address _withdrawalContract, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, uint256 _feeAddToken, uint256 _forgeL1Timeout, uint256 _feeL1UserTx, uint64 _withdrawalDelay) returns() +func (_Hermez *HermezSession) Initialize(_verifiers []common.Address, _maxTxVerifiers []*big.Int, _tokenHEZ common.Address, _governanceAddress common.Address, _safetyBot common.Address, _consensusContract common.Address, _withdrawalContract common.Address, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _feeAddToken *big.Int, _forgeL1Timeout *big.Int, _feeL1UserTx *big.Int, _withdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.Contract.Initialize(&_Hermez.TransactOpts, _verifiers, _maxTxVerifiers, _tokenHEZ, _governanceAddress, _safetyBot, _consensusContract, _withdrawalContract, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _feeAddToken, _forgeL1Timeout, _feeL1UserTx, _withdrawalDelay) +} + +// Initialize is a paid mutator transaction binding the contract method 0x55ed3fd2. +// +// Solidity: function initialize(address[] _verifiers, uint256[] _maxTxVerifiers, address _tokenHEZ, address _governanceAddress, address _safetyBot, address _consensusContract, address _withdrawalContract, address _poseidon2Elements, address _poseidon3Elements, address _poseidon4Elements, uint256 _feeAddToken, uint256 _forgeL1Timeout, uint256 _feeL1UserTx, uint64 _withdrawalDelay) returns() +func (_Hermez *HermezTransactorSession) Initialize(_verifiers []common.Address, _maxTxVerifiers []*big.Int, _tokenHEZ common.Address, _governanceAddress common.Address, _safetyBot common.Address, _consensusContract common.Address, _withdrawalContract common.Address, _poseidon2Elements common.Address, _poseidon3Elements common.Address, _poseidon4Elements common.Address, _feeAddToken *big.Int, _forgeL1Timeout *big.Int, _feeL1UserTx *big.Int, _withdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.Contract.Initialize(&_Hermez.TransactOpts, _verifiers, _maxTxVerifiers, _tokenHEZ, _governanceAddress, _safetyBot, _consensusContract, _withdrawalContract, _poseidon2Elements, _poseidon3Elements, _poseidon4Elements, _feeAddToken, _forgeL1Timeout, _feeL1UserTx, _withdrawalDelay) +} + +// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c. +// +// Solidity: function safeMode() returns() +func (_Hermez *HermezTransactor) SafeMode(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "safeMode") +} + +// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c. +// +// Solidity: function safeMode() returns() +func (_Hermez *HermezSession) SafeMode() (*types.Transaction, error) { + return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts) +} + +// SafeMode is a paid mutator transaction binding the contract method 0xabe3219c. +// +// Solidity: function safeMode() returns() +func (_Hermez *HermezTransactorSession) SafeMode() (*types.Transaction, error) { + return _Hermez.Contract.SafeMode(&_Hermez.TransactOpts) +} + +// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53. +// +// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns() +func (_Hermez *HermezTransactor) UpdateBucketsParameters(opts *bind.TransactOpts, arrayBuckets [5][4]*big.Int) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateBucketsParameters", arrayBuckets) +} + +// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53. +// +// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns() +func (_Hermez *HermezSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets) +} + +// UpdateBucketsParameters is a paid mutator transaction binding the contract method 0x68e95e53. +// +// Solidity: function updateBucketsParameters(uint256[4][5] arrayBuckets) returns() +func (_Hermez *HermezTransactorSession) UpdateBucketsParameters(arrayBuckets [5][4]*big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateBucketsParameters(&_Hermez.TransactOpts, arrayBuckets) +} + +// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda. +// +// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns() +func (_Hermez *HermezTransactor) UpdateFeeAddToken(opts *bind.TransactOpts, newFeeAddToken *big.Int) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateFeeAddToken", newFeeAddToken) +} + +// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda. +// +// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns() +func (_Hermez *HermezSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken) +} + +// UpdateFeeAddToken is a paid mutator transaction binding the contract method 0x314e5eda. +// +// Solidity: function updateFeeAddToken(uint256 newFeeAddToken) returns() +func (_Hermez *HermezTransactorSession) UpdateFeeAddToken(newFeeAddToken *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateFeeAddToken(&_Hermez.TransactOpts, newFeeAddToken) +} + +// UpdateFeeL1UserTx is a paid mutator transaction binding the contract method 0x14fc0419. +// +// Solidity: function updateFeeL1UserTx(uint256 newFeeL1UserTx) returns() +func (_Hermez *HermezTransactor) UpdateFeeL1UserTx(opts *bind.TransactOpts, newFeeL1UserTx *big.Int) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateFeeL1UserTx", newFeeL1UserTx) +} + +// UpdateFeeL1UserTx is a paid mutator transaction binding the contract method 0x14fc0419. +// +// Solidity: function updateFeeL1UserTx(uint256 newFeeL1UserTx) returns() +func (_Hermez *HermezSession) UpdateFeeL1UserTx(newFeeL1UserTx *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateFeeL1UserTx(&_Hermez.TransactOpts, newFeeL1UserTx) +} + +// UpdateFeeL1UserTx is a paid mutator transaction binding the contract method 0x14fc0419. +// +// Solidity: function updateFeeL1UserTx(uint256 newFeeL1UserTx) returns() +func (_Hermez *HermezTransactorSession) UpdateFeeL1UserTx(newFeeL1UserTx *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateFeeL1UserTx(&_Hermez.TransactOpts, newFeeL1UserTx) +} + +// UpdateForgeL1Timeout is a paid mutator transaction binding the contract method 0xf6fb49e4. +// +// Solidity: function updateForgeL1Timeout(uint256 newForgeL1Timeout) returns() +func (_Hermez *HermezTransactor) UpdateForgeL1Timeout(opts *bind.TransactOpts, newForgeL1Timeout *big.Int) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateForgeL1Timeout", newForgeL1Timeout) +} + +// UpdateForgeL1Timeout is a paid mutator transaction binding the contract method 0xf6fb49e4. +// +// Solidity: function updateForgeL1Timeout(uint256 newForgeL1Timeout) returns() +func (_Hermez *HermezSession) UpdateForgeL1Timeout(newForgeL1Timeout *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateForgeL1Timeout(&_Hermez.TransactOpts, newForgeL1Timeout) +} + +// UpdateForgeL1Timeout is a paid mutator transaction binding the contract method 0xf6fb49e4. +// +// Solidity: function updateForgeL1Timeout(uint256 newForgeL1Timeout) returns() +func (_Hermez *HermezTransactorSession) UpdateForgeL1Timeout(newForgeL1Timeout *big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateForgeL1Timeout(&_Hermez.TransactOpts, newForgeL1Timeout) +} + +// UpdateTokenExchange is a paid mutator transaction binding the contract method 0xcadedd82. +// +// Solidity: function updateTokenExchange(address[] addressArray, uint256[] valueArray) returns() +func (_Hermez *HermezTransactor) UpdateTokenExchange(opts *bind.TransactOpts, addressArray []common.Address, valueArray []*big.Int) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateTokenExchange", addressArray, valueArray) +} + +// UpdateTokenExchange is a paid mutator transaction binding the contract method 0xcadedd82. +// +// Solidity: function updateTokenExchange(address[] addressArray, uint256[] valueArray) returns() +func (_Hermez *HermezSession) UpdateTokenExchange(addressArray []common.Address, valueArray []*big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray) +} + +// UpdateTokenExchange is a paid mutator transaction binding the contract method 0xcadedd82. +// +// Solidity: function updateTokenExchange(address[] addressArray, uint256[] valueArray) returns() +func (_Hermez *HermezTransactorSession) UpdateTokenExchange(addressArray []common.Address, valueArray []*big.Int) (*types.Transaction, error) { + return _Hermez.Contract.UpdateTokenExchange(&_Hermez.TransactOpts, addressArray, valueArray) +} + +// UpdateTokenHEZ is a paid mutator transaction binding the contract method 0xc36e5124. +// +// Solidity: function updateTokenHEZ(address newTokenHEZ) returns() +func (_Hermez *HermezTransactor) UpdateTokenHEZ(opts *bind.TransactOpts, newTokenHEZ common.Address) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateTokenHEZ", newTokenHEZ) +} + +// UpdateTokenHEZ is a paid mutator transaction binding the contract method 0xc36e5124. +// +// Solidity: function updateTokenHEZ(address newTokenHEZ) returns() +func (_Hermez *HermezSession) UpdateTokenHEZ(newTokenHEZ common.Address) (*types.Transaction, error) { + return _Hermez.Contract.UpdateTokenHEZ(&_Hermez.TransactOpts, newTokenHEZ) +} + +// UpdateTokenHEZ is a paid mutator transaction binding the contract method 0xc36e5124. +// +// Solidity: function updateTokenHEZ(address newTokenHEZ) returns() +func (_Hermez *HermezTransactorSession) UpdateTokenHEZ(newTokenHEZ common.Address) (*types.Transaction, error) { + return _Hermez.Contract.UpdateTokenHEZ(&_Hermez.TransactOpts, newTokenHEZ) +} + +// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a. +// +// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns() +func (_Hermez *HermezTransactor) UpdateWithdrawalDelay(opts *bind.TransactOpts, newWithdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "updateWithdrawalDelay", newWithdrawalDelay) +} + +// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a. +// +// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns() +func (_Hermez *HermezSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay) +} + +// UpdateWithdrawalDelay is a paid mutator transaction binding the contract method 0xef4a5c4a. +// +// Solidity: function updateWithdrawalDelay(uint64 newWithdrawalDelay) returns() +func (_Hermez *HermezTransactorSession) UpdateWithdrawalDelay(newWithdrawalDelay uint64) (*types.Transaction, error) { + return _Hermez.Contract.UpdateWithdrawalDelay(&_Hermez.TransactOpts, newWithdrawalDelay) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xbe8e25db. +// +// Solidity: function withdraw(uint32 tokenID, uint192 balance, uint256 babyPubKey, uint256 numExitRoot, uint256[] siblings, uint256 idx, bool instantWithdraw) returns() +func (_Hermez *HermezTransactor) Withdraw(opts *bind.TransactOpts, tokenID uint32, balance *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) { + return _Hermez.contract.Transact(opts, "withdraw", tokenID, balance, babyPubKey, numExitRoot, siblings, idx, instantWithdraw) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xbe8e25db. +// +// Solidity: function withdraw(uint32 tokenID, uint192 balance, uint256 babyPubKey, uint256 numExitRoot, uint256[] siblings, uint256 idx, bool instantWithdraw) returns() +func (_Hermez *HermezSession) Withdraw(tokenID uint32, balance *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) { + return _Hermez.Contract.Withdraw(&_Hermez.TransactOpts, tokenID, balance, babyPubKey, numExitRoot, siblings, idx, instantWithdraw) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xbe8e25db. +// +// Solidity: function withdraw(uint32 tokenID, uint192 balance, uint256 babyPubKey, uint256 numExitRoot, uint256[] siblings, uint256 idx, bool instantWithdraw) returns() +func (_Hermez *HermezTransactorSession) Withdraw(tokenID uint32, balance *big.Int, babyPubKey *big.Int, numExitRoot *big.Int, siblings []*big.Int, idx *big.Int, instantWithdraw bool) (*types.Transaction, error) { + return _Hermez.Contract.Withdraw(&_Hermez.TransactOpts, tokenID, balance, babyPubKey, numExitRoot, siblings, idx, instantWithdraw) +} + +// HermezAddTokenIterator is returned from FilterAddToken and is used to iterate over the raw logs and unpacked data for AddToken events raised by the Hermez contract. +type HermezAddTokenIterator struct { + Event *HermezAddToken // 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 *HermezAddTokenIterator) 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(HermezAddToken) + 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(HermezAddToken) + 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 *HermezAddTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezAddTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezAddToken represents a AddToken event raised by the Hermez contract. +type HermezAddToken struct { + Arg0 common.Address + Arg1 uint32 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAddToken is a free log retrieval operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde. +// +// Solidity: event AddToken(address arg0, uint32 arg1) +func (_Hermez *HermezFilterer) FilterAddToken(opts *bind.FilterOpts) (*HermezAddTokenIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "AddToken") + if err != nil { + return nil, err + } + return &HermezAddTokenIterator{contract: _Hermez.contract, event: "AddToken", logs: logs, sub: sub}, nil +} + +// WatchAddToken is a free log subscription operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde. +// +// Solidity: event AddToken(address arg0, uint32 arg1) +func (_Hermez *HermezFilterer) WatchAddToken(opts *bind.WatchOpts, sink chan<- *HermezAddToken) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "AddToken") + 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(HermezAddToken) + if err := _Hermez.contract.UnpackLog(event, "AddToken", 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 +} + +// ParseAddToken is a log parse operation binding the contract event 0xcb73d161edb7cd4fb1d92fedfd2555384fd997fd44ab507656f8c81e15747dde. +// +// Solidity: event AddToken(address arg0, uint32 arg1) +func (_Hermez *HermezFilterer) ParseAddToken(log types.Log) (*HermezAddToken, error) { + event := new(HermezAddToken) + if err := _Hermez.contract.UnpackLog(event, "AddToken", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezForgeBatchIterator is returned from FilterForgeBatch and is used to iterate over the raw logs and unpacked data for ForgeBatch events raised by the Hermez contract. +type HermezForgeBatchIterator struct { + Event *HermezForgeBatch // 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 *HermezForgeBatchIterator) 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(HermezForgeBatch) + 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(HermezForgeBatch) + 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 *HermezForgeBatchIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezForgeBatchIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezForgeBatch represents a ForgeBatch event raised by the Hermez contract. +type HermezForgeBatch struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterForgeBatch is a free log retrieval operation binding the contract event 0x9b346777a734ffed277bddd87dee3490eb9dcc5378c095eac5af3e0f5da04f41. +// +// Solidity: event ForgeBatch(uint256 arg0) +func (_Hermez *HermezFilterer) FilterForgeBatch(opts *bind.FilterOpts) (*HermezForgeBatchIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "ForgeBatch") + if err != nil { + return nil, err + } + return &HermezForgeBatchIterator{contract: _Hermez.contract, event: "ForgeBatch", logs: logs, sub: sub}, nil +} + +// WatchForgeBatch is a free log subscription operation binding the contract event 0x9b346777a734ffed277bddd87dee3490eb9dcc5378c095eac5af3e0f5da04f41. +// +// Solidity: event ForgeBatch(uint256 arg0) +func (_Hermez *HermezFilterer) WatchForgeBatch(opts *bind.WatchOpts, sink chan<- *HermezForgeBatch) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "ForgeBatch") + 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(HermezForgeBatch) + if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", 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 +} + +// ParseForgeBatch is a log parse operation binding the contract event 0x9b346777a734ffed277bddd87dee3490eb9dcc5378c095eac5af3e0f5da04f41. +// +// Solidity: event ForgeBatch(uint256 arg0) +func (_Hermez *HermezFilterer) ParseForgeBatch(log types.Log) (*HermezForgeBatch, error) { + event := new(HermezForgeBatch) + if err := _Hermez.contract.UnpackLog(event, "ForgeBatch", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezL1UserTxEventIterator is returned from FilterL1UserTxEvent and is used to iterate over the raw logs and unpacked data for L1UserTxEvent events raised by the Hermez contract. +type HermezL1UserTxEventIterator struct { + Event *HermezL1UserTxEvent // 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 *HermezL1UserTxEventIterator) 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(HermezL1UserTxEvent) + 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(HermezL1UserTxEvent) + 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 *HermezL1UserTxEventIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezL1UserTxEventIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezL1UserTxEvent represents a L1UserTxEvent event raised by the Hermez contract. +type HermezL1UserTxEvent struct { + Arg0 []byte + Arg1 *big.Int + Arg2 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterL1UserTxEvent is a free log retrieval operation binding the contract event 0x44ed7960659190edb7acf74ac1bd6c7e8803bfa3aebe02c4599a0770fac3f884. +// +// Solidity: event L1UserTxEvent(bytes arg0, uint256 arg1, uint256 arg2) +func (_Hermez *HermezFilterer) FilterL1UserTxEvent(opts *bind.FilterOpts) (*HermezL1UserTxEventIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "L1UserTxEvent") + if err != nil { + return nil, err + } + return &HermezL1UserTxEventIterator{contract: _Hermez.contract, event: "L1UserTxEvent", logs: logs, sub: sub}, nil +} + +// WatchL1UserTxEvent is a free log subscription operation binding the contract event 0x44ed7960659190edb7acf74ac1bd6c7e8803bfa3aebe02c4599a0770fac3f884. +// +// Solidity: event L1UserTxEvent(bytes arg0, uint256 arg1, uint256 arg2) +func (_Hermez *HermezFilterer) WatchL1UserTxEvent(opts *bind.WatchOpts, sink chan<- *HermezL1UserTxEvent) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "L1UserTxEvent") + 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(HermezL1UserTxEvent) + if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", 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 +} + +// ParseL1UserTxEvent is a log parse operation binding the contract event 0x44ed7960659190edb7acf74ac1bd6c7e8803bfa3aebe02c4599a0770fac3f884. +// +// Solidity: event L1UserTxEvent(bytes arg0, uint256 arg1, uint256 arg2) +func (_Hermez *HermezFilterer) ParseL1UserTxEvent(log types.Log) (*HermezL1UserTxEvent, error) { + event := new(HermezL1UserTxEvent) + if err := _Hermez.contract.UnpackLog(event, "L1UserTxEvent", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezUpdateFeeAddTokenIterator is returned from FilterUpdateFeeAddToken and is used to iterate over the raw logs and unpacked data for UpdateFeeAddToken events raised by the Hermez contract. +type HermezUpdateFeeAddTokenIterator struct { + Event *HermezUpdateFeeAddToken // 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 *HermezUpdateFeeAddTokenIterator) 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(HermezUpdateFeeAddToken) + 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(HermezUpdateFeeAddToken) + 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 *HermezUpdateFeeAddTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezUpdateFeeAddTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezUpdateFeeAddToken represents a UpdateFeeAddToken event raised by the Hermez contract. +type HermezUpdateFeeAddToken struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateFeeAddToken is a free log retrieval operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1. +// +// Solidity: event UpdateFeeAddToken(uint256 arg0) +func (_Hermez *HermezFilterer) FilterUpdateFeeAddToken(opts *bind.FilterOpts) (*HermezUpdateFeeAddTokenIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateFeeAddToken") + if err != nil { + return nil, err + } + return &HermezUpdateFeeAddTokenIterator{contract: _Hermez.contract, event: "UpdateFeeAddToken", logs: logs, sub: sub}, nil +} + +// WatchUpdateFeeAddToken is a free log subscription operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1. +// +// Solidity: event UpdateFeeAddToken(uint256 arg0) +func (_Hermez *HermezFilterer) WatchUpdateFeeAddToken(opts *bind.WatchOpts, sink chan<- *HermezUpdateFeeAddToken) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateFeeAddToken") + 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(HermezUpdateFeeAddToken) + if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", 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 +} + +// ParseUpdateFeeAddToken is a log parse operation binding the contract event 0xd1c873cd16013f0dc5f37992c0d12794389698512895ec036a568e393b46e3c1. +// +// Solidity: event UpdateFeeAddToken(uint256 arg0) +func (_Hermez *HermezFilterer) ParseUpdateFeeAddToken(log types.Log) (*HermezUpdateFeeAddToken, error) { + event := new(HermezUpdateFeeAddToken) + if err := _Hermez.contract.UnpackLog(event, "UpdateFeeAddToken", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezUpdateFeeL1UserTxIterator is returned from FilterUpdateFeeL1UserTx and is used to iterate over the raw logs and unpacked data for UpdateFeeL1UserTx events raised by the Hermez contract. +type HermezUpdateFeeL1UserTxIterator struct { + Event *HermezUpdateFeeL1UserTx // 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 *HermezUpdateFeeL1UserTxIterator) 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(HermezUpdateFeeL1UserTx) + 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(HermezUpdateFeeL1UserTx) + 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 *HermezUpdateFeeL1UserTxIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezUpdateFeeL1UserTxIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezUpdateFeeL1UserTx represents a UpdateFeeL1UserTx event raised by the Hermez contract. +type HermezUpdateFeeL1UserTx struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateFeeL1UserTx is a free log retrieval operation binding the contract event 0x22f1e7967fe95a20c5a53350895f57d897240d953409d6377bc2f02df6b6e378. +// +// Solidity: event UpdateFeeL1UserTx(uint256 arg0) +func (_Hermez *HermezFilterer) FilterUpdateFeeL1UserTx(opts *bind.FilterOpts) (*HermezUpdateFeeL1UserTxIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateFeeL1UserTx") + if err != nil { + return nil, err + } + return &HermezUpdateFeeL1UserTxIterator{contract: _Hermez.contract, event: "UpdateFeeL1UserTx", logs: logs, sub: sub}, nil +} + +// WatchUpdateFeeL1UserTx is a free log subscription operation binding the contract event 0x22f1e7967fe95a20c5a53350895f57d897240d953409d6377bc2f02df6b6e378. +// +// Solidity: event UpdateFeeL1UserTx(uint256 arg0) +func (_Hermez *HermezFilterer) WatchUpdateFeeL1UserTx(opts *bind.WatchOpts, sink chan<- *HermezUpdateFeeL1UserTx) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateFeeL1UserTx") + 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(HermezUpdateFeeL1UserTx) + if err := _Hermez.contract.UnpackLog(event, "UpdateFeeL1UserTx", 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 +} + +// ParseUpdateFeeL1UserTx is a log parse operation binding the contract event 0x22f1e7967fe95a20c5a53350895f57d897240d953409d6377bc2f02df6b6e378. +// +// Solidity: event UpdateFeeL1UserTx(uint256 arg0) +func (_Hermez *HermezFilterer) ParseUpdateFeeL1UserTx(log types.Log) (*HermezUpdateFeeL1UserTx, error) { + event := new(HermezUpdateFeeL1UserTx) + if err := _Hermez.contract.UnpackLog(event, "UpdateFeeL1UserTx", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezUpdateForgeL1TimeoutIterator is returned from FilterUpdateForgeL1Timeout and is used to iterate over the raw logs and unpacked data for UpdateForgeL1Timeout events raised by the Hermez contract. +type HermezUpdateForgeL1TimeoutIterator struct { + Event *HermezUpdateForgeL1Timeout // 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 *HermezUpdateForgeL1TimeoutIterator) 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(HermezUpdateForgeL1Timeout) + 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(HermezUpdateForgeL1Timeout) + 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 *HermezUpdateForgeL1TimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezUpdateForgeL1TimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezUpdateForgeL1Timeout represents a UpdateForgeL1Timeout event raised by the Hermez contract. +type HermezUpdateForgeL1Timeout struct { + Arg0 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateForgeL1Timeout is a free log retrieval operation binding the contract event 0xd8b1725791f444b20ed722612b608bdabde06e3f099a1234b4a4caa5dcc19eb8. +// +// Solidity: event UpdateForgeL1Timeout(uint256 arg0) +func (_Hermez *HermezFilterer) FilterUpdateForgeL1Timeout(opts *bind.FilterOpts) (*HermezUpdateForgeL1TimeoutIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateForgeL1Timeout") + if err != nil { + return nil, err + } + return &HermezUpdateForgeL1TimeoutIterator{contract: _Hermez.contract, event: "UpdateForgeL1Timeout", logs: logs, sub: sub}, nil +} + +// WatchUpdateForgeL1Timeout is a free log subscription operation binding the contract event 0xd8b1725791f444b20ed722612b608bdabde06e3f099a1234b4a4caa5dcc19eb8. +// +// Solidity: event UpdateForgeL1Timeout(uint256 arg0) +func (_Hermez *HermezFilterer) WatchUpdateForgeL1Timeout(opts *bind.WatchOpts, sink chan<- *HermezUpdateForgeL1Timeout) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateForgeL1Timeout") + 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(HermezUpdateForgeL1Timeout) + if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1Timeout", 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 +} + +// ParseUpdateForgeL1Timeout is a log parse operation binding the contract event 0xd8b1725791f444b20ed722612b608bdabde06e3f099a1234b4a4caa5dcc19eb8. +// +// Solidity: event UpdateForgeL1Timeout(uint256 arg0) +func (_Hermez *HermezFilterer) ParseUpdateForgeL1Timeout(log types.Log) (*HermezUpdateForgeL1Timeout, error) { + event := new(HermezUpdateForgeL1Timeout) + if err := _Hermez.contract.UnpackLog(event, "UpdateForgeL1Timeout", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezUpdateTokenHEZIterator is returned from FilterUpdateTokenHEZ and is used to iterate over the raw logs and unpacked data for UpdateTokenHEZ events raised by the Hermez contract. +type HermezUpdateTokenHEZIterator struct { + Event *HermezUpdateTokenHEZ // 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 *HermezUpdateTokenHEZIterator) 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(HermezUpdateTokenHEZ) + 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(HermezUpdateTokenHEZ) + 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 *HermezUpdateTokenHEZIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezUpdateTokenHEZIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezUpdateTokenHEZ represents a UpdateTokenHEZ event raised by the Hermez contract. +type HermezUpdateTokenHEZ struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUpdateTokenHEZ is a free log retrieval operation binding the contract event 0x4d1f446ae5e3b4a60fd49ae4618238eaeb54a43bbae8aa9fbfded816be9faeb1. +// +// Solidity: event UpdateTokenHEZ(address arg0) +func (_Hermez *HermezFilterer) FilterUpdateTokenHEZ(opts *bind.FilterOpts) (*HermezUpdateTokenHEZIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "UpdateTokenHEZ") + if err != nil { + return nil, err + } + return &HermezUpdateTokenHEZIterator{contract: _Hermez.contract, event: "UpdateTokenHEZ", logs: logs, sub: sub}, nil +} + +// WatchUpdateTokenHEZ is a free log subscription operation binding the contract event 0x4d1f446ae5e3b4a60fd49ae4618238eaeb54a43bbae8aa9fbfded816be9faeb1. +// +// Solidity: event UpdateTokenHEZ(address arg0) +func (_Hermez *HermezFilterer) WatchUpdateTokenHEZ(opts *bind.WatchOpts, sink chan<- *HermezUpdateTokenHEZ) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "UpdateTokenHEZ") + 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(HermezUpdateTokenHEZ) + if err := _Hermez.contract.UnpackLog(event, "UpdateTokenHEZ", 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 +} + +// ParseUpdateTokenHEZ is a log parse operation binding the contract event 0x4d1f446ae5e3b4a60fd49ae4618238eaeb54a43bbae8aa9fbfded816be9faeb1. +// +// Solidity: event UpdateTokenHEZ(address arg0) +func (_Hermez *HermezFilterer) ParseUpdateTokenHEZ(log types.Log) (*HermezUpdateTokenHEZ, error) { + event := new(HermezUpdateTokenHEZ) + if err := _Hermez.contract.UnpackLog(event, "UpdateTokenHEZ", log); err != nil { + return nil, err + } + return event, nil +} + +// HermezWithdrawEventIterator is returned from FilterWithdrawEvent and is used to iterate over the raw logs and unpacked data for WithdrawEvent events raised by the Hermez contract. +type HermezWithdrawEventIterator struct { + Event *HermezWithdrawEvent // 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 *HermezWithdrawEventIterator) 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(HermezWithdrawEvent) + 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(HermezWithdrawEvent) + 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 *HermezWithdrawEventIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *HermezWithdrawEventIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// HermezWithdrawEvent represents a WithdrawEvent event raised by the Hermez contract. +type HermezWithdrawEvent struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawEvent is a free log retrieval operation binding the contract event 0x5188a9b05231b9c11371d3781428e6cd9b070184775722b58267d4d6f580a21b. +// +// Solidity: event WithdrawEvent(uint256 arg0, uint256 arg1) +func (_Hermez *HermezFilterer) FilterWithdrawEvent(opts *bind.FilterOpts) (*HermezWithdrawEventIterator, error) { + + logs, sub, err := _Hermez.contract.FilterLogs(opts, "WithdrawEvent") + if err != nil { + return nil, err + } + return &HermezWithdrawEventIterator{contract: _Hermez.contract, event: "WithdrawEvent", logs: logs, sub: sub}, nil +} + +// WatchWithdrawEvent is a free log subscription operation binding the contract event 0x5188a9b05231b9c11371d3781428e6cd9b070184775722b58267d4d6f580a21b. +// +// Solidity: event WithdrawEvent(uint256 arg0, uint256 arg1) +func (_Hermez *HermezFilterer) WatchWithdrawEvent(opts *bind.WatchOpts, sink chan<- *HermezWithdrawEvent) (event.Subscription, error) { + + logs, sub, err := _Hermez.contract.WatchLogs(opts, "WithdrawEvent") + 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(HermezWithdrawEvent) + if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", 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 +} + +// ParseWithdrawEvent is a log parse operation binding the contract event 0x5188a9b05231b9c11371d3781428e6cd9b070184775722b58267d4d6f580a21b. +// +// Solidity: event WithdrawEvent(uint256 arg0, uint256 arg1) +func (_Hermez *HermezFilterer) ParseWithdrawEvent(log types.Log) (*HermezWithdrawEvent, error) { + event := new(HermezWithdrawEvent) + if err := _Hermez.contract.UnpackLog(event, "WithdrawEvent", log); err != nil { + return nil, err + } + return event, nil +} diff --git a/eth/contracts/withdrawdelayer/WithdrawalDelayer.go b/eth/contracts/withdrawdelayer/WithdrawalDelayer.go new file mode 100644 index 0000000..a692a0e --- /dev/null +++ b/eth/contracts/withdrawdelayer/WithdrawalDelayer.go @@ -0,0 +1,1810 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package WithdrawalDelayer + +import ( + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription +) + +// WithdrawalDelayerABI is the input ABI used to generate the binding from. +const WithdrawalDelayerABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositTimestamp\",\"type\":\"uint64\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyModeEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"EscapeHatchWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newHermezGovernanceDAOAddress\",\"type\":\"address\"}],\"name\":\"NewHermezGovernanceDAOAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newHermezKeeperAddress\",\"type\":\"address\"}],\"name\":\"NewHermezKeeperAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newWhiteHackGroupAddress\",\"type\":\"address\"}],\"name\":\"NewWhiteHackGroupAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"NewWithdrawalDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_EMERGENCY_MODE_TIME\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_WITHDRAWAL_DELAY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_newWithdrawalDelay\",\"type\":\"uint64\"}],\"name\":\"changeWithdrawalDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint192\",\"name\":\"_amount\",\"type\":\"uint192\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"depositInfo\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint192\",\"name\":\"amount\",\"type\":\"uint192\"},{\"internalType\":\"uint64\",\"name\":\"depositTimestamp\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableEmergencyMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"escapeHatchWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEmergencyModeStartingTime\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHermezGovernanceDAOAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHermezKeeperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhiteHackGroupAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalDelay\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hermezRollupAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_initialWithdrawalDelay\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_initialHermezRollup\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_initialHermezKeeperAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_initialHermezGovernanceDAOAddress\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_initialWhiteHackGroupAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setHermezGovernanceDAOAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setHermezKeeperAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"setWhiteHackGroupAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"withdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + +// WithdrawalDelayerBin is the compiled bytecode used for deploying new contracts. +var WithdrawalDelayerBin = "0x60806040526037805460ff60a01b1916905534801561001d57600080fd5b506001600055611776806100326000396000f3fe60806040526004361061011f5760003560e01c8063668cdd67116100a0578063c5b1c7d011610064578063c5b1c7d0146103d7578063cf3a25d9146103ec578063cfc0b64114610427578063d82b217c14610467578063de35f2821461049a5761011f565b8063668cdd6714610334578063a238f9df14610349578063acfd6ea81461037a578063ae7efbbd146103ad578063b4b8e39d146103c25761011f565b806320a194b8116100e757806320a194b814610251578063305887f91461027a5780633d4dff7b1461028f578063493b0170146102e4578063580fc6111461031f5761011f565b806303160940146101245780630a4db01b1461015e5780630e670af5146101935780630fd266d7146101c657806316b487ff146101f7575b600080fd5b34801561013057600080fd5b506101396104d5565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561016a57600080fd5b506101916004803603602081101561018157600080fd5b50356001600160a01b03166104e4565b005b34801561019f57600080fd5b50610191600480360360208110156101b657600080fd5b50356001600160401b0316610590565b3480156101d257600080fd5b506101db6106c0565b604080516001600160a01b039092168252519081900360200190f35b34801561020357600080fd5b50610191600480360360a081101561021a57600080fd5b506001600160401b03813516906001600160a01b0360208201358116916040810135821691606082013581169160800135166106cf565b34801561025d57600080fd5b506102666107db565b604080519115158252519081900360200190f35b34801561028657600080fd5b506101db6107eb565b34801561029b57600080fd5b506102b9600480360360208110156102b257600080fd5b50356107fa565b604080516001600160c01b0390931683526001600160401b0390911660208301528051918290030190f35b3480156102f057600080fd5b506102b96004803603604081101561030757600080fd5b506001600160a01b0381358116916020013516610827565b34801561032b57600080fd5b506101db6108b8565b34801561034057600080fd5b506101396108c7565b34801561035557600080fd5b5061035e6108dd565b604080516001600160401b039092168252519081900360200190f35b34801561038657600080fd5b506101916004803603602081101561039d57600080fd5b50356001600160a01b03166108e4565b3480156103b957600080fd5b506101db61099d565b3480156103ce57600080fd5b5061035e6109ac565b3480156103e357600080fd5b506101916109b4565b3480156103f857600080fd5b506101916004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610adc565b6101916004803603606081101561043d57600080fd5b5080356001600160a01b0390811691602081013590911690604001356001600160c01b0316610d72565b34801561047357600080fd5b506101916004803603602081101561048a57600080fd5b50356001600160a01b0316611191565b3480156104a657600080fd5b50610191600480360360408110156104bd57600080fd5b506001600160a01b038135811691602001351661124a565b6034546001600160401b031690565b6036546001600160a01b03163314610536576040805162461bcd60e51b815260206004820152601060248201526f4f6e6c7920574847206164647265737360801b604482015290519081900360640190fd5b603680546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f284ca073b8bdde2195ae98779277678773a99d7739e5f0477dc19a03fc689011916020908290030190a150565b6037546001600160a01b03163314806105b357506038546001600160a01b031633145b610604576040805162461bcd60e51b815260206004820152601c60248201527f4f6e6c79206865726d657a206b6565706572206f7220726f6c6c757000000000604482015290519081900360640190fd5b621275006001600160401b0382161115610665576040805162461bcd60e51b815260206004820152601c60248201527f45786365656473204d41585f5749544844524157414c5f44454c415900000000604482015290519081900360640190fd5b6034805467ffffffffffffffff19166001600160401b03838116919091179182905560408051929091168252517f6b3670ab51e04a9da086741e5fd1eb36ffaf1d661a15330c528e1f3e0c8722d7916020908290030190a150565b6038546001600160a01b031681565b600154610100900460ff16806106e857506106e86114c2565b806106f6575060015460ff16155b6107315760405162461bcd60e51b815260040180806020018281038252602e815260200180611713602e913960400191505060405180910390fd5b600154610100900460ff1615801561075b576001805460ff1961ff00199091166101001716811790555b6034805467ffffffffffffffff19166001600160401b038816179055603880546001600160a01b03199081166001600160a01b03888116919091179092556037805482168784161790556035805482168684161790556036805490911691841691909117905580156107d3576001805461ff00191690555b505050505050565b603754600160a01b900460ff1690565b6037546001600160a01b031690565b6039602052600090815260409020546001600160c01b03811690600160c01b90046001600160401b031682565b6000806108326116fb565b505060408051606094851b6001600160601b03199081166020808401919091529490951b90941660348501528051808503602801815260488501808352815191850191909120600090815260399094529281902060888501909152546001600160c01b03811692839052600160c01b90046001600160401b031660689093018390525091565b6035546001600160a01b031690565b603454600160401b90046001600160401b031690565b6212750081565b6035546001600160a01b03163314610943576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204865726d657a20476f7665726e616e63652044414f000000000000604482015290519081900360640190fd5b603580546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517f03683be8debd93f8f5ff23dd03419bfcb9b8287a1868b0f130d858f03c3a08a1916020908290030190a150565b6036546001600160a01b031690565b6301dfe20081565b6037546001600160a01b03163314610a13576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c79206865726d657a4b6565706572416464726573730000000000000000604482015290519081900360640190fd5b603754600160a01b900460ff1615610a72576040805162461bcd60e51b815260206004820152601e60248201527f456d657267656e6379206d6f646520616c726561647920656e61626c65640000604482015290519081900360640190fd5b6037805460ff60a01b1916600160a01b179055603480546001600160401b034216600160401b026fffffffffffffffff0000000000000000199091161790556040517f2064d51aa5a8bd67928c7675e267e05c67ad5adf7c9098d0a602d01f36fda9c590600090a1565b60026000541415610b34576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055603754600160a01b900460ff16610b8d576040805162461bcd60e51b81526020600482015260136024820152724f6e6c7920456d657267656e6379204d6f646560681b604482015290519081900360640190fd5b6036546001600160a01b0316331480610bb057506035546001600160a01b031633145b610c01576040805162461bcd60e51b815260206004820152601960248201527f4f6e6c7920476f7665726e616e636544414f206f722057484700000000000000604482015290519081900360640190fd5b6036546001600160a01b0316331415610c88576034546001600160401b03600160401b90910481166301dfe200018116429091161015610c88576040805162461bcd60e51b815260206004820152601a60248201527f4e4f204d41585f454d455247454e43595f4d4f44455f54494d45000000000000604482015290519081900360640190fd5b60006001600160a01b038216610ca9575047610ca483826114c8565b610d2d565b604080516370a0823160e01b8152306004820152905183916001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610cf257600080fd5b505afa158015610d06573d6000803e3d6000fd5b505050506040513d6020811015610d1c57600080fd5b50519150610d2b838584611569565b505b6040516001600160a01b03808416919085169033907f065a030f4e05509e10831215a77cf703ff0d78a252b9fa008749d832eb1f61d990600090a45050600160005550565b6038546001600160a01b03163314610dd1576040805162461bcd60e51b815260206004820152601860248201527f4f6e6c79206865726d657a526f6c6c7570416464726573730000000000000000604482015290519081900360640190fd5b3415610e95576001600160a01b03821615610e33576040805162461bcd60e51b815260206004820152601d60248201527f4554482073686f756c6420626520746865203078302061646472657373000000604482015290519081900360640190fd5b34816001600160c01b031614610e90576040805162461bcd60e51b815260206004820152601e60248201527f446966666572656e7420616d6f756e7420616e64206d73672e76616c75650000604482015290519081900360640190fd5b611049565b60385460408051636eb1769f60e11b81526001600160a01b03928316600482015230602482015290516001600160c01b0384169285169163dd62ed3e916044808301926020929190829003018186803b158015610ef157600080fd5b505afa158015610f05573d6000803e3d6000fd5b505050506040513d6020811015610f1b57600080fd5b50511015610f70576040805162461bcd60e51b815260206004820152601d60248201527f446f65736e2774206861766520656e6f75676820616c6c6f77616e6365000000604482015290519081900360640190fd5b603854604080516323b872dd60e01b81526001600160a01b0392831660048201523060248201526001600160c01b03841660448201529051918416916323b872dd916064808201926020929091908290030181600087803b158015610fd457600080fd5b505af1158015610fe8573d6000803e3d6000fd5b505050506040513d6020811015610ffe57600080fd5b5051611049576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b88151c985b9cd9995c8811985a5b1959605a1b604482015290519081900360640190fd5b60408051606085811b6001600160601b03199081166020808501919091529186901b166034830152825180830360280181526048909201835281519181019190912060008181526039909252919020546001600160c01b0390811683810191821610156110f0576040805162461bcd60e51b815260206004820152601060248201526f4465706f736974206f766572666c6f7760801b604482015290519081900360640190fd5b60008281526039602090815260409182902080546001600160401b03428116600160c01b9081026001600160c01b038089166001600160c01b03199095169490941784161793849055855192891683529092049091169181019190915281516001600160a01b0380881693908916927f41219b99485f78192a5b9b1be28c7d53c3a2bdbe7900ae40c79fae8d9d6108fd929081900390910190a35050505050565b6037546001600160a01b031633146111f0576040805162461bcd60e51b815260206004820152601a60248201527f4f6e6c79204865726d657a204b65657065722041646472657373000000000000604482015290519081900360640190fd5b603780546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fc1e9be84fce652abec6a6944f7ec5bbb40de18caa44c285b05a0de7e3ad9d016916020908290030190a150565b600260005414156112a2576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055603754600160a01b900460ff16156112f7576040805162461bcd60e51b815260206004820152600e60248201526d456d657267656e6379206d6f646560901b604482015290519081900360640190fd5b60408051606084811b6001600160601b03199081166020808501919091529185901b166034830152825180830360280181526048909201835281519181019190912060008181526039909252919020546001600160c01b031680611399576040805162461bcd60e51b81526020600482015260146024820152734e6f2066756e647320746f20776974686472617760601b604482015290519081900360640190fd5b6034546000838152603960205260409020546001600160401b03918216600160c01b909104821601811642909116101561141a576040805162461bcd60e51b815260206004820152601a60248201527f5769746864726177616c206e6f7420616c6c6f77656420796574000000000000604482015290519081900360640190fd5b6000828152603960205260408120556001600160a01b03831661144f5761144a84826001600160c01b03166114c8565b611463565b6114638385836001600160c01b0316611569565b836001600160a01b0316836001600160a01b03167f72608e45b52a95a12c2ac7f15ff53f92fc9572c9d84b6e6b5d7f0f7826cf32718360405180826001600160c01b0316815260200191505060405180910390a3505060016000555050565b303b1590565b6040516000906001600160a01b0384169083908381818185875af1925050503d8060008114611513576040519150601f19603f3d011682016040523d82523d6000602084013e611518565b606091505b5050905080611564576040805162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b604482015290519081900360640190fd5b505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106116165780518252601f1990920191602091820191016115f7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611678576040519150601f19603f3d011682016040523d82523d6000602084013e61167d565b606091505b50915091508180156116ab5750805115806116ab57508080602001905160208110156116a857600080fd5b50515b6116f4576040805162461bcd60e51b8152602060048201526015602482015274151bdad95b88151c985b9cd9995c8811985a5b1959605a1b604482015290519081900360640190fd5b5050505050565b60408051808201909152600080825260208201529056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a2646970667358221220c1c762163fd298f0328559fb5d7027caf2d51af3b3691a9b8808a2b55947492d64736f6c634300060c0033" + +// DeployWithdrawalDelayer deploys a new Ethereum contract, binding an instance of WithdrawalDelayer to it. +func DeployWithdrawalDelayer(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *WithdrawalDelayer, error) { + parsed, err := abi.JSON(strings.NewReader(WithdrawalDelayerABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WithdrawalDelayerBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &WithdrawalDelayer{WithdrawalDelayerCaller: WithdrawalDelayerCaller{contract: contract}, WithdrawalDelayerTransactor: WithdrawalDelayerTransactor{contract: contract}, WithdrawalDelayerFilterer: WithdrawalDelayerFilterer{contract: contract}}, nil +} + +// WithdrawalDelayer is an auto generated Go binding around an Ethereum contract. +type WithdrawalDelayer struct { + WithdrawalDelayerCaller // Read-only binding to the contract + WithdrawalDelayerTransactor // Write-only binding to the contract + WithdrawalDelayerFilterer // Log filterer for contract events +} + +// WithdrawalDelayerCaller is an auto generated read-only Go binding around an Ethereum contract. +type WithdrawalDelayerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WithdrawalDelayerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type WithdrawalDelayerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WithdrawalDelayerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WithdrawalDelayerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WithdrawalDelayerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WithdrawalDelayerSession struct { + Contract *WithdrawalDelayer // 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 +} + +// WithdrawalDelayerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WithdrawalDelayerCallerSession struct { + Contract *WithdrawalDelayerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WithdrawalDelayerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WithdrawalDelayerTransactorSession struct { + Contract *WithdrawalDelayerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WithdrawalDelayerRaw is an auto generated low-level Go binding around an Ethereum contract. +type WithdrawalDelayerRaw struct { + Contract *WithdrawalDelayer // Generic contract binding to access the raw methods on +} + +// WithdrawalDelayerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WithdrawalDelayerCallerRaw struct { + Contract *WithdrawalDelayerCaller // Generic read-only contract binding to access the raw methods on +} + +// WithdrawalDelayerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WithdrawalDelayerTransactorRaw struct { + Contract *WithdrawalDelayerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewWithdrawalDelayer creates a new instance of WithdrawalDelayer, bound to a specific deployed contract. +func NewWithdrawalDelayer(address common.Address, backend bind.ContractBackend) (*WithdrawalDelayer, error) { + contract, err := bindWithdrawalDelayer(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WithdrawalDelayer{WithdrawalDelayerCaller: WithdrawalDelayerCaller{contract: contract}, WithdrawalDelayerTransactor: WithdrawalDelayerTransactor{contract: contract}, WithdrawalDelayerFilterer: WithdrawalDelayerFilterer{contract: contract}}, nil +} + +// NewWithdrawalDelayerCaller creates a new read-only instance of WithdrawalDelayer, bound to a specific deployed contract. +func NewWithdrawalDelayerCaller(address common.Address, caller bind.ContractCaller) (*WithdrawalDelayerCaller, error) { + contract, err := bindWithdrawalDelayer(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WithdrawalDelayerCaller{contract: contract}, nil +} + +// NewWithdrawalDelayerTransactor creates a new write-only instance of WithdrawalDelayer, bound to a specific deployed contract. +func NewWithdrawalDelayerTransactor(address common.Address, transactor bind.ContractTransactor) (*WithdrawalDelayerTransactor, error) { + contract, err := bindWithdrawalDelayer(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WithdrawalDelayerTransactor{contract: contract}, nil +} + +// NewWithdrawalDelayerFilterer creates a new log filterer instance of WithdrawalDelayer, bound to a specific deployed contract. +func NewWithdrawalDelayerFilterer(address common.Address, filterer bind.ContractFilterer) (*WithdrawalDelayerFilterer, error) { + contract, err := bindWithdrawalDelayer(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WithdrawalDelayerFilterer{contract: contract}, nil +} + +// bindWithdrawalDelayer binds a generic wrapper to an already deployed contract. +func bindWithdrawalDelayer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(WithdrawalDelayerABI)) + 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 (_WithdrawalDelayer *WithdrawalDelayerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _WithdrawalDelayer.Contract.WithdrawalDelayerCaller.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 (_WithdrawalDelayer *WithdrawalDelayerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.WithdrawalDelayerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WithdrawalDelayer *WithdrawalDelayerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.WithdrawalDelayerTransactor.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 (_WithdrawalDelayer *WithdrawalDelayerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _WithdrawalDelayer.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 (_WithdrawalDelayer *WithdrawalDelayerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WithdrawalDelayer *WithdrawalDelayerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.contract.Transact(opts, method, params...) +} + +// MAXEMERGENCYMODETIME is a free data retrieval call binding the contract method 0xb4b8e39d. +// +// Solidity: function MAX_EMERGENCY_MODE_TIME() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) MAXEMERGENCYMODETIME(opts *bind.CallOpts) (uint64, error) { + var ( + ret0 = new(uint64) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "MAX_EMERGENCY_MODE_TIME") + return *ret0, err +} + +// MAXEMERGENCYMODETIME is a free data retrieval call binding the contract method 0xb4b8e39d. +// +// Solidity: function MAX_EMERGENCY_MODE_TIME() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerSession) MAXEMERGENCYMODETIME() (uint64, error) { + return _WithdrawalDelayer.Contract.MAXEMERGENCYMODETIME(&_WithdrawalDelayer.CallOpts) +} + +// MAXEMERGENCYMODETIME is a free data retrieval call binding the contract method 0xb4b8e39d. +// +// Solidity: function MAX_EMERGENCY_MODE_TIME() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) MAXEMERGENCYMODETIME() (uint64, error) { + return _WithdrawalDelayer.Contract.MAXEMERGENCYMODETIME(&_WithdrawalDelayer.CallOpts) +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) MAXWITHDRAWALDELAY(opts *bind.CallOpts) (uint64, error) { + var ( + ret0 = new(uint64) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "MAX_WITHDRAWAL_DELAY") + return *ret0, err +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerSession) MAXWITHDRAWALDELAY() (uint64, error) { + return _WithdrawalDelayer.Contract.MAXWITHDRAWALDELAY(&_WithdrawalDelayer.CallOpts) +} + +// MAXWITHDRAWALDELAY is a free data retrieval call binding the contract method 0xa238f9df. +// +// Solidity: function MAX_WITHDRAWAL_DELAY() view returns(uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) MAXWITHDRAWALDELAY() (uint64, error) { + return _WithdrawalDelayer.Contract.MAXWITHDRAWALDELAY(&_WithdrawalDelayer.CallOpts) +} + +// DepositInfo is a free data retrieval call binding the contract method 0x493b0170. +// +// Solidity: function depositInfo(address _owner, address _token) view returns(uint192, uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) DepositInfo(opts *bind.CallOpts, _owner common.Address, _token common.Address) (*big.Int, uint64, error) { + var ( + ret0 = new(*big.Int) + ret1 = new(uint64) + ) + out := &[]interface{}{ + ret0, + ret1, + } + err := _WithdrawalDelayer.contract.Call(opts, out, "depositInfo", _owner, _token) + return *ret0, *ret1, err +} + +// DepositInfo is a free data retrieval call binding the contract method 0x493b0170. +// +// Solidity: function depositInfo(address _owner, address _token) view returns(uint192, uint64) +func (_WithdrawalDelayer *WithdrawalDelayerSession) DepositInfo(_owner common.Address, _token common.Address) (*big.Int, uint64, error) { + return _WithdrawalDelayer.Contract.DepositInfo(&_WithdrawalDelayer.CallOpts, _owner, _token) +} + +// DepositInfo is a free data retrieval call binding the contract method 0x493b0170. +// +// Solidity: function depositInfo(address _owner, address _token) view returns(uint192, uint64) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) DepositInfo(_owner common.Address, _token common.Address) (*big.Int, uint64, error) { + return _WithdrawalDelayer.Contract.DepositInfo(&_WithdrawalDelayer.CallOpts, _owner, _token) +} + +// Deposits is a free data retrieval call binding the contract method 0x3d4dff7b. +// +// Solidity: function deposits(bytes32 ) view returns(uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) Deposits(opts *bind.CallOpts, arg0 [32]byte) (struct { + Amount *big.Int + DepositTimestamp uint64 +}, error) { + ret := new(struct { + Amount *big.Int + DepositTimestamp uint64 + }) + out := ret + err := _WithdrawalDelayer.contract.Call(opts, out, "deposits", arg0) + return *ret, err +} + +// Deposits is a free data retrieval call binding the contract method 0x3d4dff7b. +// +// Solidity: function deposits(bytes32 ) view returns(uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerSession) Deposits(arg0 [32]byte) (struct { + Amount *big.Int + DepositTimestamp uint64 +}, error) { + return _WithdrawalDelayer.Contract.Deposits(&_WithdrawalDelayer.CallOpts, arg0) +} + +// Deposits is a free data retrieval call binding the contract method 0x3d4dff7b. +// +// Solidity: function deposits(bytes32 ) view returns(uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) Deposits(arg0 [32]byte) (struct { + Amount *big.Int + DepositTimestamp uint64 +}, error) { + return _WithdrawalDelayer.Contract.Deposits(&_WithdrawalDelayer.CallOpts, arg0) +} + +// GetEmergencyModeStartingTime is a free data retrieval call binding the contract method 0x668cdd67. +// +// Solidity: function getEmergencyModeStartingTime() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) GetEmergencyModeStartingTime(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "getEmergencyModeStartingTime") + return *ret0, err +} + +// GetEmergencyModeStartingTime is a free data retrieval call binding the contract method 0x668cdd67. +// +// Solidity: function getEmergencyModeStartingTime() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerSession) GetEmergencyModeStartingTime() (*big.Int, error) { + return _WithdrawalDelayer.Contract.GetEmergencyModeStartingTime(&_WithdrawalDelayer.CallOpts) +} + +// GetEmergencyModeStartingTime is a free data retrieval call binding the contract method 0x668cdd67. +// +// Solidity: function getEmergencyModeStartingTime() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) GetEmergencyModeStartingTime() (*big.Int, error) { + return _WithdrawalDelayer.Contract.GetEmergencyModeStartingTime(&_WithdrawalDelayer.CallOpts) +} + +// GetHermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0x580fc611. +// +// Solidity: function getHermezGovernanceDAOAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) GetHermezGovernanceDAOAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "getHermezGovernanceDAOAddress") + return *ret0, err +} + +// GetHermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0x580fc611. +// +// Solidity: function getHermezGovernanceDAOAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerSession) GetHermezGovernanceDAOAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetHermezGovernanceDAOAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetHermezGovernanceDAOAddress is a free data retrieval call binding the contract method 0x580fc611. +// +// Solidity: function getHermezGovernanceDAOAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) GetHermezGovernanceDAOAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetHermezGovernanceDAOAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetHermezKeeperAddress is a free data retrieval call binding the contract method 0x305887f9. +// +// Solidity: function getHermezKeeperAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) GetHermezKeeperAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "getHermezKeeperAddress") + return *ret0, err +} + +// GetHermezKeeperAddress is a free data retrieval call binding the contract method 0x305887f9. +// +// Solidity: function getHermezKeeperAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerSession) GetHermezKeeperAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetHermezKeeperAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetHermezKeeperAddress is a free data retrieval call binding the contract method 0x305887f9. +// +// Solidity: function getHermezKeeperAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) GetHermezKeeperAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetHermezKeeperAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetWhiteHackGroupAddress is a free data retrieval call binding the contract method 0xae7efbbd. +// +// Solidity: function getWhiteHackGroupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) GetWhiteHackGroupAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "getWhiteHackGroupAddress") + return *ret0, err +} + +// GetWhiteHackGroupAddress is a free data retrieval call binding the contract method 0xae7efbbd. +// +// Solidity: function getWhiteHackGroupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerSession) GetWhiteHackGroupAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetWhiteHackGroupAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetWhiteHackGroupAddress is a free data retrieval call binding the contract method 0xae7efbbd. +// +// Solidity: function getWhiteHackGroupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) GetWhiteHackGroupAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.GetWhiteHackGroupAddress(&_WithdrawalDelayer.CallOpts) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x03160940. +// +// Solidity: function getWithdrawalDelay() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) GetWithdrawalDelay(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "getWithdrawalDelay") + return *ret0, err +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x03160940. +// +// Solidity: function getWithdrawalDelay() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerSession) GetWithdrawalDelay() (*big.Int, error) { + return _WithdrawalDelayer.Contract.GetWithdrawalDelay(&_WithdrawalDelayer.CallOpts) +} + +// GetWithdrawalDelay is a free data retrieval call binding the contract method 0x03160940. +// +// Solidity: function getWithdrawalDelay() view returns(uint128) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) GetWithdrawalDelay() (*big.Int, error) { + return _WithdrawalDelayer.Contract.GetWithdrawalDelay(&_WithdrawalDelayer.CallOpts) +} + +// HermezRollupAddress is a free data retrieval call binding the contract method 0x0fd266d7. +// +// Solidity: function hermezRollupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) HermezRollupAddress(opts *bind.CallOpts) (common.Address, error) { + var ( + ret0 = new(common.Address) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "hermezRollupAddress") + return *ret0, err +} + +// HermezRollupAddress is a free data retrieval call binding the contract method 0x0fd266d7. +// +// Solidity: function hermezRollupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerSession) HermezRollupAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.HermezRollupAddress(&_WithdrawalDelayer.CallOpts) +} + +// HermezRollupAddress is a free data retrieval call binding the contract method 0x0fd266d7. +// +// Solidity: function hermezRollupAddress() view returns(address) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) HermezRollupAddress() (common.Address, error) { + return _WithdrawalDelayer.Contract.HermezRollupAddress(&_WithdrawalDelayer.CallOpts) +} + +// IsEmergencyMode is a free data retrieval call binding the contract method 0x20a194b8. +// +// Solidity: function isEmergencyMode() view returns(bool) +func (_WithdrawalDelayer *WithdrawalDelayerCaller) IsEmergencyMode(opts *bind.CallOpts) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _WithdrawalDelayer.contract.Call(opts, out, "isEmergencyMode") + return *ret0, err +} + +// IsEmergencyMode is a free data retrieval call binding the contract method 0x20a194b8. +// +// Solidity: function isEmergencyMode() view returns(bool) +func (_WithdrawalDelayer *WithdrawalDelayerSession) IsEmergencyMode() (bool, error) { + return _WithdrawalDelayer.Contract.IsEmergencyMode(&_WithdrawalDelayer.CallOpts) +} + +// IsEmergencyMode is a free data retrieval call binding the contract method 0x20a194b8. +// +// Solidity: function isEmergencyMode() view returns(bool) +func (_WithdrawalDelayer *WithdrawalDelayerCallerSession) IsEmergencyMode() (bool, error) { + return _WithdrawalDelayer.Contract.IsEmergencyMode(&_WithdrawalDelayer.CallOpts) +} + +// ChangeWithdrawalDelay is a paid mutator transaction binding the contract method 0x0e670af5. +// +// Solidity: function changeWithdrawalDelay(uint64 _newWithdrawalDelay) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) ChangeWithdrawalDelay(opts *bind.TransactOpts, _newWithdrawalDelay uint64) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "changeWithdrawalDelay", _newWithdrawalDelay) +} + +// ChangeWithdrawalDelay is a paid mutator transaction binding the contract method 0x0e670af5. +// +// Solidity: function changeWithdrawalDelay(uint64 _newWithdrawalDelay) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) ChangeWithdrawalDelay(_newWithdrawalDelay uint64) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.ChangeWithdrawalDelay(&_WithdrawalDelayer.TransactOpts, _newWithdrawalDelay) +} + +// ChangeWithdrawalDelay is a paid mutator transaction binding the contract method 0x0e670af5. +// +// Solidity: function changeWithdrawalDelay(uint64 _newWithdrawalDelay) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) ChangeWithdrawalDelay(_newWithdrawalDelay uint64) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.ChangeWithdrawalDelay(&_WithdrawalDelayer.TransactOpts, _newWithdrawalDelay) +} + +// Deposit is a paid mutator transaction binding the contract method 0xcfc0b641. +// +// Solidity: function deposit(address _owner, address _token, uint192 _amount) payable returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) Deposit(opts *bind.TransactOpts, _owner common.Address, _token common.Address, _amount *big.Int) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "deposit", _owner, _token, _amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0xcfc0b641. +// +// Solidity: function deposit(address _owner, address _token, uint192 _amount) payable returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) Deposit(_owner common.Address, _token common.Address, _amount *big.Int) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Deposit(&_WithdrawalDelayer.TransactOpts, _owner, _token, _amount) +} + +// Deposit is a paid mutator transaction binding the contract method 0xcfc0b641. +// +// Solidity: function deposit(address _owner, address _token, uint192 _amount) payable returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) Deposit(_owner common.Address, _token common.Address, _amount *big.Int) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Deposit(&_WithdrawalDelayer.TransactOpts, _owner, _token, _amount) +} + +// EnableEmergencyMode is a paid mutator transaction binding the contract method 0xc5b1c7d0. +// +// Solidity: function enableEmergencyMode() returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) EnableEmergencyMode(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "enableEmergencyMode") +} + +// EnableEmergencyMode is a paid mutator transaction binding the contract method 0xc5b1c7d0. +// +// Solidity: function enableEmergencyMode() returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) EnableEmergencyMode() (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.EnableEmergencyMode(&_WithdrawalDelayer.TransactOpts) +} + +// EnableEmergencyMode is a paid mutator transaction binding the contract method 0xc5b1c7d0. +// +// Solidity: function enableEmergencyMode() returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) EnableEmergencyMode() (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.EnableEmergencyMode(&_WithdrawalDelayer.TransactOpts) +} + +// EscapeHatchWithdrawal is a paid mutator transaction binding the contract method 0xcf3a25d9. +// +// Solidity: function escapeHatchWithdrawal(address _to, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) EscapeHatchWithdrawal(opts *bind.TransactOpts, _to common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "escapeHatchWithdrawal", _to, _token) +} + +// EscapeHatchWithdrawal is a paid mutator transaction binding the contract method 0xcf3a25d9. +// +// Solidity: function escapeHatchWithdrawal(address _to, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) EscapeHatchWithdrawal(_to common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.EscapeHatchWithdrawal(&_WithdrawalDelayer.TransactOpts, _to, _token) +} + +// EscapeHatchWithdrawal is a paid mutator transaction binding the contract method 0xcf3a25d9. +// +// Solidity: function escapeHatchWithdrawal(address _to, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) EscapeHatchWithdrawal(_to common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.EscapeHatchWithdrawal(&_WithdrawalDelayer.TransactOpts, _to, _token) +} + +// Initialize is a paid mutator transaction binding the contract method 0x16b487ff. +// +// Solidity: function initialize(uint64 _initialWithdrawalDelay, address _initialHermezRollup, address _initialHermezKeeperAddress, address _initialHermezGovernanceDAOAddress, address _initialWhiteHackGroupAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) Initialize(opts *bind.TransactOpts, _initialWithdrawalDelay uint64, _initialHermezRollup common.Address, _initialHermezKeeperAddress common.Address, _initialHermezGovernanceDAOAddress common.Address, _initialWhiteHackGroupAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "initialize", _initialWithdrawalDelay, _initialHermezRollup, _initialHermezKeeperAddress, _initialHermezGovernanceDAOAddress, _initialWhiteHackGroupAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x16b487ff. +// +// Solidity: function initialize(uint64 _initialWithdrawalDelay, address _initialHermezRollup, address _initialHermezKeeperAddress, address _initialHermezGovernanceDAOAddress, address _initialWhiteHackGroupAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) Initialize(_initialWithdrawalDelay uint64, _initialHermezRollup common.Address, _initialHermezKeeperAddress common.Address, _initialHermezGovernanceDAOAddress common.Address, _initialWhiteHackGroupAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Initialize(&_WithdrawalDelayer.TransactOpts, _initialWithdrawalDelay, _initialHermezRollup, _initialHermezKeeperAddress, _initialHermezGovernanceDAOAddress, _initialWhiteHackGroupAddress) +} + +// Initialize is a paid mutator transaction binding the contract method 0x16b487ff. +// +// Solidity: function initialize(uint64 _initialWithdrawalDelay, address _initialHermezRollup, address _initialHermezKeeperAddress, address _initialHermezGovernanceDAOAddress, address _initialWhiteHackGroupAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) Initialize(_initialWithdrawalDelay uint64, _initialHermezRollup common.Address, _initialHermezKeeperAddress common.Address, _initialHermezGovernanceDAOAddress common.Address, _initialWhiteHackGroupAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Initialize(&_WithdrawalDelayer.TransactOpts, _initialWithdrawalDelay, _initialHermezRollup, _initialHermezKeeperAddress, _initialHermezGovernanceDAOAddress, _initialWhiteHackGroupAddress) +} + +// SetHermezGovernanceDAOAddress is a paid mutator transaction binding the contract method 0xacfd6ea8. +// +// Solidity: function setHermezGovernanceDAOAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) SetHermezGovernanceDAOAddress(opts *bind.TransactOpts, newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "setHermezGovernanceDAOAddress", newAddress) +} + +// SetHermezGovernanceDAOAddress is a paid mutator transaction binding the contract method 0xacfd6ea8. +// +// Solidity: function setHermezGovernanceDAOAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) SetHermezGovernanceDAOAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetHermezGovernanceDAOAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// SetHermezGovernanceDAOAddress is a paid mutator transaction binding the contract method 0xacfd6ea8. +// +// Solidity: function setHermezGovernanceDAOAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) SetHermezGovernanceDAOAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetHermezGovernanceDAOAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// SetHermezKeeperAddress is a paid mutator transaction binding the contract method 0xd82b217c. +// +// Solidity: function setHermezKeeperAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) SetHermezKeeperAddress(opts *bind.TransactOpts, newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "setHermezKeeperAddress", newAddress) +} + +// SetHermezKeeperAddress is a paid mutator transaction binding the contract method 0xd82b217c. +// +// Solidity: function setHermezKeeperAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) SetHermezKeeperAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetHermezKeeperAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// SetHermezKeeperAddress is a paid mutator transaction binding the contract method 0xd82b217c. +// +// Solidity: function setHermezKeeperAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) SetHermezKeeperAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetHermezKeeperAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// SetWhiteHackGroupAddress is a paid mutator transaction binding the contract method 0x0a4db01b. +// +// Solidity: function setWhiteHackGroupAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) SetWhiteHackGroupAddress(opts *bind.TransactOpts, newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "setWhiteHackGroupAddress", newAddress) +} + +// SetWhiteHackGroupAddress is a paid mutator transaction binding the contract method 0x0a4db01b. +// +// Solidity: function setWhiteHackGroupAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) SetWhiteHackGroupAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetWhiteHackGroupAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// SetWhiteHackGroupAddress is a paid mutator transaction binding the contract method 0x0a4db01b. +// +// Solidity: function setWhiteHackGroupAddress(address newAddress) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) SetWhiteHackGroupAddress(newAddress common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.SetWhiteHackGroupAddress(&_WithdrawalDelayer.TransactOpts, newAddress) +} + +// Withdrawal is a paid mutator transaction binding the contract method 0xde35f282. +// +// Solidity: function withdrawal(address _owner, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactor) Withdrawal(opts *bind.TransactOpts, _owner common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.contract.Transact(opts, "withdrawal", _owner, _token) +} + +// Withdrawal is a paid mutator transaction binding the contract method 0xde35f282. +// +// Solidity: function withdrawal(address _owner, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerSession) Withdrawal(_owner common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Withdrawal(&_WithdrawalDelayer.TransactOpts, _owner, _token) +} + +// Withdrawal is a paid mutator transaction binding the contract method 0xde35f282. +// +// Solidity: function withdrawal(address _owner, address _token) returns() +func (_WithdrawalDelayer *WithdrawalDelayerTransactorSession) Withdrawal(_owner common.Address, _token common.Address) (*types.Transaction, error) { + return _WithdrawalDelayer.Contract.Withdrawal(&_WithdrawalDelayer.TransactOpts, _owner, _token) +} + +// WithdrawalDelayerDepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerDepositIterator struct { + Event *WithdrawalDelayerDeposit // 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 *WithdrawalDelayerDepositIterator) 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(WithdrawalDelayerDeposit) + 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(WithdrawalDelayerDeposit) + 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 *WithdrawalDelayerDepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerDepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerDeposit represents a Deposit event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerDeposit struct { + Owner common.Address + Token common.Address + Amount *big.Int + DepositTimestamp uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0x41219b99485f78192a5b9b1be28c7d53c3a2bdbe7900ae40c79fae8d9d6108fd. +// +// Solidity: event Deposit(address indexed owner, address indexed token, uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterDeposit(opts *bind.FilterOpts, owner []common.Address, token []common.Address) (*WithdrawalDelayerDepositIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "Deposit", ownerRule, tokenRule) + if err != nil { + return nil, err + } + return &WithdrawalDelayerDepositIterator{contract: _WithdrawalDelayer.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0x41219b99485f78192a5b9b1be28c7d53c3a2bdbe7900ae40c79fae8d9d6108fd. +// +// Solidity: event Deposit(address indexed owner, address indexed token, uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerDeposit, owner []common.Address, token []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "Deposit", ownerRule, tokenRule) + 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(WithdrawalDelayerDeposit) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "Deposit", 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 +} + +// ParseDeposit is a log parse operation binding the contract event 0x41219b99485f78192a5b9b1be28c7d53c3a2bdbe7900ae40c79fae8d9d6108fd. +// +// Solidity: event Deposit(address indexed owner, address indexed token, uint192 amount, uint64 depositTimestamp) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseDeposit(log types.Log) (*WithdrawalDelayerDeposit, error) { + event := new(WithdrawalDelayerDeposit) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerEmergencyModeEnabledIterator is returned from FilterEmergencyModeEnabled and is used to iterate over the raw logs and unpacked data for EmergencyModeEnabled events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerEmergencyModeEnabledIterator struct { + Event *WithdrawalDelayerEmergencyModeEnabled // 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 *WithdrawalDelayerEmergencyModeEnabledIterator) 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(WithdrawalDelayerEmergencyModeEnabled) + 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(WithdrawalDelayerEmergencyModeEnabled) + 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 *WithdrawalDelayerEmergencyModeEnabledIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerEmergencyModeEnabledIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerEmergencyModeEnabled represents a EmergencyModeEnabled event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerEmergencyModeEnabled struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEmergencyModeEnabled is a free log retrieval operation binding the contract event 0x2064d51aa5a8bd67928c7675e267e05c67ad5adf7c9098d0a602d01f36fda9c5. +// +// Solidity: event EmergencyModeEnabled() +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterEmergencyModeEnabled(opts *bind.FilterOpts) (*WithdrawalDelayerEmergencyModeEnabledIterator, error) { + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "EmergencyModeEnabled") + if err != nil { + return nil, err + } + return &WithdrawalDelayerEmergencyModeEnabledIterator{contract: _WithdrawalDelayer.contract, event: "EmergencyModeEnabled", logs: logs, sub: sub}, nil +} + +// WatchEmergencyModeEnabled is a free log subscription operation binding the contract event 0x2064d51aa5a8bd67928c7675e267e05c67ad5adf7c9098d0a602d01f36fda9c5. +// +// Solidity: event EmergencyModeEnabled() +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchEmergencyModeEnabled(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerEmergencyModeEnabled) (event.Subscription, error) { + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "EmergencyModeEnabled") + 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(WithdrawalDelayerEmergencyModeEnabled) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "EmergencyModeEnabled", 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 +} + +// ParseEmergencyModeEnabled is a log parse operation binding the contract event 0x2064d51aa5a8bd67928c7675e267e05c67ad5adf7c9098d0a602d01f36fda9c5. +// +// Solidity: event EmergencyModeEnabled() +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseEmergencyModeEnabled(log types.Log) (*WithdrawalDelayerEmergencyModeEnabled, error) { + event := new(WithdrawalDelayerEmergencyModeEnabled) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "EmergencyModeEnabled", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerEscapeHatchWithdrawalIterator is returned from FilterEscapeHatchWithdrawal and is used to iterate over the raw logs and unpacked data for EscapeHatchWithdrawal events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerEscapeHatchWithdrawalIterator struct { + Event *WithdrawalDelayerEscapeHatchWithdrawal // 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 *WithdrawalDelayerEscapeHatchWithdrawalIterator) 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(WithdrawalDelayerEscapeHatchWithdrawal) + 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(WithdrawalDelayerEscapeHatchWithdrawal) + 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 *WithdrawalDelayerEscapeHatchWithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerEscapeHatchWithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerEscapeHatchWithdrawal represents a EscapeHatchWithdrawal event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerEscapeHatchWithdrawal struct { + Who common.Address + To common.Address + Token common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEscapeHatchWithdrawal is a free log retrieval operation binding the contract event 0x065a030f4e05509e10831215a77cf703ff0d78a252b9fa008749d832eb1f61d9. +// +// Solidity: event EscapeHatchWithdrawal(address indexed who, address indexed to, address indexed token) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterEscapeHatchWithdrawal(opts *bind.FilterOpts, who []common.Address, to []common.Address, token []common.Address) (*WithdrawalDelayerEscapeHatchWithdrawalIterator, error) { + + var whoRule []interface{} + for _, whoItem := range who { + whoRule = append(whoRule, whoItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "EscapeHatchWithdrawal", whoRule, toRule, tokenRule) + if err != nil { + return nil, err + } + return &WithdrawalDelayerEscapeHatchWithdrawalIterator{contract: _WithdrawalDelayer.contract, event: "EscapeHatchWithdrawal", logs: logs, sub: sub}, nil +} + +// WatchEscapeHatchWithdrawal is a free log subscription operation binding the contract event 0x065a030f4e05509e10831215a77cf703ff0d78a252b9fa008749d832eb1f61d9. +// +// Solidity: event EscapeHatchWithdrawal(address indexed who, address indexed to, address indexed token) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchEscapeHatchWithdrawal(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerEscapeHatchWithdrawal, who []common.Address, to []common.Address, token []common.Address) (event.Subscription, error) { + + var whoRule []interface{} + for _, whoItem := range who { + whoRule = append(whoRule, whoItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "EscapeHatchWithdrawal", whoRule, toRule, tokenRule) + 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(WithdrawalDelayerEscapeHatchWithdrawal) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "EscapeHatchWithdrawal", 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 +} + +// ParseEscapeHatchWithdrawal is a log parse operation binding the contract event 0x065a030f4e05509e10831215a77cf703ff0d78a252b9fa008749d832eb1f61d9. +// +// Solidity: event EscapeHatchWithdrawal(address indexed who, address indexed to, address indexed token) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseEscapeHatchWithdrawal(log types.Log) (*WithdrawalDelayerEscapeHatchWithdrawal, error) { + event := new(WithdrawalDelayerEscapeHatchWithdrawal) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "EscapeHatchWithdrawal", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerNewHermezGovernanceDAOAddressIterator is returned from FilterNewHermezGovernanceDAOAddress and is used to iterate over the raw logs and unpacked data for NewHermezGovernanceDAOAddress events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewHermezGovernanceDAOAddressIterator struct { + Event *WithdrawalDelayerNewHermezGovernanceDAOAddress // 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 *WithdrawalDelayerNewHermezGovernanceDAOAddressIterator) 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(WithdrawalDelayerNewHermezGovernanceDAOAddress) + 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(WithdrawalDelayerNewHermezGovernanceDAOAddress) + 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 *WithdrawalDelayerNewHermezGovernanceDAOAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerNewHermezGovernanceDAOAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerNewHermezGovernanceDAOAddress represents a NewHermezGovernanceDAOAddress event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewHermezGovernanceDAOAddress struct { + NewHermezGovernanceDAOAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewHermezGovernanceDAOAddress is a free log retrieval operation binding the contract event 0x03683be8debd93f8f5ff23dd03419bfcb9b8287a1868b0f130d858f03c3a08a1. +// +// Solidity: event NewHermezGovernanceDAOAddress(address newHermezGovernanceDAOAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterNewHermezGovernanceDAOAddress(opts *bind.FilterOpts) (*WithdrawalDelayerNewHermezGovernanceDAOAddressIterator, error) { + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "NewHermezGovernanceDAOAddress") + if err != nil { + return nil, err + } + return &WithdrawalDelayerNewHermezGovernanceDAOAddressIterator{contract: _WithdrawalDelayer.contract, event: "NewHermezGovernanceDAOAddress", logs: logs, sub: sub}, nil +} + +// WatchNewHermezGovernanceDAOAddress is a free log subscription operation binding the contract event 0x03683be8debd93f8f5ff23dd03419bfcb9b8287a1868b0f130d858f03c3a08a1. +// +// Solidity: event NewHermezGovernanceDAOAddress(address newHermezGovernanceDAOAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchNewHermezGovernanceDAOAddress(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerNewHermezGovernanceDAOAddress) (event.Subscription, error) { + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "NewHermezGovernanceDAOAddress") + 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(WithdrawalDelayerNewHermezGovernanceDAOAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewHermezGovernanceDAOAddress", 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 +} + +// ParseNewHermezGovernanceDAOAddress is a log parse operation binding the contract event 0x03683be8debd93f8f5ff23dd03419bfcb9b8287a1868b0f130d858f03c3a08a1. +// +// Solidity: event NewHermezGovernanceDAOAddress(address newHermezGovernanceDAOAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseNewHermezGovernanceDAOAddress(log types.Log) (*WithdrawalDelayerNewHermezGovernanceDAOAddress, error) { + event := new(WithdrawalDelayerNewHermezGovernanceDAOAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewHermezGovernanceDAOAddress", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerNewHermezKeeperAddressIterator is returned from FilterNewHermezKeeperAddress and is used to iterate over the raw logs and unpacked data for NewHermezKeeperAddress events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewHermezKeeperAddressIterator struct { + Event *WithdrawalDelayerNewHermezKeeperAddress // 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 *WithdrawalDelayerNewHermezKeeperAddressIterator) 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(WithdrawalDelayerNewHermezKeeperAddress) + 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(WithdrawalDelayerNewHermezKeeperAddress) + 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 *WithdrawalDelayerNewHermezKeeperAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerNewHermezKeeperAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerNewHermezKeeperAddress represents a NewHermezKeeperAddress event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewHermezKeeperAddress struct { + NewHermezKeeperAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewHermezKeeperAddress is a free log retrieval operation binding the contract event 0xc1e9be84fce652abec6a6944f7ec5bbb40de18caa44c285b05a0de7e3ad9d016. +// +// Solidity: event NewHermezKeeperAddress(address newHermezKeeperAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterNewHermezKeeperAddress(opts *bind.FilterOpts) (*WithdrawalDelayerNewHermezKeeperAddressIterator, error) { + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "NewHermezKeeperAddress") + if err != nil { + return nil, err + } + return &WithdrawalDelayerNewHermezKeeperAddressIterator{contract: _WithdrawalDelayer.contract, event: "NewHermezKeeperAddress", logs: logs, sub: sub}, nil +} + +// WatchNewHermezKeeperAddress is a free log subscription operation binding the contract event 0xc1e9be84fce652abec6a6944f7ec5bbb40de18caa44c285b05a0de7e3ad9d016. +// +// Solidity: event NewHermezKeeperAddress(address newHermezKeeperAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchNewHermezKeeperAddress(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerNewHermezKeeperAddress) (event.Subscription, error) { + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "NewHermezKeeperAddress") + 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(WithdrawalDelayerNewHermezKeeperAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewHermezKeeperAddress", 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 +} + +// ParseNewHermezKeeperAddress is a log parse operation binding the contract event 0xc1e9be84fce652abec6a6944f7ec5bbb40de18caa44c285b05a0de7e3ad9d016. +// +// Solidity: event NewHermezKeeperAddress(address newHermezKeeperAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseNewHermezKeeperAddress(log types.Log) (*WithdrawalDelayerNewHermezKeeperAddress, error) { + event := new(WithdrawalDelayerNewHermezKeeperAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewHermezKeeperAddress", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerNewWhiteHackGroupAddressIterator is returned from FilterNewWhiteHackGroupAddress and is used to iterate over the raw logs and unpacked data for NewWhiteHackGroupAddress events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewWhiteHackGroupAddressIterator struct { + Event *WithdrawalDelayerNewWhiteHackGroupAddress // 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 *WithdrawalDelayerNewWhiteHackGroupAddressIterator) 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(WithdrawalDelayerNewWhiteHackGroupAddress) + 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(WithdrawalDelayerNewWhiteHackGroupAddress) + 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 *WithdrawalDelayerNewWhiteHackGroupAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerNewWhiteHackGroupAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerNewWhiteHackGroupAddress represents a NewWhiteHackGroupAddress event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewWhiteHackGroupAddress struct { + NewWhiteHackGroupAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewWhiteHackGroupAddress is a free log retrieval operation binding the contract event 0x284ca073b8bdde2195ae98779277678773a99d7739e5f0477dc19a03fc689011. +// +// Solidity: event NewWhiteHackGroupAddress(address newWhiteHackGroupAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterNewWhiteHackGroupAddress(opts *bind.FilterOpts) (*WithdrawalDelayerNewWhiteHackGroupAddressIterator, error) { + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "NewWhiteHackGroupAddress") + if err != nil { + return nil, err + } + return &WithdrawalDelayerNewWhiteHackGroupAddressIterator{contract: _WithdrawalDelayer.contract, event: "NewWhiteHackGroupAddress", logs: logs, sub: sub}, nil +} + +// WatchNewWhiteHackGroupAddress is a free log subscription operation binding the contract event 0x284ca073b8bdde2195ae98779277678773a99d7739e5f0477dc19a03fc689011. +// +// Solidity: event NewWhiteHackGroupAddress(address newWhiteHackGroupAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchNewWhiteHackGroupAddress(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerNewWhiteHackGroupAddress) (event.Subscription, error) { + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "NewWhiteHackGroupAddress") + 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(WithdrawalDelayerNewWhiteHackGroupAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewWhiteHackGroupAddress", 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 +} + +// ParseNewWhiteHackGroupAddress is a log parse operation binding the contract event 0x284ca073b8bdde2195ae98779277678773a99d7739e5f0477dc19a03fc689011. +// +// Solidity: event NewWhiteHackGroupAddress(address newWhiteHackGroupAddress) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseNewWhiteHackGroupAddress(log types.Log) (*WithdrawalDelayerNewWhiteHackGroupAddress, error) { + event := new(WithdrawalDelayerNewWhiteHackGroupAddress) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewWhiteHackGroupAddress", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerNewWithdrawalDelayIterator is returned from FilterNewWithdrawalDelay and is used to iterate over the raw logs and unpacked data for NewWithdrawalDelay events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewWithdrawalDelayIterator struct { + Event *WithdrawalDelayerNewWithdrawalDelay // 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 *WithdrawalDelayerNewWithdrawalDelayIterator) 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(WithdrawalDelayerNewWithdrawalDelay) + 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(WithdrawalDelayerNewWithdrawalDelay) + 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 *WithdrawalDelayerNewWithdrawalDelayIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerNewWithdrawalDelayIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerNewWithdrawalDelay represents a NewWithdrawalDelay event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerNewWithdrawalDelay struct { + WithdrawalDelay uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNewWithdrawalDelay is a free log retrieval operation binding the contract event 0x6b3670ab51e04a9da086741e5fd1eb36ffaf1d661a15330c528e1f3e0c8722d7. +// +// Solidity: event NewWithdrawalDelay(uint64 withdrawalDelay) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterNewWithdrawalDelay(opts *bind.FilterOpts) (*WithdrawalDelayerNewWithdrawalDelayIterator, error) { + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "NewWithdrawalDelay") + if err != nil { + return nil, err + } + return &WithdrawalDelayerNewWithdrawalDelayIterator{contract: _WithdrawalDelayer.contract, event: "NewWithdrawalDelay", logs: logs, sub: sub}, nil +} + +// WatchNewWithdrawalDelay is a free log subscription operation binding the contract event 0x6b3670ab51e04a9da086741e5fd1eb36ffaf1d661a15330c528e1f3e0c8722d7. +// +// Solidity: event NewWithdrawalDelay(uint64 withdrawalDelay) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchNewWithdrawalDelay(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerNewWithdrawalDelay) (event.Subscription, error) { + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "NewWithdrawalDelay") + 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(WithdrawalDelayerNewWithdrawalDelay) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewWithdrawalDelay", 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 +} + +// ParseNewWithdrawalDelay is a log parse operation binding the contract event 0x6b3670ab51e04a9da086741e5fd1eb36ffaf1d661a15330c528e1f3e0c8722d7. +// +// Solidity: event NewWithdrawalDelay(uint64 withdrawalDelay) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseNewWithdrawalDelay(log types.Log) (*WithdrawalDelayerNewWithdrawalDelay, error) { + event := new(WithdrawalDelayerNewWithdrawalDelay) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "NewWithdrawalDelay", log); err != nil { + return nil, err + } + return event, nil +} + +// WithdrawalDelayerWithdrawIterator is returned from FilterWithdraw and is used to iterate over the raw logs and unpacked data for Withdraw events raised by the WithdrawalDelayer contract. +type WithdrawalDelayerWithdrawIterator struct { + Event *WithdrawalDelayerWithdraw // 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 *WithdrawalDelayerWithdrawIterator) 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(WithdrawalDelayerWithdraw) + 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(WithdrawalDelayerWithdraw) + 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 *WithdrawalDelayerWithdrawIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WithdrawalDelayerWithdrawIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WithdrawalDelayerWithdraw represents a Withdraw event raised by the WithdrawalDelayer contract. +type WithdrawalDelayerWithdraw struct { + Token common.Address + Owner common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdraw is a free log retrieval operation binding the contract event 0x72608e45b52a95a12c2ac7f15ff53f92fc9572c9d84b6e6b5d7f0f7826cf3271. +// +// Solidity: event Withdraw(address indexed token, address indexed owner, uint192 amount) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) FilterWithdraw(opts *bind.FilterOpts, token []common.Address, owner []common.Address) (*WithdrawalDelayerWithdrawIterator, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.FilterLogs(opts, "Withdraw", tokenRule, ownerRule) + if err != nil { + return nil, err + } + return &WithdrawalDelayerWithdrawIterator{contract: _WithdrawalDelayer.contract, event: "Withdraw", logs: logs, sub: sub}, nil +} + +// WatchWithdraw is a free log subscription operation binding the contract event 0x72608e45b52a95a12c2ac7f15ff53f92fc9572c9d84b6e6b5d7f0f7826cf3271. +// +// Solidity: event Withdraw(address indexed token, address indexed owner, uint192 amount) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) WatchWithdraw(opts *bind.WatchOpts, sink chan<- *WithdrawalDelayerWithdraw, token []common.Address, owner []common.Address) (event.Subscription, error) { + + var tokenRule []interface{} + for _, tokenItem := range token { + tokenRule = append(tokenRule, tokenItem) + } + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + + logs, sub, err := _WithdrawalDelayer.contract.WatchLogs(opts, "Withdraw", tokenRule, ownerRule) + 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(WithdrawalDelayerWithdraw) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "Withdraw", 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 +} + +// ParseWithdraw is a log parse operation binding the contract event 0x72608e45b52a95a12c2ac7f15ff53f92fc9572c9d84b6e6b5d7f0f7826cf3271. +// +// Solidity: event Withdraw(address indexed token, address indexed owner, uint192 amount) +func (_WithdrawalDelayer *WithdrawalDelayerFilterer) ParseWithdraw(log types.Log) (*WithdrawalDelayerWithdraw, error) { + event := new(WithdrawalDelayerWithdraw) + if err := _WithdrawalDelayer.contract.UnpackLog(event, "Withdraw", log); err != nil { + return nil, err + } + return event, nil +}