github.com/status-im/status-go@v1.1.0/contracts/hop/l1Contracts/l1EthBridge/l1EthBridge.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package hopL1EthBridge
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	ethereum "github.com/ethereum/go-ethereum"
    12  	"github.com/ethereum/go-ethereum/accounts/abi"
    13  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    14  	"github.com/ethereum/go-ethereum/common"
    15  	"github.com/ethereum/go-ethereum/core/types"
    16  	"github.com/ethereum/go-ethereum/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = ethereum.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // BridgeTransferRoot is an auto generated low-level Go binding around an user-defined struct.
    33  type BridgeTransferRoot struct {
    34  	Total           *big.Int
    35  	AmountWithdrawn *big.Int
    36  	CreatedAt       *big.Int
    37  }
    38  
    39  // HopL1EthBridgeMetaData contains all meta data concerning the HopL1EthBridge contract.
    40  var HopL1EthBridgeMetaData = &bind.MetaData{
    41  	ABI: "[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"bonders\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBonder\",\"type\":\"address\"}],\"name\":\"BonderAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousBonder\",\"type\":\"address\"}],\"name\":\"BonderRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"transferRootId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"originalAmount\",\"type\":\"uint256\"}],\"name\":\"ChallengeResolved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalBondsSettled\",\"type\":\"uint256\"}],\"name\":\"MultipleWithdrawalsSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Stake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"transferRootId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"originalAmount\",\"type\":\"uint256\"}],\"name\":\"TransferBondChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferRootBonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"TransferRootConfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"TransferRootSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"relayerFee\",\"type\":\"uint256\"}],\"name\":\"TransferSentToL2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Unstake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalBondSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalBonded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"transferNonce\",\"type\":\"bytes32\"}],\"name\":\"Withdrew\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHALLENGE_AMOUNT_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TIME_SLOT_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"}],\"name\":\"addBonder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"bondTransferRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"transferNonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"bonderFee\",\"type\":\"uint256\"}],\"name\":\"bondWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"chainBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengePeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeResolutionPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"originalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"name\":\"challengeTransferBond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rootCommittedAt\",\"type\":\"uint256\"}],\"name\":\"confirmTransferRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"crossDomainMessengerWrappers\",\"outputs\":[{\"internalType\":\"contractIMessengerWrapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getBondForTransferAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"}],\"name\":\"getBondedWithdrawalAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"getChallengeAmountForTransferAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"}],\"name\":\"getCredit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"}],\"name\":\"getDebitAndAdditionalDebit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"maybeBonder\",\"type\":\"address\"}],\"name\":\"getIsBonder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"}],\"name\":\"getRawDebit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getTimeSlot\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"transferNonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"bonderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"getTransferId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"getTransferRoot\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountWithdrawn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"}],\"internalType\":\"structBridge.TransferRoot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"getTransferRootId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"isChainIdPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"}],\"name\":\"isTransferIdSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minTransferRootBondDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"}],\"name\":\"removeBonder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"originalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"rescueTransferRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"originalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"name\":\"resolveChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relayerFee\",\"type\":\"uint256\"}],\"name\":\"sendToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"setChainIdDepositsPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengePeriod\",\"type\":\"uint256\"}],\"name\":\"setChallengePeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeResolutionPeriod\",\"type\":\"uint256\"}],\"name\":\"setChallengeResolutionPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"contractIMessengerWrapper\",\"name\":\"_crossDomainMessengerWrapper\",\"type\":\"address\"}],\"name\":\"setCrossDomainMessengerWrapper\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newGovernance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minTransferRootBondDelay\",\"type\":\"uint256\"}],\"name\":\"setMinTransferRootBondDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"transferId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"transferRootTotalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferIdTreeIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"siblings\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"totalLeaves\",\"type\":\"uint256\"}],\"name\":\"settleBondedWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"transferIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"settleBondedWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"timeSlotToAmountBonded\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"transferBonds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"bonder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"challengeStartTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"challengeResolved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"transferRootCommittedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"transferNonce\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"bonderFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"rootHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"transferRootTotalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"transferIdTreeIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"siblings\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"totalLeaves\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    42  }
    43  
    44  // HopL1EthBridgeABI is the input ABI used to generate the binding from.
    45  // Deprecated: Use HopL1EthBridgeMetaData.ABI instead.
    46  var HopL1EthBridgeABI = HopL1EthBridgeMetaData.ABI
    47  
    48  // HopL1EthBridge is an auto generated Go binding around an Ethereum contract.
    49  type HopL1EthBridge struct {
    50  	HopL1EthBridgeCaller     // Read-only binding to the contract
    51  	HopL1EthBridgeTransactor // Write-only binding to the contract
    52  	HopL1EthBridgeFilterer   // Log filterer for contract events
    53  }
    54  
    55  // HopL1EthBridgeCaller is an auto generated read-only Go binding around an Ethereum contract.
    56  type HopL1EthBridgeCaller struct {
    57  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    58  }
    59  
    60  // HopL1EthBridgeTransactor is an auto generated write-only Go binding around an Ethereum contract.
    61  type HopL1EthBridgeTransactor struct {
    62  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    63  }
    64  
    65  // HopL1EthBridgeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    66  type HopL1EthBridgeFilterer struct {
    67  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    68  }
    69  
    70  // HopL1EthBridgeSession is an auto generated Go binding around an Ethereum contract,
    71  // with pre-set call and transact options.
    72  type HopL1EthBridgeSession struct {
    73  	Contract     *HopL1EthBridge   // Generic contract binding to set the session for
    74  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    75  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    76  }
    77  
    78  // HopL1EthBridgeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    79  // with pre-set call options.
    80  type HopL1EthBridgeCallerSession struct {
    81  	Contract *HopL1EthBridgeCaller // Generic contract caller binding to set the session for
    82  	CallOpts bind.CallOpts         // Call options to use throughout this session
    83  }
    84  
    85  // HopL1EthBridgeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    86  // with pre-set transact options.
    87  type HopL1EthBridgeTransactorSession struct {
    88  	Contract     *HopL1EthBridgeTransactor // Generic contract transactor binding to set the session for
    89  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
    90  }
    91  
    92  // HopL1EthBridgeRaw is an auto generated low-level Go binding around an Ethereum contract.
    93  type HopL1EthBridgeRaw struct {
    94  	Contract *HopL1EthBridge // Generic contract binding to access the raw methods on
    95  }
    96  
    97  // HopL1EthBridgeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    98  type HopL1EthBridgeCallerRaw struct {
    99  	Contract *HopL1EthBridgeCaller // Generic read-only contract binding to access the raw methods on
   100  }
   101  
   102  // HopL1EthBridgeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   103  type HopL1EthBridgeTransactorRaw struct {
   104  	Contract *HopL1EthBridgeTransactor // Generic write-only contract binding to access the raw methods on
   105  }
   106  
   107  // NewHopL1EthBridge creates a new instance of HopL1EthBridge, bound to a specific deployed contract.
   108  func NewHopL1EthBridge(address common.Address, backend bind.ContractBackend) (*HopL1EthBridge, error) {
   109  	contract, err := bindHopL1EthBridge(address, backend, backend, backend)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	return &HopL1EthBridge{HopL1EthBridgeCaller: HopL1EthBridgeCaller{contract: contract}, HopL1EthBridgeTransactor: HopL1EthBridgeTransactor{contract: contract}, HopL1EthBridgeFilterer: HopL1EthBridgeFilterer{contract: contract}}, nil
   114  }
   115  
   116  // NewHopL1EthBridgeCaller creates a new read-only instance of HopL1EthBridge, bound to a specific deployed contract.
   117  func NewHopL1EthBridgeCaller(address common.Address, caller bind.ContractCaller) (*HopL1EthBridgeCaller, error) {
   118  	contract, err := bindHopL1EthBridge(address, caller, nil, nil)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	return &HopL1EthBridgeCaller{contract: contract}, nil
   123  }
   124  
   125  // NewHopL1EthBridgeTransactor creates a new write-only instance of HopL1EthBridge, bound to a specific deployed contract.
   126  func NewHopL1EthBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*HopL1EthBridgeTransactor, error) {
   127  	contract, err := bindHopL1EthBridge(address, nil, transactor, nil)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return &HopL1EthBridgeTransactor{contract: contract}, nil
   132  }
   133  
   134  // NewHopL1EthBridgeFilterer creates a new log filterer instance of HopL1EthBridge, bound to a specific deployed contract.
   135  func NewHopL1EthBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*HopL1EthBridgeFilterer, error) {
   136  	contract, err := bindHopL1EthBridge(address, nil, nil, filterer)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return &HopL1EthBridgeFilterer{contract: contract}, nil
   141  }
   142  
   143  // bindHopL1EthBridge binds a generic wrapper to an already deployed contract.
   144  func bindHopL1EthBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   145  	parsed, err := HopL1EthBridgeMetaData.GetAbi()
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   150  }
   151  
   152  // Call invokes the (constant) contract method with params as input values and
   153  // sets the output to result. The result type might be a single field for simple
   154  // returns, a slice of interfaces for anonymous returns and a struct for named
   155  // returns.
   156  func (_HopL1EthBridge *HopL1EthBridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   157  	return _HopL1EthBridge.Contract.HopL1EthBridgeCaller.contract.Call(opts, result, method, params...)
   158  }
   159  
   160  // Transfer initiates a plain transaction to move funds to the contract, calling
   161  // its default method if one is available.
   162  func (_HopL1EthBridge *HopL1EthBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   163  	return _HopL1EthBridge.Contract.HopL1EthBridgeTransactor.contract.Transfer(opts)
   164  }
   165  
   166  // Transact invokes the (paid) contract method with params as input values.
   167  func (_HopL1EthBridge *HopL1EthBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   168  	return _HopL1EthBridge.Contract.HopL1EthBridgeTransactor.contract.Transact(opts, method, params...)
   169  }
   170  
   171  // Call invokes the (constant) contract method with params as input values and
   172  // sets the output to result. The result type might be a single field for simple
   173  // returns, a slice of interfaces for anonymous returns and a struct for named
   174  // returns.
   175  func (_HopL1EthBridge *HopL1EthBridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   176  	return _HopL1EthBridge.Contract.contract.Call(opts, result, method, params...)
   177  }
   178  
   179  // Transfer initiates a plain transaction to move funds to the contract, calling
   180  // its default method if one is available.
   181  func (_HopL1EthBridge *HopL1EthBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   182  	return _HopL1EthBridge.Contract.contract.Transfer(opts)
   183  }
   184  
   185  // Transact invokes the (paid) contract method with params as input values.
   186  func (_HopL1EthBridge *HopL1EthBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   187  	return _HopL1EthBridge.Contract.contract.Transact(opts, method, params...)
   188  }
   189  
   190  // CHALLENGEAMOUNTDIVISOR is a free data retrieval call binding the contract method 0x98c4f76d.
   191  //
   192  // Solidity: function CHALLENGE_AMOUNT_DIVISOR() view returns(uint256)
   193  func (_HopL1EthBridge *HopL1EthBridgeCaller) CHALLENGEAMOUNTDIVISOR(opts *bind.CallOpts) (*big.Int, error) {
   194  	var out []interface{}
   195  	err := _HopL1EthBridge.contract.Call(opts, &out, "CHALLENGE_AMOUNT_DIVISOR")
   196  
   197  	if err != nil {
   198  		return *new(*big.Int), err
   199  	}
   200  
   201  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   202  
   203  	return out0, err
   204  
   205  }
   206  
   207  // CHALLENGEAMOUNTDIVISOR is a free data retrieval call binding the contract method 0x98c4f76d.
   208  //
   209  // Solidity: function CHALLENGE_AMOUNT_DIVISOR() view returns(uint256)
   210  func (_HopL1EthBridge *HopL1EthBridgeSession) CHALLENGEAMOUNTDIVISOR() (*big.Int, error) {
   211  	return _HopL1EthBridge.Contract.CHALLENGEAMOUNTDIVISOR(&_HopL1EthBridge.CallOpts)
   212  }
   213  
   214  // CHALLENGEAMOUNTDIVISOR is a free data retrieval call binding the contract method 0x98c4f76d.
   215  //
   216  // Solidity: function CHALLENGE_AMOUNT_DIVISOR() view returns(uint256)
   217  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) CHALLENGEAMOUNTDIVISOR() (*big.Int, error) {
   218  	return _HopL1EthBridge.Contract.CHALLENGEAMOUNTDIVISOR(&_HopL1EthBridge.CallOpts)
   219  }
   220  
   221  // TIMESLOTSIZE is a free data retrieval call binding the contract method 0x4de8c6e6.
   222  //
   223  // Solidity: function TIME_SLOT_SIZE() view returns(uint256)
   224  func (_HopL1EthBridge *HopL1EthBridgeCaller) TIMESLOTSIZE(opts *bind.CallOpts) (*big.Int, error) {
   225  	var out []interface{}
   226  	err := _HopL1EthBridge.contract.Call(opts, &out, "TIME_SLOT_SIZE")
   227  
   228  	if err != nil {
   229  		return *new(*big.Int), err
   230  	}
   231  
   232  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   233  
   234  	return out0, err
   235  
   236  }
   237  
   238  // TIMESLOTSIZE is a free data retrieval call binding the contract method 0x4de8c6e6.
   239  //
   240  // Solidity: function TIME_SLOT_SIZE() view returns(uint256)
   241  func (_HopL1EthBridge *HopL1EthBridgeSession) TIMESLOTSIZE() (*big.Int, error) {
   242  	return _HopL1EthBridge.Contract.TIMESLOTSIZE(&_HopL1EthBridge.CallOpts)
   243  }
   244  
   245  // TIMESLOTSIZE is a free data retrieval call binding the contract method 0x4de8c6e6.
   246  //
   247  // Solidity: function TIME_SLOT_SIZE() view returns(uint256)
   248  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) TIMESLOTSIZE() (*big.Int, error) {
   249  	return _HopL1EthBridge.Contract.TIMESLOTSIZE(&_HopL1EthBridge.CallOpts)
   250  }
   251  
   252  // ChainBalance is a free data retrieval call binding the contract method 0xfc110b67.
   253  //
   254  // Solidity: function chainBalance(uint256 ) view returns(uint256)
   255  func (_HopL1EthBridge *HopL1EthBridgeCaller) ChainBalance(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
   256  	var out []interface{}
   257  	err := _HopL1EthBridge.contract.Call(opts, &out, "chainBalance", arg0)
   258  
   259  	if err != nil {
   260  		return *new(*big.Int), err
   261  	}
   262  
   263  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   264  
   265  	return out0, err
   266  
   267  }
   268  
   269  // ChainBalance is a free data retrieval call binding the contract method 0xfc110b67.
   270  //
   271  // Solidity: function chainBalance(uint256 ) view returns(uint256)
   272  func (_HopL1EthBridge *HopL1EthBridgeSession) ChainBalance(arg0 *big.Int) (*big.Int, error) {
   273  	return _HopL1EthBridge.Contract.ChainBalance(&_HopL1EthBridge.CallOpts, arg0)
   274  }
   275  
   276  // ChainBalance is a free data retrieval call binding the contract method 0xfc110b67.
   277  //
   278  // Solidity: function chainBalance(uint256 ) view returns(uint256)
   279  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) ChainBalance(arg0 *big.Int) (*big.Int, error) {
   280  	return _HopL1EthBridge.Contract.ChainBalance(&_HopL1EthBridge.CallOpts, arg0)
   281  }
   282  
   283  // ChallengePeriod is a free data retrieval call binding the contract method 0xf3f480d9.
   284  //
   285  // Solidity: function challengePeriod() view returns(uint256)
   286  func (_HopL1EthBridge *HopL1EthBridgeCaller) ChallengePeriod(opts *bind.CallOpts) (*big.Int, error) {
   287  	var out []interface{}
   288  	err := _HopL1EthBridge.contract.Call(opts, &out, "challengePeriod")
   289  
   290  	if err != nil {
   291  		return *new(*big.Int), err
   292  	}
   293  
   294  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   295  
   296  	return out0, err
   297  
   298  }
   299  
   300  // ChallengePeriod is a free data retrieval call binding the contract method 0xf3f480d9.
   301  //
   302  // Solidity: function challengePeriod() view returns(uint256)
   303  func (_HopL1EthBridge *HopL1EthBridgeSession) ChallengePeriod() (*big.Int, error) {
   304  	return _HopL1EthBridge.Contract.ChallengePeriod(&_HopL1EthBridge.CallOpts)
   305  }
   306  
   307  // ChallengePeriod is a free data retrieval call binding the contract method 0xf3f480d9.
   308  //
   309  // Solidity: function challengePeriod() view returns(uint256)
   310  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) ChallengePeriod() (*big.Int, error) {
   311  	return _HopL1EthBridge.Contract.ChallengePeriod(&_HopL1EthBridge.CallOpts)
   312  }
   313  
   314  // ChallengeResolutionPeriod is a free data retrieval call binding the contract method 0x767631d5.
   315  //
   316  // Solidity: function challengeResolutionPeriod() view returns(uint256)
   317  func (_HopL1EthBridge *HopL1EthBridgeCaller) ChallengeResolutionPeriod(opts *bind.CallOpts) (*big.Int, error) {
   318  	var out []interface{}
   319  	err := _HopL1EthBridge.contract.Call(opts, &out, "challengeResolutionPeriod")
   320  
   321  	if err != nil {
   322  		return *new(*big.Int), err
   323  	}
   324  
   325  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   326  
   327  	return out0, err
   328  
   329  }
   330  
   331  // ChallengeResolutionPeriod is a free data retrieval call binding the contract method 0x767631d5.
   332  //
   333  // Solidity: function challengeResolutionPeriod() view returns(uint256)
   334  func (_HopL1EthBridge *HopL1EthBridgeSession) ChallengeResolutionPeriod() (*big.Int, error) {
   335  	return _HopL1EthBridge.Contract.ChallengeResolutionPeriod(&_HopL1EthBridge.CallOpts)
   336  }
   337  
   338  // ChallengeResolutionPeriod is a free data retrieval call binding the contract method 0x767631d5.
   339  //
   340  // Solidity: function challengeResolutionPeriod() view returns(uint256)
   341  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) ChallengeResolutionPeriod() (*big.Int, error) {
   342  	return _HopL1EthBridge.Contract.ChallengeResolutionPeriod(&_HopL1EthBridge.CallOpts)
   343  }
   344  
   345  // CrossDomainMessengerWrappers is a free data retrieval call binding the contract method 0xa35962f3.
   346  //
   347  // Solidity: function crossDomainMessengerWrappers(uint256 ) view returns(address)
   348  func (_HopL1EthBridge *HopL1EthBridgeCaller) CrossDomainMessengerWrappers(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   349  	var out []interface{}
   350  	err := _HopL1EthBridge.contract.Call(opts, &out, "crossDomainMessengerWrappers", arg0)
   351  
   352  	if err != nil {
   353  		return *new(common.Address), err
   354  	}
   355  
   356  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   357  
   358  	return out0, err
   359  
   360  }
   361  
   362  // CrossDomainMessengerWrappers is a free data retrieval call binding the contract method 0xa35962f3.
   363  //
   364  // Solidity: function crossDomainMessengerWrappers(uint256 ) view returns(address)
   365  func (_HopL1EthBridge *HopL1EthBridgeSession) CrossDomainMessengerWrappers(arg0 *big.Int) (common.Address, error) {
   366  	return _HopL1EthBridge.Contract.CrossDomainMessengerWrappers(&_HopL1EthBridge.CallOpts, arg0)
   367  }
   368  
   369  // CrossDomainMessengerWrappers is a free data retrieval call binding the contract method 0xa35962f3.
   370  //
   371  // Solidity: function crossDomainMessengerWrappers(uint256 ) view returns(address)
   372  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) CrossDomainMessengerWrappers(arg0 *big.Int) (common.Address, error) {
   373  	return _HopL1EthBridge.Contract.CrossDomainMessengerWrappers(&_HopL1EthBridge.CallOpts, arg0)
   374  }
   375  
   376  // GetBondForTransferAmount is a free data retrieval call binding the contract method 0xe19be150.
   377  //
   378  // Solidity: function getBondForTransferAmount(uint256 amount) pure returns(uint256)
   379  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetBondForTransferAmount(opts *bind.CallOpts, amount *big.Int) (*big.Int, error) {
   380  	var out []interface{}
   381  	err := _HopL1EthBridge.contract.Call(opts, &out, "getBondForTransferAmount", amount)
   382  
   383  	if err != nil {
   384  		return *new(*big.Int), err
   385  	}
   386  
   387  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   388  
   389  	return out0, err
   390  
   391  }
   392  
   393  // GetBondForTransferAmount is a free data retrieval call binding the contract method 0xe19be150.
   394  //
   395  // Solidity: function getBondForTransferAmount(uint256 amount) pure returns(uint256)
   396  func (_HopL1EthBridge *HopL1EthBridgeSession) GetBondForTransferAmount(amount *big.Int) (*big.Int, error) {
   397  	return _HopL1EthBridge.Contract.GetBondForTransferAmount(&_HopL1EthBridge.CallOpts, amount)
   398  }
   399  
   400  // GetBondForTransferAmount is a free data retrieval call binding the contract method 0xe19be150.
   401  //
   402  // Solidity: function getBondForTransferAmount(uint256 amount) pure returns(uint256)
   403  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetBondForTransferAmount(amount *big.Int) (*big.Int, error) {
   404  	return _HopL1EthBridge.Contract.GetBondForTransferAmount(&_HopL1EthBridge.CallOpts, amount)
   405  }
   406  
   407  // GetBondedWithdrawalAmount is a free data retrieval call binding the contract method 0x302830ab.
   408  //
   409  // Solidity: function getBondedWithdrawalAmount(address bonder, bytes32 transferId) view returns(uint256)
   410  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetBondedWithdrawalAmount(opts *bind.CallOpts, bonder common.Address, transferId [32]byte) (*big.Int, error) {
   411  	var out []interface{}
   412  	err := _HopL1EthBridge.contract.Call(opts, &out, "getBondedWithdrawalAmount", bonder, transferId)
   413  
   414  	if err != nil {
   415  		return *new(*big.Int), err
   416  	}
   417  
   418  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   419  
   420  	return out0, err
   421  
   422  }
   423  
   424  // GetBondedWithdrawalAmount is a free data retrieval call binding the contract method 0x302830ab.
   425  //
   426  // Solidity: function getBondedWithdrawalAmount(address bonder, bytes32 transferId) view returns(uint256)
   427  func (_HopL1EthBridge *HopL1EthBridgeSession) GetBondedWithdrawalAmount(bonder common.Address, transferId [32]byte) (*big.Int, error) {
   428  	return _HopL1EthBridge.Contract.GetBondedWithdrawalAmount(&_HopL1EthBridge.CallOpts, bonder, transferId)
   429  }
   430  
   431  // GetBondedWithdrawalAmount is a free data retrieval call binding the contract method 0x302830ab.
   432  //
   433  // Solidity: function getBondedWithdrawalAmount(address bonder, bytes32 transferId) view returns(uint256)
   434  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetBondedWithdrawalAmount(bonder common.Address, transferId [32]byte) (*big.Int, error) {
   435  	return _HopL1EthBridge.Contract.GetBondedWithdrawalAmount(&_HopL1EthBridge.CallOpts, bonder, transferId)
   436  }
   437  
   438  // GetChainId is a free data retrieval call binding the contract method 0x3408e470.
   439  //
   440  // Solidity: function getChainId() view returns(uint256 chainId)
   441  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetChainId(opts *bind.CallOpts) (*big.Int, error) {
   442  	var out []interface{}
   443  	err := _HopL1EthBridge.contract.Call(opts, &out, "getChainId")
   444  
   445  	if err != nil {
   446  		return *new(*big.Int), err
   447  	}
   448  
   449  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   450  
   451  	return out0, err
   452  
   453  }
   454  
   455  // GetChainId is a free data retrieval call binding the contract method 0x3408e470.
   456  //
   457  // Solidity: function getChainId() view returns(uint256 chainId)
   458  func (_HopL1EthBridge *HopL1EthBridgeSession) GetChainId() (*big.Int, error) {
   459  	return _HopL1EthBridge.Contract.GetChainId(&_HopL1EthBridge.CallOpts)
   460  }
   461  
   462  // GetChainId is a free data retrieval call binding the contract method 0x3408e470.
   463  //
   464  // Solidity: function getChainId() view returns(uint256 chainId)
   465  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetChainId() (*big.Int, error) {
   466  	return _HopL1EthBridge.Contract.GetChainId(&_HopL1EthBridge.CallOpts)
   467  }
   468  
   469  // GetChallengeAmountForTransferAmount is a free data retrieval call binding the contract method 0xa239f5ee.
   470  //
   471  // Solidity: function getChallengeAmountForTransferAmount(uint256 amount) pure returns(uint256)
   472  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetChallengeAmountForTransferAmount(opts *bind.CallOpts, amount *big.Int) (*big.Int, error) {
   473  	var out []interface{}
   474  	err := _HopL1EthBridge.contract.Call(opts, &out, "getChallengeAmountForTransferAmount", amount)
   475  
   476  	if err != nil {
   477  		return *new(*big.Int), err
   478  	}
   479  
   480  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   481  
   482  	return out0, err
   483  
   484  }
   485  
   486  // GetChallengeAmountForTransferAmount is a free data retrieval call binding the contract method 0xa239f5ee.
   487  //
   488  // Solidity: function getChallengeAmountForTransferAmount(uint256 amount) pure returns(uint256)
   489  func (_HopL1EthBridge *HopL1EthBridgeSession) GetChallengeAmountForTransferAmount(amount *big.Int) (*big.Int, error) {
   490  	return _HopL1EthBridge.Contract.GetChallengeAmountForTransferAmount(&_HopL1EthBridge.CallOpts, amount)
   491  }
   492  
   493  // GetChallengeAmountForTransferAmount is a free data retrieval call binding the contract method 0xa239f5ee.
   494  //
   495  // Solidity: function getChallengeAmountForTransferAmount(uint256 amount) pure returns(uint256)
   496  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetChallengeAmountForTransferAmount(amount *big.Int) (*big.Int, error) {
   497  	return _HopL1EthBridge.Contract.GetChallengeAmountForTransferAmount(&_HopL1EthBridge.CallOpts, amount)
   498  }
   499  
   500  // GetCredit is a free data retrieval call binding the contract method 0x57344e6f.
   501  //
   502  // Solidity: function getCredit(address bonder) view returns(uint256)
   503  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetCredit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   504  	var out []interface{}
   505  	err := _HopL1EthBridge.contract.Call(opts, &out, "getCredit", bonder)
   506  
   507  	if err != nil {
   508  		return *new(*big.Int), err
   509  	}
   510  
   511  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   512  
   513  	return out0, err
   514  
   515  }
   516  
   517  // GetCredit is a free data retrieval call binding the contract method 0x57344e6f.
   518  //
   519  // Solidity: function getCredit(address bonder) view returns(uint256)
   520  func (_HopL1EthBridge *HopL1EthBridgeSession) GetCredit(bonder common.Address) (*big.Int, error) {
   521  	return _HopL1EthBridge.Contract.GetCredit(&_HopL1EthBridge.CallOpts, bonder)
   522  }
   523  
   524  // GetCredit is a free data retrieval call binding the contract method 0x57344e6f.
   525  //
   526  // Solidity: function getCredit(address bonder) view returns(uint256)
   527  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetCredit(bonder common.Address) (*big.Int, error) {
   528  	return _HopL1EthBridge.Contract.GetCredit(&_HopL1EthBridge.CallOpts, bonder)
   529  }
   530  
   531  // GetDebitAndAdditionalDebit is a free data retrieval call binding the contract method 0xffa9286c.
   532  //
   533  // Solidity: function getDebitAndAdditionalDebit(address bonder) view returns(uint256)
   534  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetDebitAndAdditionalDebit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   535  	var out []interface{}
   536  	err := _HopL1EthBridge.contract.Call(opts, &out, "getDebitAndAdditionalDebit", bonder)
   537  
   538  	if err != nil {
   539  		return *new(*big.Int), err
   540  	}
   541  
   542  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   543  
   544  	return out0, err
   545  
   546  }
   547  
   548  // GetDebitAndAdditionalDebit is a free data retrieval call binding the contract method 0xffa9286c.
   549  //
   550  // Solidity: function getDebitAndAdditionalDebit(address bonder) view returns(uint256)
   551  func (_HopL1EthBridge *HopL1EthBridgeSession) GetDebitAndAdditionalDebit(bonder common.Address) (*big.Int, error) {
   552  	return _HopL1EthBridge.Contract.GetDebitAndAdditionalDebit(&_HopL1EthBridge.CallOpts, bonder)
   553  }
   554  
   555  // GetDebitAndAdditionalDebit is a free data retrieval call binding the contract method 0xffa9286c.
   556  //
   557  // Solidity: function getDebitAndAdditionalDebit(address bonder) view returns(uint256)
   558  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetDebitAndAdditionalDebit(bonder common.Address) (*big.Int, error) {
   559  	return _HopL1EthBridge.Contract.GetDebitAndAdditionalDebit(&_HopL1EthBridge.CallOpts, bonder)
   560  }
   561  
   562  // GetIsBonder is a free data retrieval call binding the contract method 0xd5ef7551.
   563  //
   564  // Solidity: function getIsBonder(address maybeBonder) view returns(bool)
   565  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetIsBonder(opts *bind.CallOpts, maybeBonder common.Address) (bool, error) {
   566  	var out []interface{}
   567  	err := _HopL1EthBridge.contract.Call(opts, &out, "getIsBonder", maybeBonder)
   568  
   569  	if err != nil {
   570  		return *new(bool), err
   571  	}
   572  
   573  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   574  
   575  	return out0, err
   576  
   577  }
   578  
   579  // GetIsBonder is a free data retrieval call binding the contract method 0xd5ef7551.
   580  //
   581  // Solidity: function getIsBonder(address maybeBonder) view returns(bool)
   582  func (_HopL1EthBridge *HopL1EthBridgeSession) GetIsBonder(maybeBonder common.Address) (bool, error) {
   583  	return _HopL1EthBridge.Contract.GetIsBonder(&_HopL1EthBridge.CallOpts, maybeBonder)
   584  }
   585  
   586  // GetIsBonder is a free data retrieval call binding the contract method 0xd5ef7551.
   587  //
   588  // Solidity: function getIsBonder(address maybeBonder) view returns(bool)
   589  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetIsBonder(maybeBonder common.Address) (bool, error) {
   590  	return _HopL1EthBridge.Contract.GetIsBonder(&_HopL1EthBridge.CallOpts, maybeBonder)
   591  }
   592  
   593  // GetRawDebit is a free data retrieval call binding the contract method 0x13948c76.
   594  //
   595  // Solidity: function getRawDebit(address bonder) view returns(uint256)
   596  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetRawDebit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   597  	var out []interface{}
   598  	err := _HopL1EthBridge.contract.Call(opts, &out, "getRawDebit", bonder)
   599  
   600  	if err != nil {
   601  		return *new(*big.Int), err
   602  	}
   603  
   604  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   605  
   606  	return out0, err
   607  
   608  }
   609  
   610  // GetRawDebit is a free data retrieval call binding the contract method 0x13948c76.
   611  //
   612  // Solidity: function getRawDebit(address bonder) view returns(uint256)
   613  func (_HopL1EthBridge *HopL1EthBridgeSession) GetRawDebit(bonder common.Address) (*big.Int, error) {
   614  	return _HopL1EthBridge.Contract.GetRawDebit(&_HopL1EthBridge.CallOpts, bonder)
   615  }
   616  
   617  // GetRawDebit is a free data retrieval call binding the contract method 0x13948c76.
   618  //
   619  // Solidity: function getRawDebit(address bonder) view returns(uint256)
   620  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetRawDebit(bonder common.Address) (*big.Int, error) {
   621  	return _HopL1EthBridge.Contract.GetRawDebit(&_HopL1EthBridge.CallOpts, bonder)
   622  }
   623  
   624  // GetTimeSlot is a free data retrieval call binding the contract method 0x2b85dcc9.
   625  //
   626  // Solidity: function getTimeSlot(uint256 time) pure returns(uint256)
   627  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetTimeSlot(opts *bind.CallOpts, time *big.Int) (*big.Int, error) {
   628  	var out []interface{}
   629  	err := _HopL1EthBridge.contract.Call(opts, &out, "getTimeSlot", time)
   630  
   631  	if err != nil {
   632  		return *new(*big.Int), err
   633  	}
   634  
   635  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   636  
   637  	return out0, err
   638  
   639  }
   640  
   641  // GetTimeSlot is a free data retrieval call binding the contract method 0x2b85dcc9.
   642  //
   643  // Solidity: function getTimeSlot(uint256 time) pure returns(uint256)
   644  func (_HopL1EthBridge *HopL1EthBridgeSession) GetTimeSlot(time *big.Int) (*big.Int, error) {
   645  	return _HopL1EthBridge.Contract.GetTimeSlot(&_HopL1EthBridge.CallOpts, time)
   646  }
   647  
   648  // GetTimeSlot is a free data retrieval call binding the contract method 0x2b85dcc9.
   649  //
   650  // Solidity: function getTimeSlot(uint256 time) pure returns(uint256)
   651  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetTimeSlot(time *big.Int) (*big.Int, error) {
   652  	return _HopL1EthBridge.Contract.GetTimeSlot(&_HopL1EthBridge.CallOpts, time)
   653  }
   654  
   655  // GetTransferId is a free data retrieval call binding the contract method 0xaf215f94.
   656  //
   657  // Solidity: function getTransferId(uint256 chainId, address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline) pure returns(bytes32)
   658  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetTransferId(opts *bind.CallOpts, chainId *big.Int, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int) ([32]byte, error) {
   659  	var out []interface{}
   660  	err := _HopL1EthBridge.contract.Call(opts, &out, "getTransferId", chainId, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline)
   661  
   662  	if err != nil {
   663  		return *new([32]byte), err
   664  	}
   665  
   666  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   667  
   668  	return out0, err
   669  
   670  }
   671  
   672  // GetTransferId is a free data retrieval call binding the contract method 0xaf215f94.
   673  //
   674  // Solidity: function getTransferId(uint256 chainId, address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline) pure returns(bytes32)
   675  func (_HopL1EthBridge *HopL1EthBridgeSession) GetTransferId(chainId *big.Int, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int) ([32]byte, error) {
   676  	return _HopL1EthBridge.Contract.GetTransferId(&_HopL1EthBridge.CallOpts, chainId, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline)
   677  }
   678  
   679  // GetTransferId is a free data retrieval call binding the contract method 0xaf215f94.
   680  //
   681  // Solidity: function getTransferId(uint256 chainId, address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline) pure returns(bytes32)
   682  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetTransferId(chainId *big.Int, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int) ([32]byte, error) {
   683  	return _HopL1EthBridge.Contract.GetTransferId(&_HopL1EthBridge.CallOpts, chainId, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline)
   684  }
   685  
   686  // GetTransferRoot is a free data retrieval call binding the contract method 0xce803b4f.
   687  //
   688  // Solidity: function getTransferRoot(bytes32 rootHash, uint256 totalAmount) view returns((uint256,uint256,uint256))
   689  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetTransferRoot(opts *bind.CallOpts, rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   690  	var out []interface{}
   691  	err := _HopL1EthBridge.contract.Call(opts, &out, "getTransferRoot", rootHash, totalAmount)
   692  
   693  	if err != nil {
   694  		return *new(BridgeTransferRoot), err
   695  	}
   696  
   697  	out0 := *abi.ConvertType(out[0], new(BridgeTransferRoot)).(*BridgeTransferRoot)
   698  
   699  	return out0, err
   700  
   701  }
   702  
   703  // GetTransferRoot is a free data retrieval call binding the contract method 0xce803b4f.
   704  //
   705  // Solidity: function getTransferRoot(bytes32 rootHash, uint256 totalAmount) view returns((uint256,uint256,uint256))
   706  func (_HopL1EthBridge *HopL1EthBridgeSession) GetTransferRoot(rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   707  	return _HopL1EthBridge.Contract.GetTransferRoot(&_HopL1EthBridge.CallOpts, rootHash, totalAmount)
   708  }
   709  
   710  // GetTransferRoot is a free data retrieval call binding the contract method 0xce803b4f.
   711  //
   712  // Solidity: function getTransferRoot(bytes32 rootHash, uint256 totalAmount) view returns((uint256,uint256,uint256))
   713  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetTransferRoot(rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   714  	return _HopL1EthBridge.Contract.GetTransferRoot(&_HopL1EthBridge.CallOpts, rootHash, totalAmount)
   715  }
   716  
   717  // GetTransferRootId is a free data retrieval call binding the contract method 0x960a7afa.
   718  //
   719  // Solidity: function getTransferRootId(bytes32 rootHash, uint256 totalAmount) pure returns(bytes32)
   720  func (_HopL1EthBridge *HopL1EthBridgeCaller) GetTransferRootId(opts *bind.CallOpts, rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   721  	var out []interface{}
   722  	err := _HopL1EthBridge.contract.Call(opts, &out, "getTransferRootId", rootHash, totalAmount)
   723  
   724  	if err != nil {
   725  		return *new([32]byte), err
   726  	}
   727  
   728  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   729  
   730  	return out0, err
   731  
   732  }
   733  
   734  // GetTransferRootId is a free data retrieval call binding the contract method 0x960a7afa.
   735  //
   736  // Solidity: function getTransferRootId(bytes32 rootHash, uint256 totalAmount) pure returns(bytes32)
   737  func (_HopL1EthBridge *HopL1EthBridgeSession) GetTransferRootId(rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   738  	return _HopL1EthBridge.Contract.GetTransferRootId(&_HopL1EthBridge.CallOpts, rootHash, totalAmount)
   739  }
   740  
   741  // GetTransferRootId is a free data retrieval call binding the contract method 0x960a7afa.
   742  //
   743  // Solidity: function getTransferRootId(bytes32 rootHash, uint256 totalAmount) pure returns(bytes32)
   744  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) GetTransferRootId(rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   745  	return _HopL1EthBridge.Contract.GetTransferRootId(&_HopL1EthBridge.CallOpts, rootHash, totalAmount)
   746  }
   747  
   748  // Governance is a free data retrieval call binding the contract method 0x5aa6e675.
   749  //
   750  // Solidity: function governance() view returns(address)
   751  func (_HopL1EthBridge *HopL1EthBridgeCaller) Governance(opts *bind.CallOpts) (common.Address, error) {
   752  	var out []interface{}
   753  	err := _HopL1EthBridge.contract.Call(opts, &out, "governance")
   754  
   755  	if err != nil {
   756  		return *new(common.Address), err
   757  	}
   758  
   759  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   760  
   761  	return out0, err
   762  
   763  }
   764  
   765  // Governance is a free data retrieval call binding the contract method 0x5aa6e675.
   766  //
   767  // Solidity: function governance() view returns(address)
   768  func (_HopL1EthBridge *HopL1EthBridgeSession) Governance() (common.Address, error) {
   769  	return _HopL1EthBridge.Contract.Governance(&_HopL1EthBridge.CallOpts)
   770  }
   771  
   772  // Governance is a free data retrieval call binding the contract method 0x5aa6e675.
   773  //
   774  // Solidity: function governance() view returns(address)
   775  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) Governance() (common.Address, error) {
   776  	return _HopL1EthBridge.Contract.Governance(&_HopL1EthBridge.CallOpts)
   777  }
   778  
   779  // IsChainIdPaused is a free data retrieval call binding the contract method 0xfa2a69a3.
   780  //
   781  // Solidity: function isChainIdPaused(uint256 ) view returns(bool)
   782  func (_HopL1EthBridge *HopL1EthBridgeCaller) IsChainIdPaused(opts *bind.CallOpts, arg0 *big.Int) (bool, error) {
   783  	var out []interface{}
   784  	err := _HopL1EthBridge.contract.Call(opts, &out, "isChainIdPaused", arg0)
   785  
   786  	if err != nil {
   787  		return *new(bool), err
   788  	}
   789  
   790  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   791  
   792  	return out0, err
   793  
   794  }
   795  
   796  // IsChainIdPaused is a free data retrieval call binding the contract method 0xfa2a69a3.
   797  //
   798  // Solidity: function isChainIdPaused(uint256 ) view returns(bool)
   799  func (_HopL1EthBridge *HopL1EthBridgeSession) IsChainIdPaused(arg0 *big.Int) (bool, error) {
   800  	return _HopL1EthBridge.Contract.IsChainIdPaused(&_HopL1EthBridge.CallOpts, arg0)
   801  }
   802  
   803  // IsChainIdPaused is a free data retrieval call binding the contract method 0xfa2a69a3.
   804  //
   805  // Solidity: function isChainIdPaused(uint256 ) view returns(bool)
   806  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) IsChainIdPaused(arg0 *big.Int) (bool, error) {
   807  	return _HopL1EthBridge.Contract.IsChainIdPaused(&_HopL1EthBridge.CallOpts, arg0)
   808  }
   809  
   810  // IsTransferIdSpent is a free data retrieval call binding the contract method 0x3a7af631.
   811  //
   812  // Solidity: function isTransferIdSpent(bytes32 transferId) view returns(bool)
   813  func (_HopL1EthBridge *HopL1EthBridgeCaller) IsTransferIdSpent(opts *bind.CallOpts, transferId [32]byte) (bool, error) {
   814  	var out []interface{}
   815  	err := _HopL1EthBridge.contract.Call(opts, &out, "isTransferIdSpent", transferId)
   816  
   817  	if err != nil {
   818  		return *new(bool), err
   819  	}
   820  
   821  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   822  
   823  	return out0, err
   824  
   825  }
   826  
   827  // IsTransferIdSpent is a free data retrieval call binding the contract method 0x3a7af631.
   828  //
   829  // Solidity: function isTransferIdSpent(bytes32 transferId) view returns(bool)
   830  func (_HopL1EthBridge *HopL1EthBridgeSession) IsTransferIdSpent(transferId [32]byte) (bool, error) {
   831  	return _HopL1EthBridge.Contract.IsTransferIdSpent(&_HopL1EthBridge.CallOpts, transferId)
   832  }
   833  
   834  // IsTransferIdSpent is a free data retrieval call binding the contract method 0x3a7af631.
   835  //
   836  // Solidity: function isTransferIdSpent(bytes32 transferId) view returns(bool)
   837  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) IsTransferIdSpent(transferId [32]byte) (bool, error) {
   838  	return _HopL1EthBridge.Contract.IsTransferIdSpent(&_HopL1EthBridge.CallOpts, transferId)
   839  }
   840  
   841  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   842  //
   843  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   844  func (_HopL1EthBridge *HopL1EthBridgeCaller) MinTransferRootBondDelay(opts *bind.CallOpts) (*big.Int, error) {
   845  	var out []interface{}
   846  	err := _HopL1EthBridge.contract.Call(opts, &out, "minTransferRootBondDelay")
   847  
   848  	if err != nil {
   849  		return *new(*big.Int), err
   850  	}
   851  
   852  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   853  
   854  	return out0, err
   855  
   856  }
   857  
   858  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   859  //
   860  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   861  func (_HopL1EthBridge *HopL1EthBridgeSession) MinTransferRootBondDelay() (*big.Int, error) {
   862  	return _HopL1EthBridge.Contract.MinTransferRootBondDelay(&_HopL1EthBridge.CallOpts)
   863  }
   864  
   865  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   866  //
   867  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   868  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) MinTransferRootBondDelay() (*big.Int, error) {
   869  	return _HopL1EthBridge.Contract.MinTransferRootBondDelay(&_HopL1EthBridge.CallOpts)
   870  }
   871  
   872  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   873  //
   874  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   875  func (_HopL1EthBridge *HopL1EthBridgeCaller) TimeSlotToAmountBonded(opts *bind.CallOpts, arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   876  	var out []interface{}
   877  	err := _HopL1EthBridge.contract.Call(opts, &out, "timeSlotToAmountBonded", arg0, arg1)
   878  
   879  	if err != nil {
   880  		return *new(*big.Int), err
   881  	}
   882  
   883  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   884  
   885  	return out0, err
   886  
   887  }
   888  
   889  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   890  //
   891  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   892  func (_HopL1EthBridge *HopL1EthBridgeSession) TimeSlotToAmountBonded(arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   893  	return _HopL1EthBridge.Contract.TimeSlotToAmountBonded(&_HopL1EthBridge.CallOpts, arg0, arg1)
   894  }
   895  
   896  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   897  //
   898  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   899  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) TimeSlotToAmountBonded(arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   900  	return _HopL1EthBridge.Contract.TimeSlotToAmountBonded(&_HopL1EthBridge.CallOpts, arg0, arg1)
   901  }
   902  
   903  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
   904  //
   905  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
   906  func (_HopL1EthBridge *HopL1EthBridgeCaller) TransferBonds(opts *bind.CallOpts, arg0 [32]byte) (struct {
   907  	Bonder             common.Address
   908  	CreatedAt          *big.Int
   909  	TotalAmount        *big.Int
   910  	ChallengeStartTime *big.Int
   911  	Challenger         common.Address
   912  	ChallengeResolved  bool
   913  }, error) {
   914  	var out []interface{}
   915  	err := _HopL1EthBridge.contract.Call(opts, &out, "transferBonds", arg0)
   916  
   917  	outstruct := new(struct {
   918  		Bonder             common.Address
   919  		CreatedAt          *big.Int
   920  		TotalAmount        *big.Int
   921  		ChallengeStartTime *big.Int
   922  		Challenger         common.Address
   923  		ChallengeResolved  bool
   924  	})
   925  	if err != nil {
   926  		return *outstruct, err
   927  	}
   928  
   929  	outstruct.Bonder = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   930  	outstruct.CreatedAt = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   931  	outstruct.TotalAmount = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   932  	outstruct.ChallengeStartTime = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   933  	outstruct.Challenger = *abi.ConvertType(out[4], new(common.Address)).(*common.Address)
   934  	outstruct.ChallengeResolved = *abi.ConvertType(out[5], new(bool)).(*bool)
   935  
   936  	return *outstruct, err
   937  
   938  }
   939  
   940  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
   941  //
   942  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
   943  func (_HopL1EthBridge *HopL1EthBridgeSession) TransferBonds(arg0 [32]byte) (struct {
   944  	Bonder             common.Address
   945  	CreatedAt          *big.Int
   946  	TotalAmount        *big.Int
   947  	ChallengeStartTime *big.Int
   948  	Challenger         common.Address
   949  	ChallengeResolved  bool
   950  }, error) {
   951  	return _HopL1EthBridge.Contract.TransferBonds(&_HopL1EthBridge.CallOpts, arg0)
   952  }
   953  
   954  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
   955  //
   956  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
   957  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) TransferBonds(arg0 [32]byte) (struct {
   958  	Bonder             common.Address
   959  	CreatedAt          *big.Int
   960  	TotalAmount        *big.Int
   961  	ChallengeStartTime *big.Int
   962  	Challenger         common.Address
   963  	ChallengeResolved  bool
   964  }, error) {
   965  	return _HopL1EthBridge.Contract.TransferBonds(&_HopL1EthBridge.CallOpts, arg0)
   966  }
   967  
   968  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
   969  //
   970  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
   971  func (_HopL1EthBridge *HopL1EthBridgeCaller) TransferRootCommittedAt(opts *bind.CallOpts, arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
   972  	var out []interface{}
   973  	err := _HopL1EthBridge.contract.Call(opts, &out, "transferRootCommittedAt", arg0, arg1)
   974  
   975  	if err != nil {
   976  		return *new(*big.Int), err
   977  	}
   978  
   979  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   980  
   981  	return out0, err
   982  
   983  }
   984  
   985  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
   986  //
   987  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
   988  func (_HopL1EthBridge *HopL1EthBridgeSession) TransferRootCommittedAt(arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
   989  	return _HopL1EthBridge.Contract.TransferRootCommittedAt(&_HopL1EthBridge.CallOpts, arg0, arg1)
   990  }
   991  
   992  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
   993  //
   994  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
   995  func (_HopL1EthBridge *HopL1EthBridgeCallerSession) TransferRootCommittedAt(arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
   996  	return _HopL1EthBridge.Contract.TransferRootCommittedAt(&_HopL1EthBridge.CallOpts, arg0, arg1)
   997  }
   998  
   999  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1000  //
  1001  // Solidity: function addBonder(address bonder) returns()
  1002  func (_HopL1EthBridge *HopL1EthBridgeTransactor) AddBonder(opts *bind.TransactOpts, bonder common.Address) (*types.Transaction, error) {
  1003  	return _HopL1EthBridge.contract.Transact(opts, "addBonder", bonder)
  1004  }
  1005  
  1006  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1007  //
  1008  // Solidity: function addBonder(address bonder) returns()
  1009  func (_HopL1EthBridge *HopL1EthBridgeSession) AddBonder(bonder common.Address) (*types.Transaction, error) {
  1010  	return _HopL1EthBridge.Contract.AddBonder(&_HopL1EthBridge.TransactOpts, bonder)
  1011  }
  1012  
  1013  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1014  //
  1015  // Solidity: function addBonder(address bonder) returns()
  1016  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) AddBonder(bonder common.Address) (*types.Transaction, error) {
  1017  	return _HopL1EthBridge.Contract.AddBonder(&_HopL1EthBridge.TransactOpts, bonder)
  1018  }
  1019  
  1020  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1021  //
  1022  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1023  func (_HopL1EthBridge *HopL1EthBridgeTransactor) BondTransferRoot(opts *bind.TransactOpts, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1024  	return _HopL1EthBridge.contract.Transact(opts, "bondTransferRoot", rootHash, destinationChainId, totalAmount)
  1025  }
  1026  
  1027  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1028  //
  1029  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1030  func (_HopL1EthBridge *HopL1EthBridgeSession) BondTransferRoot(rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1031  	return _HopL1EthBridge.Contract.BondTransferRoot(&_HopL1EthBridge.TransactOpts, rootHash, destinationChainId, totalAmount)
  1032  }
  1033  
  1034  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1035  //
  1036  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1037  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) BondTransferRoot(rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1038  	return _HopL1EthBridge.Contract.BondTransferRoot(&_HopL1EthBridge.TransactOpts, rootHash, destinationChainId, totalAmount)
  1039  }
  1040  
  1041  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1042  //
  1043  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1044  func (_HopL1EthBridge *HopL1EthBridgeTransactor) BondWithdrawal(opts *bind.TransactOpts, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1045  	return _HopL1EthBridge.contract.Transact(opts, "bondWithdrawal", recipient, amount, transferNonce, bonderFee)
  1046  }
  1047  
  1048  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1049  //
  1050  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1051  func (_HopL1EthBridge *HopL1EthBridgeSession) BondWithdrawal(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1052  	return _HopL1EthBridge.Contract.BondWithdrawal(&_HopL1EthBridge.TransactOpts, recipient, amount, transferNonce, bonderFee)
  1053  }
  1054  
  1055  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1056  //
  1057  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1058  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) BondWithdrawal(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1059  	return _HopL1EthBridge.Contract.BondWithdrawal(&_HopL1EthBridge.TransactOpts, recipient, amount, transferNonce, bonderFee)
  1060  }
  1061  
  1062  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1063  //
  1064  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1065  func (_HopL1EthBridge *HopL1EthBridgeTransactor) ChallengeTransferBond(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1066  	return _HopL1EthBridge.contract.Transact(opts, "challengeTransferBond", rootHash, originalAmount, destinationChainId)
  1067  }
  1068  
  1069  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1070  //
  1071  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1072  func (_HopL1EthBridge *HopL1EthBridgeSession) ChallengeTransferBond(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1073  	return _HopL1EthBridge.Contract.ChallengeTransferBond(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1074  }
  1075  
  1076  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1077  //
  1078  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1079  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) ChallengeTransferBond(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1080  	return _HopL1EthBridge.Contract.ChallengeTransferBond(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1081  }
  1082  
  1083  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1084  //
  1085  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1086  func (_HopL1EthBridge *HopL1EthBridgeTransactor) ConfirmTransferRoot(opts *bind.TransactOpts, originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1087  	return _HopL1EthBridge.contract.Transact(opts, "confirmTransferRoot", originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1088  }
  1089  
  1090  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1091  //
  1092  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1093  func (_HopL1EthBridge *HopL1EthBridgeSession) ConfirmTransferRoot(originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1094  	return _HopL1EthBridge.Contract.ConfirmTransferRoot(&_HopL1EthBridge.TransactOpts, originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1095  }
  1096  
  1097  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1098  //
  1099  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1100  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) ConfirmTransferRoot(originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1101  	return _HopL1EthBridge.Contract.ConfirmTransferRoot(&_HopL1EthBridge.TransactOpts, originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1102  }
  1103  
  1104  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1105  //
  1106  // Solidity: function removeBonder(address bonder) returns()
  1107  func (_HopL1EthBridge *HopL1EthBridgeTransactor) RemoveBonder(opts *bind.TransactOpts, bonder common.Address) (*types.Transaction, error) {
  1108  	return _HopL1EthBridge.contract.Transact(opts, "removeBonder", bonder)
  1109  }
  1110  
  1111  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1112  //
  1113  // Solidity: function removeBonder(address bonder) returns()
  1114  func (_HopL1EthBridge *HopL1EthBridgeSession) RemoveBonder(bonder common.Address) (*types.Transaction, error) {
  1115  	return _HopL1EthBridge.Contract.RemoveBonder(&_HopL1EthBridge.TransactOpts, bonder)
  1116  }
  1117  
  1118  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1119  //
  1120  // Solidity: function removeBonder(address bonder) returns()
  1121  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) RemoveBonder(bonder common.Address) (*types.Transaction, error) {
  1122  	return _HopL1EthBridge.Contract.RemoveBonder(&_HopL1EthBridge.TransactOpts, bonder)
  1123  }
  1124  
  1125  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1126  //
  1127  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1128  func (_HopL1EthBridge *HopL1EthBridgeTransactor) RescueTransferRoot(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1129  	return _HopL1EthBridge.contract.Transact(opts, "rescueTransferRoot", rootHash, originalAmount, recipient)
  1130  }
  1131  
  1132  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1133  //
  1134  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1135  func (_HopL1EthBridge *HopL1EthBridgeSession) RescueTransferRoot(rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1136  	return _HopL1EthBridge.Contract.RescueTransferRoot(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, recipient)
  1137  }
  1138  
  1139  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1140  //
  1141  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1142  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) RescueTransferRoot(rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1143  	return _HopL1EthBridge.Contract.RescueTransferRoot(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, recipient)
  1144  }
  1145  
  1146  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1147  //
  1148  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1149  func (_HopL1EthBridge *HopL1EthBridgeTransactor) ResolveChallenge(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1150  	return _HopL1EthBridge.contract.Transact(opts, "resolveChallenge", rootHash, originalAmount, destinationChainId)
  1151  }
  1152  
  1153  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1154  //
  1155  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1156  func (_HopL1EthBridge *HopL1EthBridgeSession) ResolveChallenge(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1157  	return _HopL1EthBridge.Contract.ResolveChallenge(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1158  }
  1159  
  1160  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1161  //
  1162  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1163  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) ResolveChallenge(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1164  	return _HopL1EthBridge.Contract.ResolveChallenge(&_HopL1EthBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1165  }
  1166  
  1167  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1168  //
  1169  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1170  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SendToL2(opts *bind.TransactOpts, chainId *big.Int, recipient common.Address, amount *big.Int, amountOutMin *big.Int, deadline *big.Int, relayer common.Address, relayerFee *big.Int) (*types.Transaction, error) {
  1171  	return _HopL1EthBridge.contract.Transact(opts, "sendToL2", chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1172  }
  1173  
  1174  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1175  //
  1176  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1177  func (_HopL1EthBridge *HopL1EthBridgeSession) SendToL2(chainId *big.Int, recipient common.Address, amount *big.Int, amountOutMin *big.Int, deadline *big.Int, relayer common.Address, relayerFee *big.Int) (*types.Transaction, error) {
  1178  	return _HopL1EthBridge.Contract.SendToL2(&_HopL1EthBridge.TransactOpts, chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1179  }
  1180  
  1181  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1182  //
  1183  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1184  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SendToL2(chainId *big.Int, recipient common.Address, amount *big.Int, amountOutMin *big.Int, deadline *big.Int, relayer common.Address, relayerFee *big.Int) (*types.Transaction, error) {
  1185  	return _HopL1EthBridge.Contract.SendToL2(&_HopL1EthBridge.TransactOpts, chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1186  }
  1187  
  1188  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1189  //
  1190  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1191  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetChainIdDepositsPaused(opts *bind.TransactOpts, chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1192  	return _HopL1EthBridge.contract.Transact(opts, "setChainIdDepositsPaused", chainId, isPaused)
  1193  }
  1194  
  1195  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1196  //
  1197  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1198  func (_HopL1EthBridge *HopL1EthBridgeSession) SetChainIdDepositsPaused(chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1199  	return _HopL1EthBridge.Contract.SetChainIdDepositsPaused(&_HopL1EthBridge.TransactOpts, chainId, isPaused)
  1200  }
  1201  
  1202  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1203  //
  1204  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1205  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetChainIdDepositsPaused(chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1206  	return _HopL1EthBridge.Contract.SetChainIdDepositsPaused(&_HopL1EthBridge.TransactOpts, chainId, isPaused)
  1207  }
  1208  
  1209  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1210  //
  1211  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1212  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetChallengePeriod(opts *bind.TransactOpts, _challengePeriod *big.Int) (*types.Transaction, error) {
  1213  	return _HopL1EthBridge.contract.Transact(opts, "setChallengePeriod", _challengePeriod)
  1214  }
  1215  
  1216  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1217  //
  1218  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1219  func (_HopL1EthBridge *HopL1EthBridgeSession) SetChallengePeriod(_challengePeriod *big.Int) (*types.Transaction, error) {
  1220  	return _HopL1EthBridge.Contract.SetChallengePeriod(&_HopL1EthBridge.TransactOpts, _challengePeriod)
  1221  }
  1222  
  1223  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1224  //
  1225  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1226  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetChallengePeriod(_challengePeriod *big.Int) (*types.Transaction, error) {
  1227  	return _HopL1EthBridge.Contract.SetChallengePeriod(&_HopL1EthBridge.TransactOpts, _challengePeriod)
  1228  }
  1229  
  1230  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1231  //
  1232  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1233  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetChallengeResolutionPeriod(opts *bind.TransactOpts, _challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1234  	return _HopL1EthBridge.contract.Transact(opts, "setChallengeResolutionPeriod", _challengeResolutionPeriod)
  1235  }
  1236  
  1237  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1238  //
  1239  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1240  func (_HopL1EthBridge *HopL1EthBridgeSession) SetChallengeResolutionPeriod(_challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1241  	return _HopL1EthBridge.Contract.SetChallengeResolutionPeriod(&_HopL1EthBridge.TransactOpts, _challengeResolutionPeriod)
  1242  }
  1243  
  1244  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1245  //
  1246  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1247  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetChallengeResolutionPeriod(_challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1248  	return _HopL1EthBridge.Contract.SetChallengeResolutionPeriod(&_HopL1EthBridge.TransactOpts, _challengeResolutionPeriod)
  1249  }
  1250  
  1251  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1252  //
  1253  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1254  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetCrossDomainMessengerWrapper(opts *bind.TransactOpts, chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1255  	return _HopL1EthBridge.contract.Transact(opts, "setCrossDomainMessengerWrapper", chainId, _crossDomainMessengerWrapper)
  1256  }
  1257  
  1258  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1259  //
  1260  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1261  func (_HopL1EthBridge *HopL1EthBridgeSession) SetCrossDomainMessengerWrapper(chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1262  	return _HopL1EthBridge.Contract.SetCrossDomainMessengerWrapper(&_HopL1EthBridge.TransactOpts, chainId, _crossDomainMessengerWrapper)
  1263  }
  1264  
  1265  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1266  //
  1267  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1268  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetCrossDomainMessengerWrapper(chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1269  	return _HopL1EthBridge.Contract.SetCrossDomainMessengerWrapper(&_HopL1EthBridge.TransactOpts, chainId, _crossDomainMessengerWrapper)
  1270  }
  1271  
  1272  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1273  //
  1274  // Solidity: function setGovernance(address _newGovernance) returns()
  1275  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetGovernance(opts *bind.TransactOpts, _newGovernance common.Address) (*types.Transaction, error) {
  1276  	return _HopL1EthBridge.contract.Transact(opts, "setGovernance", _newGovernance)
  1277  }
  1278  
  1279  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1280  //
  1281  // Solidity: function setGovernance(address _newGovernance) returns()
  1282  func (_HopL1EthBridge *HopL1EthBridgeSession) SetGovernance(_newGovernance common.Address) (*types.Transaction, error) {
  1283  	return _HopL1EthBridge.Contract.SetGovernance(&_HopL1EthBridge.TransactOpts, _newGovernance)
  1284  }
  1285  
  1286  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1287  //
  1288  // Solidity: function setGovernance(address _newGovernance) returns()
  1289  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetGovernance(_newGovernance common.Address) (*types.Transaction, error) {
  1290  	return _HopL1EthBridge.Contract.SetGovernance(&_HopL1EthBridge.TransactOpts, _newGovernance)
  1291  }
  1292  
  1293  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1294  //
  1295  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1296  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SetMinTransferRootBondDelay(opts *bind.TransactOpts, _minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1297  	return _HopL1EthBridge.contract.Transact(opts, "setMinTransferRootBondDelay", _minTransferRootBondDelay)
  1298  }
  1299  
  1300  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1301  //
  1302  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1303  func (_HopL1EthBridge *HopL1EthBridgeSession) SetMinTransferRootBondDelay(_minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1304  	return _HopL1EthBridge.Contract.SetMinTransferRootBondDelay(&_HopL1EthBridge.TransactOpts, _minTransferRootBondDelay)
  1305  }
  1306  
  1307  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1308  //
  1309  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1310  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SetMinTransferRootBondDelay(_minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1311  	return _HopL1EthBridge.Contract.SetMinTransferRootBondDelay(&_HopL1EthBridge.TransactOpts, _minTransferRootBondDelay)
  1312  }
  1313  
  1314  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1315  //
  1316  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1317  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SettleBondedWithdrawal(opts *bind.TransactOpts, bonder common.Address, transferId [32]byte, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1318  	return _HopL1EthBridge.contract.Transact(opts, "settleBondedWithdrawal", bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1319  }
  1320  
  1321  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1322  //
  1323  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1324  func (_HopL1EthBridge *HopL1EthBridgeSession) SettleBondedWithdrawal(bonder common.Address, transferId [32]byte, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1325  	return _HopL1EthBridge.Contract.SettleBondedWithdrawal(&_HopL1EthBridge.TransactOpts, bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1326  }
  1327  
  1328  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1329  //
  1330  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1331  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SettleBondedWithdrawal(bonder common.Address, transferId [32]byte, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1332  	return _HopL1EthBridge.Contract.SettleBondedWithdrawal(&_HopL1EthBridge.TransactOpts, bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1333  }
  1334  
  1335  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1336  //
  1337  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1338  func (_HopL1EthBridge *HopL1EthBridgeTransactor) SettleBondedWithdrawals(opts *bind.TransactOpts, bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1339  	return _HopL1EthBridge.contract.Transact(opts, "settleBondedWithdrawals", bonder, transferIds, totalAmount)
  1340  }
  1341  
  1342  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1343  //
  1344  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1345  func (_HopL1EthBridge *HopL1EthBridgeSession) SettleBondedWithdrawals(bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1346  	return _HopL1EthBridge.Contract.SettleBondedWithdrawals(&_HopL1EthBridge.TransactOpts, bonder, transferIds, totalAmount)
  1347  }
  1348  
  1349  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1350  //
  1351  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1352  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) SettleBondedWithdrawals(bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1353  	return _HopL1EthBridge.Contract.SettleBondedWithdrawals(&_HopL1EthBridge.TransactOpts, bonder, transferIds, totalAmount)
  1354  }
  1355  
  1356  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1357  //
  1358  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1359  func (_HopL1EthBridge *HopL1EthBridgeTransactor) Stake(opts *bind.TransactOpts, bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1360  	return _HopL1EthBridge.contract.Transact(opts, "stake", bonder, amount)
  1361  }
  1362  
  1363  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1364  //
  1365  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1366  func (_HopL1EthBridge *HopL1EthBridgeSession) Stake(bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1367  	return _HopL1EthBridge.Contract.Stake(&_HopL1EthBridge.TransactOpts, bonder, amount)
  1368  }
  1369  
  1370  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1371  //
  1372  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1373  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) Stake(bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1374  	return _HopL1EthBridge.Contract.Stake(&_HopL1EthBridge.TransactOpts, bonder, amount)
  1375  }
  1376  
  1377  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1378  //
  1379  // Solidity: function unstake(uint256 amount) returns()
  1380  func (_HopL1EthBridge *HopL1EthBridgeTransactor) Unstake(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  1381  	return _HopL1EthBridge.contract.Transact(opts, "unstake", amount)
  1382  }
  1383  
  1384  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1385  //
  1386  // Solidity: function unstake(uint256 amount) returns()
  1387  func (_HopL1EthBridge *HopL1EthBridgeSession) Unstake(amount *big.Int) (*types.Transaction, error) {
  1388  	return _HopL1EthBridge.Contract.Unstake(&_HopL1EthBridge.TransactOpts, amount)
  1389  }
  1390  
  1391  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1392  //
  1393  // Solidity: function unstake(uint256 amount) returns()
  1394  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) Unstake(amount *big.Int) (*types.Transaction, error) {
  1395  	return _HopL1EthBridge.Contract.Unstake(&_HopL1EthBridge.TransactOpts, amount)
  1396  }
  1397  
  1398  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1399  //
  1400  // Solidity: function withdraw(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1401  func (_HopL1EthBridge *HopL1EthBridgeTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1402  	return _HopL1EthBridge.contract.Transact(opts, "withdraw", recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1403  }
  1404  
  1405  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1406  //
  1407  // Solidity: function withdraw(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1408  func (_HopL1EthBridge *HopL1EthBridgeSession) Withdraw(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1409  	return _HopL1EthBridge.Contract.Withdraw(&_HopL1EthBridge.TransactOpts, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1410  }
  1411  
  1412  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1413  //
  1414  // Solidity: function withdraw(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee, uint256 amountOutMin, uint256 deadline, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1415  func (_HopL1EthBridge *HopL1EthBridgeTransactorSession) Withdraw(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int, amountOutMin *big.Int, deadline *big.Int, rootHash [32]byte, transferRootTotalAmount *big.Int, transferIdTreeIndex *big.Int, siblings [][32]byte, totalLeaves *big.Int) (*types.Transaction, error) {
  1416  	return _HopL1EthBridge.Contract.Withdraw(&_HopL1EthBridge.TransactOpts, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1417  }
  1418  
  1419  // HopL1EthBridgeBonderAddedIterator is returned from FilterBonderAdded and is used to iterate over the raw logs and unpacked data for BonderAdded events raised by the HopL1EthBridge contract.
  1420  type HopL1EthBridgeBonderAddedIterator struct {
  1421  	Event *HopL1EthBridgeBonderAdded // Event containing the contract specifics and raw log
  1422  
  1423  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1424  	event    string              // Event name to use for unpacking event data
  1425  
  1426  	logs chan types.Log        // Log channel receiving the found contract events
  1427  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1428  	done bool                  // Whether the subscription completed delivering logs
  1429  	fail error                 // Occurred error to stop iteration
  1430  }
  1431  
  1432  // Next advances the iterator to the subsequent event, returning whether there
  1433  // are any more events found. In case of a retrieval or parsing error, false is
  1434  // returned and Error() can be queried for the exact failure.
  1435  func (it *HopL1EthBridgeBonderAddedIterator) Next() bool {
  1436  	// If the iterator failed, stop iterating
  1437  	if it.fail != nil {
  1438  		return false
  1439  	}
  1440  	// If the iterator completed, deliver directly whatever's available
  1441  	if it.done {
  1442  		select {
  1443  		case log := <-it.logs:
  1444  			it.Event = new(HopL1EthBridgeBonderAdded)
  1445  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1446  				it.fail = err
  1447  				return false
  1448  			}
  1449  			it.Event.Raw = log
  1450  			return true
  1451  
  1452  		default:
  1453  			return false
  1454  		}
  1455  	}
  1456  	// Iterator still in progress, wait for either a data or an error event
  1457  	select {
  1458  	case log := <-it.logs:
  1459  		it.Event = new(HopL1EthBridgeBonderAdded)
  1460  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1461  			it.fail = err
  1462  			return false
  1463  		}
  1464  		it.Event.Raw = log
  1465  		return true
  1466  
  1467  	case err := <-it.sub.Err():
  1468  		it.done = true
  1469  		it.fail = err
  1470  		return it.Next()
  1471  	}
  1472  }
  1473  
  1474  // Error returns any retrieval or parsing error occurred during filtering.
  1475  func (it *HopL1EthBridgeBonderAddedIterator) Error() error {
  1476  	return it.fail
  1477  }
  1478  
  1479  // Close terminates the iteration process, releasing any pending underlying
  1480  // resources.
  1481  func (it *HopL1EthBridgeBonderAddedIterator) Close() error {
  1482  	it.sub.Unsubscribe()
  1483  	return nil
  1484  }
  1485  
  1486  // HopL1EthBridgeBonderAdded represents a BonderAdded event raised by the HopL1EthBridge contract.
  1487  type HopL1EthBridgeBonderAdded struct {
  1488  	NewBonder common.Address
  1489  	Raw       types.Log // Blockchain specific contextual infos
  1490  }
  1491  
  1492  // FilterBonderAdded is a free log retrieval operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1493  //
  1494  // Solidity: event BonderAdded(address indexed newBonder)
  1495  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterBonderAdded(opts *bind.FilterOpts, newBonder []common.Address) (*HopL1EthBridgeBonderAddedIterator, error) {
  1496  
  1497  	var newBonderRule []interface{}
  1498  	for _, newBonderItem := range newBonder {
  1499  		newBonderRule = append(newBonderRule, newBonderItem)
  1500  	}
  1501  
  1502  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "BonderAdded", newBonderRule)
  1503  	if err != nil {
  1504  		return nil, err
  1505  	}
  1506  	return &HopL1EthBridgeBonderAddedIterator{contract: _HopL1EthBridge.contract, event: "BonderAdded", logs: logs, sub: sub}, nil
  1507  }
  1508  
  1509  // WatchBonderAdded is a free log subscription operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1510  //
  1511  // Solidity: event BonderAdded(address indexed newBonder)
  1512  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchBonderAdded(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeBonderAdded, newBonder []common.Address) (event.Subscription, error) {
  1513  
  1514  	var newBonderRule []interface{}
  1515  	for _, newBonderItem := range newBonder {
  1516  		newBonderRule = append(newBonderRule, newBonderItem)
  1517  	}
  1518  
  1519  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "BonderAdded", newBonderRule)
  1520  	if err != nil {
  1521  		return nil, err
  1522  	}
  1523  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1524  		defer sub.Unsubscribe()
  1525  		for {
  1526  			select {
  1527  			case log := <-logs:
  1528  				// New log arrived, parse the event and forward to the user
  1529  				event := new(HopL1EthBridgeBonderAdded)
  1530  				if err := _HopL1EthBridge.contract.UnpackLog(event, "BonderAdded", log); err != nil {
  1531  					return err
  1532  				}
  1533  				event.Raw = log
  1534  
  1535  				select {
  1536  				case sink <- event:
  1537  				case err := <-sub.Err():
  1538  					return err
  1539  				case <-quit:
  1540  					return nil
  1541  				}
  1542  			case err := <-sub.Err():
  1543  				return err
  1544  			case <-quit:
  1545  				return nil
  1546  			}
  1547  		}
  1548  	}), nil
  1549  }
  1550  
  1551  // ParseBonderAdded is a log parse operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1552  //
  1553  // Solidity: event BonderAdded(address indexed newBonder)
  1554  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseBonderAdded(log types.Log) (*HopL1EthBridgeBonderAdded, error) {
  1555  	event := new(HopL1EthBridgeBonderAdded)
  1556  	if err := _HopL1EthBridge.contract.UnpackLog(event, "BonderAdded", log); err != nil {
  1557  		return nil, err
  1558  	}
  1559  	event.Raw = log
  1560  	return event, nil
  1561  }
  1562  
  1563  // HopL1EthBridgeBonderRemovedIterator is returned from FilterBonderRemoved and is used to iterate over the raw logs and unpacked data for BonderRemoved events raised by the HopL1EthBridge contract.
  1564  type HopL1EthBridgeBonderRemovedIterator struct {
  1565  	Event *HopL1EthBridgeBonderRemoved // Event containing the contract specifics and raw log
  1566  
  1567  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1568  	event    string              // Event name to use for unpacking event data
  1569  
  1570  	logs chan types.Log        // Log channel receiving the found contract events
  1571  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1572  	done bool                  // Whether the subscription completed delivering logs
  1573  	fail error                 // Occurred error to stop iteration
  1574  }
  1575  
  1576  // Next advances the iterator to the subsequent event, returning whether there
  1577  // are any more events found. In case of a retrieval or parsing error, false is
  1578  // returned and Error() can be queried for the exact failure.
  1579  func (it *HopL1EthBridgeBonderRemovedIterator) Next() bool {
  1580  	// If the iterator failed, stop iterating
  1581  	if it.fail != nil {
  1582  		return false
  1583  	}
  1584  	// If the iterator completed, deliver directly whatever's available
  1585  	if it.done {
  1586  		select {
  1587  		case log := <-it.logs:
  1588  			it.Event = new(HopL1EthBridgeBonderRemoved)
  1589  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1590  				it.fail = err
  1591  				return false
  1592  			}
  1593  			it.Event.Raw = log
  1594  			return true
  1595  
  1596  		default:
  1597  			return false
  1598  		}
  1599  	}
  1600  	// Iterator still in progress, wait for either a data or an error event
  1601  	select {
  1602  	case log := <-it.logs:
  1603  		it.Event = new(HopL1EthBridgeBonderRemoved)
  1604  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1605  			it.fail = err
  1606  			return false
  1607  		}
  1608  		it.Event.Raw = log
  1609  		return true
  1610  
  1611  	case err := <-it.sub.Err():
  1612  		it.done = true
  1613  		it.fail = err
  1614  		return it.Next()
  1615  	}
  1616  }
  1617  
  1618  // Error returns any retrieval or parsing error occurred during filtering.
  1619  func (it *HopL1EthBridgeBonderRemovedIterator) Error() error {
  1620  	return it.fail
  1621  }
  1622  
  1623  // Close terminates the iteration process, releasing any pending underlying
  1624  // resources.
  1625  func (it *HopL1EthBridgeBonderRemovedIterator) Close() error {
  1626  	it.sub.Unsubscribe()
  1627  	return nil
  1628  }
  1629  
  1630  // HopL1EthBridgeBonderRemoved represents a BonderRemoved event raised by the HopL1EthBridge contract.
  1631  type HopL1EthBridgeBonderRemoved struct {
  1632  	PreviousBonder common.Address
  1633  	Raw            types.Log // Blockchain specific contextual infos
  1634  }
  1635  
  1636  // FilterBonderRemoved is a free log retrieval operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1637  //
  1638  // Solidity: event BonderRemoved(address indexed previousBonder)
  1639  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterBonderRemoved(opts *bind.FilterOpts, previousBonder []common.Address) (*HopL1EthBridgeBonderRemovedIterator, error) {
  1640  
  1641  	var previousBonderRule []interface{}
  1642  	for _, previousBonderItem := range previousBonder {
  1643  		previousBonderRule = append(previousBonderRule, previousBonderItem)
  1644  	}
  1645  
  1646  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "BonderRemoved", previousBonderRule)
  1647  	if err != nil {
  1648  		return nil, err
  1649  	}
  1650  	return &HopL1EthBridgeBonderRemovedIterator{contract: _HopL1EthBridge.contract, event: "BonderRemoved", logs: logs, sub: sub}, nil
  1651  }
  1652  
  1653  // WatchBonderRemoved is a free log subscription operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1654  //
  1655  // Solidity: event BonderRemoved(address indexed previousBonder)
  1656  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchBonderRemoved(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeBonderRemoved, previousBonder []common.Address) (event.Subscription, error) {
  1657  
  1658  	var previousBonderRule []interface{}
  1659  	for _, previousBonderItem := range previousBonder {
  1660  		previousBonderRule = append(previousBonderRule, previousBonderItem)
  1661  	}
  1662  
  1663  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "BonderRemoved", previousBonderRule)
  1664  	if err != nil {
  1665  		return nil, err
  1666  	}
  1667  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1668  		defer sub.Unsubscribe()
  1669  		for {
  1670  			select {
  1671  			case log := <-logs:
  1672  				// New log arrived, parse the event and forward to the user
  1673  				event := new(HopL1EthBridgeBonderRemoved)
  1674  				if err := _HopL1EthBridge.contract.UnpackLog(event, "BonderRemoved", log); err != nil {
  1675  					return err
  1676  				}
  1677  				event.Raw = log
  1678  
  1679  				select {
  1680  				case sink <- event:
  1681  				case err := <-sub.Err():
  1682  					return err
  1683  				case <-quit:
  1684  					return nil
  1685  				}
  1686  			case err := <-sub.Err():
  1687  				return err
  1688  			case <-quit:
  1689  				return nil
  1690  			}
  1691  		}
  1692  	}), nil
  1693  }
  1694  
  1695  // ParseBonderRemoved is a log parse operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1696  //
  1697  // Solidity: event BonderRemoved(address indexed previousBonder)
  1698  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseBonderRemoved(log types.Log) (*HopL1EthBridgeBonderRemoved, error) {
  1699  	event := new(HopL1EthBridgeBonderRemoved)
  1700  	if err := _HopL1EthBridge.contract.UnpackLog(event, "BonderRemoved", log); err != nil {
  1701  		return nil, err
  1702  	}
  1703  	event.Raw = log
  1704  	return event, nil
  1705  }
  1706  
  1707  // HopL1EthBridgeChallengeResolvedIterator is returned from FilterChallengeResolved and is used to iterate over the raw logs and unpacked data for ChallengeResolved events raised by the HopL1EthBridge contract.
  1708  type HopL1EthBridgeChallengeResolvedIterator struct {
  1709  	Event *HopL1EthBridgeChallengeResolved // Event containing the contract specifics and raw log
  1710  
  1711  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1712  	event    string              // Event name to use for unpacking event data
  1713  
  1714  	logs chan types.Log        // Log channel receiving the found contract events
  1715  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1716  	done bool                  // Whether the subscription completed delivering logs
  1717  	fail error                 // Occurred error to stop iteration
  1718  }
  1719  
  1720  // Next advances the iterator to the subsequent event, returning whether there
  1721  // are any more events found. In case of a retrieval or parsing error, false is
  1722  // returned and Error() can be queried for the exact failure.
  1723  func (it *HopL1EthBridgeChallengeResolvedIterator) Next() bool {
  1724  	// If the iterator failed, stop iterating
  1725  	if it.fail != nil {
  1726  		return false
  1727  	}
  1728  	// If the iterator completed, deliver directly whatever's available
  1729  	if it.done {
  1730  		select {
  1731  		case log := <-it.logs:
  1732  			it.Event = new(HopL1EthBridgeChallengeResolved)
  1733  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1734  				it.fail = err
  1735  				return false
  1736  			}
  1737  			it.Event.Raw = log
  1738  			return true
  1739  
  1740  		default:
  1741  			return false
  1742  		}
  1743  	}
  1744  	// Iterator still in progress, wait for either a data or an error event
  1745  	select {
  1746  	case log := <-it.logs:
  1747  		it.Event = new(HopL1EthBridgeChallengeResolved)
  1748  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1749  			it.fail = err
  1750  			return false
  1751  		}
  1752  		it.Event.Raw = log
  1753  		return true
  1754  
  1755  	case err := <-it.sub.Err():
  1756  		it.done = true
  1757  		it.fail = err
  1758  		return it.Next()
  1759  	}
  1760  }
  1761  
  1762  // Error returns any retrieval or parsing error occurred during filtering.
  1763  func (it *HopL1EthBridgeChallengeResolvedIterator) Error() error {
  1764  	return it.fail
  1765  }
  1766  
  1767  // Close terminates the iteration process, releasing any pending underlying
  1768  // resources.
  1769  func (it *HopL1EthBridgeChallengeResolvedIterator) Close() error {
  1770  	it.sub.Unsubscribe()
  1771  	return nil
  1772  }
  1773  
  1774  // HopL1EthBridgeChallengeResolved represents a ChallengeResolved event raised by the HopL1EthBridge contract.
  1775  type HopL1EthBridgeChallengeResolved struct {
  1776  	TransferRootId [32]byte
  1777  	RootHash       [32]byte
  1778  	OriginalAmount *big.Int
  1779  	Raw            types.Log // Blockchain specific contextual infos
  1780  }
  1781  
  1782  // FilterChallengeResolved is a free log retrieval operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1783  //
  1784  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1785  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterChallengeResolved(opts *bind.FilterOpts, transferRootId [][32]byte, rootHash [][32]byte) (*HopL1EthBridgeChallengeResolvedIterator, error) {
  1786  
  1787  	var transferRootIdRule []interface{}
  1788  	for _, transferRootIdItem := range transferRootId {
  1789  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  1790  	}
  1791  	var rootHashRule []interface{}
  1792  	for _, rootHashItem := range rootHash {
  1793  		rootHashRule = append(rootHashRule, rootHashItem)
  1794  	}
  1795  
  1796  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "ChallengeResolved", transferRootIdRule, rootHashRule)
  1797  	if err != nil {
  1798  		return nil, err
  1799  	}
  1800  	return &HopL1EthBridgeChallengeResolvedIterator{contract: _HopL1EthBridge.contract, event: "ChallengeResolved", logs: logs, sub: sub}, nil
  1801  }
  1802  
  1803  // WatchChallengeResolved is a free log subscription operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1804  //
  1805  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1806  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchChallengeResolved(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeChallengeResolved, transferRootId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  1807  
  1808  	var transferRootIdRule []interface{}
  1809  	for _, transferRootIdItem := range transferRootId {
  1810  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  1811  	}
  1812  	var rootHashRule []interface{}
  1813  	for _, rootHashItem := range rootHash {
  1814  		rootHashRule = append(rootHashRule, rootHashItem)
  1815  	}
  1816  
  1817  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "ChallengeResolved", transferRootIdRule, rootHashRule)
  1818  	if err != nil {
  1819  		return nil, err
  1820  	}
  1821  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1822  		defer sub.Unsubscribe()
  1823  		for {
  1824  			select {
  1825  			case log := <-logs:
  1826  				// New log arrived, parse the event and forward to the user
  1827  				event := new(HopL1EthBridgeChallengeResolved)
  1828  				if err := _HopL1EthBridge.contract.UnpackLog(event, "ChallengeResolved", log); err != nil {
  1829  					return err
  1830  				}
  1831  				event.Raw = log
  1832  
  1833  				select {
  1834  				case sink <- event:
  1835  				case err := <-sub.Err():
  1836  					return err
  1837  				case <-quit:
  1838  					return nil
  1839  				}
  1840  			case err := <-sub.Err():
  1841  				return err
  1842  			case <-quit:
  1843  				return nil
  1844  			}
  1845  		}
  1846  	}), nil
  1847  }
  1848  
  1849  // ParseChallengeResolved is a log parse operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1850  //
  1851  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1852  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseChallengeResolved(log types.Log) (*HopL1EthBridgeChallengeResolved, error) {
  1853  	event := new(HopL1EthBridgeChallengeResolved)
  1854  	if err := _HopL1EthBridge.contract.UnpackLog(event, "ChallengeResolved", log); err != nil {
  1855  		return nil, err
  1856  	}
  1857  	event.Raw = log
  1858  	return event, nil
  1859  }
  1860  
  1861  // HopL1EthBridgeMultipleWithdrawalsSettledIterator is returned from FilterMultipleWithdrawalsSettled and is used to iterate over the raw logs and unpacked data for MultipleWithdrawalsSettled events raised by the HopL1EthBridge contract.
  1862  type HopL1EthBridgeMultipleWithdrawalsSettledIterator struct {
  1863  	Event *HopL1EthBridgeMultipleWithdrawalsSettled // Event containing the contract specifics and raw log
  1864  
  1865  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1866  	event    string              // Event name to use for unpacking event data
  1867  
  1868  	logs chan types.Log        // Log channel receiving the found contract events
  1869  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1870  	done bool                  // Whether the subscription completed delivering logs
  1871  	fail error                 // Occurred error to stop iteration
  1872  }
  1873  
  1874  // Next advances the iterator to the subsequent event, returning whether there
  1875  // are any more events found. In case of a retrieval or parsing error, false is
  1876  // returned and Error() can be queried for the exact failure.
  1877  func (it *HopL1EthBridgeMultipleWithdrawalsSettledIterator) Next() bool {
  1878  	// If the iterator failed, stop iterating
  1879  	if it.fail != nil {
  1880  		return false
  1881  	}
  1882  	// If the iterator completed, deliver directly whatever's available
  1883  	if it.done {
  1884  		select {
  1885  		case log := <-it.logs:
  1886  			it.Event = new(HopL1EthBridgeMultipleWithdrawalsSettled)
  1887  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1888  				it.fail = err
  1889  				return false
  1890  			}
  1891  			it.Event.Raw = log
  1892  			return true
  1893  
  1894  		default:
  1895  			return false
  1896  		}
  1897  	}
  1898  	// Iterator still in progress, wait for either a data or an error event
  1899  	select {
  1900  	case log := <-it.logs:
  1901  		it.Event = new(HopL1EthBridgeMultipleWithdrawalsSettled)
  1902  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1903  			it.fail = err
  1904  			return false
  1905  		}
  1906  		it.Event.Raw = log
  1907  		return true
  1908  
  1909  	case err := <-it.sub.Err():
  1910  		it.done = true
  1911  		it.fail = err
  1912  		return it.Next()
  1913  	}
  1914  }
  1915  
  1916  // Error returns any retrieval or parsing error occurred during filtering.
  1917  func (it *HopL1EthBridgeMultipleWithdrawalsSettledIterator) Error() error {
  1918  	return it.fail
  1919  }
  1920  
  1921  // Close terminates the iteration process, releasing any pending underlying
  1922  // resources.
  1923  func (it *HopL1EthBridgeMultipleWithdrawalsSettledIterator) Close() error {
  1924  	it.sub.Unsubscribe()
  1925  	return nil
  1926  }
  1927  
  1928  // HopL1EthBridgeMultipleWithdrawalsSettled represents a MultipleWithdrawalsSettled event raised by the HopL1EthBridge contract.
  1929  type HopL1EthBridgeMultipleWithdrawalsSettled struct {
  1930  	Bonder            common.Address
  1931  	RootHash          [32]byte
  1932  	TotalBondsSettled *big.Int
  1933  	Raw               types.Log // Blockchain specific contextual infos
  1934  }
  1935  
  1936  // FilterMultipleWithdrawalsSettled is a free log retrieval operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  1937  //
  1938  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  1939  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterMultipleWithdrawalsSettled(opts *bind.FilterOpts, bonder []common.Address, rootHash [][32]byte) (*HopL1EthBridgeMultipleWithdrawalsSettledIterator, error) {
  1940  
  1941  	var bonderRule []interface{}
  1942  	for _, bonderItem := range bonder {
  1943  		bonderRule = append(bonderRule, bonderItem)
  1944  	}
  1945  	var rootHashRule []interface{}
  1946  	for _, rootHashItem := range rootHash {
  1947  		rootHashRule = append(rootHashRule, rootHashItem)
  1948  	}
  1949  
  1950  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "MultipleWithdrawalsSettled", bonderRule, rootHashRule)
  1951  	if err != nil {
  1952  		return nil, err
  1953  	}
  1954  	return &HopL1EthBridgeMultipleWithdrawalsSettledIterator{contract: _HopL1EthBridge.contract, event: "MultipleWithdrawalsSettled", logs: logs, sub: sub}, nil
  1955  }
  1956  
  1957  // WatchMultipleWithdrawalsSettled is a free log subscription operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  1958  //
  1959  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  1960  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchMultipleWithdrawalsSettled(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeMultipleWithdrawalsSettled, bonder []common.Address, rootHash [][32]byte) (event.Subscription, error) {
  1961  
  1962  	var bonderRule []interface{}
  1963  	for _, bonderItem := range bonder {
  1964  		bonderRule = append(bonderRule, bonderItem)
  1965  	}
  1966  	var rootHashRule []interface{}
  1967  	for _, rootHashItem := range rootHash {
  1968  		rootHashRule = append(rootHashRule, rootHashItem)
  1969  	}
  1970  
  1971  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "MultipleWithdrawalsSettled", bonderRule, rootHashRule)
  1972  	if err != nil {
  1973  		return nil, err
  1974  	}
  1975  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1976  		defer sub.Unsubscribe()
  1977  		for {
  1978  			select {
  1979  			case log := <-logs:
  1980  				// New log arrived, parse the event and forward to the user
  1981  				event := new(HopL1EthBridgeMultipleWithdrawalsSettled)
  1982  				if err := _HopL1EthBridge.contract.UnpackLog(event, "MultipleWithdrawalsSettled", log); err != nil {
  1983  					return err
  1984  				}
  1985  				event.Raw = log
  1986  
  1987  				select {
  1988  				case sink <- event:
  1989  				case err := <-sub.Err():
  1990  					return err
  1991  				case <-quit:
  1992  					return nil
  1993  				}
  1994  			case err := <-sub.Err():
  1995  				return err
  1996  			case <-quit:
  1997  				return nil
  1998  			}
  1999  		}
  2000  	}), nil
  2001  }
  2002  
  2003  // ParseMultipleWithdrawalsSettled is a log parse operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  2004  //
  2005  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  2006  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseMultipleWithdrawalsSettled(log types.Log) (*HopL1EthBridgeMultipleWithdrawalsSettled, error) {
  2007  	event := new(HopL1EthBridgeMultipleWithdrawalsSettled)
  2008  	if err := _HopL1EthBridge.contract.UnpackLog(event, "MultipleWithdrawalsSettled", log); err != nil {
  2009  		return nil, err
  2010  	}
  2011  	event.Raw = log
  2012  	return event, nil
  2013  }
  2014  
  2015  // HopL1EthBridgeStakeIterator is returned from FilterStake and is used to iterate over the raw logs and unpacked data for Stake events raised by the HopL1EthBridge contract.
  2016  type HopL1EthBridgeStakeIterator struct {
  2017  	Event *HopL1EthBridgeStake // Event containing the contract specifics and raw log
  2018  
  2019  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2020  	event    string              // Event name to use for unpacking event data
  2021  
  2022  	logs chan types.Log        // Log channel receiving the found contract events
  2023  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2024  	done bool                  // Whether the subscription completed delivering logs
  2025  	fail error                 // Occurred error to stop iteration
  2026  }
  2027  
  2028  // Next advances the iterator to the subsequent event, returning whether there
  2029  // are any more events found. In case of a retrieval or parsing error, false is
  2030  // returned and Error() can be queried for the exact failure.
  2031  func (it *HopL1EthBridgeStakeIterator) Next() bool {
  2032  	// If the iterator failed, stop iterating
  2033  	if it.fail != nil {
  2034  		return false
  2035  	}
  2036  	// If the iterator completed, deliver directly whatever's available
  2037  	if it.done {
  2038  		select {
  2039  		case log := <-it.logs:
  2040  			it.Event = new(HopL1EthBridgeStake)
  2041  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2042  				it.fail = err
  2043  				return false
  2044  			}
  2045  			it.Event.Raw = log
  2046  			return true
  2047  
  2048  		default:
  2049  			return false
  2050  		}
  2051  	}
  2052  	// Iterator still in progress, wait for either a data or an error event
  2053  	select {
  2054  	case log := <-it.logs:
  2055  		it.Event = new(HopL1EthBridgeStake)
  2056  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2057  			it.fail = err
  2058  			return false
  2059  		}
  2060  		it.Event.Raw = log
  2061  		return true
  2062  
  2063  	case err := <-it.sub.Err():
  2064  		it.done = true
  2065  		it.fail = err
  2066  		return it.Next()
  2067  	}
  2068  }
  2069  
  2070  // Error returns any retrieval or parsing error occurred during filtering.
  2071  func (it *HopL1EthBridgeStakeIterator) Error() error {
  2072  	return it.fail
  2073  }
  2074  
  2075  // Close terminates the iteration process, releasing any pending underlying
  2076  // resources.
  2077  func (it *HopL1EthBridgeStakeIterator) Close() error {
  2078  	it.sub.Unsubscribe()
  2079  	return nil
  2080  }
  2081  
  2082  // HopL1EthBridgeStake represents a Stake event raised by the HopL1EthBridge contract.
  2083  type HopL1EthBridgeStake struct {
  2084  	Account common.Address
  2085  	Amount  *big.Int
  2086  	Raw     types.Log // Blockchain specific contextual infos
  2087  }
  2088  
  2089  // FilterStake is a free log retrieval operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2090  //
  2091  // Solidity: event Stake(address indexed account, uint256 amount)
  2092  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterStake(opts *bind.FilterOpts, account []common.Address) (*HopL1EthBridgeStakeIterator, error) {
  2093  
  2094  	var accountRule []interface{}
  2095  	for _, accountItem := range account {
  2096  		accountRule = append(accountRule, accountItem)
  2097  	}
  2098  
  2099  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "Stake", accountRule)
  2100  	if err != nil {
  2101  		return nil, err
  2102  	}
  2103  	return &HopL1EthBridgeStakeIterator{contract: _HopL1EthBridge.contract, event: "Stake", logs: logs, sub: sub}, nil
  2104  }
  2105  
  2106  // WatchStake is a free log subscription operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2107  //
  2108  // Solidity: event Stake(address indexed account, uint256 amount)
  2109  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchStake(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeStake, account []common.Address) (event.Subscription, error) {
  2110  
  2111  	var accountRule []interface{}
  2112  	for _, accountItem := range account {
  2113  		accountRule = append(accountRule, accountItem)
  2114  	}
  2115  
  2116  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "Stake", accountRule)
  2117  	if err != nil {
  2118  		return nil, err
  2119  	}
  2120  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2121  		defer sub.Unsubscribe()
  2122  		for {
  2123  			select {
  2124  			case log := <-logs:
  2125  				// New log arrived, parse the event and forward to the user
  2126  				event := new(HopL1EthBridgeStake)
  2127  				if err := _HopL1EthBridge.contract.UnpackLog(event, "Stake", log); err != nil {
  2128  					return err
  2129  				}
  2130  				event.Raw = log
  2131  
  2132  				select {
  2133  				case sink <- event:
  2134  				case err := <-sub.Err():
  2135  					return err
  2136  				case <-quit:
  2137  					return nil
  2138  				}
  2139  			case err := <-sub.Err():
  2140  				return err
  2141  			case <-quit:
  2142  				return nil
  2143  			}
  2144  		}
  2145  	}), nil
  2146  }
  2147  
  2148  // ParseStake is a log parse operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2149  //
  2150  // Solidity: event Stake(address indexed account, uint256 amount)
  2151  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseStake(log types.Log) (*HopL1EthBridgeStake, error) {
  2152  	event := new(HopL1EthBridgeStake)
  2153  	if err := _HopL1EthBridge.contract.UnpackLog(event, "Stake", log); err != nil {
  2154  		return nil, err
  2155  	}
  2156  	event.Raw = log
  2157  	return event, nil
  2158  }
  2159  
  2160  // HopL1EthBridgeTransferBondChallengedIterator is returned from FilterTransferBondChallenged and is used to iterate over the raw logs and unpacked data for TransferBondChallenged events raised by the HopL1EthBridge contract.
  2161  type HopL1EthBridgeTransferBondChallengedIterator struct {
  2162  	Event *HopL1EthBridgeTransferBondChallenged // Event containing the contract specifics and raw log
  2163  
  2164  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2165  	event    string              // Event name to use for unpacking event data
  2166  
  2167  	logs chan types.Log        // Log channel receiving the found contract events
  2168  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2169  	done bool                  // Whether the subscription completed delivering logs
  2170  	fail error                 // Occurred error to stop iteration
  2171  }
  2172  
  2173  // Next advances the iterator to the subsequent event, returning whether there
  2174  // are any more events found. In case of a retrieval or parsing error, false is
  2175  // returned and Error() can be queried for the exact failure.
  2176  func (it *HopL1EthBridgeTransferBondChallengedIterator) Next() bool {
  2177  	// If the iterator failed, stop iterating
  2178  	if it.fail != nil {
  2179  		return false
  2180  	}
  2181  	// If the iterator completed, deliver directly whatever's available
  2182  	if it.done {
  2183  		select {
  2184  		case log := <-it.logs:
  2185  			it.Event = new(HopL1EthBridgeTransferBondChallenged)
  2186  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2187  				it.fail = err
  2188  				return false
  2189  			}
  2190  			it.Event.Raw = log
  2191  			return true
  2192  
  2193  		default:
  2194  			return false
  2195  		}
  2196  	}
  2197  	// Iterator still in progress, wait for either a data or an error event
  2198  	select {
  2199  	case log := <-it.logs:
  2200  		it.Event = new(HopL1EthBridgeTransferBondChallenged)
  2201  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2202  			it.fail = err
  2203  			return false
  2204  		}
  2205  		it.Event.Raw = log
  2206  		return true
  2207  
  2208  	case err := <-it.sub.Err():
  2209  		it.done = true
  2210  		it.fail = err
  2211  		return it.Next()
  2212  	}
  2213  }
  2214  
  2215  // Error returns any retrieval or parsing error occurred during filtering.
  2216  func (it *HopL1EthBridgeTransferBondChallengedIterator) Error() error {
  2217  	return it.fail
  2218  }
  2219  
  2220  // Close terminates the iteration process, releasing any pending underlying
  2221  // resources.
  2222  func (it *HopL1EthBridgeTransferBondChallengedIterator) Close() error {
  2223  	it.sub.Unsubscribe()
  2224  	return nil
  2225  }
  2226  
  2227  // HopL1EthBridgeTransferBondChallenged represents a TransferBondChallenged event raised by the HopL1EthBridge contract.
  2228  type HopL1EthBridgeTransferBondChallenged struct {
  2229  	TransferRootId [32]byte
  2230  	RootHash       [32]byte
  2231  	OriginalAmount *big.Int
  2232  	Raw            types.Log // Blockchain specific contextual infos
  2233  }
  2234  
  2235  // FilterTransferBondChallenged is a free log retrieval operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2236  //
  2237  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2238  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterTransferBondChallenged(opts *bind.FilterOpts, transferRootId [][32]byte, rootHash [][32]byte) (*HopL1EthBridgeTransferBondChallengedIterator, error) {
  2239  
  2240  	var transferRootIdRule []interface{}
  2241  	for _, transferRootIdItem := range transferRootId {
  2242  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  2243  	}
  2244  	var rootHashRule []interface{}
  2245  	for _, rootHashItem := range rootHash {
  2246  		rootHashRule = append(rootHashRule, rootHashItem)
  2247  	}
  2248  
  2249  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "TransferBondChallenged", transferRootIdRule, rootHashRule)
  2250  	if err != nil {
  2251  		return nil, err
  2252  	}
  2253  	return &HopL1EthBridgeTransferBondChallengedIterator{contract: _HopL1EthBridge.contract, event: "TransferBondChallenged", logs: logs, sub: sub}, nil
  2254  }
  2255  
  2256  // WatchTransferBondChallenged is a free log subscription operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2257  //
  2258  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2259  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchTransferBondChallenged(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeTransferBondChallenged, transferRootId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  2260  
  2261  	var transferRootIdRule []interface{}
  2262  	for _, transferRootIdItem := range transferRootId {
  2263  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  2264  	}
  2265  	var rootHashRule []interface{}
  2266  	for _, rootHashItem := range rootHash {
  2267  		rootHashRule = append(rootHashRule, rootHashItem)
  2268  	}
  2269  
  2270  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "TransferBondChallenged", transferRootIdRule, rootHashRule)
  2271  	if err != nil {
  2272  		return nil, err
  2273  	}
  2274  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2275  		defer sub.Unsubscribe()
  2276  		for {
  2277  			select {
  2278  			case log := <-logs:
  2279  				// New log arrived, parse the event and forward to the user
  2280  				event := new(HopL1EthBridgeTransferBondChallenged)
  2281  				if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferBondChallenged", log); err != nil {
  2282  					return err
  2283  				}
  2284  				event.Raw = log
  2285  
  2286  				select {
  2287  				case sink <- event:
  2288  				case err := <-sub.Err():
  2289  					return err
  2290  				case <-quit:
  2291  					return nil
  2292  				}
  2293  			case err := <-sub.Err():
  2294  				return err
  2295  			case <-quit:
  2296  				return nil
  2297  			}
  2298  		}
  2299  	}), nil
  2300  }
  2301  
  2302  // ParseTransferBondChallenged is a log parse operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2303  //
  2304  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2305  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseTransferBondChallenged(log types.Log) (*HopL1EthBridgeTransferBondChallenged, error) {
  2306  	event := new(HopL1EthBridgeTransferBondChallenged)
  2307  	if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferBondChallenged", log); err != nil {
  2308  		return nil, err
  2309  	}
  2310  	event.Raw = log
  2311  	return event, nil
  2312  }
  2313  
  2314  // HopL1EthBridgeTransferRootBondedIterator is returned from FilterTransferRootBonded and is used to iterate over the raw logs and unpacked data for TransferRootBonded events raised by the HopL1EthBridge contract.
  2315  type HopL1EthBridgeTransferRootBondedIterator struct {
  2316  	Event *HopL1EthBridgeTransferRootBonded // Event containing the contract specifics and raw log
  2317  
  2318  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2319  	event    string              // Event name to use for unpacking event data
  2320  
  2321  	logs chan types.Log        // Log channel receiving the found contract events
  2322  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2323  	done bool                  // Whether the subscription completed delivering logs
  2324  	fail error                 // Occurred error to stop iteration
  2325  }
  2326  
  2327  // Next advances the iterator to the subsequent event, returning whether there
  2328  // are any more events found. In case of a retrieval or parsing error, false is
  2329  // returned and Error() can be queried for the exact failure.
  2330  func (it *HopL1EthBridgeTransferRootBondedIterator) Next() bool {
  2331  	// If the iterator failed, stop iterating
  2332  	if it.fail != nil {
  2333  		return false
  2334  	}
  2335  	// If the iterator completed, deliver directly whatever's available
  2336  	if it.done {
  2337  		select {
  2338  		case log := <-it.logs:
  2339  			it.Event = new(HopL1EthBridgeTransferRootBonded)
  2340  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2341  				it.fail = err
  2342  				return false
  2343  			}
  2344  			it.Event.Raw = log
  2345  			return true
  2346  
  2347  		default:
  2348  			return false
  2349  		}
  2350  	}
  2351  	// Iterator still in progress, wait for either a data or an error event
  2352  	select {
  2353  	case log := <-it.logs:
  2354  		it.Event = new(HopL1EthBridgeTransferRootBonded)
  2355  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2356  			it.fail = err
  2357  			return false
  2358  		}
  2359  		it.Event.Raw = log
  2360  		return true
  2361  
  2362  	case err := <-it.sub.Err():
  2363  		it.done = true
  2364  		it.fail = err
  2365  		return it.Next()
  2366  	}
  2367  }
  2368  
  2369  // Error returns any retrieval or parsing error occurred during filtering.
  2370  func (it *HopL1EthBridgeTransferRootBondedIterator) Error() error {
  2371  	return it.fail
  2372  }
  2373  
  2374  // Close terminates the iteration process, releasing any pending underlying
  2375  // resources.
  2376  func (it *HopL1EthBridgeTransferRootBondedIterator) Close() error {
  2377  	it.sub.Unsubscribe()
  2378  	return nil
  2379  }
  2380  
  2381  // HopL1EthBridgeTransferRootBonded represents a TransferRootBonded event raised by the HopL1EthBridge contract.
  2382  type HopL1EthBridgeTransferRootBonded struct {
  2383  	Root   [32]byte
  2384  	Amount *big.Int
  2385  	Raw    types.Log // Blockchain specific contextual infos
  2386  }
  2387  
  2388  // FilterTransferRootBonded is a free log retrieval operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2389  //
  2390  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2391  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterTransferRootBonded(opts *bind.FilterOpts, root [][32]byte) (*HopL1EthBridgeTransferRootBondedIterator, error) {
  2392  
  2393  	var rootRule []interface{}
  2394  	for _, rootItem := range root {
  2395  		rootRule = append(rootRule, rootItem)
  2396  	}
  2397  
  2398  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "TransferRootBonded", rootRule)
  2399  	if err != nil {
  2400  		return nil, err
  2401  	}
  2402  	return &HopL1EthBridgeTransferRootBondedIterator{contract: _HopL1EthBridge.contract, event: "TransferRootBonded", logs: logs, sub: sub}, nil
  2403  }
  2404  
  2405  // WatchTransferRootBonded is a free log subscription operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2406  //
  2407  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2408  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchTransferRootBonded(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeTransferRootBonded, root [][32]byte) (event.Subscription, error) {
  2409  
  2410  	var rootRule []interface{}
  2411  	for _, rootItem := range root {
  2412  		rootRule = append(rootRule, rootItem)
  2413  	}
  2414  
  2415  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "TransferRootBonded", rootRule)
  2416  	if err != nil {
  2417  		return nil, err
  2418  	}
  2419  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2420  		defer sub.Unsubscribe()
  2421  		for {
  2422  			select {
  2423  			case log := <-logs:
  2424  				// New log arrived, parse the event and forward to the user
  2425  				event := new(HopL1EthBridgeTransferRootBonded)
  2426  				if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootBonded", log); err != nil {
  2427  					return err
  2428  				}
  2429  				event.Raw = log
  2430  
  2431  				select {
  2432  				case sink <- event:
  2433  				case err := <-sub.Err():
  2434  					return err
  2435  				case <-quit:
  2436  					return nil
  2437  				}
  2438  			case err := <-sub.Err():
  2439  				return err
  2440  			case <-quit:
  2441  				return nil
  2442  			}
  2443  		}
  2444  	}), nil
  2445  }
  2446  
  2447  // ParseTransferRootBonded is a log parse operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2448  //
  2449  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2450  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseTransferRootBonded(log types.Log) (*HopL1EthBridgeTransferRootBonded, error) {
  2451  	event := new(HopL1EthBridgeTransferRootBonded)
  2452  	if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootBonded", log); err != nil {
  2453  		return nil, err
  2454  	}
  2455  	event.Raw = log
  2456  	return event, nil
  2457  }
  2458  
  2459  // HopL1EthBridgeTransferRootConfirmedIterator is returned from FilterTransferRootConfirmed and is used to iterate over the raw logs and unpacked data for TransferRootConfirmed events raised by the HopL1EthBridge contract.
  2460  type HopL1EthBridgeTransferRootConfirmedIterator struct {
  2461  	Event *HopL1EthBridgeTransferRootConfirmed // Event containing the contract specifics and raw log
  2462  
  2463  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2464  	event    string              // Event name to use for unpacking event data
  2465  
  2466  	logs chan types.Log        // Log channel receiving the found contract events
  2467  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2468  	done bool                  // Whether the subscription completed delivering logs
  2469  	fail error                 // Occurred error to stop iteration
  2470  }
  2471  
  2472  // Next advances the iterator to the subsequent event, returning whether there
  2473  // are any more events found. In case of a retrieval or parsing error, false is
  2474  // returned and Error() can be queried for the exact failure.
  2475  func (it *HopL1EthBridgeTransferRootConfirmedIterator) Next() bool {
  2476  	// If the iterator failed, stop iterating
  2477  	if it.fail != nil {
  2478  		return false
  2479  	}
  2480  	// If the iterator completed, deliver directly whatever's available
  2481  	if it.done {
  2482  		select {
  2483  		case log := <-it.logs:
  2484  			it.Event = new(HopL1EthBridgeTransferRootConfirmed)
  2485  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2486  				it.fail = err
  2487  				return false
  2488  			}
  2489  			it.Event.Raw = log
  2490  			return true
  2491  
  2492  		default:
  2493  			return false
  2494  		}
  2495  	}
  2496  	// Iterator still in progress, wait for either a data or an error event
  2497  	select {
  2498  	case log := <-it.logs:
  2499  		it.Event = new(HopL1EthBridgeTransferRootConfirmed)
  2500  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2501  			it.fail = err
  2502  			return false
  2503  		}
  2504  		it.Event.Raw = log
  2505  		return true
  2506  
  2507  	case err := <-it.sub.Err():
  2508  		it.done = true
  2509  		it.fail = err
  2510  		return it.Next()
  2511  	}
  2512  }
  2513  
  2514  // Error returns any retrieval or parsing error occurred during filtering.
  2515  func (it *HopL1EthBridgeTransferRootConfirmedIterator) Error() error {
  2516  	return it.fail
  2517  }
  2518  
  2519  // Close terminates the iteration process, releasing any pending underlying
  2520  // resources.
  2521  func (it *HopL1EthBridgeTransferRootConfirmedIterator) Close() error {
  2522  	it.sub.Unsubscribe()
  2523  	return nil
  2524  }
  2525  
  2526  // HopL1EthBridgeTransferRootConfirmed represents a TransferRootConfirmed event raised by the HopL1EthBridge contract.
  2527  type HopL1EthBridgeTransferRootConfirmed struct {
  2528  	OriginChainId      *big.Int
  2529  	DestinationChainId *big.Int
  2530  	RootHash           [32]byte
  2531  	TotalAmount        *big.Int
  2532  	Raw                types.Log // Blockchain specific contextual infos
  2533  }
  2534  
  2535  // FilterTransferRootConfirmed is a free log retrieval operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2536  //
  2537  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2538  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterTransferRootConfirmed(opts *bind.FilterOpts, originChainId []*big.Int, destinationChainId []*big.Int, rootHash [][32]byte) (*HopL1EthBridgeTransferRootConfirmedIterator, error) {
  2539  
  2540  	var originChainIdRule []interface{}
  2541  	for _, originChainIdItem := range originChainId {
  2542  		originChainIdRule = append(originChainIdRule, originChainIdItem)
  2543  	}
  2544  	var destinationChainIdRule []interface{}
  2545  	for _, destinationChainIdItem := range destinationChainId {
  2546  		destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem)
  2547  	}
  2548  	var rootHashRule []interface{}
  2549  	for _, rootHashItem := range rootHash {
  2550  		rootHashRule = append(rootHashRule, rootHashItem)
  2551  	}
  2552  
  2553  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "TransferRootConfirmed", originChainIdRule, destinationChainIdRule, rootHashRule)
  2554  	if err != nil {
  2555  		return nil, err
  2556  	}
  2557  	return &HopL1EthBridgeTransferRootConfirmedIterator{contract: _HopL1EthBridge.contract, event: "TransferRootConfirmed", logs: logs, sub: sub}, nil
  2558  }
  2559  
  2560  // WatchTransferRootConfirmed is a free log subscription operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2561  //
  2562  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2563  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchTransferRootConfirmed(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeTransferRootConfirmed, originChainId []*big.Int, destinationChainId []*big.Int, rootHash [][32]byte) (event.Subscription, error) {
  2564  
  2565  	var originChainIdRule []interface{}
  2566  	for _, originChainIdItem := range originChainId {
  2567  		originChainIdRule = append(originChainIdRule, originChainIdItem)
  2568  	}
  2569  	var destinationChainIdRule []interface{}
  2570  	for _, destinationChainIdItem := range destinationChainId {
  2571  		destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem)
  2572  	}
  2573  	var rootHashRule []interface{}
  2574  	for _, rootHashItem := range rootHash {
  2575  		rootHashRule = append(rootHashRule, rootHashItem)
  2576  	}
  2577  
  2578  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "TransferRootConfirmed", originChainIdRule, destinationChainIdRule, rootHashRule)
  2579  	if err != nil {
  2580  		return nil, err
  2581  	}
  2582  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2583  		defer sub.Unsubscribe()
  2584  		for {
  2585  			select {
  2586  			case log := <-logs:
  2587  				// New log arrived, parse the event and forward to the user
  2588  				event := new(HopL1EthBridgeTransferRootConfirmed)
  2589  				if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootConfirmed", log); err != nil {
  2590  					return err
  2591  				}
  2592  				event.Raw = log
  2593  
  2594  				select {
  2595  				case sink <- event:
  2596  				case err := <-sub.Err():
  2597  					return err
  2598  				case <-quit:
  2599  					return nil
  2600  				}
  2601  			case err := <-sub.Err():
  2602  				return err
  2603  			case <-quit:
  2604  				return nil
  2605  			}
  2606  		}
  2607  	}), nil
  2608  }
  2609  
  2610  // ParseTransferRootConfirmed is a log parse operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2611  //
  2612  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2613  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseTransferRootConfirmed(log types.Log) (*HopL1EthBridgeTransferRootConfirmed, error) {
  2614  	event := new(HopL1EthBridgeTransferRootConfirmed)
  2615  	if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootConfirmed", log); err != nil {
  2616  		return nil, err
  2617  	}
  2618  	event.Raw = log
  2619  	return event, nil
  2620  }
  2621  
  2622  // HopL1EthBridgeTransferRootSetIterator is returned from FilterTransferRootSet and is used to iterate over the raw logs and unpacked data for TransferRootSet events raised by the HopL1EthBridge contract.
  2623  type HopL1EthBridgeTransferRootSetIterator struct {
  2624  	Event *HopL1EthBridgeTransferRootSet // Event containing the contract specifics and raw log
  2625  
  2626  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2627  	event    string              // Event name to use for unpacking event data
  2628  
  2629  	logs chan types.Log        // Log channel receiving the found contract events
  2630  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2631  	done bool                  // Whether the subscription completed delivering logs
  2632  	fail error                 // Occurred error to stop iteration
  2633  }
  2634  
  2635  // Next advances the iterator to the subsequent event, returning whether there
  2636  // are any more events found. In case of a retrieval or parsing error, false is
  2637  // returned and Error() can be queried for the exact failure.
  2638  func (it *HopL1EthBridgeTransferRootSetIterator) Next() bool {
  2639  	// If the iterator failed, stop iterating
  2640  	if it.fail != nil {
  2641  		return false
  2642  	}
  2643  	// If the iterator completed, deliver directly whatever's available
  2644  	if it.done {
  2645  		select {
  2646  		case log := <-it.logs:
  2647  			it.Event = new(HopL1EthBridgeTransferRootSet)
  2648  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2649  				it.fail = err
  2650  				return false
  2651  			}
  2652  			it.Event.Raw = log
  2653  			return true
  2654  
  2655  		default:
  2656  			return false
  2657  		}
  2658  	}
  2659  	// Iterator still in progress, wait for either a data or an error event
  2660  	select {
  2661  	case log := <-it.logs:
  2662  		it.Event = new(HopL1EthBridgeTransferRootSet)
  2663  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2664  			it.fail = err
  2665  			return false
  2666  		}
  2667  		it.Event.Raw = log
  2668  		return true
  2669  
  2670  	case err := <-it.sub.Err():
  2671  		it.done = true
  2672  		it.fail = err
  2673  		return it.Next()
  2674  	}
  2675  }
  2676  
  2677  // Error returns any retrieval or parsing error occurred during filtering.
  2678  func (it *HopL1EthBridgeTransferRootSetIterator) Error() error {
  2679  	return it.fail
  2680  }
  2681  
  2682  // Close terminates the iteration process, releasing any pending underlying
  2683  // resources.
  2684  func (it *HopL1EthBridgeTransferRootSetIterator) Close() error {
  2685  	it.sub.Unsubscribe()
  2686  	return nil
  2687  }
  2688  
  2689  // HopL1EthBridgeTransferRootSet represents a TransferRootSet event raised by the HopL1EthBridge contract.
  2690  type HopL1EthBridgeTransferRootSet struct {
  2691  	RootHash    [32]byte
  2692  	TotalAmount *big.Int
  2693  	Raw         types.Log // Blockchain specific contextual infos
  2694  }
  2695  
  2696  // FilterTransferRootSet is a free log retrieval operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2697  //
  2698  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2699  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterTransferRootSet(opts *bind.FilterOpts, rootHash [][32]byte) (*HopL1EthBridgeTransferRootSetIterator, error) {
  2700  
  2701  	var rootHashRule []interface{}
  2702  	for _, rootHashItem := range rootHash {
  2703  		rootHashRule = append(rootHashRule, rootHashItem)
  2704  	}
  2705  
  2706  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "TransferRootSet", rootHashRule)
  2707  	if err != nil {
  2708  		return nil, err
  2709  	}
  2710  	return &HopL1EthBridgeTransferRootSetIterator{contract: _HopL1EthBridge.contract, event: "TransferRootSet", logs: logs, sub: sub}, nil
  2711  }
  2712  
  2713  // WatchTransferRootSet is a free log subscription operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2714  //
  2715  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2716  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchTransferRootSet(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeTransferRootSet, rootHash [][32]byte) (event.Subscription, error) {
  2717  
  2718  	var rootHashRule []interface{}
  2719  	for _, rootHashItem := range rootHash {
  2720  		rootHashRule = append(rootHashRule, rootHashItem)
  2721  	}
  2722  
  2723  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "TransferRootSet", rootHashRule)
  2724  	if err != nil {
  2725  		return nil, err
  2726  	}
  2727  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2728  		defer sub.Unsubscribe()
  2729  		for {
  2730  			select {
  2731  			case log := <-logs:
  2732  				// New log arrived, parse the event and forward to the user
  2733  				event := new(HopL1EthBridgeTransferRootSet)
  2734  				if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootSet", log); err != nil {
  2735  					return err
  2736  				}
  2737  				event.Raw = log
  2738  
  2739  				select {
  2740  				case sink <- event:
  2741  				case err := <-sub.Err():
  2742  					return err
  2743  				case <-quit:
  2744  					return nil
  2745  				}
  2746  			case err := <-sub.Err():
  2747  				return err
  2748  			case <-quit:
  2749  				return nil
  2750  			}
  2751  		}
  2752  	}), nil
  2753  }
  2754  
  2755  // ParseTransferRootSet is a log parse operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2756  //
  2757  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2758  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseTransferRootSet(log types.Log) (*HopL1EthBridgeTransferRootSet, error) {
  2759  	event := new(HopL1EthBridgeTransferRootSet)
  2760  	if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferRootSet", log); err != nil {
  2761  		return nil, err
  2762  	}
  2763  	event.Raw = log
  2764  	return event, nil
  2765  }
  2766  
  2767  // HopL1EthBridgeTransferSentToL2Iterator is returned from FilterTransferSentToL2 and is used to iterate over the raw logs and unpacked data for TransferSentToL2 events raised by the HopL1EthBridge contract.
  2768  type HopL1EthBridgeTransferSentToL2Iterator struct {
  2769  	Event *HopL1EthBridgeTransferSentToL2 // Event containing the contract specifics and raw log
  2770  
  2771  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2772  	event    string              // Event name to use for unpacking event data
  2773  
  2774  	logs chan types.Log        // Log channel receiving the found contract events
  2775  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2776  	done bool                  // Whether the subscription completed delivering logs
  2777  	fail error                 // Occurred error to stop iteration
  2778  }
  2779  
  2780  // Next advances the iterator to the subsequent event, returning whether there
  2781  // are any more events found. In case of a retrieval or parsing error, false is
  2782  // returned and Error() can be queried for the exact failure.
  2783  func (it *HopL1EthBridgeTransferSentToL2Iterator) Next() bool {
  2784  	// If the iterator failed, stop iterating
  2785  	if it.fail != nil {
  2786  		return false
  2787  	}
  2788  	// If the iterator completed, deliver directly whatever's available
  2789  	if it.done {
  2790  		select {
  2791  		case log := <-it.logs:
  2792  			it.Event = new(HopL1EthBridgeTransferSentToL2)
  2793  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2794  				it.fail = err
  2795  				return false
  2796  			}
  2797  			it.Event.Raw = log
  2798  			return true
  2799  
  2800  		default:
  2801  			return false
  2802  		}
  2803  	}
  2804  	// Iterator still in progress, wait for either a data or an error event
  2805  	select {
  2806  	case log := <-it.logs:
  2807  		it.Event = new(HopL1EthBridgeTransferSentToL2)
  2808  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2809  			it.fail = err
  2810  			return false
  2811  		}
  2812  		it.Event.Raw = log
  2813  		return true
  2814  
  2815  	case err := <-it.sub.Err():
  2816  		it.done = true
  2817  		it.fail = err
  2818  		return it.Next()
  2819  	}
  2820  }
  2821  
  2822  // Error returns any retrieval or parsing error occurred during filtering.
  2823  func (it *HopL1EthBridgeTransferSentToL2Iterator) Error() error {
  2824  	return it.fail
  2825  }
  2826  
  2827  // Close terminates the iteration process, releasing any pending underlying
  2828  // resources.
  2829  func (it *HopL1EthBridgeTransferSentToL2Iterator) Close() error {
  2830  	it.sub.Unsubscribe()
  2831  	return nil
  2832  }
  2833  
  2834  // HopL1EthBridgeTransferSentToL2 represents a TransferSentToL2 event raised by the HopL1EthBridge contract.
  2835  type HopL1EthBridgeTransferSentToL2 struct {
  2836  	ChainId      *big.Int
  2837  	Recipient    common.Address
  2838  	Amount       *big.Int
  2839  	AmountOutMin *big.Int
  2840  	Deadline     *big.Int
  2841  	Relayer      common.Address
  2842  	RelayerFee   *big.Int
  2843  	Raw          types.Log // Blockchain specific contextual infos
  2844  }
  2845  
  2846  // FilterTransferSentToL2 is a free log retrieval operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  2847  //
  2848  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  2849  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterTransferSentToL2(opts *bind.FilterOpts, chainId []*big.Int, recipient []common.Address, relayer []common.Address) (*HopL1EthBridgeTransferSentToL2Iterator, error) {
  2850  
  2851  	var chainIdRule []interface{}
  2852  	for _, chainIdItem := range chainId {
  2853  		chainIdRule = append(chainIdRule, chainIdItem)
  2854  	}
  2855  	var recipientRule []interface{}
  2856  	for _, recipientItem := range recipient {
  2857  		recipientRule = append(recipientRule, recipientItem)
  2858  	}
  2859  
  2860  	var relayerRule []interface{}
  2861  	for _, relayerItem := range relayer {
  2862  		relayerRule = append(relayerRule, relayerItem)
  2863  	}
  2864  
  2865  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "TransferSentToL2", chainIdRule, recipientRule, relayerRule)
  2866  	if err != nil {
  2867  		return nil, err
  2868  	}
  2869  	return &HopL1EthBridgeTransferSentToL2Iterator{contract: _HopL1EthBridge.contract, event: "TransferSentToL2", logs: logs, sub: sub}, nil
  2870  }
  2871  
  2872  // WatchTransferSentToL2 is a free log subscription operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  2873  //
  2874  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  2875  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchTransferSentToL2(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeTransferSentToL2, chainId []*big.Int, recipient []common.Address, relayer []common.Address) (event.Subscription, error) {
  2876  
  2877  	var chainIdRule []interface{}
  2878  	for _, chainIdItem := range chainId {
  2879  		chainIdRule = append(chainIdRule, chainIdItem)
  2880  	}
  2881  	var recipientRule []interface{}
  2882  	for _, recipientItem := range recipient {
  2883  		recipientRule = append(recipientRule, recipientItem)
  2884  	}
  2885  
  2886  	var relayerRule []interface{}
  2887  	for _, relayerItem := range relayer {
  2888  		relayerRule = append(relayerRule, relayerItem)
  2889  	}
  2890  
  2891  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "TransferSentToL2", chainIdRule, recipientRule, relayerRule)
  2892  	if err != nil {
  2893  		return nil, err
  2894  	}
  2895  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2896  		defer sub.Unsubscribe()
  2897  		for {
  2898  			select {
  2899  			case log := <-logs:
  2900  				// New log arrived, parse the event and forward to the user
  2901  				event := new(HopL1EthBridgeTransferSentToL2)
  2902  				if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferSentToL2", log); err != nil {
  2903  					return err
  2904  				}
  2905  				event.Raw = log
  2906  
  2907  				select {
  2908  				case sink <- event:
  2909  				case err := <-sub.Err():
  2910  					return err
  2911  				case <-quit:
  2912  					return nil
  2913  				}
  2914  			case err := <-sub.Err():
  2915  				return err
  2916  			case <-quit:
  2917  				return nil
  2918  			}
  2919  		}
  2920  	}), nil
  2921  }
  2922  
  2923  // ParseTransferSentToL2 is a log parse operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  2924  //
  2925  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  2926  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseTransferSentToL2(log types.Log) (*HopL1EthBridgeTransferSentToL2, error) {
  2927  	event := new(HopL1EthBridgeTransferSentToL2)
  2928  	if err := _HopL1EthBridge.contract.UnpackLog(event, "TransferSentToL2", log); err != nil {
  2929  		return nil, err
  2930  	}
  2931  	event.Raw = log
  2932  	return event, nil
  2933  }
  2934  
  2935  // HopL1EthBridgeUnstakeIterator is returned from FilterUnstake and is used to iterate over the raw logs and unpacked data for Unstake events raised by the HopL1EthBridge contract.
  2936  type HopL1EthBridgeUnstakeIterator struct {
  2937  	Event *HopL1EthBridgeUnstake // Event containing the contract specifics and raw log
  2938  
  2939  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2940  	event    string              // Event name to use for unpacking event data
  2941  
  2942  	logs chan types.Log        // Log channel receiving the found contract events
  2943  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2944  	done bool                  // Whether the subscription completed delivering logs
  2945  	fail error                 // Occurred error to stop iteration
  2946  }
  2947  
  2948  // Next advances the iterator to the subsequent event, returning whether there
  2949  // are any more events found. In case of a retrieval or parsing error, false is
  2950  // returned and Error() can be queried for the exact failure.
  2951  func (it *HopL1EthBridgeUnstakeIterator) Next() bool {
  2952  	// If the iterator failed, stop iterating
  2953  	if it.fail != nil {
  2954  		return false
  2955  	}
  2956  	// If the iterator completed, deliver directly whatever's available
  2957  	if it.done {
  2958  		select {
  2959  		case log := <-it.logs:
  2960  			it.Event = new(HopL1EthBridgeUnstake)
  2961  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2962  				it.fail = err
  2963  				return false
  2964  			}
  2965  			it.Event.Raw = log
  2966  			return true
  2967  
  2968  		default:
  2969  			return false
  2970  		}
  2971  	}
  2972  	// Iterator still in progress, wait for either a data or an error event
  2973  	select {
  2974  	case log := <-it.logs:
  2975  		it.Event = new(HopL1EthBridgeUnstake)
  2976  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2977  			it.fail = err
  2978  			return false
  2979  		}
  2980  		it.Event.Raw = log
  2981  		return true
  2982  
  2983  	case err := <-it.sub.Err():
  2984  		it.done = true
  2985  		it.fail = err
  2986  		return it.Next()
  2987  	}
  2988  }
  2989  
  2990  // Error returns any retrieval or parsing error occurred during filtering.
  2991  func (it *HopL1EthBridgeUnstakeIterator) Error() error {
  2992  	return it.fail
  2993  }
  2994  
  2995  // Close terminates the iteration process, releasing any pending underlying
  2996  // resources.
  2997  func (it *HopL1EthBridgeUnstakeIterator) Close() error {
  2998  	it.sub.Unsubscribe()
  2999  	return nil
  3000  }
  3001  
  3002  // HopL1EthBridgeUnstake represents a Unstake event raised by the HopL1EthBridge contract.
  3003  type HopL1EthBridgeUnstake struct {
  3004  	Account common.Address
  3005  	Amount  *big.Int
  3006  	Raw     types.Log // Blockchain specific contextual infos
  3007  }
  3008  
  3009  // FilterUnstake is a free log retrieval operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3010  //
  3011  // Solidity: event Unstake(address indexed account, uint256 amount)
  3012  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterUnstake(opts *bind.FilterOpts, account []common.Address) (*HopL1EthBridgeUnstakeIterator, error) {
  3013  
  3014  	var accountRule []interface{}
  3015  	for _, accountItem := range account {
  3016  		accountRule = append(accountRule, accountItem)
  3017  	}
  3018  
  3019  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "Unstake", accountRule)
  3020  	if err != nil {
  3021  		return nil, err
  3022  	}
  3023  	return &HopL1EthBridgeUnstakeIterator{contract: _HopL1EthBridge.contract, event: "Unstake", logs: logs, sub: sub}, nil
  3024  }
  3025  
  3026  // WatchUnstake is a free log subscription operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3027  //
  3028  // Solidity: event Unstake(address indexed account, uint256 amount)
  3029  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchUnstake(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeUnstake, account []common.Address) (event.Subscription, error) {
  3030  
  3031  	var accountRule []interface{}
  3032  	for _, accountItem := range account {
  3033  		accountRule = append(accountRule, accountItem)
  3034  	}
  3035  
  3036  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "Unstake", accountRule)
  3037  	if err != nil {
  3038  		return nil, err
  3039  	}
  3040  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3041  		defer sub.Unsubscribe()
  3042  		for {
  3043  			select {
  3044  			case log := <-logs:
  3045  				// New log arrived, parse the event and forward to the user
  3046  				event := new(HopL1EthBridgeUnstake)
  3047  				if err := _HopL1EthBridge.contract.UnpackLog(event, "Unstake", log); err != nil {
  3048  					return err
  3049  				}
  3050  				event.Raw = log
  3051  
  3052  				select {
  3053  				case sink <- event:
  3054  				case err := <-sub.Err():
  3055  					return err
  3056  				case <-quit:
  3057  					return nil
  3058  				}
  3059  			case err := <-sub.Err():
  3060  				return err
  3061  			case <-quit:
  3062  				return nil
  3063  			}
  3064  		}
  3065  	}), nil
  3066  }
  3067  
  3068  // ParseUnstake is a log parse operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3069  //
  3070  // Solidity: event Unstake(address indexed account, uint256 amount)
  3071  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseUnstake(log types.Log) (*HopL1EthBridgeUnstake, error) {
  3072  	event := new(HopL1EthBridgeUnstake)
  3073  	if err := _HopL1EthBridge.contract.UnpackLog(event, "Unstake", log); err != nil {
  3074  		return nil, err
  3075  	}
  3076  	event.Raw = log
  3077  	return event, nil
  3078  }
  3079  
  3080  // HopL1EthBridgeWithdrawalBondSettledIterator is returned from FilterWithdrawalBondSettled and is used to iterate over the raw logs and unpacked data for WithdrawalBondSettled events raised by the HopL1EthBridge contract.
  3081  type HopL1EthBridgeWithdrawalBondSettledIterator struct {
  3082  	Event *HopL1EthBridgeWithdrawalBondSettled // Event containing the contract specifics and raw log
  3083  
  3084  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3085  	event    string              // Event name to use for unpacking event data
  3086  
  3087  	logs chan types.Log        // Log channel receiving the found contract events
  3088  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3089  	done bool                  // Whether the subscription completed delivering logs
  3090  	fail error                 // Occurred error to stop iteration
  3091  }
  3092  
  3093  // Next advances the iterator to the subsequent event, returning whether there
  3094  // are any more events found. In case of a retrieval or parsing error, false is
  3095  // returned and Error() can be queried for the exact failure.
  3096  func (it *HopL1EthBridgeWithdrawalBondSettledIterator) Next() bool {
  3097  	// If the iterator failed, stop iterating
  3098  	if it.fail != nil {
  3099  		return false
  3100  	}
  3101  	// If the iterator completed, deliver directly whatever's available
  3102  	if it.done {
  3103  		select {
  3104  		case log := <-it.logs:
  3105  			it.Event = new(HopL1EthBridgeWithdrawalBondSettled)
  3106  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3107  				it.fail = err
  3108  				return false
  3109  			}
  3110  			it.Event.Raw = log
  3111  			return true
  3112  
  3113  		default:
  3114  			return false
  3115  		}
  3116  	}
  3117  	// Iterator still in progress, wait for either a data or an error event
  3118  	select {
  3119  	case log := <-it.logs:
  3120  		it.Event = new(HopL1EthBridgeWithdrawalBondSettled)
  3121  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3122  			it.fail = err
  3123  			return false
  3124  		}
  3125  		it.Event.Raw = log
  3126  		return true
  3127  
  3128  	case err := <-it.sub.Err():
  3129  		it.done = true
  3130  		it.fail = err
  3131  		return it.Next()
  3132  	}
  3133  }
  3134  
  3135  // Error returns any retrieval or parsing error occurred during filtering.
  3136  func (it *HopL1EthBridgeWithdrawalBondSettledIterator) Error() error {
  3137  	return it.fail
  3138  }
  3139  
  3140  // Close terminates the iteration process, releasing any pending underlying
  3141  // resources.
  3142  func (it *HopL1EthBridgeWithdrawalBondSettledIterator) Close() error {
  3143  	it.sub.Unsubscribe()
  3144  	return nil
  3145  }
  3146  
  3147  // HopL1EthBridgeWithdrawalBondSettled represents a WithdrawalBondSettled event raised by the HopL1EthBridge contract.
  3148  type HopL1EthBridgeWithdrawalBondSettled struct {
  3149  	Bonder     common.Address
  3150  	TransferId [32]byte
  3151  	RootHash   [32]byte
  3152  	Raw        types.Log // Blockchain specific contextual infos
  3153  }
  3154  
  3155  // FilterWithdrawalBondSettled is a free log retrieval operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3156  //
  3157  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3158  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterWithdrawalBondSettled(opts *bind.FilterOpts, bonder []common.Address, transferId [][32]byte, rootHash [][32]byte) (*HopL1EthBridgeWithdrawalBondSettledIterator, error) {
  3159  
  3160  	var bonderRule []interface{}
  3161  	for _, bonderItem := range bonder {
  3162  		bonderRule = append(bonderRule, bonderItem)
  3163  	}
  3164  	var transferIdRule []interface{}
  3165  	for _, transferIdItem := range transferId {
  3166  		transferIdRule = append(transferIdRule, transferIdItem)
  3167  	}
  3168  	var rootHashRule []interface{}
  3169  	for _, rootHashItem := range rootHash {
  3170  		rootHashRule = append(rootHashRule, rootHashItem)
  3171  	}
  3172  
  3173  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "WithdrawalBondSettled", bonderRule, transferIdRule, rootHashRule)
  3174  	if err != nil {
  3175  		return nil, err
  3176  	}
  3177  	return &HopL1EthBridgeWithdrawalBondSettledIterator{contract: _HopL1EthBridge.contract, event: "WithdrawalBondSettled", logs: logs, sub: sub}, nil
  3178  }
  3179  
  3180  // WatchWithdrawalBondSettled is a free log subscription operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3181  //
  3182  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3183  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchWithdrawalBondSettled(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeWithdrawalBondSettled, bonder []common.Address, transferId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  3184  
  3185  	var bonderRule []interface{}
  3186  	for _, bonderItem := range bonder {
  3187  		bonderRule = append(bonderRule, bonderItem)
  3188  	}
  3189  	var transferIdRule []interface{}
  3190  	for _, transferIdItem := range transferId {
  3191  		transferIdRule = append(transferIdRule, transferIdItem)
  3192  	}
  3193  	var rootHashRule []interface{}
  3194  	for _, rootHashItem := range rootHash {
  3195  		rootHashRule = append(rootHashRule, rootHashItem)
  3196  	}
  3197  
  3198  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "WithdrawalBondSettled", bonderRule, transferIdRule, rootHashRule)
  3199  	if err != nil {
  3200  		return nil, err
  3201  	}
  3202  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3203  		defer sub.Unsubscribe()
  3204  		for {
  3205  			select {
  3206  			case log := <-logs:
  3207  				// New log arrived, parse the event and forward to the user
  3208  				event := new(HopL1EthBridgeWithdrawalBondSettled)
  3209  				if err := _HopL1EthBridge.contract.UnpackLog(event, "WithdrawalBondSettled", log); err != nil {
  3210  					return err
  3211  				}
  3212  				event.Raw = log
  3213  
  3214  				select {
  3215  				case sink <- event:
  3216  				case err := <-sub.Err():
  3217  					return err
  3218  				case <-quit:
  3219  					return nil
  3220  				}
  3221  			case err := <-sub.Err():
  3222  				return err
  3223  			case <-quit:
  3224  				return nil
  3225  			}
  3226  		}
  3227  	}), nil
  3228  }
  3229  
  3230  // ParseWithdrawalBondSettled is a log parse operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3231  //
  3232  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3233  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseWithdrawalBondSettled(log types.Log) (*HopL1EthBridgeWithdrawalBondSettled, error) {
  3234  	event := new(HopL1EthBridgeWithdrawalBondSettled)
  3235  	if err := _HopL1EthBridge.contract.UnpackLog(event, "WithdrawalBondSettled", log); err != nil {
  3236  		return nil, err
  3237  	}
  3238  	event.Raw = log
  3239  	return event, nil
  3240  }
  3241  
  3242  // HopL1EthBridgeWithdrawalBondedIterator is returned from FilterWithdrawalBonded and is used to iterate over the raw logs and unpacked data for WithdrawalBonded events raised by the HopL1EthBridge contract.
  3243  type HopL1EthBridgeWithdrawalBondedIterator struct {
  3244  	Event *HopL1EthBridgeWithdrawalBonded // Event containing the contract specifics and raw log
  3245  
  3246  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3247  	event    string              // Event name to use for unpacking event data
  3248  
  3249  	logs chan types.Log        // Log channel receiving the found contract events
  3250  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3251  	done bool                  // Whether the subscription completed delivering logs
  3252  	fail error                 // Occurred error to stop iteration
  3253  }
  3254  
  3255  // Next advances the iterator to the subsequent event, returning whether there
  3256  // are any more events found. In case of a retrieval or parsing error, false is
  3257  // returned and Error() can be queried for the exact failure.
  3258  func (it *HopL1EthBridgeWithdrawalBondedIterator) Next() bool {
  3259  	// If the iterator failed, stop iterating
  3260  	if it.fail != nil {
  3261  		return false
  3262  	}
  3263  	// If the iterator completed, deliver directly whatever's available
  3264  	if it.done {
  3265  		select {
  3266  		case log := <-it.logs:
  3267  			it.Event = new(HopL1EthBridgeWithdrawalBonded)
  3268  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3269  				it.fail = err
  3270  				return false
  3271  			}
  3272  			it.Event.Raw = log
  3273  			return true
  3274  
  3275  		default:
  3276  			return false
  3277  		}
  3278  	}
  3279  	// Iterator still in progress, wait for either a data or an error event
  3280  	select {
  3281  	case log := <-it.logs:
  3282  		it.Event = new(HopL1EthBridgeWithdrawalBonded)
  3283  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3284  			it.fail = err
  3285  			return false
  3286  		}
  3287  		it.Event.Raw = log
  3288  		return true
  3289  
  3290  	case err := <-it.sub.Err():
  3291  		it.done = true
  3292  		it.fail = err
  3293  		return it.Next()
  3294  	}
  3295  }
  3296  
  3297  // Error returns any retrieval or parsing error occurred during filtering.
  3298  func (it *HopL1EthBridgeWithdrawalBondedIterator) Error() error {
  3299  	return it.fail
  3300  }
  3301  
  3302  // Close terminates the iteration process, releasing any pending underlying
  3303  // resources.
  3304  func (it *HopL1EthBridgeWithdrawalBondedIterator) Close() error {
  3305  	it.sub.Unsubscribe()
  3306  	return nil
  3307  }
  3308  
  3309  // HopL1EthBridgeWithdrawalBonded represents a WithdrawalBonded event raised by the HopL1EthBridge contract.
  3310  type HopL1EthBridgeWithdrawalBonded struct {
  3311  	TransferId [32]byte
  3312  	Amount     *big.Int
  3313  	Raw        types.Log // Blockchain specific contextual infos
  3314  }
  3315  
  3316  // FilterWithdrawalBonded is a free log retrieval operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3317  //
  3318  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3319  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterWithdrawalBonded(opts *bind.FilterOpts, transferId [][32]byte) (*HopL1EthBridgeWithdrawalBondedIterator, error) {
  3320  
  3321  	var transferIdRule []interface{}
  3322  	for _, transferIdItem := range transferId {
  3323  		transferIdRule = append(transferIdRule, transferIdItem)
  3324  	}
  3325  
  3326  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "WithdrawalBonded", transferIdRule)
  3327  	if err != nil {
  3328  		return nil, err
  3329  	}
  3330  	return &HopL1EthBridgeWithdrawalBondedIterator{contract: _HopL1EthBridge.contract, event: "WithdrawalBonded", logs: logs, sub: sub}, nil
  3331  }
  3332  
  3333  // WatchWithdrawalBonded is a free log subscription operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3334  //
  3335  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3336  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchWithdrawalBonded(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeWithdrawalBonded, transferId [][32]byte) (event.Subscription, error) {
  3337  
  3338  	var transferIdRule []interface{}
  3339  	for _, transferIdItem := range transferId {
  3340  		transferIdRule = append(transferIdRule, transferIdItem)
  3341  	}
  3342  
  3343  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "WithdrawalBonded", transferIdRule)
  3344  	if err != nil {
  3345  		return nil, err
  3346  	}
  3347  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3348  		defer sub.Unsubscribe()
  3349  		for {
  3350  			select {
  3351  			case log := <-logs:
  3352  				// New log arrived, parse the event and forward to the user
  3353  				event := new(HopL1EthBridgeWithdrawalBonded)
  3354  				if err := _HopL1EthBridge.contract.UnpackLog(event, "WithdrawalBonded", log); err != nil {
  3355  					return err
  3356  				}
  3357  				event.Raw = log
  3358  
  3359  				select {
  3360  				case sink <- event:
  3361  				case err := <-sub.Err():
  3362  					return err
  3363  				case <-quit:
  3364  					return nil
  3365  				}
  3366  			case err := <-sub.Err():
  3367  				return err
  3368  			case <-quit:
  3369  				return nil
  3370  			}
  3371  		}
  3372  	}), nil
  3373  }
  3374  
  3375  // ParseWithdrawalBonded is a log parse operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3376  //
  3377  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3378  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseWithdrawalBonded(log types.Log) (*HopL1EthBridgeWithdrawalBonded, error) {
  3379  	event := new(HopL1EthBridgeWithdrawalBonded)
  3380  	if err := _HopL1EthBridge.contract.UnpackLog(event, "WithdrawalBonded", log); err != nil {
  3381  		return nil, err
  3382  	}
  3383  	event.Raw = log
  3384  	return event, nil
  3385  }
  3386  
  3387  // HopL1EthBridgeWithdrewIterator is returned from FilterWithdrew and is used to iterate over the raw logs and unpacked data for Withdrew events raised by the HopL1EthBridge contract.
  3388  type HopL1EthBridgeWithdrewIterator struct {
  3389  	Event *HopL1EthBridgeWithdrew // Event containing the contract specifics and raw log
  3390  
  3391  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3392  	event    string              // Event name to use for unpacking event data
  3393  
  3394  	logs chan types.Log        // Log channel receiving the found contract events
  3395  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3396  	done bool                  // Whether the subscription completed delivering logs
  3397  	fail error                 // Occurred error to stop iteration
  3398  }
  3399  
  3400  // Next advances the iterator to the subsequent event, returning whether there
  3401  // are any more events found. In case of a retrieval or parsing error, false is
  3402  // returned and Error() can be queried for the exact failure.
  3403  func (it *HopL1EthBridgeWithdrewIterator) Next() bool {
  3404  	// If the iterator failed, stop iterating
  3405  	if it.fail != nil {
  3406  		return false
  3407  	}
  3408  	// If the iterator completed, deliver directly whatever's available
  3409  	if it.done {
  3410  		select {
  3411  		case log := <-it.logs:
  3412  			it.Event = new(HopL1EthBridgeWithdrew)
  3413  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3414  				it.fail = err
  3415  				return false
  3416  			}
  3417  			it.Event.Raw = log
  3418  			return true
  3419  
  3420  		default:
  3421  			return false
  3422  		}
  3423  	}
  3424  	// Iterator still in progress, wait for either a data or an error event
  3425  	select {
  3426  	case log := <-it.logs:
  3427  		it.Event = new(HopL1EthBridgeWithdrew)
  3428  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3429  			it.fail = err
  3430  			return false
  3431  		}
  3432  		it.Event.Raw = log
  3433  		return true
  3434  
  3435  	case err := <-it.sub.Err():
  3436  		it.done = true
  3437  		it.fail = err
  3438  		return it.Next()
  3439  	}
  3440  }
  3441  
  3442  // Error returns any retrieval or parsing error occurred during filtering.
  3443  func (it *HopL1EthBridgeWithdrewIterator) Error() error {
  3444  	return it.fail
  3445  }
  3446  
  3447  // Close terminates the iteration process, releasing any pending underlying
  3448  // resources.
  3449  func (it *HopL1EthBridgeWithdrewIterator) Close() error {
  3450  	it.sub.Unsubscribe()
  3451  	return nil
  3452  }
  3453  
  3454  // HopL1EthBridgeWithdrew represents a Withdrew event raised by the HopL1EthBridge contract.
  3455  type HopL1EthBridgeWithdrew struct {
  3456  	TransferId    [32]byte
  3457  	Recipient     common.Address
  3458  	Amount        *big.Int
  3459  	TransferNonce [32]byte
  3460  	Raw           types.Log // Blockchain specific contextual infos
  3461  }
  3462  
  3463  // FilterWithdrew is a free log retrieval operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3464  //
  3465  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3466  func (_HopL1EthBridge *HopL1EthBridgeFilterer) FilterWithdrew(opts *bind.FilterOpts, transferId [][32]byte, recipient []common.Address) (*HopL1EthBridgeWithdrewIterator, error) {
  3467  
  3468  	var transferIdRule []interface{}
  3469  	for _, transferIdItem := range transferId {
  3470  		transferIdRule = append(transferIdRule, transferIdItem)
  3471  	}
  3472  	var recipientRule []interface{}
  3473  	for _, recipientItem := range recipient {
  3474  		recipientRule = append(recipientRule, recipientItem)
  3475  	}
  3476  
  3477  	logs, sub, err := _HopL1EthBridge.contract.FilterLogs(opts, "Withdrew", transferIdRule, recipientRule)
  3478  	if err != nil {
  3479  		return nil, err
  3480  	}
  3481  	return &HopL1EthBridgeWithdrewIterator{contract: _HopL1EthBridge.contract, event: "Withdrew", logs: logs, sub: sub}, nil
  3482  }
  3483  
  3484  // WatchWithdrew is a free log subscription operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3485  //
  3486  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3487  func (_HopL1EthBridge *HopL1EthBridgeFilterer) WatchWithdrew(opts *bind.WatchOpts, sink chan<- *HopL1EthBridgeWithdrew, transferId [][32]byte, recipient []common.Address) (event.Subscription, error) {
  3488  
  3489  	var transferIdRule []interface{}
  3490  	for _, transferIdItem := range transferId {
  3491  		transferIdRule = append(transferIdRule, transferIdItem)
  3492  	}
  3493  	var recipientRule []interface{}
  3494  	for _, recipientItem := range recipient {
  3495  		recipientRule = append(recipientRule, recipientItem)
  3496  	}
  3497  
  3498  	logs, sub, err := _HopL1EthBridge.contract.WatchLogs(opts, "Withdrew", transferIdRule, recipientRule)
  3499  	if err != nil {
  3500  		return nil, err
  3501  	}
  3502  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3503  		defer sub.Unsubscribe()
  3504  		for {
  3505  			select {
  3506  			case log := <-logs:
  3507  				// New log arrived, parse the event and forward to the user
  3508  				event := new(HopL1EthBridgeWithdrew)
  3509  				if err := _HopL1EthBridge.contract.UnpackLog(event, "Withdrew", log); err != nil {
  3510  					return err
  3511  				}
  3512  				event.Raw = log
  3513  
  3514  				select {
  3515  				case sink <- event:
  3516  				case err := <-sub.Err():
  3517  					return err
  3518  				case <-quit:
  3519  					return nil
  3520  				}
  3521  			case err := <-sub.Err():
  3522  				return err
  3523  			case <-quit:
  3524  				return nil
  3525  			}
  3526  		}
  3527  	}), nil
  3528  }
  3529  
  3530  // ParseWithdrew is a log parse operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3531  //
  3532  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3533  func (_HopL1EthBridge *HopL1EthBridgeFilterer) ParseWithdrew(log types.Log) (*HopL1EthBridgeWithdrew, error) {
  3534  	event := new(HopL1EthBridgeWithdrew)
  3535  	if err := _HopL1EthBridge.contract.UnpackLog(event, "Withdrew", log); err != nil {
  3536  		return nil, err
  3537  	}
  3538  	event.Raw = log
  3539  	return event, nil
  3540  }