github.com/status-im/status-go@v1.1.0/contracts/hop/l1Contracts/l1HopBridge/l1HopBridge.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 hopL1HopBridge
     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  // HopL1HopBridgeMetaData contains all meta data concerning the HopL1HopBridge contract.
    40  var HopL1HopBridgeMetaData = &bind.MetaData{
    41  	ABI: "[{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"_l1CanonicalToken\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"bonders\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_migrator\",\"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\":\"l1CanonicalToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"migrateTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"address\",\"name\":\"_newMigrator\",\"type\":\"address\"}],\"name\":\"setMigrator\",\"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  // HopL1HopBridgeABI is the input ABI used to generate the binding from.
    45  // Deprecated: Use HopL1HopBridgeMetaData.ABI instead.
    46  var HopL1HopBridgeABI = HopL1HopBridgeMetaData.ABI
    47  
    48  // HopL1HopBridge is an auto generated Go binding around an Ethereum contract.
    49  type HopL1HopBridge struct {
    50  	HopL1HopBridgeCaller     // Read-only binding to the contract
    51  	HopL1HopBridgeTransactor // Write-only binding to the contract
    52  	HopL1HopBridgeFilterer   // Log filterer for contract events
    53  }
    54  
    55  // HopL1HopBridgeCaller is an auto generated read-only Go binding around an Ethereum contract.
    56  type HopL1HopBridgeCaller struct {
    57  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    58  }
    59  
    60  // HopL1HopBridgeTransactor is an auto generated write-only Go binding around an Ethereum contract.
    61  type HopL1HopBridgeTransactor struct {
    62  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    63  }
    64  
    65  // HopL1HopBridgeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    66  type HopL1HopBridgeFilterer struct {
    67  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    68  }
    69  
    70  // HopL1HopBridgeSession is an auto generated Go binding around an Ethereum contract,
    71  // with pre-set call and transact options.
    72  type HopL1HopBridgeSession struct {
    73  	Contract     *HopL1HopBridge   // 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  // HopL1HopBridgeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    79  // with pre-set call options.
    80  type HopL1HopBridgeCallerSession struct {
    81  	Contract *HopL1HopBridgeCaller // Generic contract caller binding to set the session for
    82  	CallOpts bind.CallOpts         // Call options to use throughout this session
    83  }
    84  
    85  // HopL1HopBridgeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    86  // with pre-set transact options.
    87  type HopL1HopBridgeTransactorSession struct {
    88  	Contract     *HopL1HopBridgeTransactor // Generic contract transactor binding to set the session for
    89  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
    90  }
    91  
    92  // HopL1HopBridgeRaw is an auto generated low-level Go binding around an Ethereum contract.
    93  type HopL1HopBridgeRaw struct {
    94  	Contract *HopL1HopBridge // Generic contract binding to access the raw methods on
    95  }
    96  
    97  // HopL1HopBridgeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    98  type HopL1HopBridgeCallerRaw struct {
    99  	Contract *HopL1HopBridgeCaller // Generic read-only contract binding to access the raw methods on
   100  }
   101  
   102  // HopL1HopBridgeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   103  type HopL1HopBridgeTransactorRaw struct {
   104  	Contract *HopL1HopBridgeTransactor // Generic write-only contract binding to access the raw methods on
   105  }
   106  
   107  // NewHopL1HopBridge creates a new instance of HopL1HopBridge, bound to a specific deployed contract.
   108  func NewHopL1HopBridge(address common.Address, backend bind.ContractBackend) (*HopL1HopBridge, error) {
   109  	contract, err := bindHopL1HopBridge(address, backend, backend, backend)
   110  	if err != nil {
   111  		return nil, err
   112  	}
   113  	return &HopL1HopBridge{HopL1HopBridgeCaller: HopL1HopBridgeCaller{contract: contract}, HopL1HopBridgeTransactor: HopL1HopBridgeTransactor{contract: contract}, HopL1HopBridgeFilterer: HopL1HopBridgeFilterer{contract: contract}}, nil
   114  }
   115  
   116  // NewHopL1HopBridgeCaller creates a new read-only instance of HopL1HopBridge, bound to a specific deployed contract.
   117  func NewHopL1HopBridgeCaller(address common.Address, caller bind.ContractCaller) (*HopL1HopBridgeCaller, error) {
   118  	contract, err := bindHopL1HopBridge(address, caller, nil, nil)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	return &HopL1HopBridgeCaller{contract: contract}, nil
   123  }
   124  
   125  // NewHopL1HopBridgeTransactor creates a new write-only instance of HopL1HopBridge, bound to a specific deployed contract.
   126  func NewHopL1HopBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*HopL1HopBridgeTransactor, error) {
   127  	contract, err := bindHopL1HopBridge(address, nil, transactor, nil)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return &HopL1HopBridgeTransactor{contract: contract}, nil
   132  }
   133  
   134  // NewHopL1HopBridgeFilterer creates a new log filterer instance of HopL1HopBridge, bound to a specific deployed contract.
   135  func NewHopL1HopBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*HopL1HopBridgeFilterer, error) {
   136  	contract, err := bindHopL1HopBridge(address, nil, nil, filterer)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return &HopL1HopBridgeFilterer{contract: contract}, nil
   141  }
   142  
   143  // bindHopL1HopBridge binds a generic wrapper to an already deployed contract.
   144  func bindHopL1HopBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   145  	parsed, err := HopL1HopBridgeMetaData.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 (_HopL1HopBridge *HopL1HopBridgeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   157  	return _HopL1HopBridge.Contract.HopL1HopBridgeCaller.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 (_HopL1HopBridge *HopL1HopBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   163  	return _HopL1HopBridge.Contract.HopL1HopBridgeTransactor.contract.Transfer(opts)
   164  }
   165  
   166  // Transact invokes the (paid) contract method with params as input values.
   167  func (_HopL1HopBridge *HopL1HopBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   168  	return _HopL1HopBridge.Contract.HopL1HopBridgeTransactor.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 (_HopL1HopBridge *HopL1HopBridgeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   176  	return _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   182  	return _HopL1HopBridge.Contract.contract.Transfer(opts)
   183  }
   184  
   185  // Transact invokes the (paid) contract method with params as input values.
   186  func (_HopL1HopBridge *HopL1HopBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   187  	return _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) CHALLENGEAMOUNTDIVISOR(opts *bind.CallOpts) (*big.Int, error) {
   194  	var out []interface{}
   195  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) CHALLENGEAMOUNTDIVISOR() (*big.Int, error) {
   211  	return _HopL1HopBridge.Contract.CHALLENGEAMOUNTDIVISOR(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) CHALLENGEAMOUNTDIVISOR() (*big.Int, error) {
   218  	return _HopL1HopBridge.Contract.CHALLENGEAMOUNTDIVISOR(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) TIMESLOTSIZE(opts *bind.CallOpts) (*big.Int, error) {
   225  	var out []interface{}
   226  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) TIMESLOTSIZE() (*big.Int, error) {
   242  	return _HopL1HopBridge.Contract.TIMESLOTSIZE(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) TIMESLOTSIZE() (*big.Int, error) {
   249  	return _HopL1HopBridge.Contract.TIMESLOTSIZE(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) ChainBalance(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
   256  	var out []interface{}
   257  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) ChainBalance(arg0 *big.Int) (*big.Int, error) {
   273  	return _HopL1HopBridge.Contract.ChainBalance(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) ChainBalance(arg0 *big.Int) (*big.Int, error) {
   280  	return _HopL1HopBridge.Contract.ChainBalance(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) ChallengePeriod(opts *bind.CallOpts) (*big.Int, error) {
   287  	var out []interface{}
   288  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) ChallengePeriod() (*big.Int, error) {
   304  	return _HopL1HopBridge.Contract.ChallengePeriod(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) ChallengePeriod() (*big.Int, error) {
   311  	return _HopL1HopBridge.Contract.ChallengePeriod(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) ChallengeResolutionPeriod(opts *bind.CallOpts) (*big.Int, error) {
   318  	var out []interface{}
   319  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) ChallengeResolutionPeriod() (*big.Int, error) {
   335  	return _HopL1HopBridge.Contract.ChallengeResolutionPeriod(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) ChallengeResolutionPeriod() (*big.Int, error) {
   342  	return _HopL1HopBridge.Contract.ChallengeResolutionPeriod(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) CrossDomainMessengerWrappers(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   349  	var out []interface{}
   350  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) CrossDomainMessengerWrappers(arg0 *big.Int) (common.Address, error) {
   366  	return _HopL1HopBridge.Contract.CrossDomainMessengerWrappers(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) CrossDomainMessengerWrappers(arg0 *big.Int) (common.Address, error) {
   373  	return _HopL1HopBridge.Contract.CrossDomainMessengerWrappers(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetBondForTransferAmount(opts *bind.CallOpts, amount *big.Int) (*big.Int, error) {
   380  	var out []interface{}
   381  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetBondForTransferAmount(amount *big.Int) (*big.Int, error) {
   397  	return _HopL1HopBridge.Contract.GetBondForTransferAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetBondForTransferAmount(amount *big.Int) (*big.Int, error) {
   404  	return _HopL1HopBridge.Contract.GetBondForTransferAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetBondedWithdrawalAmount(opts *bind.CallOpts, bonder common.Address, transferId [32]byte) (*big.Int, error) {
   411  	var out []interface{}
   412  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetBondedWithdrawalAmount(bonder common.Address, transferId [32]byte) (*big.Int, error) {
   428  	return _HopL1HopBridge.Contract.GetBondedWithdrawalAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetBondedWithdrawalAmount(bonder common.Address, transferId [32]byte) (*big.Int, error) {
   435  	return _HopL1HopBridge.Contract.GetBondedWithdrawalAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetChainId(opts *bind.CallOpts) (*big.Int, error) {
   442  	var out []interface{}
   443  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetChainId() (*big.Int, error) {
   459  	return _HopL1HopBridge.Contract.GetChainId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetChainId() (*big.Int, error) {
   466  	return _HopL1HopBridge.Contract.GetChainId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetChallengeAmountForTransferAmount(opts *bind.CallOpts, amount *big.Int) (*big.Int, error) {
   473  	var out []interface{}
   474  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetChallengeAmountForTransferAmount(amount *big.Int) (*big.Int, error) {
   490  	return _HopL1HopBridge.Contract.GetChallengeAmountForTransferAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetChallengeAmountForTransferAmount(amount *big.Int) (*big.Int, error) {
   497  	return _HopL1HopBridge.Contract.GetChallengeAmountForTransferAmount(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetCredit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   504  	var out []interface{}
   505  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetCredit(bonder common.Address) (*big.Int, error) {
   521  	return _HopL1HopBridge.Contract.GetCredit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetCredit(bonder common.Address) (*big.Int, error) {
   528  	return _HopL1HopBridge.Contract.GetCredit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetDebitAndAdditionalDebit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   535  	var out []interface{}
   536  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetDebitAndAdditionalDebit(bonder common.Address) (*big.Int, error) {
   552  	return _HopL1HopBridge.Contract.GetDebitAndAdditionalDebit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetDebitAndAdditionalDebit(bonder common.Address) (*big.Int, error) {
   559  	return _HopL1HopBridge.Contract.GetDebitAndAdditionalDebit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetIsBonder(opts *bind.CallOpts, maybeBonder common.Address) (bool, error) {
   566  	var out []interface{}
   567  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetIsBonder(maybeBonder common.Address) (bool, error) {
   583  	return _HopL1HopBridge.Contract.GetIsBonder(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetIsBonder(maybeBonder common.Address) (bool, error) {
   590  	return _HopL1HopBridge.Contract.GetIsBonder(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetRawDebit(opts *bind.CallOpts, bonder common.Address) (*big.Int, error) {
   597  	var out []interface{}
   598  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetRawDebit(bonder common.Address) (*big.Int, error) {
   614  	return _HopL1HopBridge.Contract.GetRawDebit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetRawDebit(bonder common.Address) (*big.Int, error) {
   621  	return _HopL1HopBridge.Contract.GetRawDebit(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetTimeSlot(opts *bind.CallOpts, time *big.Int) (*big.Int, error) {
   628  	var out []interface{}
   629  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetTimeSlot(time *big.Int) (*big.Int, error) {
   645  	return _HopL1HopBridge.Contract.GetTimeSlot(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetTimeSlot(time *big.Int) (*big.Int, error) {
   652  	return _HopL1HopBridge.Contract.GetTimeSlot(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) 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 := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) 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 _HopL1HopBridge.Contract.GetTransferId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) 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 _HopL1HopBridge.Contract.GetTransferId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetTransferRoot(opts *bind.CallOpts, rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   690  	var out []interface{}
   691  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetTransferRoot(rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   707  	return _HopL1HopBridge.Contract.GetTransferRoot(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetTransferRoot(rootHash [32]byte, totalAmount *big.Int) (BridgeTransferRoot, error) {
   714  	return _HopL1HopBridge.Contract.GetTransferRoot(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) GetTransferRootId(opts *bind.CallOpts, rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   721  	var out []interface{}
   722  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) GetTransferRootId(rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   738  	return _HopL1HopBridge.Contract.GetTransferRootId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) GetTransferRootId(rootHash [32]byte, totalAmount *big.Int) ([32]byte, error) {
   745  	return _HopL1HopBridge.Contract.GetTransferRootId(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) Governance(opts *bind.CallOpts) (common.Address, error) {
   752  	var out []interface{}
   753  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) Governance() (common.Address, error) {
   769  	return _HopL1HopBridge.Contract.Governance(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) Governance() (common.Address, error) {
   776  	return _HopL1HopBridge.Contract.Governance(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) IsChainIdPaused(opts *bind.CallOpts, arg0 *big.Int) (bool, error) {
   783  	var out []interface{}
   784  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) IsChainIdPaused(arg0 *big.Int) (bool, error) {
   800  	return _HopL1HopBridge.Contract.IsChainIdPaused(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) IsChainIdPaused(arg0 *big.Int) (bool, error) {
   807  	return _HopL1HopBridge.Contract.IsChainIdPaused(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCaller) IsTransferIdSpent(opts *bind.CallOpts, transferId [32]byte) (bool, error) {
   814  	var out []interface{}
   815  	err := _HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeSession) IsTransferIdSpent(transferId [32]byte) (bool, error) {
   831  	return _HopL1HopBridge.Contract.IsTransferIdSpent(&_HopL1HopBridge.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 (_HopL1HopBridge *HopL1HopBridgeCallerSession) IsTransferIdSpent(transferId [32]byte) (bool, error) {
   838  	return _HopL1HopBridge.Contract.IsTransferIdSpent(&_HopL1HopBridge.CallOpts, transferId)
   839  }
   840  
   841  // L1CanonicalToken is a free data retrieval call binding the contract method 0xb7a0bda6.
   842  //
   843  // Solidity: function l1CanonicalToken() view returns(address)
   844  func (_HopL1HopBridge *HopL1HopBridgeCaller) L1CanonicalToken(opts *bind.CallOpts) (common.Address, error) {
   845  	var out []interface{}
   846  	err := _HopL1HopBridge.contract.Call(opts, &out, "l1CanonicalToken")
   847  
   848  	if err != nil {
   849  		return *new(common.Address), err
   850  	}
   851  
   852  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   853  
   854  	return out0, err
   855  
   856  }
   857  
   858  // L1CanonicalToken is a free data retrieval call binding the contract method 0xb7a0bda6.
   859  //
   860  // Solidity: function l1CanonicalToken() view returns(address)
   861  func (_HopL1HopBridge *HopL1HopBridgeSession) L1CanonicalToken() (common.Address, error) {
   862  	return _HopL1HopBridge.Contract.L1CanonicalToken(&_HopL1HopBridge.CallOpts)
   863  }
   864  
   865  // L1CanonicalToken is a free data retrieval call binding the contract method 0xb7a0bda6.
   866  //
   867  // Solidity: function l1CanonicalToken() view returns(address)
   868  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) L1CanonicalToken() (common.Address, error) {
   869  	return _HopL1HopBridge.Contract.L1CanonicalToken(&_HopL1HopBridge.CallOpts)
   870  }
   871  
   872  // Migrator is a free data retrieval call binding the contract method 0x7cd07e47.
   873  //
   874  // Solidity: function migrator() view returns(address)
   875  func (_HopL1HopBridge *HopL1HopBridgeCaller) Migrator(opts *bind.CallOpts) (common.Address, error) {
   876  	var out []interface{}
   877  	err := _HopL1HopBridge.contract.Call(opts, &out, "migrator")
   878  
   879  	if err != nil {
   880  		return *new(common.Address), err
   881  	}
   882  
   883  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   884  
   885  	return out0, err
   886  
   887  }
   888  
   889  // Migrator is a free data retrieval call binding the contract method 0x7cd07e47.
   890  //
   891  // Solidity: function migrator() view returns(address)
   892  func (_HopL1HopBridge *HopL1HopBridgeSession) Migrator() (common.Address, error) {
   893  	return _HopL1HopBridge.Contract.Migrator(&_HopL1HopBridge.CallOpts)
   894  }
   895  
   896  // Migrator is a free data retrieval call binding the contract method 0x7cd07e47.
   897  //
   898  // Solidity: function migrator() view returns(address)
   899  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) Migrator() (common.Address, error) {
   900  	return _HopL1HopBridge.Contract.Migrator(&_HopL1HopBridge.CallOpts)
   901  }
   902  
   903  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   904  //
   905  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   906  func (_HopL1HopBridge *HopL1HopBridgeCaller) MinTransferRootBondDelay(opts *bind.CallOpts) (*big.Int, error) {
   907  	var out []interface{}
   908  	err := _HopL1HopBridge.contract.Call(opts, &out, "minTransferRootBondDelay")
   909  
   910  	if err != nil {
   911  		return *new(*big.Int), err
   912  	}
   913  
   914  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   915  
   916  	return out0, err
   917  
   918  }
   919  
   920  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   921  //
   922  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   923  func (_HopL1HopBridge *HopL1HopBridgeSession) MinTransferRootBondDelay() (*big.Int, error) {
   924  	return _HopL1HopBridge.Contract.MinTransferRootBondDelay(&_HopL1HopBridge.CallOpts)
   925  }
   926  
   927  // MinTransferRootBondDelay is a free data retrieval call binding the contract method 0x6cff06a7.
   928  //
   929  // Solidity: function minTransferRootBondDelay() view returns(uint256)
   930  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) MinTransferRootBondDelay() (*big.Int, error) {
   931  	return _HopL1HopBridge.Contract.MinTransferRootBondDelay(&_HopL1HopBridge.CallOpts)
   932  }
   933  
   934  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   935  //
   936  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   937  func (_HopL1HopBridge *HopL1HopBridgeCaller) TimeSlotToAmountBonded(opts *bind.CallOpts, arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   938  	var out []interface{}
   939  	err := _HopL1HopBridge.contract.Call(opts, &out, "timeSlotToAmountBonded", arg0, arg1)
   940  
   941  	if err != nil {
   942  		return *new(*big.Int), err
   943  	}
   944  
   945  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   946  
   947  	return out0, err
   948  
   949  }
   950  
   951  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   952  //
   953  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   954  func (_HopL1HopBridge *HopL1HopBridgeSession) TimeSlotToAmountBonded(arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   955  	return _HopL1HopBridge.Contract.TimeSlotToAmountBonded(&_HopL1HopBridge.CallOpts, arg0, arg1)
   956  }
   957  
   958  // TimeSlotToAmountBonded is a free data retrieval call binding the contract method 0x7398d282.
   959  //
   960  // Solidity: function timeSlotToAmountBonded(uint256 , address ) view returns(uint256)
   961  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) TimeSlotToAmountBonded(arg0 *big.Int, arg1 common.Address) (*big.Int, error) {
   962  	return _HopL1HopBridge.Contract.TimeSlotToAmountBonded(&_HopL1HopBridge.CallOpts, arg0, arg1)
   963  }
   964  
   965  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
   966  //
   967  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
   968  func (_HopL1HopBridge *HopL1HopBridgeCaller) TransferBonds(opts *bind.CallOpts, arg0 [32]byte) (struct {
   969  	Bonder             common.Address
   970  	CreatedAt          *big.Int
   971  	TotalAmount        *big.Int
   972  	ChallengeStartTime *big.Int
   973  	Challenger         common.Address
   974  	ChallengeResolved  bool
   975  }, error) {
   976  	var out []interface{}
   977  	err := _HopL1HopBridge.contract.Call(opts, &out, "transferBonds", arg0)
   978  
   979  	outstruct := new(struct {
   980  		Bonder             common.Address
   981  		CreatedAt          *big.Int
   982  		TotalAmount        *big.Int
   983  		ChallengeStartTime *big.Int
   984  		Challenger         common.Address
   985  		ChallengeResolved  bool
   986  	})
   987  	if err != nil {
   988  		return *outstruct, err
   989  	}
   990  
   991  	outstruct.Bonder = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   992  	outstruct.CreatedAt = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   993  	outstruct.TotalAmount = *abi.ConvertType(out[2], new(*big.Int)).(**big.Int)
   994  	outstruct.ChallengeStartTime = *abi.ConvertType(out[3], new(*big.Int)).(**big.Int)
   995  	outstruct.Challenger = *abi.ConvertType(out[4], new(common.Address)).(*common.Address)
   996  	outstruct.ChallengeResolved = *abi.ConvertType(out[5], new(bool)).(*bool)
   997  
   998  	return *outstruct, err
   999  
  1000  }
  1001  
  1002  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
  1003  //
  1004  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
  1005  func (_HopL1HopBridge *HopL1HopBridgeSession) TransferBonds(arg0 [32]byte) (struct {
  1006  	Bonder             common.Address
  1007  	CreatedAt          *big.Int
  1008  	TotalAmount        *big.Int
  1009  	ChallengeStartTime *big.Int
  1010  	Challenger         common.Address
  1011  	ChallengeResolved  bool
  1012  }, error) {
  1013  	return _HopL1HopBridge.Contract.TransferBonds(&_HopL1HopBridge.CallOpts, arg0)
  1014  }
  1015  
  1016  // TransferBonds is a free data retrieval call binding the contract method 0x5a7e1083.
  1017  //
  1018  // Solidity: function transferBonds(bytes32 ) view returns(address bonder, uint256 createdAt, uint256 totalAmount, uint256 challengeStartTime, address challenger, bool challengeResolved)
  1019  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) TransferBonds(arg0 [32]byte) (struct {
  1020  	Bonder             common.Address
  1021  	CreatedAt          *big.Int
  1022  	TotalAmount        *big.Int
  1023  	ChallengeStartTime *big.Int
  1024  	Challenger         common.Address
  1025  	ChallengeResolved  bool
  1026  }, error) {
  1027  	return _HopL1HopBridge.Contract.TransferBonds(&_HopL1HopBridge.CallOpts, arg0)
  1028  }
  1029  
  1030  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
  1031  //
  1032  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
  1033  func (_HopL1HopBridge *HopL1HopBridgeCaller) TransferRootCommittedAt(opts *bind.CallOpts, arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
  1034  	var out []interface{}
  1035  	err := _HopL1HopBridge.contract.Call(opts, &out, "transferRootCommittedAt", arg0, arg1)
  1036  
  1037  	if err != nil {
  1038  		return *new(*big.Int), err
  1039  	}
  1040  
  1041  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1042  
  1043  	return out0, err
  1044  
  1045  }
  1046  
  1047  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
  1048  //
  1049  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
  1050  func (_HopL1HopBridge *HopL1HopBridgeSession) TransferRootCommittedAt(arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
  1051  	return _HopL1HopBridge.Contract.TransferRootCommittedAt(&_HopL1HopBridge.CallOpts, arg0, arg1)
  1052  }
  1053  
  1054  // TransferRootCommittedAt is a free data retrieval call binding the contract method 0x3b8fea28.
  1055  //
  1056  // Solidity: function transferRootCommittedAt(uint256 , bytes32 ) view returns(uint256)
  1057  func (_HopL1HopBridge *HopL1HopBridgeCallerSession) TransferRootCommittedAt(arg0 *big.Int, arg1 [32]byte) (*big.Int, error) {
  1058  	return _HopL1HopBridge.Contract.TransferRootCommittedAt(&_HopL1HopBridge.CallOpts, arg0, arg1)
  1059  }
  1060  
  1061  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1062  //
  1063  // Solidity: function addBonder(address bonder) returns()
  1064  func (_HopL1HopBridge *HopL1HopBridgeTransactor) AddBonder(opts *bind.TransactOpts, bonder common.Address) (*types.Transaction, error) {
  1065  	return _HopL1HopBridge.contract.Transact(opts, "addBonder", bonder)
  1066  }
  1067  
  1068  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1069  //
  1070  // Solidity: function addBonder(address bonder) returns()
  1071  func (_HopL1HopBridge *HopL1HopBridgeSession) AddBonder(bonder common.Address) (*types.Transaction, error) {
  1072  	return _HopL1HopBridge.Contract.AddBonder(&_HopL1HopBridge.TransactOpts, bonder)
  1073  }
  1074  
  1075  // AddBonder is a paid mutator transaction binding the contract method 0x5325937f.
  1076  //
  1077  // Solidity: function addBonder(address bonder) returns()
  1078  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) AddBonder(bonder common.Address) (*types.Transaction, error) {
  1079  	return _HopL1HopBridge.Contract.AddBonder(&_HopL1HopBridge.TransactOpts, bonder)
  1080  }
  1081  
  1082  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1083  //
  1084  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1085  func (_HopL1HopBridge *HopL1HopBridgeTransactor) BondTransferRoot(opts *bind.TransactOpts, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1086  	return _HopL1HopBridge.contract.Transact(opts, "bondTransferRoot", rootHash, destinationChainId, totalAmount)
  1087  }
  1088  
  1089  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1090  //
  1091  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1092  func (_HopL1HopBridge *HopL1HopBridgeSession) BondTransferRoot(rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1093  	return _HopL1HopBridge.Contract.BondTransferRoot(&_HopL1HopBridge.TransactOpts, rootHash, destinationChainId, totalAmount)
  1094  }
  1095  
  1096  // BondTransferRoot is a paid mutator transaction binding the contract method 0x8d8798bf.
  1097  //
  1098  // Solidity: function bondTransferRoot(bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount) returns()
  1099  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) BondTransferRoot(rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int) (*types.Transaction, error) {
  1100  	return _HopL1HopBridge.Contract.BondTransferRoot(&_HopL1HopBridge.TransactOpts, rootHash, destinationChainId, totalAmount)
  1101  }
  1102  
  1103  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1104  //
  1105  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1106  func (_HopL1HopBridge *HopL1HopBridgeTransactor) BondWithdrawal(opts *bind.TransactOpts, recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1107  	return _HopL1HopBridge.contract.Transact(opts, "bondWithdrawal", recipient, amount, transferNonce, bonderFee)
  1108  }
  1109  
  1110  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1111  //
  1112  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1113  func (_HopL1HopBridge *HopL1HopBridgeSession) BondWithdrawal(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1114  	return _HopL1HopBridge.Contract.BondWithdrawal(&_HopL1HopBridge.TransactOpts, recipient, amount, transferNonce, bonderFee)
  1115  }
  1116  
  1117  // BondWithdrawal is a paid mutator transaction binding the contract method 0x23c452cd.
  1118  //
  1119  // Solidity: function bondWithdrawal(address recipient, uint256 amount, bytes32 transferNonce, uint256 bonderFee) returns()
  1120  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) BondWithdrawal(recipient common.Address, amount *big.Int, transferNonce [32]byte, bonderFee *big.Int) (*types.Transaction, error) {
  1121  	return _HopL1HopBridge.Contract.BondWithdrawal(&_HopL1HopBridge.TransactOpts, recipient, amount, transferNonce, bonderFee)
  1122  }
  1123  
  1124  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1125  //
  1126  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1127  func (_HopL1HopBridge *HopL1HopBridgeTransactor) ChallengeTransferBond(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1128  	return _HopL1HopBridge.contract.Transact(opts, "challengeTransferBond", rootHash, originalAmount, destinationChainId)
  1129  }
  1130  
  1131  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1132  //
  1133  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1134  func (_HopL1HopBridge *HopL1HopBridgeSession) ChallengeTransferBond(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1135  	return _HopL1HopBridge.Contract.ChallengeTransferBond(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1136  }
  1137  
  1138  // ChallengeTransferBond is a paid mutator transaction binding the contract method 0x1bbe15ea.
  1139  //
  1140  // Solidity: function challengeTransferBond(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) payable returns()
  1141  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) ChallengeTransferBond(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1142  	return _HopL1HopBridge.Contract.ChallengeTransferBond(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1143  }
  1144  
  1145  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1146  //
  1147  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1148  func (_HopL1HopBridge *HopL1HopBridgeTransactor) ConfirmTransferRoot(opts *bind.TransactOpts, originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1149  	return _HopL1HopBridge.contract.Transact(opts, "confirmTransferRoot", originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1150  }
  1151  
  1152  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1153  //
  1154  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1155  func (_HopL1HopBridge *HopL1HopBridgeSession) ConfirmTransferRoot(originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1156  	return _HopL1HopBridge.Contract.ConfirmTransferRoot(&_HopL1HopBridge.TransactOpts, originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1157  }
  1158  
  1159  // ConfirmTransferRoot is a paid mutator transaction binding the contract method 0xef6ebe5e.
  1160  //
  1161  // Solidity: function confirmTransferRoot(uint256 originChainId, bytes32 rootHash, uint256 destinationChainId, uint256 totalAmount, uint256 rootCommittedAt) returns()
  1162  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) ConfirmTransferRoot(originChainId *big.Int, rootHash [32]byte, destinationChainId *big.Int, totalAmount *big.Int, rootCommittedAt *big.Int) (*types.Transaction, error) {
  1163  	return _HopL1HopBridge.Contract.ConfirmTransferRoot(&_HopL1HopBridge.TransactOpts, originChainId, rootHash, destinationChainId, totalAmount, rootCommittedAt)
  1164  }
  1165  
  1166  // MigrateTokens is a paid mutator transaction binding the contract method 0xc1684711.
  1167  //
  1168  // Solidity: function migrateTokens(address recipient) returns()
  1169  func (_HopL1HopBridge *HopL1HopBridgeTransactor) MigrateTokens(opts *bind.TransactOpts, recipient common.Address) (*types.Transaction, error) {
  1170  	return _HopL1HopBridge.contract.Transact(opts, "migrateTokens", recipient)
  1171  }
  1172  
  1173  // MigrateTokens is a paid mutator transaction binding the contract method 0xc1684711.
  1174  //
  1175  // Solidity: function migrateTokens(address recipient) returns()
  1176  func (_HopL1HopBridge *HopL1HopBridgeSession) MigrateTokens(recipient common.Address) (*types.Transaction, error) {
  1177  	return _HopL1HopBridge.Contract.MigrateTokens(&_HopL1HopBridge.TransactOpts, recipient)
  1178  }
  1179  
  1180  // MigrateTokens is a paid mutator transaction binding the contract method 0xc1684711.
  1181  //
  1182  // Solidity: function migrateTokens(address recipient) returns()
  1183  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) MigrateTokens(recipient common.Address) (*types.Transaction, error) {
  1184  	return _HopL1HopBridge.Contract.MigrateTokens(&_HopL1HopBridge.TransactOpts, recipient)
  1185  }
  1186  
  1187  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1188  //
  1189  // Solidity: function removeBonder(address bonder) returns()
  1190  func (_HopL1HopBridge *HopL1HopBridgeTransactor) RemoveBonder(opts *bind.TransactOpts, bonder common.Address) (*types.Transaction, error) {
  1191  	return _HopL1HopBridge.contract.Transact(opts, "removeBonder", bonder)
  1192  }
  1193  
  1194  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1195  //
  1196  // Solidity: function removeBonder(address bonder) returns()
  1197  func (_HopL1HopBridge *HopL1HopBridgeSession) RemoveBonder(bonder common.Address) (*types.Transaction, error) {
  1198  	return _HopL1HopBridge.Contract.RemoveBonder(&_HopL1HopBridge.TransactOpts, bonder)
  1199  }
  1200  
  1201  // RemoveBonder is a paid mutator transaction binding the contract method 0x04e6c2c0.
  1202  //
  1203  // Solidity: function removeBonder(address bonder) returns()
  1204  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) RemoveBonder(bonder common.Address) (*types.Transaction, error) {
  1205  	return _HopL1HopBridge.Contract.RemoveBonder(&_HopL1HopBridge.TransactOpts, bonder)
  1206  }
  1207  
  1208  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1209  //
  1210  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1211  func (_HopL1HopBridge *HopL1HopBridgeTransactor) RescueTransferRoot(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1212  	return _HopL1HopBridge.contract.Transact(opts, "rescueTransferRoot", rootHash, originalAmount, recipient)
  1213  }
  1214  
  1215  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1216  //
  1217  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1218  func (_HopL1HopBridge *HopL1HopBridgeSession) RescueTransferRoot(rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1219  	return _HopL1HopBridge.Contract.RescueTransferRoot(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, recipient)
  1220  }
  1221  
  1222  // RescueTransferRoot is a paid mutator transaction binding the contract method 0xcbd1642e.
  1223  //
  1224  // Solidity: function rescueTransferRoot(bytes32 rootHash, uint256 originalAmount, address recipient) returns()
  1225  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) RescueTransferRoot(rootHash [32]byte, originalAmount *big.Int, recipient common.Address) (*types.Transaction, error) {
  1226  	return _HopL1HopBridge.Contract.RescueTransferRoot(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, recipient)
  1227  }
  1228  
  1229  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1230  //
  1231  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1232  func (_HopL1HopBridge *HopL1HopBridgeTransactor) ResolveChallenge(opts *bind.TransactOpts, rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1233  	return _HopL1HopBridge.contract.Transact(opts, "resolveChallenge", rootHash, originalAmount, destinationChainId)
  1234  }
  1235  
  1236  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1237  //
  1238  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1239  func (_HopL1HopBridge *HopL1HopBridgeSession) ResolveChallenge(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1240  	return _HopL1HopBridge.Contract.ResolveChallenge(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1241  }
  1242  
  1243  // ResolveChallenge is a paid mutator transaction binding the contract method 0x81707b80.
  1244  //
  1245  // Solidity: function resolveChallenge(bytes32 rootHash, uint256 originalAmount, uint256 destinationChainId) returns()
  1246  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) ResolveChallenge(rootHash [32]byte, originalAmount *big.Int, destinationChainId *big.Int) (*types.Transaction, error) {
  1247  	return _HopL1HopBridge.Contract.ResolveChallenge(&_HopL1HopBridge.TransactOpts, rootHash, originalAmount, destinationChainId)
  1248  }
  1249  
  1250  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1251  //
  1252  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1253  func (_HopL1HopBridge *HopL1HopBridgeTransactor) 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) {
  1254  	return _HopL1HopBridge.contract.Transact(opts, "sendToL2", chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1255  }
  1256  
  1257  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1258  //
  1259  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1260  func (_HopL1HopBridge *HopL1HopBridgeSession) 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) {
  1261  	return _HopL1HopBridge.Contract.SendToL2(&_HopL1HopBridge.TransactOpts, chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1262  }
  1263  
  1264  // SendToL2 is a paid mutator transaction binding the contract method 0xdeace8f5.
  1265  //
  1266  // Solidity: function sendToL2(uint256 chainId, address recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address relayer, uint256 relayerFee) payable returns()
  1267  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) 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) {
  1268  	return _HopL1HopBridge.Contract.SendToL2(&_HopL1HopBridge.TransactOpts, chainId, recipient, amount, amountOutMin, deadline, relayer, relayerFee)
  1269  }
  1270  
  1271  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1272  //
  1273  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1274  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetChainIdDepositsPaused(opts *bind.TransactOpts, chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1275  	return _HopL1HopBridge.contract.Transact(opts, "setChainIdDepositsPaused", chainId, isPaused)
  1276  }
  1277  
  1278  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1279  //
  1280  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1281  func (_HopL1HopBridge *HopL1HopBridgeSession) SetChainIdDepositsPaused(chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1282  	return _HopL1HopBridge.Contract.SetChainIdDepositsPaused(&_HopL1HopBridge.TransactOpts, chainId, isPaused)
  1283  }
  1284  
  1285  // SetChainIdDepositsPaused is a paid mutator transaction binding the contract method 0x14942024.
  1286  //
  1287  // Solidity: function setChainIdDepositsPaused(uint256 chainId, bool isPaused) returns()
  1288  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetChainIdDepositsPaused(chainId *big.Int, isPaused bool) (*types.Transaction, error) {
  1289  	return _HopL1HopBridge.Contract.SetChainIdDepositsPaused(&_HopL1HopBridge.TransactOpts, chainId, isPaused)
  1290  }
  1291  
  1292  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1293  //
  1294  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1295  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetChallengePeriod(opts *bind.TransactOpts, _challengePeriod *big.Int) (*types.Transaction, error) {
  1296  	return _HopL1HopBridge.contract.Transact(opts, "setChallengePeriod", _challengePeriod)
  1297  }
  1298  
  1299  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1300  //
  1301  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1302  func (_HopL1HopBridge *HopL1HopBridgeSession) SetChallengePeriod(_challengePeriod *big.Int) (*types.Transaction, error) {
  1303  	return _HopL1HopBridge.Contract.SetChallengePeriod(&_HopL1HopBridge.TransactOpts, _challengePeriod)
  1304  }
  1305  
  1306  // SetChallengePeriod is a paid mutator transaction binding the contract method 0x5d475fdd.
  1307  //
  1308  // Solidity: function setChallengePeriod(uint256 _challengePeriod) returns()
  1309  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetChallengePeriod(_challengePeriod *big.Int) (*types.Transaction, error) {
  1310  	return _HopL1HopBridge.Contract.SetChallengePeriod(&_HopL1HopBridge.TransactOpts, _challengePeriod)
  1311  }
  1312  
  1313  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1314  //
  1315  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1316  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetChallengeResolutionPeriod(opts *bind.TransactOpts, _challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1317  	return _HopL1HopBridge.contract.Transact(opts, "setChallengeResolutionPeriod", _challengeResolutionPeriod)
  1318  }
  1319  
  1320  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1321  //
  1322  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1323  func (_HopL1HopBridge *HopL1HopBridgeSession) SetChallengeResolutionPeriod(_challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1324  	return _HopL1HopBridge.Contract.SetChallengeResolutionPeriod(&_HopL1HopBridge.TransactOpts, _challengeResolutionPeriod)
  1325  }
  1326  
  1327  // SetChallengeResolutionPeriod is a paid mutator transaction binding the contract method 0xeecd57e6.
  1328  //
  1329  // Solidity: function setChallengeResolutionPeriod(uint256 _challengeResolutionPeriod) returns()
  1330  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetChallengeResolutionPeriod(_challengeResolutionPeriod *big.Int) (*types.Transaction, error) {
  1331  	return _HopL1HopBridge.Contract.SetChallengeResolutionPeriod(&_HopL1HopBridge.TransactOpts, _challengeResolutionPeriod)
  1332  }
  1333  
  1334  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1335  //
  1336  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1337  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetCrossDomainMessengerWrapper(opts *bind.TransactOpts, chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1338  	return _HopL1HopBridge.contract.Transact(opts, "setCrossDomainMessengerWrapper", chainId, _crossDomainMessengerWrapper)
  1339  }
  1340  
  1341  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1342  //
  1343  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1344  func (_HopL1HopBridge *HopL1HopBridgeSession) SetCrossDomainMessengerWrapper(chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1345  	return _HopL1HopBridge.Contract.SetCrossDomainMessengerWrapper(&_HopL1HopBridge.TransactOpts, chainId, _crossDomainMessengerWrapper)
  1346  }
  1347  
  1348  // SetCrossDomainMessengerWrapper is a paid mutator transaction binding the contract method 0xd4448163.
  1349  //
  1350  // Solidity: function setCrossDomainMessengerWrapper(uint256 chainId, address _crossDomainMessengerWrapper) returns()
  1351  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetCrossDomainMessengerWrapper(chainId *big.Int, _crossDomainMessengerWrapper common.Address) (*types.Transaction, error) {
  1352  	return _HopL1HopBridge.Contract.SetCrossDomainMessengerWrapper(&_HopL1HopBridge.TransactOpts, chainId, _crossDomainMessengerWrapper)
  1353  }
  1354  
  1355  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1356  //
  1357  // Solidity: function setGovernance(address _newGovernance) returns()
  1358  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetGovernance(opts *bind.TransactOpts, _newGovernance common.Address) (*types.Transaction, error) {
  1359  	return _HopL1HopBridge.contract.Transact(opts, "setGovernance", _newGovernance)
  1360  }
  1361  
  1362  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1363  //
  1364  // Solidity: function setGovernance(address _newGovernance) returns()
  1365  func (_HopL1HopBridge *HopL1HopBridgeSession) SetGovernance(_newGovernance common.Address) (*types.Transaction, error) {
  1366  	return _HopL1HopBridge.Contract.SetGovernance(&_HopL1HopBridge.TransactOpts, _newGovernance)
  1367  }
  1368  
  1369  // SetGovernance is a paid mutator transaction binding the contract method 0xab033ea9.
  1370  //
  1371  // Solidity: function setGovernance(address _newGovernance) returns()
  1372  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetGovernance(_newGovernance common.Address) (*types.Transaction, error) {
  1373  	return _HopL1HopBridge.Contract.SetGovernance(&_HopL1HopBridge.TransactOpts, _newGovernance)
  1374  }
  1375  
  1376  // SetMigrator is a paid mutator transaction binding the contract method 0x23cf3118.
  1377  //
  1378  // Solidity: function setMigrator(address _newMigrator) returns()
  1379  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetMigrator(opts *bind.TransactOpts, _newMigrator common.Address) (*types.Transaction, error) {
  1380  	return _HopL1HopBridge.contract.Transact(opts, "setMigrator", _newMigrator)
  1381  }
  1382  
  1383  // SetMigrator is a paid mutator transaction binding the contract method 0x23cf3118.
  1384  //
  1385  // Solidity: function setMigrator(address _newMigrator) returns()
  1386  func (_HopL1HopBridge *HopL1HopBridgeSession) SetMigrator(_newMigrator common.Address) (*types.Transaction, error) {
  1387  	return _HopL1HopBridge.Contract.SetMigrator(&_HopL1HopBridge.TransactOpts, _newMigrator)
  1388  }
  1389  
  1390  // SetMigrator is a paid mutator transaction binding the contract method 0x23cf3118.
  1391  //
  1392  // Solidity: function setMigrator(address _newMigrator) returns()
  1393  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetMigrator(_newMigrator common.Address) (*types.Transaction, error) {
  1394  	return _HopL1HopBridge.Contract.SetMigrator(&_HopL1HopBridge.TransactOpts, _newMigrator)
  1395  }
  1396  
  1397  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1398  //
  1399  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1400  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SetMinTransferRootBondDelay(opts *bind.TransactOpts, _minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1401  	return _HopL1HopBridge.contract.Transact(opts, "setMinTransferRootBondDelay", _minTransferRootBondDelay)
  1402  }
  1403  
  1404  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1405  //
  1406  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1407  func (_HopL1HopBridge *HopL1HopBridgeSession) SetMinTransferRootBondDelay(_minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1408  	return _HopL1HopBridge.Contract.SetMinTransferRootBondDelay(&_HopL1HopBridge.TransactOpts, _minTransferRootBondDelay)
  1409  }
  1410  
  1411  // SetMinTransferRootBondDelay is a paid mutator transaction binding the contract method 0x39ada669.
  1412  //
  1413  // Solidity: function setMinTransferRootBondDelay(uint256 _minTransferRootBondDelay) returns()
  1414  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SetMinTransferRootBondDelay(_minTransferRootBondDelay *big.Int) (*types.Transaction, error) {
  1415  	return _HopL1HopBridge.Contract.SetMinTransferRootBondDelay(&_HopL1HopBridge.TransactOpts, _minTransferRootBondDelay)
  1416  }
  1417  
  1418  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1419  //
  1420  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1421  func (_HopL1HopBridge *HopL1HopBridgeTransactor) 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) {
  1422  	return _HopL1HopBridge.contract.Transact(opts, "settleBondedWithdrawal", bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1423  }
  1424  
  1425  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1426  //
  1427  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1428  func (_HopL1HopBridge *HopL1HopBridgeSession) 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) {
  1429  	return _HopL1HopBridge.Contract.SettleBondedWithdrawal(&_HopL1HopBridge.TransactOpts, bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1430  }
  1431  
  1432  // SettleBondedWithdrawal is a paid mutator transaction binding the contract method 0xc7525dd3.
  1433  //
  1434  // Solidity: function settleBondedWithdrawal(address bonder, bytes32 transferId, bytes32 rootHash, uint256 transferRootTotalAmount, uint256 transferIdTreeIndex, bytes32[] siblings, uint256 totalLeaves) returns()
  1435  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) 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) {
  1436  	return _HopL1HopBridge.Contract.SettleBondedWithdrawal(&_HopL1HopBridge.TransactOpts, bonder, transferId, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1437  }
  1438  
  1439  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1440  //
  1441  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1442  func (_HopL1HopBridge *HopL1HopBridgeTransactor) SettleBondedWithdrawals(opts *bind.TransactOpts, bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1443  	return _HopL1HopBridge.contract.Transact(opts, "settleBondedWithdrawals", bonder, transferIds, totalAmount)
  1444  }
  1445  
  1446  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1447  //
  1448  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1449  func (_HopL1HopBridge *HopL1HopBridgeSession) SettleBondedWithdrawals(bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1450  	return _HopL1HopBridge.Contract.SettleBondedWithdrawals(&_HopL1HopBridge.TransactOpts, bonder, transferIds, totalAmount)
  1451  }
  1452  
  1453  // SettleBondedWithdrawals is a paid mutator transaction binding the contract method 0xb162717e.
  1454  //
  1455  // Solidity: function settleBondedWithdrawals(address bonder, bytes32[] transferIds, uint256 totalAmount) returns()
  1456  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) SettleBondedWithdrawals(bonder common.Address, transferIds [][32]byte, totalAmount *big.Int) (*types.Transaction, error) {
  1457  	return _HopL1HopBridge.Contract.SettleBondedWithdrawals(&_HopL1HopBridge.TransactOpts, bonder, transferIds, totalAmount)
  1458  }
  1459  
  1460  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1461  //
  1462  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1463  func (_HopL1HopBridge *HopL1HopBridgeTransactor) Stake(opts *bind.TransactOpts, bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1464  	return _HopL1HopBridge.contract.Transact(opts, "stake", bonder, amount)
  1465  }
  1466  
  1467  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1468  //
  1469  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1470  func (_HopL1HopBridge *HopL1HopBridgeSession) Stake(bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1471  	return _HopL1HopBridge.Contract.Stake(&_HopL1HopBridge.TransactOpts, bonder, amount)
  1472  }
  1473  
  1474  // Stake is a paid mutator transaction binding the contract method 0xadc9772e.
  1475  //
  1476  // Solidity: function stake(address bonder, uint256 amount) payable returns()
  1477  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) Stake(bonder common.Address, amount *big.Int) (*types.Transaction, error) {
  1478  	return _HopL1HopBridge.Contract.Stake(&_HopL1HopBridge.TransactOpts, bonder, amount)
  1479  }
  1480  
  1481  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1482  //
  1483  // Solidity: function unstake(uint256 amount) returns()
  1484  func (_HopL1HopBridge *HopL1HopBridgeTransactor) Unstake(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  1485  	return _HopL1HopBridge.contract.Transact(opts, "unstake", amount)
  1486  }
  1487  
  1488  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1489  //
  1490  // Solidity: function unstake(uint256 amount) returns()
  1491  func (_HopL1HopBridge *HopL1HopBridgeSession) Unstake(amount *big.Int) (*types.Transaction, error) {
  1492  	return _HopL1HopBridge.Contract.Unstake(&_HopL1HopBridge.TransactOpts, amount)
  1493  }
  1494  
  1495  // Unstake is a paid mutator transaction binding the contract method 0x2e17de78.
  1496  //
  1497  // Solidity: function unstake(uint256 amount) returns()
  1498  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) Unstake(amount *big.Int) (*types.Transaction, error) {
  1499  	return _HopL1HopBridge.Contract.Unstake(&_HopL1HopBridge.TransactOpts, amount)
  1500  }
  1501  
  1502  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1503  //
  1504  // 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()
  1505  func (_HopL1HopBridge *HopL1HopBridgeTransactor) 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) {
  1506  	return _HopL1HopBridge.contract.Transact(opts, "withdraw", recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1507  }
  1508  
  1509  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1510  //
  1511  // 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()
  1512  func (_HopL1HopBridge *HopL1HopBridgeSession) 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) {
  1513  	return _HopL1HopBridge.Contract.Withdraw(&_HopL1HopBridge.TransactOpts, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1514  }
  1515  
  1516  // Withdraw is a paid mutator transaction binding the contract method 0x0f7aadb7.
  1517  //
  1518  // 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()
  1519  func (_HopL1HopBridge *HopL1HopBridgeTransactorSession) 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) {
  1520  	return _HopL1HopBridge.Contract.Withdraw(&_HopL1HopBridge.TransactOpts, recipient, amount, transferNonce, bonderFee, amountOutMin, deadline, rootHash, transferRootTotalAmount, transferIdTreeIndex, siblings, totalLeaves)
  1521  }
  1522  
  1523  // HopL1HopBridgeBonderAddedIterator is returned from FilterBonderAdded and is used to iterate over the raw logs and unpacked data for BonderAdded events raised by the HopL1HopBridge contract.
  1524  type HopL1HopBridgeBonderAddedIterator struct {
  1525  	Event *HopL1HopBridgeBonderAdded // Event containing the contract specifics and raw log
  1526  
  1527  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1528  	event    string              // Event name to use for unpacking event data
  1529  
  1530  	logs chan types.Log        // Log channel receiving the found contract events
  1531  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1532  	done bool                  // Whether the subscription completed delivering logs
  1533  	fail error                 // Occurred error to stop iteration
  1534  }
  1535  
  1536  // Next advances the iterator to the subsequent event, returning whether there
  1537  // are any more events found. In case of a retrieval or parsing error, false is
  1538  // returned and Error() can be queried for the exact failure.
  1539  func (it *HopL1HopBridgeBonderAddedIterator) Next() bool {
  1540  	// If the iterator failed, stop iterating
  1541  	if it.fail != nil {
  1542  		return false
  1543  	}
  1544  	// If the iterator completed, deliver directly whatever's available
  1545  	if it.done {
  1546  		select {
  1547  		case log := <-it.logs:
  1548  			it.Event = new(HopL1HopBridgeBonderAdded)
  1549  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1550  				it.fail = err
  1551  				return false
  1552  			}
  1553  			it.Event.Raw = log
  1554  			return true
  1555  
  1556  		default:
  1557  			return false
  1558  		}
  1559  	}
  1560  	// Iterator still in progress, wait for either a data or an error event
  1561  	select {
  1562  	case log := <-it.logs:
  1563  		it.Event = new(HopL1HopBridgeBonderAdded)
  1564  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1565  			it.fail = err
  1566  			return false
  1567  		}
  1568  		it.Event.Raw = log
  1569  		return true
  1570  
  1571  	case err := <-it.sub.Err():
  1572  		it.done = true
  1573  		it.fail = err
  1574  		return it.Next()
  1575  	}
  1576  }
  1577  
  1578  // Error returns any retrieval or parsing error occurred during filtering.
  1579  func (it *HopL1HopBridgeBonderAddedIterator) Error() error {
  1580  	return it.fail
  1581  }
  1582  
  1583  // Close terminates the iteration process, releasing any pending underlying
  1584  // resources.
  1585  func (it *HopL1HopBridgeBonderAddedIterator) Close() error {
  1586  	it.sub.Unsubscribe()
  1587  	return nil
  1588  }
  1589  
  1590  // HopL1HopBridgeBonderAdded represents a BonderAdded event raised by the HopL1HopBridge contract.
  1591  type HopL1HopBridgeBonderAdded struct {
  1592  	NewBonder common.Address
  1593  	Raw       types.Log // Blockchain specific contextual infos
  1594  }
  1595  
  1596  // FilterBonderAdded is a free log retrieval operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1597  //
  1598  // Solidity: event BonderAdded(address indexed newBonder)
  1599  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterBonderAdded(opts *bind.FilterOpts, newBonder []common.Address) (*HopL1HopBridgeBonderAddedIterator, error) {
  1600  
  1601  	var newBonderRule []interface{}
  1602  	for _, newBonderItem := range newBonder {
  1603  		newBonderRule = append(newBonderRule, newBonderItem)
  1604  	}
  1605  
  1606  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "BonderAdded", newBonderRule)
  1607  	if err != nil {
  1608  		return nil, err
  1609  	}
  1610  	return &HopL1HopBridgeBonderAddedIterator{contract: _HopL1HopBridge.contract, event: "BonderAdded", logs: logs, sub: sub}, nil
  1611  }
  1612  
  1613  // WatchBonderAdded is a free log subscription operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1614  //
  1615  // Solidity: event BonderAdded(address indexed newBonder)
  1616  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchBonderAdded(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeBonderAdded, newBonder []common.Address) (event.Subscription, error) {
  1617  
  1618  	var newBonderRule []interface{}
  1619  	for _, newBonderItem := range newBonder {
  1620  		newBonderRule = append(newBonderRule, newBonderItem)
  1621  	}
  1622  
  1623  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "BonderAdded", newBonderRule)
  1624  	if err != nil {
  1625  		return nil, err
  1626  	}
  1627  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1628  		defer sub.Unsubscribe()
  1629  		for {
  1630  			select {
  1631  			case log := <-logs:
  1632  				// New log arrived, parse the event and forward to the user
  1633  				event := new(HopL1HopBridgeBonderAdded)
  1634  				if err := _HopL1HopBridge.contract.UnpackLog(event, "BonderAdded", log); err != nil {
  1635  					return err
  1636  				}
  1637  				event.Raw = log
  1638  
  1639  				select {
  1640  				case sink <- event:
  1641  				case err := <-sub.Err():
  1642  					return err
  1643  				case <-quit:
  1644  					return nil
  1645  				}
  1646  			case err := <-sub.Err():
  1647  				return err
  1648  			case <-quit:
  1649  				return nil
  1650  			}
  1651  		}
  1652  	}), nil
  1653  }
  1654  
  1655  // ParseBonderAdded is a log parse operation binding the contract event 0x2cec73b7434d3b91198ad1a618f63e6a0761ce281af5ec9ec76606d948d03e23.
  1656  //
  1657  // Solidity: event BonderAdded(address indexed newBonder)
  1658  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseBonderAdded(log types.Log) (*HopL1HopBridgeBonderAdded, error) {
  1659  	event := new(HopL1HopBridgeBonderAdded)
  1660  	if err := _HopL1HopBridge.contract.UnpackLog(event, "BonderAdded", log); err != nil {
  1661  		return nil, err
  1662  	}
  1663  	event.Raw = log
  1664  	return event, nil
  1665  }
  1666  
  1667  // HopL1HopBridgeBonderRemovedIterator is returned from FilterBonderRemoved and is used to iterate over the raw logs and unpacked data for BonderRemoved events raised by the HopL1HopBridge contract.
  1668  type HopL1HopBridgeBonderRemovedIterator struct {
  1669  	Event *HopL1HopBridgeBonderRemoved // Event containing the contract specifics and raw log
  1670  
  1671  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1672  	event    string              // Event name to use for unpacking event data
  1673  
  1674  	logs chan types.Log        // Log channel receiving the found contract events
  1675  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1676  	done bool                  // Whether the subscription completed delivering logs
  1677  	fail error                 // Occurred error to stop iteration
  1678  }
  1679  
  1680  // Next advances the iterator to the subsequent event, returning whether there
  1681  // are any more events found. In case of a retrieval or parsing error, false is
  1682  // returned and Error() can be queried for the exact failure.
  1683  func (it *HopL1HopBridgeBonderRemovedIterator) Next() bool {
  1684  	// If the iterator failed, stop iterating
  1685  	if it.fail != nil {
  1686  		return false
  1687  	}
  1688  	// If the iterator completed, deliver directly whatever's available
  1689  	if it.done {
  1690  		select {
  1691  		case log := <-it.logs:
  1692  			it.Event = new(HopL1HopBridgeBonderRemoved)
  1693  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1694  				it.fail = err
  1695  				return false
  1696  			}
  1697  			it.Event.Raw = log
  1698  			return true
  1699  
  1700  		default:
  1701  			return false
  1702  		}
  1703  	}
  1704  	// Iterator still in progress, wait for either a data or an error event
  1705  	select {
  1706  	case log := <-it.logs:
  1707  		it.Event = new(HopL1HopBridgeBonderRemoved)
  1708  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1709  			it.fail = err
  1710  			return false
  1711  		}
  1712  		it.Event.Raw = log
  1713  		return true
  1714  
  1715  	case err := <-it.sub.Err():
  1716  		it.done = true
  1717  		it.fail = err
  1718  		return it.Next()
  1719  	}
  1720  }
  1721  
  1722  // Error returns any retrieval or parsing error occurred during filtering.
  1723  func (it *HopL1HopBridgeBonderRemovedIterator) Error() error {
  1724  	return it.fail
  1725  }
  1726  
  1727  // Close terminates the iteration process, releasing any pending underlying
  1728  // resources.
  1729  func (it *HopL1HopBridgeBonderRemovedIterator) Close() error {
  1730  	it.sub.Unsubscribe()
  1731  	return nil
  1732  }
  1733  
  1734  // HopL1HopBridgeBonderRemoved represents a BonderRemoved event raised by the HopL1HopBridge contract.
  1735  type HopL1HopBridgeBonderRemoved struct {
  1736  	PreviousBonder common.Address
  1737  	Raw            types.Log // Blockchain specific contextual infos
  1738  }
  1739  
  1740  // FilterBonderRemoved is a free log retrieval operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1741  //
  1742  // Solidity: event BonderRemoved(address indexed previousBonder)
  1743  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterBonderRemoved(opts *bind.FilterOpts, previousBonder []common.Address) (*HopL1HopBridgeBonderRemovedIterator, error) {
  1744  
  1745  	var previousBonderRule []interface{}
  1746  	for _, previousBonderItem := range previousBonder {
  1747  		previousBonderRule = append(previousBonderRule, previousBonderItem)
  1748  	}
  1749  
  1750  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "BonderRemoved", previousBonderRule)
  1751  	if err != nil {
  1752  		return nil, err
  1753  	}
  1754  	return &HopL1HopBridgeBonderRemovedIterator{contract: _HopL1HopBridge.contract, event: "BonderRemoved", logs: logs, sub: sub}, nil
  1755  }
  1756  
  1757  // WatchBonderRemoved is a free log subscription operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1758  //
  1759  // Solidity: event BonderRemoved(address indexed previousBonder)
  1760  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchBonderRemoved(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeBonderRemoved, previousBonder []common.Address) (event.Subscription, error) {
  1761  
  1762  	var previousBonderRule []interface{}
  1763  	for _, previousBonderItem := range previousBonder {
  1764  		previousBonderRule = append(previousBonderRule, previousBonderItem)
  1765  	}
  1766  
  1767  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "BonderRemoved", previousBonderRule)
  1768  	if err != nil {
  1769  		return nil, err
  1770  	}
  1771  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1772  		defer sub.Unsubscribe()
  1773  		for {
  1774  			select {
  1775  			case log := <-logs:
  1776  				// New log arrived, parse the event and forward to the user
  1777  				event := new(HopL1HopBridgeBonderRemoved)
  1778  				if err := _HopL1HopBridge.contract.UnpackLog(event, "BonderRemoved", log); err != nil {
  1779  					return err
  1780  				}
  1781  				event.Raw = log
  1782  
  1783  				select {
  1784  				case sink <- event:
  1785  				case err := <-sub.Err():
  1786  					return err
  1787  				case <-quit:
  1788  					return nil
  1789  				}
  1790  			case err := <-sub.Err():
  1791  				return err
  1792  			case <-quit:
  1793  				return nil
  1794  			}
  1795  		}
  1796  	}), nil
  1797  }
  1798  
  1799  // ParseBonderRemoved is a log parse operation binding the contract event 0x4234ba611d325b3ba434c4e1b037967b955b1274d4185ee9847b7491111a48ff.
  1800  //
  1801  // Solidity: event BonderRemoved(address indexed previousBonder)
  1802  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseBonderRemoved(log types.Log) (*HopL1HopBridgeBonderRemoved, error) {
  1803  	event := new(HopL1HopBridgeBonderRemoved)
  1804  	if err := _HopL1HopBridge.contract.UnpackLog(event, "BonderRemoved", log); err != nil {
  1805  		return nil, err
  1806  	}
  1807  	event.Raw = log
  1808  	return event, nil
  1809  }
  1810  
  1811  // HopL1HopBridgeChallengeResolvedIterator is returned from FilterChallengeResolved and is used to iterate over the raw logs and unpacked data for ChallengeResolved events raised by the HopL1HopBridge contract.
  1812  type HopL1HopBridgeChallengeResolvedIterator struct {
  1813  	Event *HopL1HopBridgeChallengeResolved // Event containing the contract specifics and raw log
  1814  
  1815  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1816  	event    string              // Event name to use for unpacking event data
  1817  
  1818  	logs chan types.Log        // Log channel receiving the found contract events
  1819  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1820  	done bool                  // Whether the subscription completed delivering logs
  1821  	fail error                 // Occurred error to stop iteration
  1822  }
  1823  
  1824  // Next advances the iterator to the subsequent event, returning whether there
  1825  // are any more events found. In case of a retrieval or parsing error, false is
  1826  // returned and Error() can be queried for the exact failure.
  1827  func (it *HopL1HopBridgeChallengeResolvedIterator) Next() bool {
  1828  	// If the iterator failed, stop iterating
  1829  	if it.fail != nil {
  1830  		return false
  1831  	}
  1832  	// If the iterator completed, deliver directly whatever's available
  1833  	if it.done {
  1834  		select {
  1835  		case log := <-it.logs:
  1836  			it.Event = new(HopL1HopBridgeChallengeResolved)
  1837  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1838  				it.fail = err
  1839  				return false
  1840  			}
  1841  			it.Event.Raw = log
  1842  			return true
  1843  
  1844  		default:
  1845  			return false
  1846  		}
  1847  	}
  1848  	// Iterator still in progress, wait for either a data or an error event
  1849  	select {
  1850  	case log := <-it.logs:
  1851  		it.Event = new(HopL1HopBridgeChallengeResolved)
  1852  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1853  			it.fail = err
  1854  			return false
  1855  		}
  1856  		it.Event.Raw = log
  1857  		return true
  1858  
  1859  	case err := <-it.sub.Err():
  1860  		it.done = true
  1861  		it.fail = err
  1862  		return it.Next()
  1863  	}
  1864  }
  1865  
  1866  // Error returns any retrieval or parsing error occurred during filtering.
  1867  func (it *HopL1HopBridgeChallengeResolvedIterator) Error() error {
  1868  	return it.fail
  1869  }
  1870  
  1871  // Close terminates the iteration process, releasing any pending underlying
  1872  // resources.
  1873  func (it *HopL1HopBridgeChallengeResolvedIterator) Close() error {
  1874  	it.sub.Unsubscribe()
  1875  	return nil
  1876  }
  1877  
  1878  // HopL1HopBridgeChallengeResolved represents a ChallengeResolved event raised by the HopL1HopBridge contract.
  1879  type HopL1HopBridgeChallengeResolved struct {
  1880  	TransferRootId [32]byte
  1881  	RootHash       [32]byte
  1882  	OriginalAmount *big.Int
  1883  	Raw            types.Log // Blockchain specific contextual infos
  1884  }
  1885  
  1886  // FilterChallengeResolved is a free log retrieval operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1887  //
  1888  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1889  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterChallengeResolved(opts *bind.FilterOpts, transferRootId [][32]byte, rootHash [][32]byte) (*HopL1HopBridgeChallengeResolvedIterator, error) {
  1890  
  1891  	var transferRootIdRule []interface{}
  1892  	for _, transferRootIdItem := range transferRootId {
  1893  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  1894  	}
  1895  	var rootHashRule []interface{}
  1896  	for _, rootHashItem := range rootHash {
  1897  		rootHashRule = append(rootHashRule, rootHashItem)
  1898  	}
  1899  
  1900  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "ChallengeResolved", transferRootIdRule, rootHashRule)
  1901  	if err != nil {
  1902  		return nil, err
  1903  	}
  1904  	return &HopL1HopBridgeChallengeResolvedIterator{contract: _HopL1HopBridge.contract, event: "ChallengeResolved", logs: logs, sub: sub}, nil
  1905  }
  1906  
  1907  // WatchChallengeResolved is a free log subscription operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1908  //
  1909  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1910  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchChallengeResolved(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeChallengeResolved, transferRootId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  1911  
  1912  	var transferRootIdRule []interface{}
  1913  	for _, transferRootIdItem := range transferRootId {
  1914  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  1915  	}
  1916  	var rootHashRule []interface{}
  1917  	for _, rootHashItem := range rootHash {
  1918  		rootHashRule = append(rootHashRule, rootHashItem)
  1919  	}
  1920  
  1921  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "ChallengeResolved", transferRootIdRule, rootHashRule)
  1922  	if err != nil {
  1923  		return nil, err
  1924  	}
  1925  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1926  		defer sub.Unsubscribe()
  1927  		for {
  1928  			select {
  1929  			case log := <-logs:
  1930  				// New log arrived, parse the event and forward to the user
  1931  				event := new(HopL1HopBridgeChallengeResolved)
  1932  				if err := _HopL1HopBridge.contract.UnpackLog(event, "ChallengeResolved", log); err != nil {
  1933  					return err
  1934  				}
  1935  				event.Raw = log
  1936  
  1937  				select {
  1938  				case sink <- event:
  1939  				case err := <-sub.Err():
  1940  					return err
  1941  				case <-quit:
  1942  					return nil
  1943  				}
  1944  			case err := <-sub.Err():
  1945  				return err
  1946  			case <-quit:
  1947  				return nil
  1948  			}
  1949  		}
  1950  	}), nil
  1951  }
  1952  
  1953  // ParseChallengeResolved is a log parse operation binding the contract event 0x4a99228a8a6d774d261be57ab0ed833bb1bae1f22bbbd3d4767b75ad03fdddf7.
  1954  //
  1955  // Solidity: event ChallengeResolved(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  1956  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseChallengeResolved(log types.Log) (*HopL1HopBridgeChallengeResolved, error) {
  1957  	event := new(HopL1HopBridgeChallengeResolved)
  1958  	if err := _HopL1HopBridge.contract.UnpackLog(event, "ChallengeResolved", log); err != nil {
  1959  		return nil, err
  1960  	}
  1961  	event.Raw = log
  1962  	return event, nil
  1963  }
  1964  
  1965  // HopL1HopBridgeMultipleWithdrawalsSettledIterator is returned from FilterMultipleWithdrawalsSettled and is used to iterate over the raw logs and unpacked data for MultipleWithdrawalsSettled events raised by the HopL1HopBridge contract.
  1966  type HopL1HopBridgeMultipleWithdrawalsSettledIterator struct {
  1967  	Event *HopL1HopBridgeMultipleWithdrawalsSettled // Event containing the contract specifics and raw log
  1968  
  1969  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1970  	event    string              // Event name to use for unpacking event data
  1971  
  1972  	logs chan types.Log        // Log channel receiving the found contract events
  1973  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1974  	done bool                  // Whether the subscription completed delivering logs
  1975  	fail error                 // Occurred error to stop iteration
  1976  }
  1977  
  1978  // Next advances the iterator to the subsequent event, returning whether there
  1979  // are any more events found. In case of a retrieval or parsing error, false is
  1980  // returned and Error() can be queried for the exact failure.
  1981  func (it *HopL1HopBridgeMultipleWithdrawalsSettledIterator) Next() bool {
  1982  	// If the iterator failed, stop iterating
  1983  	if it.fail != nil {
  1984  		return false
  1985  	}
  1986  	// If the iterator completed, deliver directly whatever's available
  1987  	if it.done {
  1988  		select {
  1989  		case log := <-it.logs:
  1990  			it.Event = new(HopL1HopBridgeMultipleWithdrawalsSettled)
  1991  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1992  				it.fail = err
  1993  				return false
  1994  			}
  1995  			it.Event.Raw = log
  1996  			return true
  1997  
  1998  		default:
  1999  			return false
  2000  		}
  2001  	}
  2002  	// Iterator still in progress, wait for either a data or an error event
  2003  	select {
  2004  	case log := <-it.logs:
  2005  		it.Event = new(HopL1HopBridgeMultipleWithdrawalsSettled)
  2006  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2007  			it.fail = err
  2008  			return false
  2009  		}
  2010  		it.Event.Raw = log
  2011  		return true
  2012  
  2013  	case err := <-it.sub.Err():
  2014  		it.done = true
  2015  		it.fail = err
  2016  		return it.Next()
  2017  	}
  2018  }
  2019  
  2020  // Error returns any retrieval or parsing error occurred during filtering.
  2021  func (it *HopL1HopBridgeMultipleWithdrawalsSettledIterator) Error() error {
  2022  	return it.fail
  2023  }
  2024  
  2025  // Close terminates the iteration process, releasing any pending underlying
  2026  // resources.
  2027  func (it *HopL1HopBridgeMultipleWithdrawalsSettledIterator) Close() error {
  2028  	it.sub.Unsubscribe()
  2029  	return nil
  2030  }
  2031  
  2032  // HopL1HopBridgeMultipleWithdrawalsSettled represents a MultipleWithdrawalsSettled event raised by the HopL1HopBridge contract.
  2033  type HopL1HopBridgeMultipleWithdrawalsSettled struct {
  2034  	Bonder            common.Address
  2035  	RootHash          [32]byte
  2036  	TotalBondsSettled *big.Int
  2037  	Raw               types.Log // Blockchain specific contextual infos
  2038  }
  2039  
  2040  // FilterMultipleWithdrawalsSettled is a free log retrieval operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  2041  //
  2042  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  2043  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterMultipleWithdrawalsSettled(opts *bind.FilterOpts, bonder []common.Address, rootHash [][32]byte) (*HopL1HopBridgeMultipleWithdrawalsSettledIterator, error) {
  2044  
  2045  	var bonderRule []interface{}
  2046  	for _, bonderItem := range bonder {
  2047  		bonderRule = append(bonderRule, bonderItem)
  2048  	}
  2049  	var rootHashRule []interface{}
  2050  	for _, rootHashItem := range rootHash {
  2051  		rootHashRule = append(rootHashRule, rootHashItem)
  2052  	}
  2053  
  2054  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "MultipleWithdrawalsSettled", bonderRule, rootHashRule)
  2055  	if err != nil {
  2056  		return nil, err
  2057  	}
  2058  	return &HopL1HopBridgeMultipleWithdrawalsSettledIterator{contract: _HopL1HopBridge.contract, event: "MultipleWithdrawalsSettled", logs: logs, sub: sub}, nil
  2059  }
  2060  
  2061  // WatchMultipleWithdrawalsSettled is a free log subscription operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  2062  //
  2063  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  2064  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchMultipleWithdrawalsSettled(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeMultipleWithdrawalsSettled, bonder []common.Address, rootHash [][32]byte) (event.Subscription, error) {
  2065  
  2066  	var bonderRule []interface{}
  2067  	for _, bonderItem := range bonder {
  2068  		bonderRule = append(bonderRule, bonderItem)
  2069  	}
  2070  	var rootHashRule []interface{}
  2071  	for _, rootHashItem := range rootHash {
  2072  		rootHashRule = append(rootHashRule, rootHashItem)
  2073  	}
  2074  
  2075  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "MultipleWithdrawalsSettled", bonderRule, rootHashRule)
  2076  	if err != nil {
  2077  		return nil, err
  2078  	}
  2079  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2080  		defer sub.Unsubscribe()
  2081  		for {
  2082  			select {
  2083  			case log := <-logs:
  2084  				// New log arrived, parse the event and forward to the user
  2085  				event := new(HopL1HopBridgeMultipleWithdrawalsSettled)
  2086  				if err := _HopL1HopBridge.contract.UnpackLog(event, "MultipleWithdrawalsSettled", log); err != nil {
  2087  					return err
  2088  				}
  2089  				event.Raw = log
  2090  
  2091  				select {
  2092  				case sink <- event:
  2093  				case err := <-sub.Err():
  2094  					return err
  2095  				case <-quit:
  2096  					return nil
  2097  				}
  2098  			case err := <-sub.Err():
  2099  				return err
  2100  			case <-quit:
  2101  				return nil
  2102  			}
  2103  		}
  2104  	}), nil
  2105  }
  2106  
  2107  // ParseMultipleWithdrawalsSettled is a log parse operation binding the contract event 0x78e830d08be9d5f957414c84d685c061ecbd8467be98b42ebb64f0118b57d2ff.
  2108  //
  2109  // Solidity: event MultipleWithdrawalsSettled(address indexed bonder, bytes32 indexed rootHash, uint256 totalBondsSettled)
  2110  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseMultipleWithdrawalsSettled(log types.Log) (*HopL1HopBridgeMultipleWithdrawalsSettled, error) {
  2111  	event := new(HopL1HopBridgeMultipleWithdrawalsSettled)
  2112  	if err := _HopL1HopBridge.contract.UnpackLog(event, "MultipleWithdrawalsSettled", log); err != nil {
  2113  		return nil, err
  2114  	}
  2115  	event.Raw = log
  2116  	return event, nil
  2117  }
  2118  
  2119  // HopL1HopBridgeStakeIterator is returned from FilterStake and is used to iterate over the raw logs and unpacked data for Stake events raised by the HopL1HopBridge contract.
  2120  type HopL1HopBridgeStakeIterator struct {
  2121  	Event *HopL1HopBridgeStake // Event containing the contract specifics and raw log
  2122  
  2123  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2124  	event    string              // Event name to use for unpacking event data
  2125  
  2126  	logs chan types.Log        // Log channel receiving the found contract events
  2127  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2128  	done bool                  // Whether the subscription completed delivering logs
  2129  	fail error                 // Occurred error to stop iteration
  2130  }
  2131  
  2132  // Next advances the iterator to the subsequent event, returning whether there
  2133  // are any more events found. In case of a retrieval or parsing error, false is
  2134  // returned and Error() can be queried for the exact failure.
  2135  func (it *HopL1HopBridgeStakeIterator) Next() bool {
  2136  	// If the iterator failed, stop iterating
  2137  	if it.fail != nil {
  2138  		return false
  2139  	}
  2140  	// If the iterator completed, deliver directly whatever's available
  2141  	if it.done {
  2142  		select {
  2143  		case log := <-it.logs:
  2144  			it.Event = new(HopL1HopBridgeStake)
  2145  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2146  				it.fail = err
  2147  				return false
  2148  			}
  2149  			it.Event.Raw = log
  2150  			return true
  2151  
  2152  		default:
  2153  			return false
  2154  		}
  2155  	}
  2156  	// Iterator still in progress, wait for either a data or an error event
  2157  	select {
  2158  	case log := <-it.logs:
  2159  		it.Event = new(HopL1HopBridgeStake)
  2160  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2161  			it.fail = err
  2162  			return false
  2163  		}
  2164  		it.Event.Raw = log
  2165  		return true
  2166  
  2167  	case err := <-it.sub.Err():
  2168  		it.done = true
  2169  		it.fail = err
  2170  		return it.Next()
  2171  	}
  2172  }
  2173  
  2174  // Error returns any retrieval or parsing error occurred during filtering.
  2175  func (it *HopL1HopBridgeStakeIterator) Error() error {
  2176  	return it.fail
  2177  }
  2178  
  2179  // Close terminates the iteration process, releasing any pending underlying
  2180  // resources.
  2181  func (it *HopL1HopBridgeStakeIterator) Close() error {
  2182  	it.sub.Unsubscribe()
  2183  	return nil
  2184  }
  2185  
  2186  // HopL1HopBridgeStake represents a Stake event raised by the HopL1HopBridge contract.
  2187  type HopL1HopBridgeStake struct {
  2188  	Account common.Address
  2189  	Amount  *big.Int
  2190  	Raw     types.Log // Blockchain specific contextual infos
  2191  }
  2192  
  2193  // FilterStake is a free log retrieval operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2194  //
  2195  // Solidity: event Stake(address indexed account, uint256 amount)
  2196  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterStake(opts *bind.FilterOpts, account []common.Address) (*HopL1HopBridgeStakeIterator, error) {
  2197  
  2198  	var accountRule []interface{}
  2199  	for _, accountItem := range account {
  2200  		accountRule = append(accountRule, accountItem)
  2201  	}
  2202  
  2203  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "Stake", accountRule)
  2204  	if err != nil {
  2205  		return nil, err
  2206  	}
  2207  	return &HopL1HopBridgeStakeIterator{contract: _HopL1HopBridge.contract, event: "Stake", logs: logs, sub: sub}, nil
  2208  }
  2209  
  2210  // WatchStake is a free log subscription operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2211  //
  2212  // Solidity: event Stake(address indexed account, uint256 amount)
  2213  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchStake(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeStake, account []common.Address) (event.Subscription, error) {
  2214  
  2215  	var accountRule []interface{}
  2216  	for _, accountItem := range account {
  2217  		accountRule = append(accountRule, accountItem)
  2218  	}
  2219  
  2220  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "Stake", accountRule)
  2221  	if err != nil {
  2222  		return nil, err
  2223  	}
  2224  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2225  		defer sub.Unsubscribe()
  2226  		for {
  2227  			select {
  2228  			case log := <-logs:
  2229  				// New log arrived, parse the event and forward to the user
  2230  				event := new(HopL1HopBridgeStake)
  2231  				if err := _HopL1HopBridge.contract.UnpackLog(event, "Stake", log); err != nil {
  2232  					return err
  2233  				}
  2234  				event.Raw = log
  2235  
  2236  				select {
  2237  				case sink <- event:
  2238  				case err := <-sub.Err():
  2239  					return err
  2240  				case <-quit:
  2241  					return nil
  2242  				}
  2243  			case err := <-sub.Err():
  2244  				return err
  2245  			case <-quit:
  2246  				return nil
  2247  			}
  2248  		}
  2249  	}), nil
  2250  }
  2251  
  2252  // ParseStake is a log parse operation binding the contract event 0xebedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a.
  2253  //
  2254  // Solidity: event Stake(address indexed account, uint256 amount)
  2255  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseStake(log types.Log) (*HopL1HopBridgeStake, error) {
  2256  	event := new(HopL1HopBridgeStake)
  2257  	if err := _HopL1HopBridge.contract.UnpackLog(event, "Stake", log); err != nil {
  2258  		return nil, err
  2259  	}
  2260  	event.Raw = log
  2261  	return event, nil
  2262  }
  2263  
  2264  // HopL1HopBridgeTransferBondChallengedIterator is returned from FilterTransferBondChallenged and is used to iterate over the raw logs and unpacked data for TransferBondChallenged events raised by the HopL1HopBridge contract.
  2265  type HopL1HopBridgeTransferBondChallengedIterator struct {
  2266  	Event *HopL1HopBridgeTransferBondChallenged // Event containing the contract specifics and raw log
  2267  
  2268  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2269  	event    string              // Event name to use for unpacking event data
  2270  
  2271  	logs chan types.Log        // Log channel receiving the found contract events
  2272  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2273  	done bool                  // Whether the subscription completed delivering logs
  2274  	fail error                 // Occurred error to stop iteration
  2275  }
  2276  
  2277  // Next advances the iterator to the subsequent event, returning whether there
  2278  // are any more events found. In case of a retrieval or parsing error, false is
  2279  // returned and Error() can be queried for the exact failure.
  2280  func (it *HopL1HopBridgeTransferBondChallengedIterator) Next() bool {
  2281  	// If the iterator failed, stop iterating
  2282  	if it.fail != nil {
  2283  		return false
  2284  	}
  2285  	// If the iterator completed, deliver directly whatever's available
  2286  	if it.done {
  2287  		select {
  2288  		case log := <-it.logs:
  2289  			it.Event = new(HopL1HopBridgeTransferBondChallenged)
  2290  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2291  				it.fail = err
  2292  				return false
  2293  			}
  2294  			it.Event.Raw = log
  2295  			return true
  2296  
  2297  		default:
  2298  			return false
  2299  		}
  2300  	}
  2301  	// Iterator still in progress, wait for either a data or an error event
  2302  	select {
  2303  	case log := <-it.logs:
  2304  		it.Event = new(HopL1HopBridgeTransferBondChallenged)
  2305  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2306  			it.fail = err
  2307  			return false
  2308  		}
  2309  		it.Event.Raw = log
  2310  		return true
  2311  
  2312  	case err := <-it.sub.Err():
  2313  		it.done = true
  2314  		it.fail = err
  2315  		return it.Next()
  2316  	}
  2317  }
  2318  
  2319  // Error returns any retrieval or parsing error occurred during filtering.
  2320  func (it *HopL1HopBridgeTransferBondChallengedIterator) Error() error {
  2321  	return it.fail
  2322  }
  2323  
  2324  // Close terminates the iteration process, releasing any pending underlying
  2325  // resources.
  2326  func (it *HopL1HopBridgeTransferBondChallengedIterator) Close() error {
  2327  	it.sub.Unsubscribe()
  2328  	return nil
  2329  }
  2330  
  2331  // HopL1HopBridgeTransferBondChallenged represents a TransferBondChallenged event raised by the HopL1HopBridge contract.
  2332  type HopL1HopBridgeTransferBondChallenged struct {
  2333  	TransferRootId [32]byte
  2334  	RootHash       [32]byte
  2335  	OriginalAmount *big.Int
  2336  	Raw            types.Log // Blockchain specific contextual infos
  2337  }
  2338  
  2339  // FilterTransferBondChallenged is a free log retrieval operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2340  //
  2341  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2342  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterTransferBondChallenged(opts *bind.FilterOpts, transferRootId [][32]byte, rootHash [][32]byte) (*HopL1HopBridgeTransferBondChallengedIterator, error) {
  2343  
  2344  	var transferRootIdRule []interface{}
  2345  	for _, transferRootIdItem := range transferRootId {
  2346  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  2347  	}
  2348  	var rootHashRule []interface{}
  2349  	for _, rootHashItem := range rootHash {
  2350  		rootHashRule = append(rootHashRule, rootHashItem)
  2351  	}
  2352  
  2353  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "TransferBondChallenged", transferRootIdRule, rootHashRule)
  2354  	if err != nil {
  2355  		return nil, err
  2356  	}
  2357  	return &HopL1HopBridgeTransferBondChallengedIterator{contract: _HopL1HopBridge.contract, event: "TransferBondChallenged", logs: logs, sub: sub}, nil
  2358  }
  2359  
  2360  // WatchTransferBondChallenged is a free log subscription operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2361  //
  2362  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2363  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchTransferBondChallenged(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeTransferBondChallenged, transferRootId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  2364  
  2365  	var transferRootIdRule []interface{}
  2366  	for _, transferRootIdItem := range transferRootId {
  2367  		transferRootIdRule = append(transferRootIdRule, transferRootIdItem)
  2368  	}
  2369  	var rootHashRule []interface{}
  2370  	for _, rootHashItem := range rootHash {
  2371  		rootHashRule = append(rootHashRule, rootHashItem)
  2372  	}
  2373  
  2374  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "TransferBondChallenged", transferRootIdRule, rootHashRule)
  2375  	if err != nil {
  2376  		return nil, err
  2377  	}
  2378  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2379  		defer sub.Unsubscribe()
  2380  		for {
  2381  			select {
  2382  			case log := <-logs:
  2383  				// New log arrived, parse the event and forward to the user
  2384  				event := new(HopL1HopBridgeTransferBondChallenged)
  2385  				if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferBondChallenged", log); err != nil {
  2386  					return err
  2387  				}
  2388  				event.Raw = log
  2389  
  2390  				select {
  2391  				case sink <- event:
  2392  				case err := <-sub.Err():
  2393  					return err
  2394  				case <-quit:
  2395  					return nil
  2396  				}
  2397  			case err := <-sub.Err():
  2398  				return err
  2399  			case <-quit:
  2400  				return nil
  2401  			}
  2402  		}
  2403  	}), nil
  2404  }
  2405  
  2406  // ParseTransferBondChallenged is a log parse operation binding the contract event 0xec2697dcba539a0ac947cdf1f6d0b6314c065429eca8be2435859b10209d4c27.
  2407  //
  2408  // Solidity: event TransferBondChallenged(bytes32 indexed transferRootId, bytes32 indexed rootHash, uint256 originalAmount)
  2409  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseTransferBondChallenged(log types.Log) (*HopL1HopBridgeTransferBondChallenged, error) {
  2410  	event := new(HopL1HopBridgeTransferBondChallenged)
  2411  	if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferBondChallenged", log); err != nil {
  2412  		return nil, err
  2413  	}
  2414  	event.Raw = log
  2415  	return event, nil
  2416  }
  2417  
  2418  // HopL1HopBridgeTransferRootBondedIterator is returned from FilterTransferRootBonded and is used to iterate over the raw logs and unpacked data for TransferRootBonded events raised by the HopL1HopBridge contract.
  2419  type HopL1HopBridgeTransferRootBondedIterator struct {
  2420  	Event *HopL1HopBridgeTransferRootBonded // Event containing the contract specifics and raw log
  2421  
  2422  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2423  	event    string              // Event name to use for unpacking event data
  2424  
  2425  	logs chan types.Log        // Log channel receiving the found contract events
  2426  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2427  	done bool                  // Whether the subscription completed delivering logs
  2428  	fail error                 // Occurred error to stop iteration
  2429  }
  2430  
  2431  // Next advances the iterator to the subsequent event, returning whether there
  2432  // are any more events found. In case of a retrieval or parsing error, false is
  2433  // returned and Error() can be queried for the exact failure.
  2434  func (it *HopL1HopBridgeTransferRootBondedIterator) Next() bool {
  2435  	// If the iterator failed, stop iterating
  2436  	if it.fail != nil {
  2437  		return false
  2438  	}
  2439  	// If the iterator completed, deliver directly whatever's available
  2440  	if it.done {
  2441  		select {
  2442  		case log := <-it.logs:
  2443  			it.Event = new(HopL1HopBridgeTransferRootBonded)
  2444  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2445  				it.fail = err
  2446  				return false
  2447  			}
  2448  			it.Event.Raw = log
  2449  			return true
  2450  
  2451  		default:
  2452  			return false
  2453  		}
  2454  	}
  2455  	// Iterator still in progress, wait for either a data or an error event
  2456  	select {
  2457  	case log := <-it.logs:
  2458  		it.Event = new(HopL1HopBridgeTransferRootBonded)
  2459  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2460  			it.fail = err
  2461  			return false
  2462  		}
  2463  		it.Event.Raw = log
  2464  		return true
  2465  
  2466  	case err := <-it.sub.Err():
  2467  		it.done = true
  2468  		it.fail = err
  2469  		return it.Next()
  2470  	}
  2471  }
  2472  
  2473  // Error returns any retrieval or parsing error occurred during filtering.
  2474  func (it *HopL1HopBridgeTransferRootBondedIterator) Error() error {
  2475  	return it.fail
  2476  }
  2477  
  2478  // Close terminates the iteration process, releasing any pending underlying
  2479  // resources.
  2480  func (it *HopL1HopBridgeTransferRootBondedIterator) Close() error {
  2481  	it.sub.Unsubscribe()
  2482  	return nil
  2483  }
  2484  
  2485  // HopL1HopBridgeTransferRootBonded represents a TransferRootBonded event raised by the HopL1HopBridge contract.
  2486  type HopL1HopBridgeTransferRootBonded struct {
  2487  	Root   [32]byte
  2488  	Amount *big.Int
  2489  	Raw    types.Log // Blockchain specific contextual infos
  2490  }
  2491  
  2492  // FilterTransferRootBonded is a free log retrieval operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2493  //
  2494  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2495  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterTransferRootBonded(opts *bind.FilterOpts, root [][32]byte) (*HopL1HopBridgeTransferRootBondedIterator, error) {
  2496  
  2497  	var rootRule []interface{}
  2498  	for _, rootItem := range root {
  2499  		rootRule = append(rootRule, rootItem)
  2500  	}
  2501  
  2502  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "TransferRootBonded", rootRule)
  2503  	if err != nil {
  2504  		return nil, err
  2505  	}
  2506  	return &HopL1HopBridgeTransferRootBondedIterator{contract: _HopL1HopBridge.contract, event: "TransferRootBonded", logs: logs, sub: sub}, nil
  2507  }
  2508  
  2509  // WatchTransferRootBonded is a free log subscription operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2510  //
  2511  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2512  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchTransferRootBonded(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeTransferRootBonded, root [][32]byte) (event.Subscription, error) {
  2513  
  2514  	var rootRule []interface{}
  2515  	for _, rootItem := range root {
  2516  		rootRule = append(rootRule, rootItem)
  2517  	}
  2518  
  2519  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "TransferRootBonded", rootRule)
  2520  	if err != nil {
  2521  		return nil, err
  2522  	}
  2523  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2524  		defer sub.Unsubscribe()
  2525  		for {
  2526  			select {
  2527  			case log := <-logs:
  2528  				// New log arrived, parse the event and forward to the user
  2529  				event := new(HopL1HopBridgeTransferRootBonded)
  2530  				if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootBonded", log); err != nil {
  2531  					return err
  2532  				}
  2533  				event.Raw = log
  2534  
  2535  				select {
  2536  				case sink <- event:
  2537  				case err := <-sub.Err():
  2538  					return err
  2539  				case <-quit:
  2540  					return nil
  2541  				}
  2542  			case err := <-sub.Err():
  2543  				return err
  2544  			case <-quit:
  2545  				return nil
  2546  			}
  2547  		}
  2548  	}), nil
  2549  }
  2550  
  2551  // ParseTransferRootBonded is a log parse operation binding the contract event 0xa57b3e1f3af9eca02201028629700658608222c365064584cfe65d9630ef4f7b.
  2552  //
  2553  // Solidity: event TransferRootBonded(bytes32 indexed root, uint256 amount)
  2554  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseTransferRootBonded(log types.Log) (*HopL1HopBridgeTransferRootBonded, error) {
  2555  	event := new(HopL1HopBridgeTransferRootBonded)
  2556  	if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootBonded", log); err != nil {
  2557  		return nil, err
  2558  	}
  2559  	event.Raw = log
  2560  	return event, nil
  2561  }
  2562  
  2563  // HopL1HopBridgeTransferRootConfirmedIterator is returned from FilterTransferRootConfirmed and is used to iterate over the raw logs and unpacked data for TransferRootConfirmed events raised by the HopL1HopBridge contract.
  2564  type HopL1HopBridgeTransferRootConfirmedIterator struct {
  2565  	Event *HopL1HopBridgeTransferRootConfirmed // Event containing the contract specifics and raw log
  2566  
  2567  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2568  	event    string              // Event name to use for unpacking event data
  2569  
  2570  	logs chan types.Log        // Log channel receiving the found contract events
  2571  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2572  	done bool                  // Whether the subscription completed delivering logs
  2573  	fail error                 // Occurred error to stop iteration
  2574  }
  2575  
  2576  // Next advances the iterator to the subsequent event, returning whether there
  2577  // are any more events found. In case of a retrieval or parsing error, false is
  2578  // returned and Error() can be queried for the exact failure.
  2579  func (it *HopL1HopBridgeTransferRootConfirmedIterator) Next() bool {
  2580  	// If the iterator failed, stop iterating
  2581  	if it.fail != nil {
  2582  		return false
  2583  	}
  2584  	// If the iterator completed, deliver directly whatever's available
  2585  	if it.done {
  2586  		select {
  2587  		case log := <-it.logs:
  2588  			it.Event = new(HopL1HopBridgeTransferRootConfirmed)
  2589  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2590  				it.fail = err
  2591  				return false
  2592  			}
  2593  			it.Event.Raw = log
  2594  			return true
  2595  
  2596  		default:
  2597  			return false
  2598  		}
  2599  	}
  2600  	// Iterator still in progress, wait for either a data or an error event
  2601  	select {
  2602  	case log := <-it.logs:
  2603  		it.Event = new(HopL1HopBridgeTransferRootConfirmed)
  2604  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2605  			it.fail = err
  2606  			return false
  2607  		}
  2608  		it.Event.Raw = log
  2609  		return true
  2610  
  2611  	case err := <-it.sub.Err():
  2612  		it.done = true
  2613  		it.fail = err
  2614  		return it.Next()
  2615  	}
  2616  }
  2617  
  2618  // Error returns any retrieval or parsing error occurred during filtering.
  2619  func (it *HopL1HopBridgeTransferRootConfirmedIterator) Error() error {
  2620  	return it.fail
  2621  }
  2622  
  2623  // Close terminates the iteration process, releasing any pending underlying
  2624  // resources.
  2625  func (it *HopL1HopBridgeTransferRootConfirmedIterator) Close() error {
  2626  	it.sub.Unsubscribe()
  2627  	return nil
  2628  }
  2629  
  2630  // HopL1HopBridgeTransferRootConfirmed represents a TransferRootConfirmed event raised by the HopL1HopBridge contract.
  2631  type HopL1HopBridgeTransferRootConfirmed struct {
  2632  	OriginChainId      *big.Int
  2633  	DestinationChainId *big.Int
  2634  	RootHash           [32]byte
  2635  	TotalAmount        *big.Int
  2636  	Raw                types.Log // Blockchain specific contextual infos
  2637  }
  2638  
  2639  // FilterTransferRootConfirmed is a free log retrieval operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2640  //
  2641  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2642  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterTransferRootConfirmed(opts *bind.FilterOpts, originChainId []*big.Int, destinationChainId []*big.Int, rootHash [][32]byte) (*HopL1HopBridgeTransferRootConfirmedIterator, error) {
  2643  
  2644  	var originChainIdRule []interface{}
  2645  	for _, originChainIdItem := range originChainId {
  2646  		originChainIdRule = append(originChainIdRule, originChainIdItem)
  2647  	}
  2648  	var destinationChainIdRule []interface{}
  2649  	for _, destinationChainIdItem := range destinationChainId {
  2650  		destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem)
  2651  	}
  2652  	var rootHashRule []interface{}
  2653  	for _, rootHashItem := range rootHash {
  2654  		rootHashRule = append(rootHashRule, rootHashItem)
  2655  	}
  2656  
  2657  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "TransferRootConfirmed", originChainIdRule, destinationChainIdRule, rootHashRule)
  2658  	if err != nil {
  2659  		return nil, err
  2660  	}
  2661  	return &HopL1HopBridgeTransferRootConfirmedIterator{contract: _HopL1HopBridge.contract, event: "TransferRootConfirmed", logs: logs, sub: sub}, nil
  2662  }
  2663  
  2664  // WatchTransferRootConfirmed is a free log subscription operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2665  //
  2666  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2667  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchTransferRootConfirmed(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeTransferRootConfirmed, originChainId []*big.Int, destinationChainId []*big.Int, rootHash [][32]byte) (event.Subscription, error) {
  2668  
  2669  	var originChainIdRule []interface{}
  2670  	for _, originChainIdItem := range originChainId {
  2671  		originChainIdRule = append(originChainIdRule, originChainIdItem)
  2672  	}
  2673  	var destinationChainIdRule []interface{}
  2674  	for _, destinationChainIdItem := range destinationChainId {
  2675  		destinationChainIdRule = append(destinationChainIdRule, destinationChainIdItem)
  2676  	}
  2677  	var rootHashRule []interface{}
  2678  	for _, rootHashItem := range rootHash {
  2679  		rootHashRule = append(rootHashRule, rootHashItem)
  2680  	}
  2681  
  2682  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "TransferRootConfirmed", originChainIdRule, destinationChainIdRule, rootHashRule)
  2683  	if err != nil {
  2684  		return nil, err
  2685  	}
  2686  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2687  		defer sub.Unsubscribe()
  2688  		for {
  2689  			select {
  2690  			case log := <-logs:
  2691  				// New log arrived, parse the event and forward to the user
  2692  				event := new(HopL1HopBridgeTransferRootConfirmed)
  2693  				if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootConfirmed", log); err != nil {
  2694  					return err
  2695  				}
  2696  				event.Raw = log
  2697  
  2698  				select {
  2699  				case sink <- event:
  2700  				case err := <-sub.Err():
  2701  					return err
  2702  				case <-quit:
  2703  					return nil
  2704  				}
  2705  			case err := <-sub.Err():
  2706  				return err
  2707  			case <-quit:
  2708  				return nil
  2709  			}
  2710  		}
  2711  	}), nil
  2712  }
  2713  
  2714  // ParseTransferRootConfirmed is a log parse operation binding the contract event 0xfdfb0eefa96935b8a8c0edf528e125dc6f3934fdbbfce31b38967e8ff413dccd.
  2715  //
  2716  // Solidity: event TransferRootConfirmed(uint256 indexed originChainId, uint256 indexed destinationChainId, bytes32 indexed rootHash, uint256 totalAmount)
  2717  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseTransferRootConfirmed(log types.Log) (*HopL1HopBridgeTransferRootConfirmed, error) {
  2718  	event := new(HopL1HopBridgeTransferRootConfirmed)
  2719  	if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootConfirmed", log); err != nil {
  2720  		return nil, err
  2721  	}
  2722  	event.Raw = log
  2723  	return event, nil
  2724  }
  2725  
  2726  // HopL1HopBridgeTransferRootSetIterator is returned from FilterTransferRootSet and is used to iterate over the raw logs and unpacked data for TransferRootSet events raised by the HopL1HopBridge contract.
  2727  type HopL1HopBridgeTransferRootSetIterator struct {
  2728  	Event *HopL1HopBridgeTransferRootSet // Event containing the contract specifics and raw log
  2729  
  2730  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2731  	event    string              // Event name to use for unpacking event data
  2732  
  2733  	logs chan types.Log        // Log channel receiving the found contract events
  2734  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2735  	done bool                  // Whether the subscription completed delivering logs
  2736  	fail error                 // Occurred error to stop iteration
  2737  }
  2738  
  2739  // Next advances the iterator to the subsequent event, returning whether there
  2740  // are any more events found. In case of a retrieval or parsing error, false is
  2741  // returned and Error() can be queried for the exact failure.
  2742  func (it *HopL1HopBridgeTransferRootSetIterator) Next() bool {
  2743  	// If the iterator failed, stop iterating
  2744  	if it.fail != nil {
  2745  		return false
  2746  	}
  2747  	// If the iterator completed, deliver directly whatever's available
  2748  	if it.done {
  2749  		select {
  2750  		case log := <-it.logs:
  2751  			it.Event = new(HopL1HopBridgeTransferRootSet)
  2752  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2753  				it.fail = err
  2754  				return false
  2755  			}
  2756  			it.Event.Raw = log
  2757  			return true
  2758  
  2759  		default:
  2760  			return false
  2761  		}
  2762  	}
  2763  	// Iterator still in progress, wait for either a data or an error event
  2764  	select {
  2765  	case log := <-it.logs:
  2766  		it.Event = new(HopL1HopBridgeTransferRootSet)
  2767  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2768  			it.fail = err
  2769  			return false
  2770  		}
  2771  		it.Event.Raw = log
  2772  		return true
  2773  
  2774  	case err := <-it.sub.Err():
  2775  		it.done = true
  2776  		it.fail = err
  2777  		return it.Next()
  2778  	}
  2779  }
  2780  
  2781  // Error returns any retrieval or parsing error occurred during filtering.
  2782  func (it *HopL1HopBridgeTransferRootSetIterator) Error() error {
  2783  	return it.fail
  2784  }
  2785  
  2786  // Close terminates the iteration process, releasing any pending underlying
  2787  // resources.
  2788  func (it *HopL1HopBridgeTransferRootSetIterator) Close() error {
  2789  	it.sub.Unsubscribe()
  2790  	return nil
  2791  }
  2792  
  2793  // HopL1HopBridgeTransferRootSet represents a TransferRootSet event raised by the HopL1HopBridge contract.
  2794  type HopL1HopBridgeTransferRootSet struct {
  2795  	RootHash    [32]byte
  2796  	TotalAmount *big.Int
  2797  	Raw         types.Log // Blockchain specific contextual infos
  2798  }
  2799  
  2800  // FilterTransferRootSet is a free log retrieval operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2801  //
  2802  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2803  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterTransferRootSet(opts *bind.FilterOpts, rootHash [][32]byte) (*HopL1HopBridgeTransferRootSetIterator, error) {
  2804  
  2805  	var rootHashRule []interface{}
  2806  	for _, rootHashItem := range rootHash {
  2807  		rootHashRule = append(rootHashRule, rootHashItem)
  2808  	}
  2809  
  2810  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "TransferRootSet", rootHashRule)
  2811  	if err != nil {
  2812  		return nil, err
  2813  	}
  2814  	return &HopL1HopBridgeTransferRootSetIterator{contract: _HopL1HopBridge.contract, event: "TransferRootSet", logs: logs, sub: sub}, nil
  2815  }
  2816  
  2817  // WatchTransferRootSet is a free log subscription operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2818  //
  2819  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2820  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchTransferRootSet(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeTransferRootSet, rootHash [][32]byte) (event.Subscription, error) {
  2821  
  2822  	var rootHashRule []interface{}
  2823  	for _, rootHashItem := range rootHash {
  2824  		rootHashRule = append(rootHashRule, rootHashItem)
  2825  	}
  2826  
  2827  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "TransferRootSet", rootHashRule)
  2828  	if err != nil {
  2829  		return nil, err
  2830  	}
  2831  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2832  		defer sub.Unsubscribe()
  2833  		for {
  2834  			select {
  2835  			case log := <-logs:
  2836  				// New log arrived, parse the event and forward to the user
  2837  				event := new(HopL1HopBridgeTransferRootSet)
  2838  				if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootSet", log); err != nil {
  2839  					return err
  2840  				}
  2841  				event.Raw = log
  2842  
  2843  				select {
  2844  				case sink <- event:
  2845  				case err := <-sub.Err():
  2846  					return err
  2847  				case <-quit:
  2848  					return nil
  2849  				}
  2850  			case err := <-sub.Err():
  2851  				return err
  2852  			case <-quit:
  2853  				return nil
  2854  			}
  2855  		}
  2856  	}), nil
  2857  }
  2858  
  2859  // ParseTransferRootSet is a log parse operation binding the contract event 0xb33d2162aead99dab59e77a7a67ea025b776bf8ca8079e132afdf9b23e03bd42.
  2860  //
  2861  // Solidity: event TransferRootSet(bytes32 indexed rootHash, uint256 totalAmount)
  2862  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseTransferRootSet(log types.Log) (*HopL1HopBridgeTransferRootSet, error) {
  2863  	event := new(HopL1HopBridgeTransferRootSet)
  2864  	if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferRootSet", log); err != nil {
  2865  		return nil, err
  2866  	}
  2867  	event.Raw = log
  2868  	return event, nil
  2869  }
  2870  
  2871  // HopL1HopBridgeTransferSentToL2Iterator is returned from FilterTransferSentToL2 and is used to iterate over the raw logs and unpacked data for TransferSentToL2 events raised by the HopL1HopBridge contract.
  2872  type HopL1HopBridgeTransferSentToL2Iterator struct {
  2873  	Event *HopL1HopBridgeTransferSentToL2 // Event containing the contract specifics and raw log
  2874  
  2875  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2876  	event    string              // Event name to use for unpacking event data
  2877  
  2878  	logs chan types.Log        // Log channel receiving the found contract events
  2879  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2880  	done bool                  // Whether the subscription completed delivering logs
  2881  	fail error                 // Occurred error to stop iteration
  2882  }
  2883  
  2884  // Next advances the iterator to the subsequent event, returning whether there
  2885  // are any more events found. In case of a retrieval or parsing error, false is
  2886  // returned and Error() can be queried for the exact failure.
  2887  func (it *HopL1HopBridgeTransferSentToL2Iterator) Next() bool {
  2888  	// If the iterator failed, stop iterating
  2889  	if it.fail != nil {
  2890  		return false
  2891  	}
  2892  	// If the iterator completed, deliver directly whatever's available
  2893  	if it.done {
  2894  		select {
  2895  		case log := <-it.logs:
  2896  			it.Event = new(HopL1HopBridgeTransferSentToL2)
  2897  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2898  				it.fail = err
  2899  				return false
  2900  			}
  2901  			it.Event.Raw = log
  2902  			return true
  2903  
  2904  		default:
  2905  			return false
  2906  		}
  2907  	}
  2908  	// Iterator still in progress, wait for either a data or an error event
  2909  	select {
  2910  	case log := <-it.logs:
  2911  		it.Event = new(HopL1HopBridgeTransferSentToL2)
  2912  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2913  			it.fail = err
  2914  			return false
  2915  		}
  2916  		it.Event.Raw = log
  2917  		return true
  2918  
  2919  	case err := <-it.sub.Err():
  2920  		it.done = true
  2921  		it.fail = err
  2922  		return it.Next()
  2923  	}
  2924  }
  2925  
  2926  // Error returns any retrieval or parsing error occurred during filtering.
  2927  func (it *HopL1HopBridgeTransferSentToL2Iterator) Error() error {
  2928  	return it.fail
  2929  }
  2930  
  2931  // Close terminates the iteration process, releasing any pending underlying
  2932  // resources.
  2933  func (it *HopL1HopBridgeTransferSentToL2Iterator) Close() error {
  2934  	it.sub.Unsubscribe()
  2935  	return nil
  2936  }
  2937  
  2938  // HopL1HopBridgeTransferSentToL2 represents a TransferSentToL2 event raised by the HopL1HopBridge contract.
  2939  type HopL1HopBridgeTransferSentToL2 struct {
  2940  	ChainId      *big.Int
  2941  	Recipient    common.Address
  2942  	Amount       *big.Int
  2943  	AmountOutMin *big.Int
  2944  	Deadline     *big.Int
  2945  	Relayer      common.Address
  2946  	RelayerFee   *big.Int
  2947  	Raw          types.Log // Blockchain specific contextual infos
  2948  }
  2949  
  2950  // FilterTransferSentToL2 is a free log retrieval operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  2951  //
  2952  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  2953  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterTransferSentToL2(opts *bind.FilterOpts, chainId []*big.Int, recipient []common.Address, relayer []common.Address) (*HopL1HopBridgeTransferSentToL2Iterator, error) {
  2954  
  2955  	var chainIdRule []interface{}
  2956  	for _, chainIdItem := range chainId {
  2957  		chainIdRule = append(chainIdRule, chainIdItem)
  2958  	}
  2959  	var recipientRule []interface{}
  2960  	for _, recipientItem := range recipient {
  2961  		recipientRule = append(recipientRule, recipientItem)
  2962  	}
  2963  
  2964  	var relayerRule []interface{}
  2965  	for _, relayerItem := range relayer {
  2966  		relayerRule = append(relayerRule, relayerItem)
  2967  	}
  2968  
  2969  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "TransferSentToL2", chainIdRule, recipientRule, relayerRule)
  2970  	if err != nil {
  2971  		return nil, err
  2972  	}
  2973  	return &HopL1HopBridgeTransferSentToL2Iterator{contract: _HopL1HopBridge.contract, event: "TransferSentToL2", logs: logs, sub: sub}, nil
  2974  }
  2975  
  2976  // WatchTransferSentToL2 is a free log subscription operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  2977  //
  2978  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  2979  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchTransferSentToL2(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeTransferSentToL2, chainId []*big.Int, recipient []common.Address, relayer []common.Address) (event.Subscription, error) {
  2980  
  2981  	var chainIdRule []interface{}
  2982  	for _, chainIdItem := range chainId {
  2983  		chainIdRule = append(chainIdRule, chainIdItem)
  2984  	}
  2985  	var recipientRule []interface{}
  2986  	for _, recipientItem := range recipient {
  2987  		recipientRule = append(recipientRule, recipientItem)
  2988  	}
  2989  
  2990  	var relayerRule []interface{}
  2991  	for _, relayerItem := range relayer {
  2992  		relayerRule = append(relayerRule, relayerItem)
  2993  	}
  2994  
  2995  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "TransferSentToL2", chainIdRule, recipientRule, relayerRule)
  2996  	if err != nil {
  2997  		return nil, err
  2998  	}
  2999  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3000  		defer sub.Unsubscribe()
  3001  		for {
  3002  			select {
  3003  			case log := <-logs:
  3004  				// New log arrived, parse the event and forward to the user
  3005  				event := new(HopL1HopBridgeTransferSentToL2)
  3006  				if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferSentToL2", log); err != nil {
  3007  					return err
  3008  				}
  3009  				event.Raw = log
  3010  
  3011  				select {
  3012  				case sink <- event:
  3013  				case err := <-sub.Err():
  3014  					return err
  3015  				case <-quit:
  3016  					return nil
  3017  				}
  3018  			case err := <-sub.Err():
  3019  				return err
  3020  			case <-quit:
  3021  				return nil
  3022  			}
  3023  		}
  3024  	}), nil
  3025  }
  3026  
  3027  // ParseTransferSentToL2 is a log parse operation binding the contract event 0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b.
  3028  //
  3029  // Solidity: event TransferSentToL2(uint256 indexed chainId, address indexed recipient, uint256 amount, uint256 amountOutMin, uint256 deadline, address indexed relayer, uint256 relayerFee)
  3030  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseTransferSentToL2(log types.Log) (*HopL1HopBridgeTransferSentToL2, error) {
  3031  	event := new(HopL1HopBridgeTransferSentToL2)
  3032  	if err := _HopL1HopBridge.contract.UnpackLog(event, "TransferSentToL2", log); err != nil {
  3033  		return nil, err
  3034  	}
  3035  	event.Raw = log
  3036  	return event, nil
  3037  }
  3038  
  3039  // HopL1HopBridgeUnstakeIterator is returned from FilterUnstake and is used to iterate over the raw logs and unpacked data for Unstake events raised by the HopL1HopBridge contract.
  3040  type HopL1HopBridgeUnstakeIterator struct {
  3041  	Event *HopL1HopBridgeUnstake // Event containing the contract specifics and raw log
  3042  
  3043  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3044  	event    string              // Event name to use for unpacking event data
  3045  
  3046  	logs chan types.Log        // Log channel receiving the found contract events
  3047  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3048  	done bool                  // Whether the subscription completed delivering logs
  3049  	fail error                 // Occurred error to stop iteration
  3050  }
  3051  
  3052  // Next advances the iterator to the subsequent event, returning whether there
  3053  // are any more events found. In case of a retrieval or parsing error, false is
  3054  // returned and Error() can be queried for the exact failure.
  3055  func (it *HopL1HopBridgeUnstakeIterator) Next() bool {
  3056  	// If the iterator failed, stop iterating
  3057  	if it.fail != nil {
  3058  		return false
  3059  	}
  3060  	// If the iterator completed, deliver directly whatever's available
  3061  	if it.done {
  3062  		select {
  3063  		case log := <-it.logs:
  3064  			it.Event = new(HopL1HopBridgeUnstake)
  3065  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3066  				it.fail = err
  3067  				return false
  3068  			}
  3069  			it.Event.Raw = log
  3070  			return true
  3071  
  3072  		default:
  3073  			return false
  3074  		}
  3075  	}
  3076  	// Iterator still in progress, wait for either a data or an error event
  3077  	select {
  3078  	case log := <-it.logs:
  3079  		it.Event = new(HopL1HopBridgeUnstake)
  3080  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3081  			it.fail = err
  3082  			return false
  3083  		}
  3084  		it.Event.Raw = log
  3085  		return true
  3086  
  3087  	case err := <-it.sub.Err():
  3088  		it.done = true
  3089  		it.fail = err
  3090  		return it.Next()
  3091  	}
  3092  }
  3093  
  3094  // Error returns any retrieval or parsing error occurred during filtering.
  3095  func (it *HopL1HopBridgeUnstakeIterator) Error() error {
  3096  	return it.fail
  3097  }
  3098  
  3099  // Close terminates the iteration process, releasing any pending underlying
  3100  // resources.
  3101  func (it *HopL1HopBridgeUnstakeIterator) Close() error {
  3102  	it.sub.Unsubscribe()
  3103  	return nil
  3104  }
  3105  
  3106  // HopL1HopBridgeUnstake represents a Unstake event raised by the HopL1HopBridge contract.
  3107  type HopL1HopBridgeUnstake struct {
  3108  	Account common.Address
  3109  	Amount  *big.Int
  3110  	Raw     types.Log // Blockchain specific contextual infos
  3111  }
  3112  
  3113  // FilterUnstake is a free log retrieval operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3114  //
  3115  // Solidity: event Unstake(address indexed account, uint256 amount)
  3116  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterUnstake(opts *bind.FilterOpts, account []common.Address) (*HopL1HopBridgeUnstakeIterator, error) {
  3117  
  3118  	var accountRule []interface{}
  3119  	for _, accountItem := range account {
  3120  		accountRule = append(accountRule, accountItem)
  3121  	}
  3122  
  3123  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "Unstake", accountRule)
  3124  	if err != nil {
  3125  		return nil, err
  3126  	}
  3127  	return &HopL1HopBridgeUnstakeIterator{contract: _HopL1HopBridge.contract, event: "Unstake", logs: logs, sub: sub}, nil
  3128  }
  3129  
  3130  // WatchUnstake is a free log subscription operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3131  //
  3132  // Solidity: event Unstake(address indexed account, uint256 amount)
  3133  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchUnstake(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeUnstake, account []common.Address) (event.Subscription, error) {
  3134  
  3135  	var accountRule []interface{}
  3136  	for _, accountItem := range account {
  3137  		accountRule = append(accountRule, accountItem)
  3138  	}
  3139  
  3140  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "Unstake", accountRule)
  3141  	if err != nil {
  3142  		return nil, err
  3143  	}
  3144  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3145  		defer sub.Unsubscribe()
  3146  		for {
  3147  			select {
  3148  			case log := <-logs:
  3149  				// New log arrived, parse the event and forward to the user
  3150  				event := new(HopL1HopBridgeUnstake)
  3151  				if err := _HopL1HopBridge.contract.UnpackLog(event, "Unstake", log); err != nil {
  3152  					return err
  3153  				}
  3154  				event.Raw = log
  3155  
  3156  				select {
  3157  				case sink <- event:
  3158  				case err := <-sub.Err():
  3159  					return err
  3160  				case <-quit:
  3161  					return nil
  3162  				}
  3163  			case err := <-sub.Err():
  3164  				return err
  3165  			case <-quit:
  3166  				return nil
  3167  			}
  3168  		}
  3169  	}), nil
  3170  }
  3171  
  3172  // ParseUnstake is a log parse operation binding the contract event 0x85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd.
  3173  //
  3174  // Solidity: event Unstake(address indexed account, uint256 amount)
  3175  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseUnstake(log types.Log) (*HopL1HopBridgeUnstake, error) {
  3176  	event := new(HopL1HopBridgeUnstake)
  3177  	if err := _HopL1HopBridge.contract.UnpackLog(event, "Unstake", log); err != nil {
  3178  		return nil, err
  3179  	}
  3180  	event.Raw = log
  3181  	return event, nil
  3182  }
  3183  
  3184  // HopL1HopBridgeWithdrawalBondSettledIterator is returned from FilterWithdrawalBondSettled and is used to iterate over the raw logs and unpacked data for WithdrawalBondSettled events raised by the HopL1HopBridge contract.
  3185  type HopL1HopBridgeWithdrawalBondSettledIterator struct {
  3186  	Event *HopL1HopBridgeWithdrawalBondSettled // Event containing the contract specifics and raw log
  3187  
  3188  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3189  	event    string              // Event name to use for unpacking event data
  3190  
  3191  	logs chan types.Log        // Log channel receiving the found contract events
  3192  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3193  	done bool                  // Whether the subscription completed delivering logs
  3194  	fail error                 // Occurred error to stop iteration
  3195  }
  3196  
  3197  // Next advances the iterator to the subsequent event, returning whether there
  3198  // are any more events found. In case of a retrieval or parsing error, false is
  3199  // returned and Error() can be queried for the exact failure.
  3200  func (it *HopL1HopBridgeWithdrawalBondSettledIterator) Next() bool {
  3201  	// If the iterator failed, stop iterating
  3202  	if it.fail != nil {
  3203  		return false
  3204  	}
  3205  	// If the iterator completed, deliver directly whatever's available
  3206  	if it.done {
  3207  		select {
  3208  		case log := <-it.logs:
  3209  			it.Event = new(HopL1HopBridgeWithdrawalBondSettled)
  3210  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3211  				it.fail = err
  3212  				return false
  3213  			}
  3214  			it.Event.Raw = log
  3215  			return true
  3216  
  3217  		default:
  3218  			return false
  3219  		}
  3220  	}
  3221  	// Iterator still in progress, wait for either a data or an error event
  3222  	select {
  3223  	case log := <-it.logs:
  3224  		it.Event = new(HopL1HopBridgeWithdrawalBondSettled)
  3225  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3226  			it.fail = err
  3227  			return false
  3228  		}
  3229  		it.Event.Raw = log
  3230  		return true
  3231  
  3232  	case err := <-it.sub.Err():
  3233  		it.done = true
  3234  		it.fail = err
  3235  		return it.Next()
  3236  	}
  3237  }
  3238  
  3239  // Error returns any retrieval or parsing error occurred during filtering.
  3240  func (it *HopL1HopBridgeWithdrawalBondSettledIterator) Error() error {
  3241  	return it.fail
  3242  }
  3243  
  3244  // Close terminates the iteration process, releasing any pending underlying
  3245  // resources.
  3246  func (it *HopL1HopBridgeWithdrawalBondSettledIterator) Close() error {
  3247  	it.sub.Unsubscribe()
  3248  	return nil
  3249  }
  3250  
  3251  // HopL1HopBridgeWithdrawalBondSettled represents a WithdrawalBondSettled event raised by the HopL1HopBridge contract.
  3252  type HopL1HopBridgeWithdrawalBondSettled struct {
  3253  	Bonder     common.Address
  3254  	TransferId [32]byte
  3255  	RootHash   [32]byte
  3256  	Raw        types.Log // Blockchain specific contextual infos
  3257  }
  3258  
  3259  // FilterWithdrawalBondSettled is a free log retrieval operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3260  //
  3261  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3262  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterWithdrawalBondSettled(opts *bind.FilterOpts, bonder []common.Address, transferId [][32]byte, rootHash [][32]byte) (*HopL1HopBridgeWithdrawalBondSettledIterator, error) {
  3263  
  3264  	var bonderRule []interface{}
  3265  	for _, bonderItem := range bonder {
  3266  		bonderRule = append(bonderRule, bonderItem)
  3267  	}
  3268  	var transferIdRule []interface{}
  3269  	for _, transferIdItem := range transferId {
  3270  		transferIdRule = append(transferIdRule, transferIdItem)
  3271  	}
  3272  	var rootHashRule []interface{}
  3273  	for _, rootHashItem := range rootHash {
  3274  		rootHashRule = append(rootHashRule, rootHashItem)
  3275  	}
  3276  
  3277  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "WithdrawalBondSettled", bonderRule, transferIdRule, rootHashRule)
  3278  	if err != nil {
  3279  		return nil, err
  3280  	}
  3281  	return &HopL1HopBridgeWithdrawalBondSettledIterator{contract: _HopL1HopBridge.contract, event: "WithdrawalBondSettled", logs: logs, sub: sub}, nil
  3282  }
  3283  
  3284  // WatchWithdrawalBondSettled is a free log subscription operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3285  //
  3286  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3287  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchWithdrawalBondSettled(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeWithdrawalBondSettled, bonder []common.Address, transferId [][32]byte, rootHash [][32]byte) (event.Subscription, error) {
  3288  
  3289  	var bonderRule []interface{}
  3290  	for _, bonderItem := range bonder {
  3291  		bonderRule = append(bonderRule, bonderItem)
  3292  	}
  3293  	var transferIdRule []interface{}
  3294  	for _, transferIdItem := range transferId {
  3295  		transferIdRule = append(transferIdRule, transferIdItem)
  3296  	}
  3297  	var rootHashRule []interface{}
  3298  	for _, rootHashItem := range rootHash {
  3299  		rootHashRule = append(rootHashRule, rootHashItem)
  3300  	}
  3301  
  3302  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "WithdrawalBondSettled", bonderRule, transferIdRule, rootHashRule)
  3303  	if err != nil {
  3304  		return nil, err
  3305  	}
  3306  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3307  		defer sub.Unsubscribe()
  3308  		for {
  3309  			select {
  3310  			case log := <-logs:
  3311  				// New log arrived, parse the event and forward to the user
  3312  				event := new(HopL1HopBridgeWithdrawalBondSettled)
  3313  				if err := _HopL1HopBridge.contract.UnpackLog(event, "WithdrawalBondSettled", log); err != nil {
  3314  					return err
  3315  				}
  3316  				event.Raw = log
  3317  
  3318  				select {
  3319  				case sink <- event:
  3320  				case err := <-sub.Err():
  3321  					return err
  3322  				case <-quit:
  3323  					return nil
  3324  				}
  3325  			case err := <-sub.Err():
  3326  				return err
  3327  			case <-quit:
  3328  				return nil
  3329  			}
  3330  		}
  3331  	}), nil
  3332  }
  3333  
  3334  // ParseWithdrawalBondSettled is a log parse operation binding the contract event 0x84eb21b24c31b27a3bc67dde4a598aad06db6e9415cd66544492b9616996143c.
  3335  //
  3336  // Solidity: event WithdrawalBondSettled(address indexed bonder, bytes32 indexed transferId, bytes32 indexed rootHash)
  3337  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseWithdrawalBondSettled(log types.Log) (*HopL1HopBridgeWithdrawalBondSettled, error) {
  3338  	event := new(HopL1HopBridgeWithdrawalBondSettled)
  3339  	if err := _HopL1HopBridge.contract.UnpackLog(event, "WithdrawalBondSettled", log); err != nil {
  3340  		return nil, err
  3341  	}
  3342  	event.Raw = log
  3343  	return event, nil
  3344  }
  3345  
  3346  // HopL1HopBridgeWithdrawalBondedIterator is returned from FilterWithdrawalBonded and is used to iterate over the raw logs and unpacked data for WithdrawalBonded events raised by the HopL1HopBridge contract.
  3347  type HopL1HopBridgeWithdrawalBondedIterator struct {
  3348  	Event *HopL1HopBridgeWithdrawalBonded // Event containing the contract specifics and raw log
  3349  
  3350  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3351  	event    string              // Event name to use for unpacking event data
  3352  
  3353  	logs chan types.Log        // Log channel receiving the found contract events
  3354  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3355  	done bool                  // Whether the subscription completed delivering logs
  3356  	fail error                 // Occurred error to stop iteration
  3357  }
  3358  
  3359  // Next advances the iterator to the subsequent event, returning whether there
  3360  // are any more events found. In case of a retrieval or parsing error, false is
  3361  // returned and Error() can be queried for the exact failure.
  3362  func (it *HopL1HopBridgeWithdrawalBondedIterator) Next() bool {
  3363  	// If the iterator failed, stop iterating
  3364  	if it.fail != nil {
  3365  		return false
  3366  	}
  3367  	// If the iterator completed, deliver directly whatever's available
  3368  	if it.done {
  3369  		select {
  3370  		case log := <-it.logs:
  3371  			it.Event = new(HopL1HopBridgeWithdrawalBonded)
  3372  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3373  				it.fail = err
  3374  				return false
  3375  			}
  3376  			it.Event.Raw = log
  3377  			return true
  3378  
  3379  		default:
  3380  			return false
  3381  		}
  3382  	}
  3383  	// Iterator still in progress, wait for either a data or an error event
  3384  	select {
  3385  	case log := <-it.logs:
  3386  		it.Event = new(HopL1HopBridgeWithdrawalBonded)
  3387  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3388  			it.fail = err
  3389  			return false
  3390  		}
  3391  		it.Event.Raw = log
  3392  		return true
  3393  
  3394  	case err := <-it.sub.Err():
  3395  		it.done = true
  3396  		it.fail = err
  3397  		return it.Next()
  3398  	}
  3399  }
  3400  
  3401  // Error returns any retrieval or parsing error occurred during filtering.
  3402  func (it *HopL1HopBridgeWithdrawalBondedIterator) Error() error {
  3403  	return it.fail
  3404  }
  3405  
  3406  // Close terminates the iteration process, releasing any pending underlying
  3407  // resources.
  3408  func (it *HopL1HopBridgeWithdrawalBondedIterator) Close() error {
  3409  	it.sub.Unsubscribe()
  3410  	return nil
  3411  }
  3412  
  3413  // HopL1HopBridgeWithdrawalBonded represents a WithdrawalBonded event raised by the HopL1HopBridge contract.
  3414  type HopL1HopBridgeWithdrawalBonded struct {
  3415  	TransferId [32]byte
  3416  	Amount     *big.Int
  3417  	Raw        types.Log // Blockchain specific contextual infos
  3418  }
  3419  
  3420  // FilterWithdrawalBonded is a free log retrieval operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3421  //
  3422  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3423  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterWithdrawalBonded(opts *bind.FilterOpts, transferId [][32]byte) (*HopL1HopBridgeWithdrawalBondedIterator, error) {
  3424  
  3425  	var transferIdRule []interface{}
  3426  	for _, transferIdItem := range transferId {
  3427  		transferIdRule = append(transferIdRule, transferIdItem)
  3428  	}
  3429  
  3430  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "WithdrawalBonded", transferIdRule)
  3431  	if err != nil {
  3432  		return nil, err
  3433  	}
  3434  	return &HopL1HopBridgeWithdrawalBondedIterator{contract: _HopL1HopBridge.contract, event: "WithdrawalBonded", logs: logs, sub: sub}, nil
  3435  }
  3436  
  3437  // WatchWithdrawalBonded is a free log subscription operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3438  //
  3439  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3440  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchWithdrawalBonded(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeWithdrawalBonded, transferId [][32]byte) (event.Subscription, error) {
  3441  
  3442  	var transferIdRule []interface{}
  3443  	for _, transferIdItem := range transferId {
  3444  		transferIdRule = append(transferIdRule, transferIdItem)
  3445  	}
  3446  
  3447  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "WithdrawalBonded", transferIdRule)
  3448  	if err != nil {
  3449  		return nil, err
  3450  	}
  3451  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3452  		defer sub.Unsubscribe()
  3453  		for {
  3454  			select {
  3455  			case log := <-logs:
  3456  				// New log arrived, parse the event and forward to the user
  3457  				event := new(HopL1HopBridgeWithdrawalBonded)
  3458  				if err := _HopL1HopBridge.contract.UnpackLog(event, "WithdrawalBonded", log); err != nil {
  3459  					return err
  3460  				}
  3461  				event.Raw = log
  3462  
  3463  				select {
  3464  				case sink <- event:
  3465  				case err := <-sub.Err():
  3466  					return err
  3467  				case <-quit:
  3468  					return nil
  3469  				}
  3470  			case err := <-sub.Err():
  3471  				return err
  3472  			case <-quit:
  3473  				return nil
  3474  			}
  3475  		}
  3476  	}), nil
  3477  }
  3478  
  3479  // ParseWithdrawalBonded is a log parse operation binding the contract event 0x0c3d250c7831051e78aa6a56679e590374c7c424415ffe4aa474491def2fe705.
  3480  //
  3481  // Solidity: event WithdrawalBonded(bytes32 indexed transferId, uint256 amount)
  3482  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseWithdrawalBonded(log types.Log) (*HopL1HopBridgeWithdrawalBonded, error) {
  3483  	event := new(HopL1HopBridgeWithdrawalBonded)
  3484  	if err := _HopL1HopBridge.contract.UnpackLog(event, "WithdrawalBonded", log); err != nil {
  3485  		return nil, err
  3486  	}
  3487  	event.Raw = log
  3488  	return event, nil
  3489  }
  3490  
  3491  // HopL1HopBridgeWithdrewIterator is returned from FilterWithdrew and is used to iterate over the raw logs and unpacked data for Withdrew events raised by the HopL1HopBridge contract.
  3492  type HopL1HopBridgeWithdrewIterator struct {
  3493  	Event *HopL1HopBridgeWithdrew // Event containing the contract specifics and raw log
  3494  
  3495  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3496  	event    string              // Event name to use for unpacking event data
  3497  
  3498  	logs chan types.Log        // Log channel receiving the found contract events
  3499  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3500  	done bool                  // Whether the subscription completed delivering logs
  3501  	fail error                 // Occurred error to stop iteration
  3502  }
  3503  
  3504  // Next advances the iterator to the subsequent event, returning whether there
  3505  // are any more events found. In case of a retrieval or parsing error, false is
  3506  // returned and Error() can be queried for the exact failure.
  3507  func (it *HopL1HopBridgeWithdrewIterator) Next() bool {
  3508  	// If the iterator failed, stop iterating
  3509  	if it.fail != nil {
  3510  		return false
  3511  	}
  3512  	// If the iterator completed, deliver directly whatever's available
  3513  	if it.done {
  3514  		select {
  3515  		case log := <-it.logs:
  3516  			it.Event = new(HopL1HopBridgeWithdrew)
  3517  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3518  				it.fail = err
  3519  				return false
  3520  			}
  3521  			it.Event.Raw = log
  3522  			return true
  3523  
  3524  		default:
  3525  			return false
  3526  		}
  3527  	}
  3528  	// Iterator still in progress, wait for either a data or an error event
  3529  	select {
  3530  	case log := <-it.logs:
  3531  		it.Event = new(HopL1HopBridgeWithdrew)
  3532  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3533  			it.fail = err
  3534  			return false
  3535  		}
  3536  		it.Event.Raw = log
  3537  		return true
  3538  
  3539  	case err := <-it.sub.Err():
  3540  		it.done = true
  3541  		it.fail = err
  3542  		return it.Next()
  3543  	}
  3544  }
  3545  
  3546  // Error returns any retrieval or parsing error occurred during filtering.
  3547  func (it *HopL1HopBridgeWithdrewIterator) Error() error {
  3548  	return it.fail
  3549  }
  3550  
  3551  // Close terminates the iteration process, releasing any pending underlying
  3552  // resources.
  3553  func (it *HopL1HopBridgeWithdrewIterator) Close() error {
  3554  	it.sub.Unsubscribe()
  3555  	return nil
  3556  }
  3557  
  3558  // HopL1HopBridgeWithdrew represents a Withdrew event raised by the HopL1HopBridge contract.
  3559  type HopL1HopBridgeWithdrew struct {
  3560  	TransferId    [32]byte
  3561  	Recipient     common.Address
  3562  	Amount        *big.Int
  3563  	TransferNonce [32]byte
  3564  	Raw           types.Log // Blockchain specific contextual infos
  3565  }
  3566  
  3567  // FilterWithdrew is a free log retrieval operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3568  //
  3569  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3570  func (_HopL1HopBridge *HopL1HopBridgeFilterer) FilterWithdrew(opts *bind.FilterOpts, transferId [][32]byte, recipient []common.Address) (*HopL1HopBridgeWithdrewIterator, error) {
  3571  
  3572  	var transferIdRule []interface{}
  3573  	for _, transferIdItem := range transferId {
  3574  		transferIdRule = append(transferIdRule, transferIdItem)
  3575  	}
  3576  	var recipientRule []interface{}
  3577  	for _, recipientItem := range recipient {
  3578  		recipientRule = append(recipientRule, recipientItem)
  3579  	}
  3580  
  3581  	logs, sub, err := _HopL1HopBridge.contract.FilterLogs(opts, "Withdrew", transferIdRule, recipientRule)
  3582  	if err != nil {
  3583  		return nil, err
  3584  	}
  3585  	return &HopL1HopBridgeWithdrewIterator{contract: _HopL1HopBridge.contract, event: "Withdrew", logs: logs, sub: sub}, nil
  3586  }
  3587  
  3588  // WatchWithdrew is a free log subscription operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3589  //
  3590  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3591  func (_HopL1HopBridge *HopL1HopBridgeFilterer) WatchWithdrew(opts *bind.WatchOpts, sink chan<- *HopL1HopBridgeWithdrew, transferId [][32]byte, recipient []common.Address) (event.Subscription, error) {
  3592  
  3593  	var transferIdRule []interface{}
  3594  	for _, transferIdItem := range transferId {
  3595  		transferIdRule = append(transferIdRule, transferIdItem)
  3596  	}
  3597  	var recipientRule []interface{}
  3598  	for _, recipientItem := range recipient {
  3599  		recipientRule = append(recipientRule, recipientItem)
  3600  	}
  3601  
  3602  	logs, sub, err := _HopL1HopBridge.contract.WatchLogs(opts, "Withdrew", transferIdRule, recipientRule)
  3603  	if err != nil {
  3604  		return nil, err
  3605  	}
  3606  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3607  		defer sub.Unsubscribe()
  3608  		for {
  3609  			select {
  3610  			case log := <-logs:
  3611  				// New log arrived, parse the event and forward to the user
  3612  				event := new(HopL1HopBridgeWithdrew)
  3613  				if err := _HopL1HopBridge.contract.UnpackLog(event, "Withdrew", log); err != nil {
  3614  					return err
  3615  				}
  3616  				event.Raw = log
  3617  
  3618  				select {
  3619  				case sink <- event:
  3620  				case err := <-sub.Err():
  3621  					return err
  3622  				case <-quit:
  3623  					return nil
  3624  				}
  3625  			case err := <-sub.Err():
  3626  				return err
  3627  			case <-quit:
  3628  				return nil
  3629  			}
  3630  		}
  3631  	}), nil
  3632  }
  3633  
  3634  // ParseWithdrew is a log parse operation binding the contract event 0x9475cdbde5fc71fe2ccd413c82878ee54d061b9f74f9e2e1a03ff1178821502c.
  3635  //
  3636  // Solidity: event Withdrew(bytes32 indexed transferId, address indexed recipient, uint256 amount, bytes32 transferNonce)
  3637  func (_HopL1HopBridge *HopL1HopBridgeFilterer) ParseWithdrew(log types.Log) (*HopL1HopBridgeWithdrew, error) {
  3638  	event := new(HopL1HopBridgeWithdrew)
  3639  	if err := _HopL1HopBridge.contract.UnpackLog(event, "Withdrew", log); err != nil {
  3640  		return nil, err
  3641  	}
  3642  	event.Raw = log
  3643  	return event, nil
  3644  }