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