github.com/fff-chain/go-fff@v0.0.0-20220726032732-1c84420b8a99/consensus/parlia/stake/stake.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 stake
     5  
     6  import (
     7  	ethereum "github.com/fff-chain/go-fff"
     8  	"github.com/fff-chain/go-fff/accounts/abi"
     9  	"github.com/fff-chain/go-fff/accounts/abi/bind"
    10  	"github.com/fff-chain/go-fff/common"
    11  	"github.com/fff-chain/go-fff/core/types"
    12  	"github.com/fff-chain/go-fff/event"
    13  	"math/big"
    14  	"strings"
    15  )
    16  
    17  // Reference imports to suppress errors if they are not otherwise used.
    18  var (
    19  	_ = big.NewInt
    20  	_ = strings.NewReader
    21  	_ = ethereum.NotFound
    22  	_ = bind.Bind
    23  	_ = common.Big1
    24  	_ = types.BloomLookup
    25  	_ = event.NewSubscription
    26  )
    27  
    28  // BSCValidatorSetStakeInfo is an auto generated low-level Go binding around an user-defined struct.
    29  type BSCValidatorSetStakeInfo struct {
    30  	StakeAddress common.Address
    31  	StakeCount   *big.Int
    32  }
    33  
    34  // BSCValidatorSetABI is the input ABI used to generate the binding from.
    35  const BSCValidatorSetABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"userCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"DistributeBlockRewardFunc\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"UserStakeFFF\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"UserUnStakeFFF\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"batchTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"batchTransferFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"batchTransferLowerFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deprecatedDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"addresspayable\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"directTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"addresspayable\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"directTransferFail\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"failReasonWithStr\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"feeBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"paramChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"systemTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"unexpectedPackage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"validatorDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorEmptyJailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"validatorFelony\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorJailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"validatorMisdemeanor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"validatorSetUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BIND_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BURN_RATIO_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CODE_OK\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CROSS_CHAIN_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DUSTY_INCOMING\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_FAIL_CHECK_VALIDATORS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_FAIL_DECODE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_LEN_OF_VAL_MISMATCH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_RELAYFEE_TOO_LARGE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_UNKNOWN_PACKAGE_TYPE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXPIRE_TIME_SECOND_GAP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOV_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOV_HUB_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetAllStakeInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"stakeAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"stakeCount\",\"type\":\"uint256\"}],\"internalType\":\"structBSCValidatorSet.StakeInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVIZE_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INIT_BURN_RATIO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INIT_VALIDATORSET_BYTES\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"JAIL_MESSAGE_TYPE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUM_OF_VALIDATORS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STAKE_FFF_COUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYERHUB_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKING_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_REWARD_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"StakeFFF\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HUB_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_MANAGER_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_IN_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_OUT_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UnStakeFFF\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_UPDATE_MESSAGE_TYPE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alreadyInit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bscChainID\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnRatioInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currStakeFFF\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currStakePeople\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currStakePeopleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"currentValidatorSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"consensusAddress\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"feeAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"BBCFeeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"votingPower\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"jailed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"incoming\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"currentValidatorSetMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"valAddr\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expireTimeSecondGap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"felony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"getIncoming\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleAckPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleFailAckPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleSynPackage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"responsePayload\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxStakeFFFCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxStakePeopleCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"miniStakeFFFCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"misdemeanor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"myBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numOfJailed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakeInfoIndexMap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakeInfoMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalInComing\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"updateParam\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
    36  
    37  // BSCValidatorSetFuncSigs maps the 4-byte function signature to its string representation.
    38  var BSCValidatorSetFuncSigs = map[string]string{
    39  	"3dffc387": "BIND_CHANNELID()",
    40  	"fccc2813": "BURN_ADDRESS()",
    41  	"3de0f0d8": "BURN_RATIO_SCALE()",
    42  	"ab51bb96": "CODE_OK()",
    43  	"51e80672": "CROSS_CHAIN_CONTRACT_ADDR()",
    44  	"d86222d5": "DUSTY_INCOMING()",
    45  	"81650b62": "ERROR_FAIL_CHECK_VALIDATORS()",
    46  	"0bee7a67": "ERROR_FAIL_DECODE()",
    47  	"5d77156c": "ERROR_LEN_OF_VAL_MISMATCH()",
    48  	"219f22d5": "ERROR_RELAYFEE_TOO_LARGE()",
    49  	"eda5868c": "ERROR_UNKNOWN_PACKAGE_TYPE()",
    50  	"853230aa": "EXPIRE_TIME_SECOND_GAP()",
    51  	"96713da9": "GOV_CHANNELID()",
    52  	"9dc09262": "GOV_HUB_ADDR()",
    53  	"54b1a671": "GetAllStakeInfo()",
    54  	"6e47b482": "INCENTIVIZE_ADDR()",
    55  	"78dfed4a": "INIT_BURN_RATIO()",
    56  	"a5422d5c": "INIT_VALIDATORSET_BYTES()",
    57  	"bf9f4995": "JAIL_MESSAGE_TYPE()",
    58  	"dc927faf": "LIGHT_CLIENT_ADDR()",
    59  	"e086c7b1": "MAX_NUM_OF_VALIDATORS()",
    60  	"8a10febe": "MAX_STAKE_FFF_COUNT()",
    61  	"aaf5eb68": "PRECISION()",
    62  	"a1a11bf5": "RELAYERHUB_CONTRACT_ADDR()",
    63  	"7942fd05": "SLASH_CHANNELID()",
    64  	"43756e5c": "SLASH_CONTRACT_ADDR()",
    65  	"4bf6c882": "STAKING_CHANNELID()",
    66  	"c81b1662": "SYSTEM_REWARD_ADDR()",
    67  	"0db6cccb": "StakeFFF()",
    68  	"fd6a6879": "TOKEN_HUB_ADDR()",
    69  	"75d47a0a": "TOKEN_MANAGER_ADDR()",
    70  	"70fd5bad": "TRANSFER_IN_CHANNELID()",
    71  	"fc3e5908": "TRANSFER_OUT_CHANNELID()",
    72  	"30c62a13": "UnStakeFFF()",
    73  	"5667515a": "VALIDATORS_UPDATE_MESSAGE_TYPE()",
    74  	"f9a2bbc7": "VALIDATOR_CONTRACT_ADDR()",
    75  	"a78abc16": "alreadyInit()",
    76  	"493279b1": "bscChainID()",
    77  	"5192c82c": "burnRatio()",
    78  	"152ad3b8": "burnRatioInitialized()",
    79  	"101a875f": "currStakeFFF()",
    80  	"93a101f3": "currStakePeople()",
    81  	"e3260b57": "currStakePeopleIndex()",
    82  	"6969a25c": "currentValidatorSet(uint256)",
    83  	"ad3c9da6": "currentValidatorSetMap(address)",
    84  	"f340fa01": "deposit(address)",
    85  	"86249882": "expireTimeSecondGap()",
    86  	"35409f7f": "felony(address)",
    87  	"565c56b3": "getIncoming(address)",
    88  	"b7ab4db5": "getValidators()",
    89  	"831d65d1": "handleAckPackage(uint8,bytes)",
    90  	"c8509d81": "handleFailAckPackage(uint8,bytes)",
    91  	"1182b875": "handleSynPackage(uint8,bytes)",
    92  	"e1c7392a": "init()",
    93  	"b2ccf3a4": "maxStakeFFFCount()",
    94  	"f78ffcbc": "maxStakePeopleCount()",
    95  	"1faea20b": "miniStakeFFFCount()",
    96  	"eb57e202": "misdemeanor(address)",
    97  	"c9116b69": "myBalance()",
    98  	"daacdb66": "numOfJailed()",
    99  	"8da5cb5b": "owner()",
   100  	"7dedf367": "stakeInfoIndexMap(uint256)",
   101  	"c5f30db5": "stakeInfoMap(address)",
   102  	"1ff18069": "totalInComing()",
   103  	"ac431751": "updateParam(string,bytes)",
   104  }
   105  
   106  // BSCValidatorSetBin is the compiled bytecode used for deploying new contracts.
   107  var BSCValidatorSetBin = "0x608060405234801561001057600080fd5b506148c2806100206000396000f3fe6080604052600436106103ce5760003560e01c80638a10febe116101fd578063c81b166211610118578063e3260b57116100ab578063f78ffcbc1161007a578063f78ffcbc14610979578063f9a2bbc71461098e578063fc3e5908146109a3578063fccc2813146109b8578063fd6a6879146109cd576103ce565b8063e3260b571461091c578063eb57e20214610931578063eda5868c14610951578063f340fa0114610966576103ce565b8063daacdb66116100e7578063daacdb66146108c8578063dc927faf146108dd578063e086c7b1146108f2578063e1c7392a14610907576103ce565b8063c81b166214610889578063c8509d81146106d6578063c9116b691461089e578063d86222d5146108b3576103ce565b8063aaf5eb6811610190578063b2ccf3a41161015f578063b2ccf3a414610832578063b7ab4db514610847578063bf9f4995146104f5578063c5f30db514610869576103ce565b8063aaf5eb68146107c8578063ab51bb96146107dd578063ac431751146107f2578063ad3c9da614610812576103ce565b80639dc09262116101cc5780639dc0926214610774578063a1a11bf514610789578063a5422d5c1461079e578063a78abc16146107b3576103ce565b80638a10febe146107205780638da5cb5b1461073557806393a101f31461074a57806396713da91461075f576103ce565b806351e80672116102ed57806375d47a0a1161028057806381650b621161024f57806381650b62146106c1578063831d65d1146106d6578063853230aa146106f6578063862498821461070b576103ce565b806375d47a0a1461066257806378dfed4a146106775780637942fd051461068c5780637dedf367146106a1576103ce565b80635d77156c116102bc5780635d77156c146105f15780636969a25c146106065780636e47b4821461063857806370fd5bad1461064d576103ce565b806351e806721461058557806354b1a6711461059a578063565c56b3146105bc5780635667515a146105dc576103ce565b806330c62a131161036557806343756e5c1161033457806343756e5c14610517578063493279b1146105395780634bf6c8821461055b5780635192c82c14610570576103ce565b806330c62a13146104b857806335409f7f146104c05780633de0f0d8146104e05780633dffc387146104f5576103ce565b8063152ad3b8116103a1578063152ad3b8146104575780631faea20b146104795780631ff180691461048e578063219f22d5146104a3576103ce565b80630bee7a67146103d35780630db6cccb146103fe578063101a875f146104085780631182b8751461042a575b600080fd5b3480156103df57600080fd5b506103e86109e2565b6040516103f59190614789565b60405180910390f35b6104066109e7565b005b34801561041457600080fd5b5061041d6109f3565b6040516103f59190614780565b34801561043657600080fd5b5061044a610445366004613f2f565b6109f9565b6040516103f5919061419a565b34801561046357600080fd5b5061046c610b89565b6040516103f5919061418f565b34801561048557600080fd5b5061041d610b92565b34801561049a57600080fd5b5061041d610b9e565b3480156104af57600080fd5b506103e8610ba4565b610406610ba9565b3480156104cc57600080fd5b506104066104db366004613e50565b610c81565b3480156104ec57600080fd5b5061041d610f79565b34801561050157600080fd5b5061050a610f7f565b6040516103f5919061479a565b34801561052357600080fd5b5061052c610f84565b6040516103f5919061403b565b34801561054557600080fd5b5061054e610f8a565b6040516103f59190614771565b34801561056757600080fd5b5061050a610f8f565b34801561057c57600080fd5b5061041d610f94565b34801561059157600080fd5b5061052c610f9a565b3480156105a657600080fd5b506105af610fa0565b6040516103f59190614137565b3480156105c857600080fd5b5061041d6105d7366004613e50565b6110c8565b3480156105e857600080fd5b5061050a61111b565b3480156105fd57600080fd5b506103e8611120565b34801561061257600080fd5b50610626610621366004613eff565b611125565b6040516103f596959493929190614068565b34801561064457600080fd5b5061052c611189565b34801561065957600080fd5b5061050a61118f565b34801561066e57600080fd5b5061052c611194565b34801561068357600080fd5b5061041d61111b565b34801561069857600080fd5b5061050a61119a565b3480156106ad57600080fd5b5061052c6106bc366004613eff565b61119f565b3480156106cd57600080fd5b506103e86111ba565b3480156106e257600080fd5b506104066106f1366004613f2f565b6111bf565b34801561070257600080fd5b5061041d611220565b34801561071757600080fd5b5061041d611226565b34801561072c57600080fd5b5061041d61122c565b34801561074157600080fd5b5061052c611237565b34801561075657600080fd5b5061041d611246565b34801561076b57600080fd5b5061050a61124c565b34801561078057600080fd5b5061052c611251565b34801561079557600080fd5b5061052c611257565b3480156107aa57600080fd5b5061044a61125d565b3480156107bf57600080fd5b5061046c611279565b3480156107d457600080fd5b5061041d611282565b3480156107e957600080fd5b506103e861111b565b3480156107fe57600080fd5b5061040661080d366004613e97565b61128b565b34801561081e57600080fd5b5061041d61082d366004613e50565b61152c565b34801561083e57600080fd5b5061041d61153e565b34801561085357600080fd5b5061085c61154c565b6040516103f591906140aa565b34801561087557600080fd5b5061041d610884366004613e50565b611672565b34801561089557600080fd5b5061052c611684565b3480156108aa57600080fd5b5061041d61168a565b3480156108bf57600080fd5b5061041d61168e565b3480156108d457600080fd5b5061041d61169a565b3480156108e957600080fd5b5061052c6116a0565b3480156108fe57600080fd5b5061041d6116a6565b34801561091357600080fd5b506104066116ab565b34801561092857600080fd5b5061041d611857565b34801561093d57600080fd5b5061040661094c366004613e50565b61185d565b34801561095d57600080fd5b506103e8611a0c565b610406610974366004613e50565b611a11565b34801561098557600080fd5b5061041d611ca2565b34801561099a57600080fd5b5061052c611ca9565b3480156109af57600080fd5b5061050a611caf565b3480156109c457600080fd5b5061052c611cb4565b3480156109d957600080fd5b5061052c611cba565b606481565b6109f13334611cc0565b565b60035481565b60005460609060ff16610a275760405162461bcd60e51b8152600401610a1e9061424d565b60405180910390fd5b3361200014610a485760405162461bcd60e51b8152600401610a1e90614665565b610a50613d6c565b6000610a9185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e4d92505050565b9150915080610aad57610aa46064611fa6565b92505050610b82565b815160009060ff16610acd57610ac68360200151612007565b9050610b4e565b825160ff1660011415610b4a57826020015151600114610b24577f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2604051610b149061442b565b60405180910390a1506067610b45565b610ac68360200151600081518110610b3857fe5b6020026020010151612c04565b610b4e565b5060655b63ffffffff8116610b735750506040805160008152602081019091529150610b829050565b610b7c81611fa6565b93505050505b9392505050565b600d5460ff1681565b670de0b6b3a764000081565b60075481565b606881565b33600081815260096020526040902054610bd55760405162461bcd60e51b8152600401610a1e906142bb565b3360009081526009602052604080822054905190916001600160a01b0384169183156108fc0291849190818181858888f19350505050158015610c1c573d6000803e3d6000fd5b50336000818152600960205260408082208054600380549190910390559190915560018054600019019055517f433979128f828c623a175588cd9821124640d4353dd48d812d2b7273f1b76c3f91610c7591849061404f565b60405180910390a15050565b3361100114610ca25760405162461bcd60e51b8152600401610a1e90614728565b6001600160a01b03811660009081526008602052604090205480610cc65750610f76565b600181039050600060058281548110610cdb57fe5b60009182526020909120600360049092020101546005549091506000190180610d2a57600060058481548110610d0d57fe5b906000526020600020906004020160030181905550505050610f76565b836001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051610d639190614780565b60405180910390a26001600160a01b038416600090815260086020526040812055600554600019018314610eaf57600580546000198101908110610da357fe5b906000526020600020906004020160058481548110610dbe57fe5b600091825260208220835460049092020180546001600160a01b03199081166001600160a01b0393841617825560018086015481840180548416918616919091179055600280870180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b199094169390931790556003938401549301929092556005805492860192600892919087908110610e8457fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020555b6005805480610eba57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b03191690556003018190559155818381610f0d57fe5b0490508015610f715760055460005b81811015610f6e578260058281548110610f3257fe5b9060005260206000209060040201600301540160058281548110610f5257fe5b6000918252602090912060036004909202010155600101610f1c565b50505b505050505b50565b61271081565b600181565b61100181565b606081565b600881565b600c5481565b61200081565b60606000805b600254811015610fee576000818152600a60209081526040808320546001600160a01b03168084526009909252909120548015610fe4576001909301925b5050600101610fa6565b5060608160405190808252806020026020018201604052801561102b57816020015b611018613d84565b8152602001906001900390816110105790505b50905060005b6002548110156110c1576000818152600a60209081526040808320546001600160a01b031680845260099092529091205480156110b7578184848151811061107557fe5b6020026020010151600001906001600160a01b031690816001600160a01b031681525050808484815181106110a657fe5b602002602001015160200181815250505b5050600101611031565b5091505090565b6001600160a01b038116600090815260086020526040812054806110f0576000915050611116565b6005600182038154811061110057fe5b9060005260206000209060040201600301549150505b919050565b600081565b606781565b6005818154811061113257fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b61100881565b600b81565b600a602052600090815260409020546001600160a01b031681565b606681565b33612000146111e05760405162461bcd60e51b8152600401610a1e90614665565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051611213939291906147a8565b60405180910390a1505050565b61045f81565b60065481565b6603f2a69c702cdf81565b6004546001600160a01b031681565b60015481565b600981565b61100781565b61100681565b6040518060800160405280604781526020016148466047913981565b60005460ff1681565b6402540be40081565b60005460ff166112ad5760405162461bcd60e51b8152600401610a1e9061424d565b33611007146112ce5760405162461bcd60e51b8152600401610a1e906144b1565b61133884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b60208201529150612d7c9050565b156113d5576020811461135d5760405162461bcd60e51b8152600401610a1e906145de565b604080516020601f840181900481028201810190925282815260009161139b91858580838501838280828437600092019190915250612dd692505050565b9050606481101580156113b15750620186a08111155b6113cd5760405162461bcd60e51b8152600401610a1e9061438a565b6006556114e9565b61143584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150612d7c9050565b156114d1576020811461145a5760405162461bcd60e51b8152600401610a1e906141df565b604080516020601f840181900481028201810190925282815260009161149891858580838501838280828437600092019190915250612dd692505050565b90506127108111156114bc5760405162461bcd60e51b8152600401610a1e90614317565b600c55600d805460ff191660011790556114e9565b60405162461bcd60e51b8152600401610a1e90614701565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161151e94939291906141ad565b60405180910390a150505050565b60086020526000908152604090205481565b69152d02c7e14af680000081565b6005546060906000805b8281101561159d576005818154811061156b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611595576001909101905b600101611556565b506060816040519080825280602002602001820160405280156115ca578160200160208202803683370190505b50600092509050815b8381101561166a57600581815481106115e857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611662576005818154811061161857fe5b600091825260209091206004909102015482516001600160a01b039091169083908590811061164357fe5b6001600160a01b03909216602092830291909101909101526001909201915b6001016115d3565b509250505090565b60096020526000908152604090205481565b61100281565b4790565b67016345785d8a000081565b600b5481565b61100381565b602981565b60005460ff16156116ce5760405162461bcd60e51b8152600401610a1e90614540565b6116d6613d6c565b60006116f960405180608001604052806047815260200161484660479139611e4d565b915091508061171a5760405162461bcd60e51b8152600401610a1e90614624565b60005b82602001515181101561183f5760058360200151828151811061173c57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b03199182161782558486015182840180549186169183169190911790556040850151600283018054606088015160808901511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590991692909516919091179290921695909517161790925560a090920151600390910155908501518051918401926008929091908590811061181257fe5b602090810291909101810151516001600160a01b031682528101919091526040016000205560010161171d565b505061045f600655506000805460ff19166001179055565b60025481565b336110011461187e5760405162461bcd60e51b8152600401610a1e90614728565b6001600160a01b038116600090815260086020526040902054806118a25750610f76565b6001810390506000600582815481106118b757fe5b90600052602060002090600402016003015490506000600583815481106118da57fe5b6000918252602090912060036004909202010155600554604051600019909101906001600160a01b038516907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90611933908590614780565b60405180910390a28061194857505050610f76565b600081838161195357fe5b0490508015610f715760005b848110156119b157816005828154811061197557fe5b906000526020600020906004020160030154016005828154811061199557fe5b600091825260209091206003600490920201015560010161195f565b50600554600185015b81811015610f6e5782600582815481106119d057fe5b90600052602060002090600402016003015401600582815481106119f057fe5b60009182526020909120600360049092020101556001016119ba565b606581565b334114611a305760405162461bcd60e51b8152600401610a1e906146b4565b60005460ff16611a525760405162461bcd60e51b8152600401610a1e9061424d565b60003411611a725760405162461bcd60e51b8152600401610a1e906143d1565b6001600160a01b038116600090815260086020526040812054600d5434929060ff1615611a9e5750600c545b600083118015611aae5750600081115b15611b5b576000611ad7612710611acb868563ffffffff612ddb16565b9063ffffffff612e1516565b90508015611b595760405161dead9082156108fc029083906000818181858888f19350505050158015611b0e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee581604051611b3e9190614780565b60405180910390a1611b56848263ffffffff612e5716565b93505b505b8115611c5a57600060056001840381548110611b7357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611be057846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b485604051611bd39190614780565b60405180910390a2611c54565b600754611bf3908563ffffffff612e9916565b6007556003810154611c0b908563ffffffff612e9916565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590611c4b908790614780565b60405180910390a25b50611c9c565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b484604051611c939190614780565b60405180910390a25b50505050565b620186a081565b61100081565b600381565b61dead81565b61100481565b80670de0b6b3a76400008110801590611cfe57506001600160a01b03831660009081526009602052604090205469152d02c7e14af680000090820111155b611d1a5760405162461bcd60e51b8152600401610a1e90614577565b6001600160a01b038316600090815260096020526040902054158015611d485750620186a060015460010111155b80611d6a57506001600160a01b03831660009081526009602052604090205415155b611d865760405162461bcd60e51b8152600401610a1e906142e0565b6001600160a01b038316600090815260096020526040902054611df457600180546000908152600a6020908152604080832080546001600160a01b0319166001600160a01b038916908117909155835260099091529020829055805481018155600280549091019055611e13565b6001600160a01b03831660009081526009602052604090208054820190555b60038054820190556040517f26a5c0f8e27c8ffa9a8414a94d6c0137a2ec1446b6925835dc0cf5ba74d2967f90611213908590849061404f565b611e55613d6c565b6000611e5f613d6c565b611e67613d9b565b611e78611e7386612ebe565b612ee3565b90506000805b611e8783612f2d565b15611f985780611eac57611ea2611e9d84612f4e565b612f9c565b60ff168452611f90565b8060011415611f8b576060611ec8611ec385612f4e565b61301e565b90508051604051908082528060200260200182016040528015611f0557816020015b611ef2613dbb565b815260200190600190039081611eea5790505b50602086015260005b8151811015611f8057611f1f613dbb565b6000611f3d848481518110611f3057fe5b60200260200101516130ef565b9150915080611f5a57876000995099505050505050505050611fa1565b8188602001518481518110611f6b57fe5b60209081029190910101525050600101611f0e565b506001925050611f90565b611f98565b600101611e7e565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081611fc0579050509050611fe68363ffffffff166131cc565b81600081518110611ff357fe5b6020026020010181905250610b82816131df565b600080606061201584613269565b9150915081612060577f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb28160405161204d919061419a565b60405180910390a1606692505050611116565b600080805b6005548110156120dd5767016345785d8a00006005828154811061208557fe5b906000526020600020906004020160030154106120a7576001909201916120d5565b6000600582815481106120b657fe5b90600052602060002090600402016003015411156120d5576001909101905b600101612065565b5060608260405190808252806020026020018201604052801561210a578160200160208202803683370190505b509050606083604051908082528060200260200182016040528015612139578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015612168578160200160208202803683370190505b509050606085604051908082528060200260200182016040528015612197578160200160208202803683370190505b50905060006060866040519080825280602002602001820160405280156121c8578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156121f7578160200160208202803683370190505b509050600098506000975060608d905060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561224457600080fd5b505afa158015612258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227c9190613f17565b905067016345785d8a00008111156122d9577f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb26040516122bb906144ff565b60405180910390a160689d5050505050505050505050505050611116565b60005b60055481101561254c5767016345785d8a0000600582815481106122fc57fe5b90600052602060002090600402016003015410612482576005818154811061232057fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b03168a8d8151811061235157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006005838154811061238657fe5b9060005260206000209060040201600301548161239f57fe5b06600583815481106123ad57fe5b9060005260206000209060040201600301540390506123d58382612e5790919063ffffffff16565b8a8e815181106123e157fe5b602002602001018181525050600582815481106123fa57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316888e8151811061242b57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081898e8151811061245857fe5b6020908102919091010152612473878263ffffffff612e9916565b6001909d019c96506125449050565b60006005828154811061249157fe5b906000526020600020906004020160030154111561254457600581815481106124b657fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316858c815181106124e757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506005818154811061251457fe5b906000526020600020906004020160030154848c8151811061253257fe5b60209081029190910101526001909a01995b6001016122dc565b50600085156127c2576006546040516303702b2960e51b815261100491636e056520918991612586918f918f918e914201906004016140bd565b6020604051808303818588803b15801561259f57600080fd5b505af1935050505080156125d0575060408051601f3d908101601f191682019092526125cd91810190613e77565b60015b612747576040516000815260443d10156125ec57506000612687565b60046000803e60005160e01c6308c379a0811461260d576000915050612687565b60043d036004833e81513d60248201116001600160401b038211171561263857600092505050612687565b80830180516001600160401b03811115612659576000945050505050612687565b8060208301013d860181111561267757600095505050505050612687565b601f01601f191660405250925050505b8061269257506126d4565b60019150867fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280826040516126c6919061419a565b60405180910390a250612742565b3d8080156126fe576040519150601f19603f3d011682016040523d82523d6000602084013e612703565b606091505b5060019150867fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051612738919061419a565b60405180910390a2505b6127c2565b8015612789577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b708760405161277c9190614780565b60405180910390a16127c0565b867fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf2806040516127b790614216565b60405180910390a25b505b801561299f5760005b885181101561299d5760008982815181106127e257fe5b602002602001015190506000600582815481106127fb57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b03166001600160a01b03166108fc6005848154811061283957fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015612902576005828154811061287a57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b03166001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d600584815481106128d657fe5b9060005260206000209060040201600301546040516128f59190614780565b60405180910390a2612993565b6005828154811061290f57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b03166001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d6005848154811061296b57fe5b90600052602060002090600402016003015460405161298a9190614780565b60405180910390a25b50506001016127cb565b505b845115612ae95760005b8551811015612ae75760008682815181106129c057fe5b60200260200101516001600160a01b03166108fc8784815181106129e057fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015612a7657868281518110612a1657fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d878481518110612a5457fe5b6020026020010151604051612a699190614780565b60405180910390a2612ade565b868281518110612a8257fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d878481518110612ac057fe5b6020026020010151604051612ad59190614780565b60405180910390a25b506001016129a9565b505b4715612b56577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051612b1e9190614780565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015612b54573d6000803e3d6000fd5b505b60006007819055600b55825115612b7057612b708361334b565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612bad57600080fd5b505af1158015612bc1573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a15060009f9e505050505050505050505050505050565b80516001600160a01b0316600090815260086020526040812054801580612c56575060056001820381548110612c3657fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b15612c9c5782516040516001600160a01b03909116907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26000915050611116565b600554600b54600019820111801590612cf25784516040516001600160a01b03909116907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a260009350505050611116565b600b80546001908101909155600580546000198601908110612d1057fe5b6000918252602082206002600490920201018054921515600160e01b0260ff60e01b199093169290921790915585516040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a2506000949350505050565b600081604051602001612d8f919061401f565b6040516020818303038152906040528051906020012083604051602001612db6919061401f565b604051602081830303815290604052805190602001201490505b92915050565b015190565b600082612dea57506000612dd0565b82820282848281612df757fe5b0414610b825760405162461bcd60e51b8152600401610a1e90614470565b6000610b8283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061380d565b6000610b8283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613844565b600082820183811015610b825760405162461bcd60e51b8152600401610a1e90614284565b612ec6613df0565b506040805180820190915281518152602082810190820152919050565b612eeb613d9b565b612ef482613870565b612efd57600080fd5b6000612f0c83602001516138aa565b60208085015160408051808201909152868152920190820152915050919050565b6000612f37613df0565b505080518051602091820151919092015191011190565b612f56613df0565b612f5f82612f2d565b612f6857600080fd5b60208201516000612f788261390d565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612fb157508151602110155b612fba57600080fd5b6000612fc983602001516138aa565b90508083600001511015612fef5760405162461bcd60e51b8152600401610a1e906145a7565b82516020808501518301805192849003929183101561301557826020036101000a820491505b50949350505050565b606061302982613870565b61303257600080fd5b600061303d836139ee565b905060608160405190808252806020026020018201604052801561307b57816020015b613068613df0565b8152602001906001900390816130605790505b509050600061308d85602001516138aa565b60208601510190506000805b848110156130e4576130aa8361390d565b91506040518060400160405280838152602001848152508482815181106130cd57fe5b602090810291909101015291810191600101613099565b509195945050505050565b6130f7613dbb565b6000613101613dbb565b613109613d9b565b61311285612ee3565b90506000805b61312183612f2d565b15611f98578061314c5761313c61313784612f4e565b613a4a565b6001600160a01b031684526131c4565b80600114156131745761316161313784612f4e565b6001600160a01b031660208501526131c4565b806002141561319c5761318961313784612f4e565b6001600160a01b031660408501526131c4565b8060031415611f8b576131b1611e9d84612f4e565b6001600160401b03166060850152600191505b600101613118565b6060612dd06131da83613a64565b613b4a565b60608151600014156132005750604080516000815260208101909152611116565b60608260008151811061320f57fe5b602002602001015190506000600190505b8351811015613250576132468285838151811061323957fe5b6020026020010151613b9c565b9150600101613220565b50610b82613263825160c060ff16613c19565b82613b9c565b6000606060298351111561329b5760006040518060600160405280602981526020016147f26029913991509150611fa1565b60005b83518110156133315760005b81811015613328578481815181106132be57fe5b6020026020010151600001516001600160a01b03168583815181106132df57fe5b6020026020010151600001516001600160a01b031614156133205760006040518060600160405280602b815260200161481b602b9139935093505050611fa1565b6001016132aa565b5060010161329e565b505060408051602081019091526000815260019150915091565b600554815160005b82811015613468576001613365613dbb565b6005838154811061337257fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561343c5786818151811061340257fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613434576000925061343c565b6001016133ee565b50811561345e5780516001600160a01b03166000908152600860205260408120555b5050600101613353565b50808211156134dd57805b828110156134db57600580548061348657fe5b60008281526020812060046000199093019283020180546001600160a01b03199081168255600182810180549092169091556002820180546001600160e81b0319169055600390910191909155915501613473565b505b60008183106134ec57816134ee565b825b905060005b818110156136e8576135a085828151811061350a57fe5b60200260200101516005838154811061351f57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152613ceb565b6136bb5780600101600860008784815181106135b857fe5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508481815181106135f457fe5b60200260200101516005828154811061360957fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101556136e0565b6000600582815481106136ca57fe5b9060005260206000209060040201600301819055505b6001016134f3565b5082821115611c9c57825b82811015610f7157600585828151811061370957fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b03199182161782559484015181830180549185169187169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909916919091179290921694909417169490941790915560a0909101516003909201919091558651908301916008918890859081106137e057fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016136f3565b6000818361382e5760405162461bcd60e51b8152600401610a1e919061419a565b50600083858161383a57fe5b0495945050505050565b600081848411156138685760405162461bcd60e51b8152600401610a1e919061419a565b505050900390565b805160009061388157506000611116565b6020820151805160001a9060c08210156138a057600092505050611116565b5060019392505050565b8051600090811a60808110156138c4576000915050611116565b60b88110806138df575060c081108015906138df575060f881105b156138ee576001915050611116565b60c08110156139025760b519019050611116565b60f519019050611116565b80516000908190811a608081101561392857600191506139e7565b60b881101561393d57607e19810191506139e7565b60c081101561398e57600060b78203600186019550806020036101000a8651049150600181018201935050808310156139885760405162461bcd60e51b8152600401610a1e90614400565b506139e7565b60f88110156139a35760be19810191506139e7565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156139e55760405162461bcd60e51b8152600401610a1e90614400565b505b5092915050565b80516000906139ff57506000611116565b60008090506000613a1384602001516138aa565b602085015185519181019250015b80821015613a4157613a328261390d565b60019093019290910190613a21565b50909392505050565b8051600090601514613a5b57600080fd5b612dd082612f9c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416613aa857506018613acc565b6fffffffffffffffffffffffffffffffff198416613ac857506010613acc565b5060005b6020811015613b0257818181518110613ae157fe5b01602001516001600160f81b03191615613afa57613b02565b600101613acc565b60008160200390506060816040519080825280601f01601f191660200182016040528015613b37576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015613b7c5750607f60f81b82600081518110613b6a57fe5b01602001516001600160f81b03191611155b15613b88575080611116565b612dd0613b9a8351608060ff16613c19565b835b6060806040519050835180825260208201818101602087015b81831015613bcd578051835260209283019201613bb5565b50855184518101855292509050808201602086015b81831015613bfa578051835260209283019201613be2565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310613c435760405162461bcd60e51b8152600401610a1e90614362565b60408051600180825281830190925260609160208201818036833701905050905060378411613c9d5782840160f81b81600081518110613c7f57fe5b60200101906001600160f81b031916908160001a9053509050612dd0565b6060613ca885613a64565b90508381510160370160f81b82600081518110613cc157fe5b60200101906001600160f81b031916908160001a905350613ce28282613b9c565b95945050505050565b805182516000916001600160a01b039182169116148015613d25575081602001516001600160a01b031683602001516001600160a01b0316145b8015613d4a575081604001516001600160a01b031683604001516001600160a01b0316145b8015610b825750506060908101519101516001600160401b0390811691161490565b60408051808201909152600081526060602082015290565b604080518082019091526000808252602082015290565b6040518060400160405280613dae613df0565b8152602001600081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604051806040016040528060008152602001600081525090565b60008083601f840112613e1b578182fd5b5081356001600160401b03811115613e31578182fd5b602083019150836020828501011115613e4957600080fd5b9250929050565b600060208284031215613e61578081fd5b81356001600160a01b0381168114610b82578182fd5b600060208284031215613e88578081fd5b81518015158114610b82578182fd5b60008060008060408587031215613eac578283fd5b84356001600160401b0380821115613ec2578485fd5b613ece88838901613e0a565b90965094506020870135915080821115613ee6578384fd5b50613ef387828801613e0a565b95989497509550505050565b600060208284031215613f10578081fd5b5035919050565b600060208284031215613f28578081fd5b5051919050565b600080600060408486031215613f43578283fd5b833560ff81168114613f53578384fd5b925060208401356001600160401b03811115613f6d578283fd5b613f7986828701613e0a565b9497909650939450505050565b6000815180845260208085019450808401835b83811015613fbe5781516001600160a01b031687529582019590820190600101613f99565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261400b8160208601602086016147c5565b601f01601f19169290920160200192915050565b600082516140318184602087016147c5565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b600060208252610b826020830184613f86565b6000608082526140d06080830187613f86565b828103602084810191909152865180835287820192820190845b81811015614106578451835293830193918301916001016140ea565b5050848103604086015261411a8188613f86565b93505050506001600160401b038316606083015295945050505050565b602080825282518282018190526000919060409081850190868401855b8281101561418257815180516001600160a01b03168552860151868501529284019290850190600101614154565b5091979650505050505050565b901515815260200190565b600060208252610b826020830184613ff3565b6000604082526141c1604083018688613fc9565b82810360208401526141d4818587613fc9565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600b908201526a1b5d5cdd081cdd185ad95960aa1b604082015260600190565b60208082526019908201527f7374616b652070656f706c65206f7574206f662072616e676500000000000000604082015260600190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601690820152751cdd185ad94818dbdd5b9d081b5d5cdd081d985b1a5960521b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152613ce2604083018486613fc9565b60005b838110156147e05781810151838201526020016147c8565b83811115611c9c575050600091015256fe746865206e756d626572206f662076616c696461746f72732065786365656420746865206c696d69746475706c696361746520636f6e73656e7375732061646472657373206f662076616c696461746f72536574f84580f842f8409485245585de1768e6d40b46c5b4d0c17785ab7a9e9485245585de1768e6d40b46c5b4d0c17785ab7a9e9485245585de1768e6d40b46c5b4d0c17785ab7a9e64a2646970667358221220ef67818951d955e4e7058b33107f57496ec3e4eb35ce5bcdf12a5db94d8bf9d564736f6c63430006040033"
   108  
   109  // DeployBSCValidatorSet deploys a new Ethereum contract, binding an instance of BSCValidatorSet to it.
   110  func DeployBSCValidatorSet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BSCValidatorSet, error) {
   111  	parsed, err := abi.JSON(strings.NewReader(BSCValidatorSetABI))
   112  	if err != nil {
   113  		return common.Address{}, nil, nil, err
   114  	}
   115  
   116  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BSCValidatorSetBin), backend)
   117  	if err != nil {
   118  		return common.Address{}, nil, nil, err
   119  	}
   120  	return address, tx, &BSCValidatorSet{BSCValidatorSetCaller: BSCValidatorSetCaller{contract: contract}, BSCValidatorSetTransactor: BSCValidatorSetTransactor{contract: contract}, BSCValidatorSetFilterer: BSCValidatorSetFilterer{contract: contract}}, nil
   121  }
   122  
   123  // BSCValidatorSet is an auto generated Go binding around an Ethereum contract.
   124  type BSCValidatorSet struct {
   125  	BSCValidatorSetCaller     // Read-only binding to the contract
   126  	BSCValidatorSetTransactor // Write-only binding to the contract
   127  	BSCValidatorSetFilterer   // Log filterer for contract events
   128  }
   129  
   130  // BSCValidatorSetCaller is an auto generated read-only Go binding around an Ethereum contract.
   131  type BSCValidatorSetCaller struct {
   132  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   133  }
   134  
   135  // BSCValidatorSetTransactor is an auto generated write-only Go binding around an Ethereum contract.
   136  type BSCValidatorSetTransactor struct {
   137  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   138  }
   139  
   140  // BSCValidatorSetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   141  type BSCValidatorSetFilterer struct {
   142  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   143  }
   144  
   145  // BSCValidatorSetSession is an auto generated Go binding around an Ethereum contract,
   146  // with pre-set call and transact options.
   147  type BSCValidatorSetSession struct {
   148  	Contract     *BSCValidatorSet  // Generic contract binding to set the session for
   149  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   150  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   151  }
   152  
   153  // BSCValidatorSetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   154  // with pre-set call options.
   155  type BSCValidatorSetCallerSession struct {
   156  	Contract *BSCValidatorSetCaller // Generic contract caller binding to set the session for
   157  	CallOpts bind.CallOpts          // Call options to use throughout this session
   158  }
   159  
   160  // BSCValidatorSetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   161  // with pre-set transact options.
   162  type BSCValidatorSetTransactorSession struct {
   163  	Contract     *BSCValidatorSetTransactor // Generic contract transactor binding to set the session for
   164  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
   165  }
   166  
   167  // BSCValidatorSetRaw is an auto generated low-level Go binding around an Ethereum contract.
   168  type BSCValidatorSetRaw struct {
   169  	Contract *BSCValidatorSet // Generic contract binding to access the raw methods on
   170  }
   171  
   172  // BSCValidatorSetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   173  type BSCValidatorSetCallerRaw struct {
   174  	Contract *BSCValidatorSetCaller // Generic read-only contract binding to access the raw methods on
   175  }
   176  
   177  // BSCValidatorSetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   178  type BSCValidatorSetTransactorRaw struct {
   179  	Contract *BSCValidatorSetTransactor // Generic write-only contract binding to access the raw methods on
   180  }
   181  
   182  // NewBSCValidatorSet creates a new instance of BSCValidatorSet, bound to a specific deployed contract.
   183  func NewBSCValidatorSet(address common.Address, backend bind.ContractBackend) (*BSCValidatorSet, error) {
   184  	contract, err := bindBSCValidatorSet(address, backend, backend, backend)
   185  	if err != nil {
   186  		return nil, err
   187  	}
   188  	return &BSCValidatorSet{BSCValidatorSetCaller: BSCValidatorSetCaller{contract: contract}, BSCValidatorSetTransactor: BSCValidatorSetTransactor{contract: contract}, BSCValidatorSetFilterer: BSCValidatorSetFilterer{contract: contract}}, nil
   189  }
   190  
   191  // NewBSCValidatorSetCaller creates a new read-only instance of BSCValidatorSet, bound to a specific deployed contract.
   192  func NewBSCValidatorSetCaller(address common.Address, caller bind.ContractCaller) (*BSCValidatorSetCaller, error) {
   193  	contract, err := bindBSCValidatorSet(address, caller, nil, nil)
   194  	if err != nil {
   195  		return nil, err
   196  	}
   197  	return &BSCValidatorSetCaller{contract: contract}, nil
   198  }
   199  
   200  // NewBSCValidatorSetTransactor creates a new write-only instance of BSCValidatorSet, bound to a specific deployed contract.
   201  func NewBSCValidatorSetTransactor(address common.Address, transactor bind.ContractTransactor) (*BSCValidatorSetTransactor, error) {
   202  	contract, err := bindBSCValidatorSet(address, nil, transactor, nil)
   203  	if err != nil {
   204  		return nil, err
   205  	}
   206  	return &BSCValidatorSetTransactor{contract: contract}, nil
   207  }
   208  
   209  // NewBSCValidatorSetFilterer creates a new log filterer instance of BSCValidatorSet, bound to a specific deployed contract.
   210  func NewBSCValidatorSetFilterer(address common.Address, filterer bind.ContractFilterer) (*BSCValidatorSetFilterer, error) {
   211  	contract, err := bindBSCValidatorSet(address, nil, nil, filterer)
   212  	if err != nil {
   213  		return nil, err
   214  	}
   215  	return &BSCValidatorSetFilterer{contract: contract}, nil
   216  }
   217  
   218  // bindBSCValidatorSet binds a generic wrapper to an already deployed contract.
   219  func bindBSCValidatorSet(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   220  	parsed, err := abi.JSON(strings.NewReader(BSCValidatorSetABI))
   221  	if err != nil {
   222  		return nil, err
   223  	}
   224  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   225  }
   226  
   227  // Call invokes the (constant) contract method with params as input values and
   228  // sets the output to result. The result type might be a single field for simple
   229  // returns, a slice of interfaces for anonymous returns and a struct for named
   230  // returns.
   231  func (_BSCValidatorSet *BSCValidatorSetRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   232  	return _BSCValidatorSet.Contract.BSCValidatorSetCaller.contract.Call(opts, result, method, params...)
   233  }
   234  
   235  // Transfer initiates a plain transaction to move funds to the contract, calling
   236  // its default method if one is available.
   237  func (_BSCValidatorSet *BSCValidatorSetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   238  	return _BSCValidatorSet.Contract.BSCValidatorSetTransactor.contract.Transfer(opts)
   239  }
   240  
   241  // Transact invokes the (paid) contract method with params as input values.
   242  func (_BSCValidatorSet *BSCValidatorSetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   243  	return _BSCValidatorSet.Contract.BSCValidatorSetTransactor.contract.Transact(opts, method, params...)
   244  }
   245  
   246  // Call invokes the (constant) contract method with params as input values and
   247  // sets the output to result. The result type might be a single field for simple
   248  // returns, a slice of interfaces for anonymous returns and a struct for named
   249  // returns.
   250  func (_BSCValidatorSet *BSCValidatorSetCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   251  	return _BSCValidatorSet.Contract.contract.Call(opts, result, method, params...)
   252  }
   253  
   254  // Transfer initiates a plain transaction to move funds to the contract, calling
   255  // its default method if one is available.
   256  func (_BSCValidatorSet *BSCValidatorSetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   257  	return _BSCValidatorSet.Contract.contract.Transfer(opts)
   258  }
   259  
   260  // Transact invokes the (paid) contract method with params as input values.
   261  func (_BSCValidatorSet *BSCValidatorSetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   262  	return _BSCValidatorSet.Contract.contract.Transact(opts, method, params...)
   263  }
   264  
   265  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
   266  //
   267  // Solidity: function BIND_CHANNELID() view returns(uint8)
   268  func (_BSCValidatorSet *BSCValidatorSetCaller) BINDCHANNELID(opts *bind.CallOpts) (uint8, error) {
   269  	var out []interface{}
   270  	err := _BSCValidatorSet.contract.Call(opts, &out, "BIND_CHANNELID")
   271  
   272  	if err != nil {
   273  		return *new(uint8), err
   274  	}
   275  
   276  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
   277  
   278  	return out0, err
   279  
   280  }
   281  
   282  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
   283  //
   284  // Solidity: function BIND_CHANNELID() view returns(uint8)
   285  func (_BSCValidatorSet *BSCValidatorSetSession) BINDCHANNELID() (uint8, error) {
   286  	return _BSCValidatorSet.Contract.BINDCHANNELID(&_BSCValidatorSet.CallOpts)
   287  }
   288  
   289  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
   290  //
   291  // Solidity: function BIND_CHANNELID() view returns(uint8)
   292  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BINDCHANNELID() (uint8, error) {
   293  	return _BSCValidatorSet.Contract.BINDCHANNELID(&_BSCValidatorSet.CallOpts)
   294  }
   295  
   296  // BURNADDRESS is a free data retrieval call binding the contract method 0xfccc2813.
   297  //
   298  // Solidity: function BURN_ADDRESS() view returns(address)
   299  func (_BSCValidatorSet *BSCValidatorSetCaller) BURNADDRESS(opts *bind.CallOpts) (common.Address, error) {
   300  	var out []interface{}
   301  	err := _BSCValidatorSet.contract.Call(opts, &out, "BURN_ADDRESS")
   302  
   303  	if err != nil {
   304  		return *new(common.Address), err
   305  	}
   306  
   307  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   308  
   309  	return out0, err
   310  
   311  }
   312  
   313  // BURNADDRESS is a free data retrieval call binding the contract method 0xfccc2813.
   314  //
   315  // Solidity: function BURN_ADDRESS() view returns(address)
   316  func (_BSCValidatorSet *BSCValidatorSetSession) BURNADDRESS() (common.Address, error) {
   317  	return _BSCValidatorSet.Contract.BURNADDRESS(&_BSCValidatorSet.CallOpts)
   318  }
   319  
   320  // BURNADDRESS is a free data retrieval call binding the contract method 0xfccc2813.
   321  //
   322  // Solidity: function BURN_ADDRESS() view returns(address)
   323  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BURNADDRESS() (common.Address, error) {
   324  	return _BSCValidatorSet.Contract.BURNADDRESS(&_BSCValidatorSet.CallOpts)
   325  }
   326  
   327  // BURNRATIOSCALE is a free data retrieval call binding the contract method 0x3de0f0d8.
   328  //
   329  // Solidity: function BURN_RATIO_SCALE() view returns(uint256)
   330  func (_BSCValidatorSet *BSCValidatorSetCaller) BURNRATIOSCALE(opts *bind.CallOpts) (*big.Int, error) {
   331  	var out []interface{}
   332  	err := _BSCValidatorSet.contract.Call(opts, &out, "BURN_RATIO_SCALE")
   333  
   334  	if err != nil {
   335  		return *new(*big.Int), err
   336  	}
   337  
   338  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   339  
   340  	return out0, err
   341  
   342  }
   343  
   344  // BURNRATIOSCALE is a free data retrieval call binding the contract method 0x3de0f0d8.
   345  //
   346  // Solidity: function BURN_RATIO_SCALE() view returns(uint256)
   347  func (_BSCValidatorSet *BSCValidatorSetSession) BURNRATIOSCALE() (*big.Int, error) {
   348  	return _BSCValidatorSet.Contract.BURNRATIOSCALE(&_BSCValidatorSet.CallOpts)
   349  }
   350  
   351  // BURNRATIOSCALE is a free data retrieval call binding the contract method 0x3de0f0d8.
   352  //
   353  // Solidity: function BURN_RATIO_SCALE() view returns(uint256)
   354  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BURNRATIOSCALE() (*big.Int, error) {
   355  	return _BSCValidatorSet.Contract.BURNRATIOSCALE(&_BSCValidatorSet.CallOpts)
   356  }
   357  
   358  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
   359  //
   360  // Solidity: function CODE_OK() view returns(uint32)
   361  func (_BSCValidatorSet *BSCValidatorSetCaller) CODEOK(opts *bind.CallOpts) (uint32, error) {
   362  	var out []interface{}
   363  	err := _BSCValidatorSet.contract.Call(opts, &out, "CODE_OK")
   364  
   365  	if err != nil {
   366  		return *new(uint32), err
   367  	}
   368  
   369  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   370  
   371  	return out0, err
   372  
   373  }
   374  
   375  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
   376  //
   377  // Solidity: function CODE_OK() view returns(uint32)
   378  func (_BSCValidatorSet *BSCValidatorSetSession) CODEOK() (uint32, error) {
   379  	return _BSCValidatorSet.Contract.CODEOK(&_BSCValidatorSet.CallOpts)
   380  }
   381  
   382  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
   383  //
   384  // Solidity: function CODE_OK() view returns(uint32)
   385  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CODEOK() (uint32, error) {
   386  	return _BSCValidatorSet.Contract.CODEOK(&_BSCValidatorSet.CallOpts)
   387  }
   388  
   389  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
   390  //
   391  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
   392  func (_BSCValidatorSet *BSCValidatorSetCaller) CROSSCHAINCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
   393  	var out []interface{}
   394  	err := _BSCValidatorSet.contract.Call(opts, &out, "CROSS_CHAIN_CONTRACT_ADDR")
   395  
   396  	if err != nil {
   397  		return *new(common.Address), err
   398  	}
   399  
   400  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   401  
   402  	return out0, err
   403  
   404  }
   405  
   406  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
   407  //
   408  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
   409  func (_BSCValidatorSet *BSCValidatorSetSession) CROSSCHAINCONTRACTADDR() (common.Address, error) {
   410  	return _BSCValidatorSet.Contract.CROSSCHAINCONTRACTADDR(&_BSCValidatorSet.CallOpts)
   411  }
   412  
   413  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
   414  //
   415  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
   416  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CROSSCHAINCONTRACTADDR() (common.Address, error) {
   417  	return _BSCValidatorSet.Contract.CROSSCHAINCONTRACTADDR(&_BSCValidatorSet.CallOpts)
   418  }
   419  
   420  // DUSTYINCOMING is a free data retrieval call binding the contract method 0xd86222d5.
   421  //
   422  // Solidity: function DUSTY_INCOMING() view returns(uint256)
   423  func (_BSCValidatorSet *BSCValidatorSetCaller) DUSTYINCOMING(opts *bind.CallOpts) (*big.Int, error) {
   424  	var out []interface{}
   425  	err := _BSCValidatorSet.contract.Call(opts, &out, "DUSTY_INCOMING")
   426  
   427  	if err != nil {
   428  		return *new(*big.Int), err
   429  	}
   430  
   431  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   432  
   433  	return out0, err
   434  
   435  }
   436  
   437  // DUSTYINCOMING is a free data retrieval call binding the contract method 0xd86222d5.
   438  //
   439  // Solidity: function DUSTY_INCOMING() view returns(uint256)
   440  func (_BSCValidatorSet *BSCValidatorSetSession) DUSTYINCOMING() (*big.Int, error) {
   441  	return _BSCValidatorSet.Contract.DUSTYINCOMING(&_BSCValidatorSet.CallOpts)
   442  }
   443  
   444  // DUSTYINCOMING is a free data retrieval call binding the contract method 0xd86222d5.
   445  //
   446  // Solidity: function DUSTY_INCOMING() view returns(uint256)
   447  func (_BSCValidatorSet *BSCValidatorSetCallerSession) DUSTYINCOMING() (*big.Int, error) {
   448  	return _BSCValidatorSet.Contract.DUSTYINCOMING(&_BSCValidatorSet.CallOpts)
   449  }
   450  
   451  // ERRORFAILCHECKVALIDATORS is a free data retrieval call binding the contract method 0x81650b62.
   452  //
   453  // Solidity: function ERROR_FAIL_CHECK_VALIDATORS() view returns(uint32)
   454  func (_BSCValidatorSet *BSCValidatorSetCaller) ERRORFAILCHECKVALIDATORS(opts *bind.CallOpts) (uint32, error) {
   455  	var out []interface{}
   456  	err := _BSCValidatorSet.contract.Call(opts, &out, "ERROR_FAIL_CHECK_VALIDATORS")
   457  
   458  	if err != nil {
   459  		return *new(uint32), err
   460  	}
   461  
   462  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   463  
   464  	return out0, err
   465  
   466  }
   467  
   468  // ERRORFAILCHECKVALIDATORS is a free data retrieval call binding the contract method 0x81650b62.
   469  //
   470  // Solidity: function ERROR_FAIL_CHECK_VALIDATORS() view returns(uint32)
   471  func (_BSCValidatorSet *BSCValidatorSetSession) ERRORFAILCHECKVALIDATORS() (uint32, error) {
   472  	return _BSCValidatorSet.Contract.ERRORFAILCHECKVALIDATORS(&_BSCValidatorSet.CallOpts)
   473  }
   474  
   475  // ERRORFAILCHECKVALIDATORS is a free data retrieval call binding the contract method 0x81650b62.
   476  //
   477  // Solidity: function ERROR_FAIL_CHECK_VALIDATORS() view returns(uint32)
   478  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ERRORFAILCHECKVALIDATORS() (uint32, error) {
   479  	return _BSCValidatorSet.Contract.ERRORFAILCHECKVALIDATORS(&_BSCValidatorSet.CallOpts)
   480  }
   481  
   482  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
   483  //
   484  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
   485  func (_BSCValidatorSet *BSCValidatorSetCaller) ERRORFAILDECODE(opts *bind.CallOpts) (uint32, error) {
   486  	var out []interface{}
   487  	err := _BSCValidatorSet.contract.Call(opts, &out, "ERROR_FAIL_DECODE")
   488  
   489  	if err != nil {
   490  		return *new(uint32), err
   491  	}
   492  
   493  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   494  
   495  	return out0, err
   496  
   497  }
   498  
   499  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
   500  //
   501  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
   502  func (_BSCValidatorSet *BSCValidatorSetSession) ERRORFAILDECODE() (uint32, error) {
   503  	return _BSCValidatorSet.Contract.ERRORFAILDECODE(&_BSCValidatorSet.CallOpts)
   504  }
   505  
   506  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
   507  //
   508  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
   509  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ERRORFAILDECODE() (uint32, error) {
   510  	return _BSCValidatorSet.Contract.ERRORFAILDECODE(&_BSCValidatorSet.CallOpts)
   511  }
   512  
   513  // ERRORLENOFVALMISMATCH is a free data retrieval call binding the contract method 0x5d77156c.
   514  //
   515  // Solidity: function ERROR_LEN_OF_VAL_MISMATCH() view returns(uint32)
   516  func (_BSCValidatorSet *BSCValidatorSetCaller) ERRORLENOFVALMISMATCH(opts *bind.CallOpts) (uint32, error) {
   517  	var out []interface{}
   518  	err := _BSCValidatorSet.contract.Call(opts, &out, "ERROR_LEN_OF_VAL_MISMATCH")
   519  
   520  	if err != nil {
   521  		return *new(uint32), err
   522  	}
   523  
   524  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   525  
   526  	return out0, err
   527  
   528  }
   529  
   530  // ERRORLENOFVALMISMATCH is a free data retrieval call binding the contract method 0x5d77156c.
   531  //
   532  // Solidity: function ERROR_LEN_OF_VAL_MISMATCH() view returns(uint32)
   533  func (_BSCValidatorSet *BSCValidatorSetSession) ERRORLENOFVALMISMATCH() (uint32, error) {
   534  	return _BSCValidatorSet.Contract.ERRORLENOFVALMISMATCH(&_BSCValidatorSet.CallOpts)
   535  }
   536  
   537  // ERRORLENOFVALMISMATCH is a free data retrieval call binding the contract method 0x5d77156c.
   538  //
   539  // Solidity: function ERROR_LEN_OF_VAL_MISMATCH() view returns(uint32)
   540  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ERRORLENOFVALMISMATCH() (uint32, error) {
   541  	return _BSCValidatorSet.Contract.ERRORLENOFVALMISMATCH(&_BSCValidatorSet.CallOpts)
   542  }
   543  
   544  // ERRORRELAYFEETOOLARGE is a free data retrieval call binding the contract method 0x219f22d5.
   545  //
   546  // Solidity: function ERROR_RELAYFEE_TOO_LARGE() view returns(uint32)
   547  func (_BSCValidatorSet *BSCValidatorSetCaller) ERRORRELAYFEETOOLARGE(opts *bind.CallOpts) (uint32, error) {
   548  	var out []interface{}
   549  	err := _BSCValidatorSet.contract.Call(opts, &out, "ERROR_RELAYFEE_TOO_LARGE")
   550  
   551  	if err != nil {
   552  		return *new(uint32), err
   553  	}
   554  
   555  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   556  
   557  	return out0, err
   558  
   559  }
   560  
   561  // ERRORRELAYFEETOOLARGE is a free data retrieval call binding the contract method 0x219f22d5.
   562  //
   563  // Solidity: function ERROR_RELAYFEE_TOO_LARGE() view returns(uint32)
   564  func (_BSCValidatorSet *BSCValidatorSetSession) ERRORRELAYFEETOOLARGE() (uint32, error) {
   565  	return _BSCValidatorSet.Contract.ERRORRELAYFEETOOLARGE(&_BSCValidatorSet.CallOpts)
   566  }
   567  
   568  // ERRORRELAYFEETOOLARGE is a free data retrieval call binding the contract method 0x219f22d5.
   569  //
   570  // Solidity: function ERROR_RELAYFEE_TOO_LARGE() view returns(uint32)
   571  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ERRORRELAYFEETOOLARGE() (uint32, error) {
   572  	return _BSCValidatorSet.Contract.ERRORRELAYFEETOOLARGE(&_BSCValidatorSet.CallOpts)
   573  }
   574  
   575  // ERRORUNKNOWNPACKAGETYPE is a free data retrieval call binding the contract method 0xeda5868c.
   576  //
   577  // Solidity: function ERROR_UNKNOWN_PACKAGE_TYPE() view returns(uint32)
   578  func (_BSCValidatorSet *BSCValidatorSetCaller) ERRORUNKNOWNPACKAGETYPE(opts *bind.CallOpts) (uint32, error) {
   579  	var out []interface{}
   580  	err := _BSCValidatorSet.contract.Call(opts, &out, "ERROR_UNKNOWN_PACKAGE_TYPE")
   581  
   582  	if err != nil {
   583  		return *new(uint32), err
   584  	}
   585  
   586  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
   587  
   588  	return out0, err
   589  
   590  }
   591  
   592  // ERRORUNKNOWNPACKAGETYPE is a free data retrieval call binding the contract method 0xeda5868c.
   593  //
   594  // Solidity: function ERROR_UNKNOWN_PACKAGE_TYPE() view returns(uint32)
   595  func (_BSCValidatorSet *BSCValidatorSetSession) ERRORUNKNOWNPACKAGETYPE() (uint32, error) {
   596  	return _BSCValidatorSet.Contract.ERRORUNKNOWNPACKAGETYPE(&_BSCValidatorSet.CallOpts)
   597  }
   598  
   599  // ERRORUNKNOWNPACKAGETYPE is a free data retrieval call binding the contract method 0xeda5868c.
   600  //
   601  // Solidity: function ERROR_UNKNOWN_PACKAGE_TYPE() view returns(uint32)
   602  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ERRORUNKNOWNPACKAGETYPE() (uint32, error) {
   603  	return _BSCValidatorSet.Contract.ERRORUNKNOWNPACKAGETYPE(&_BSCValidatorSet.CallOpts)
   604  }
   605  
   606  // EXPIRETIMESECONDGAP is a free data retrieval call binding the contract method 0x853230aa.
   607  //
   608  // Solidity: function EXPIRE_TIME_SECOND_GAP() view returns(uint256)
   609  func (_BSCValidatorSet *BSCValidatorSetCaller) EXPIRETIMESECONDGAP(opts *bind.CallOpts) (*big.Int, error) {
   610  	var out []interface{}
   611  	err := _BSCValidatorSet.contract.Call(opts, &out, "EXPIRE_TIME_SECOND_GAP")
   612  
   613  	if err != nil {
   614  		return *new(*big.Int), err
   615  	}
   616  
   617  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   618  
   619  	return out0, err
   620  
   621  }
   622  
   623  // EXPIRETIMESECONDGAP is a free data retrieval call binding the contract method 0x853230aa.
   624  //
   625  // Solidity: function EXPIRE_TIME_SECOND_GAP() view returns(uint256)
   626  func (_BSCValidatorSet *BSCValidatorSetSession) EXPIRETIMESECONDGAP() (*big.Int, error) {
   627  	return _BSCValidatorSet.Contract.EXPIRETIMESECONDGAP(&_BSCValidatorSet.CallOpts)
   628  }
   629  
   630  // EXPIRETIMESECONDGAP is a free data retrieval call binding the contract method 0x853230aa.
   631  //
   632  // Solidity: function EXPIRE_TIME_SECOND_GAP() view returns(uint256)
   633  func (_BSCValidatorSet *BSCValidatorSetCallerSession) EXPIRETIMESECONDGAP() (*big.Int, error) {
   634  	return _BSCValidatorSet.Contract.EXPIRETIMESECONDGAP(&_BSCValidatorSet.CallOpts)
   635  }
   636  
   637  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
   638  //
   639  // Solidity: function GOV_CHANNELID() view returns(uint8)
   640  func (_BSCValidatorSet *BSCValidatorSetCaller) GOVCHANNELID(opts *bind.CallOpts) (uint8, error) {
   641  	var out []interface{}
   642  	err := _BSCValidatorSet.contract.Call(opts, &out, "GOV_CHANNELID")
   643  
   644  	if err != nil {
   645  		return *new(uint8), err
   646  	}
   647  
   648  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
   649  
   650  	return out0, err
   651  
   652  }
   653  
   654  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
   655  //
   656  // Solidity: function GOV_CHANNELID() view returns(uint8)
   657  func (_BSCValidatorSet *BSCValidatorSetSession) GOVCHANNELID() (uint8, error) {
   658  	return _BSCValidatorSet.Contract.GOVCHANNELID(&_BSCValidatorSet.CallOpts)
   659  }
   660  
   661  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
   662  //
   663  // Solidity: function GOV_CHANNELID() view returns(uint8)
   664  func (_BSCValidatorSet *BSCValidatorSetCallerSession) GOVCHANNELID() (uint8, error) {
   665  	return _BSCValidatorSet.Contract.GOVCHANNELID(&_BSCValidatorSet.CallOpts)
   666  }
   667  
   668  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
   669  //
   670  // Solidity: function GOV_HUB_ADDR() view returns(address)
   671  func (_BSCValidatorSet *BSCValidatorSetCaller) GOVHUBADDR(opts *bind.CallOpts) (common.Address, error) {
   672  	var out []interface{}
   673  	err := _BSCValidatorSet.contract.Call(opts, &out, "GOV_HUB_ADDR")
   674  
   675  	if err != nil {
   676  		return *new(common.Address), err
   677  	}
   678  
   679  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   680  
   681  	return out0, err
   682  
   683  }
   684  
   685  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
   686  //
   687  // Solidity: function GOV_HUB_ADDR() view returns(address)
   688  func (_BSCValidatorSet *BSCValidatorSetSession) GOVHUBADDR() (common.Address, error) {
   689  	return _BSCValidatorSet.Contract.GOVHUBADDR(&_BSCValidatorSet.CallOpts)
   690  }
   691  
   692  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
   693  //
   694  // Solidity: function GOV_HUB_ADDR() view returns(address)
   695  func (_BSCValidatorSet *BSCValidatorSetCallerSession) GOVHUBADDR() (common.Address, error) {
   696  	return _BSCValidatorSet.Contract.GOVHUBADDR(&_BSCValidatorSet.CallOpts)
   697  }
   698  
   699  // GetAllStakeInfo is a free data retrieval call binding the contract method 0x54b1a671.
   700  //
   701  // Solidity: function GetAllStakeInfo() view returns((address,uint256)[])
   702  func (_BSCValidatorSet *BSCValidatorSetCaller) GetAllStakeInfo(opts *bind.CallOpts) ([]BSCValidatorSetStakeInfo, error) {
   703  	var out []interface{}
   704  	err := _BSCValidatorSet.contract.Call(opts, &out, "GetAllStakeInfo")
   705  
   706  	if err != nil {
   707  		return *new([]BSCValidatorSetStakeInfo), err
   708  	}
   709  
   710  	out0 := *abi.ConvertType(out[0], new([]BSCValidatorSetStakeInfo)).(*[]BSCValidatorSetStakeInfo)
   711  
   712  	return out0, err
   713  
   714  }
   715  
   716  // GetAllStakeInfo is a free data retrieval call binding the contract method 0x54b1a671.
   717  //
   718  // Solidity: function GetAllStakeInfo() view returns((address,uint256)[])
   719  func (_BSCValidatorSet *BSCValidatorSetSession) GetAllStakeInfo() ([]BSCValidatorSetStakeInfo, error) {
   720  	return _BSCValidatorSet.Contract.GetAllStakeInfo(&_BSCValidatorSet.CallOpts)
   721  }
   722  
   723  // GetAllStakeInfo is a free data retrieval call binding the contract method 0x54b1a671.
   724  //
   725  // Solidity: function GetAllStakeInfo() view returns((address,uint256)[])
   726  func (_BSCValidatorSet *BSCValidatorSetCallerSession) GetAllStakeInfo() ([]BSCValidatorSetStakeInfo, error) {
   727  	return _BSCValidatorSet.Contract.GetAllStakeInfo(&_BSCValidatorSet.CallOpts)
   728  }
   729  
   730  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
   731  //
   732  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
   733  func (_BSCValidatorSet *BSCValidatorSetCaller) INCENTIVIZEADDR(opts *bind.CallOpts) (common.Address, error) {
   734  	var out []interface{}
   735  	err := _BSCValidatorSet.contract.Call(opts, &out, "INCENTIVIZE_ADDR")
   736  
   737  	if err != nil {
   738  		return *new(common.Address), err
   739  	}
   740  
   741  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   742  
   743  	return out0, err
   744  
   745  }
   746  
   747  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
   748  //
   749  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
   750  func (_BSCValidatorSet *BSCValidatorSetSession) INCENTIVIZEADDR() (common.Address, error) {
   751  	return _BSCValidatorSet.Contract.INCENTIVIZEADDR(&_BSCValidatorSet.CallOpts)
   752  }
   753  
   754  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
   755  //
   756  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
   757  func (_BSCValidatorSet *BSCValidatorSetCallerSession) INCENTIVIZEADDR() (common.Address, error) {
   758  	return _BSCValidatorSet.Contract.INCENTIVIZEADDR(&_BSCValidatorSet.CallOpts)
   759  }
   760  
   761  // INITBURNRATIO is a free data retrieval call binding the contract method 0x78dfed4a.
   762  //
   763  // Solidity: function INIT_BURN_RATIO() view returns(uint256)
   764  func (_BSCValidatorSet *BSCValidatorSetCaller) INITBURNRATIO(opts *bind.CallOpts) (*big.Int, error) {
   765  	var out []interface{}
   766  	err := _BSCValidatorSet.contract.Call(opts, &out, "INIT_BURN_RATIO")
   767  
   768  	if err != nil {
   769  		return *new(*big.Int), err
   770  	}
   771  
   772  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   773  
   774  	return out0, err
   775  
   776  }
   777  
   778  // INITBURNRATIO is a free data retrieval call binding the contract method 0x78dfed4a.
   779  //
   780  // Solidity: function INIT_BURN_RATIO() view returns(uint256)
   781  func (_BSCValidatorSet *BSCValidatorSetSession) INITBURNRATIO() (*big.Int, error) {
   782  	return _BSCValidatorSet.Contract.INITBURNRATIO(&_BSCValidatorSet.CallOpts)
   783  }
   784  
   785  // INITBURNRATIO is a free data retrieval call binding the contract method 0x78dfed4a.
   786  //
   787  // Solidity: function INIT_BURN_RATIO() view returns(uint256)
   788  func (_BSCValidatorSet *BSCValidatorSetCallerSession) INITBURNRATIO() (*big.Int, error) {
   789  	return _BSCValidatorSet.Contract.INITBURNRATIO(&_BSCValidatorSet.CallOpts)
   790  }
   791  
   792  // INITVALIDATORSETBYTES is a free data retrieval call binding the contract method 0xa5422d5c.
   793  //
   794  // Solidity: function INIT_VALIDATORSET_BYTES() view returns(bytes)
   795  func (_BSCValidatorSet *BSCValidatorSetCaller) INITVALIDATORSETBYTES(opts *bind.CallOpts) ([]byte, error) {
   796  	var out []interface{}
   797  	err := _BSCValidatorSet.contract.Call(opts, &out, "INIT_VALIDATORSET_BYTES")
   798  
   799  	if err != nil {
   800  		return *new([]byte), err
   801  	}
   802  
   803  	out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte)
   804  
   805  	return out0, err
   806  
   807  }
   808  
   809  // INITVALIDATORSETBYTES is a free data retrieval call binding the contract method 0xa5422d5c.
   810  //
   811  // Solidity: function INIT_VALIDATORSET_BYTES() view returns(bytes)
   812  func (_BSCValidatorSet *BSCValidatorSetSession) INITVALIDATORSETBYTES() ([]byte, error) {
   813  	return _BSCValidatorSet.Contract.INITVALIDATORSETBYTES(&_BSCValidatorSet.CallOpts)
   814  }
   815  
   816  // INITVALIDATORSETBYTES is a free data retrieval call binding the contract method 0xa5422d5c.
   817  //
   818  // Solidity: function INIT_VALIDATORSET_BYTES() view returns(bytes)
   819  func (_BSCValidatorSet *BSCValidatorSetCallerSession) INITVALIDATORSETBYTES() ([]byte, error) {
   820  	return _BSCValidatorSet.Contract.INITVALIDATORSETBYTES(&_BSCValidatorSet.CallOpts)
   821  }
   822  
   823  // JAILMESSAGETYPE is a free data retrieval call binding the contract method 0xbf9f4995.
   824  //
   825  // Solidity: function JAIL_MESSAGE_TYPE() view returns(uint8)
   826  func (_BSCValidatorSet *BSCValidatorSetCaller) JAILMESSAGETYPE(opts *bind.CallOpts) (uint8, error) {
   827  	var out []interface{}
   828  	err := _BSCValidatorSet.contract.Call(opts, &out, "JAIL_MESSAGE_TYPE")
   829  
   830  	if err != nil {
   831  		return *new(uint8), err
   832  	}
   833  
   834  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
   835  
   836  	return out0, err
   837  
   838  }
   839  
   840  // JAILMESSAGETYPE is a free data retrieval call binding the contract method 0xbf9f4995.
   841  //
   842  // Solidity: function JAIL_MESSAGE_TYPE() view returns(uint8)
   843  func (_BSCValidatorSet *BSCValidatorSetSession) JAILMESSAGETYPE() (uint8, error) {
   844  	return _BSCValidatorSet.Contract.JAILMESSAGETYPE(&_BSCValidatorSet.CallOpts)
   845  }
   846  
   847  // JAILMESSAGETYPE is a free data retrieval call binding the contract method 0xbf9f4995.
   848  //
   849  // Solidity: function JAIL_MESSAGE_TYPE() view returns(uint8)
   850  func (_BSCValidatorSet *BSCValidatorSetCallerSession) JAILMESSAGETYPE() (uint8, error) {
   851  	return _BSCValidatorSet.Contract.JAILMESSAGETYPE(&_BSCValidatorSet.CallOpts)
   852  }
   853  
   854  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
   855  //
   856  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
   857  func (_BSCValidatorSet *BSCValidatorSetCaller) LIGHTCLIENTADDR(opts *bind.CallOpts) (common.Address, error) {
   858  	var out []interface{}
   859  	err := _BSCValidatorSet.contract.Call(opts, &out, "LIGHT_CLIENT_ADDR")
   860  
   861  	if err != nil {
   862  		return *new(common.Address), err
   863  	}
   864  
   865  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   866  
   867  	return out0, err
   868  
   869  }
   870  
   871  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
   872  //
   873  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
   874  func (_BSCValidatorSet *BSCValidatorSetSession) LIGHTCLIENTADDR() (common.Address, error) {
   875  	return _BSCValidatorSet.Contract.LIGHTCLIENTADDR(&_BSCValidatorSet.CallOpts)
   876  }
   877  
   878  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
   879  //
   880  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
   881  func (_BSCValidatorSet *BSCValidatorSetCallerSession) LIGHTCLIENTADDR() (common.Address, error) {
   882  	return _BSCValidatorSet.Contract.LIGHTCLIENTADDR(&_BSCValidatorSet.CallOpts)
   883  }
   884  
   885  // MAXNUMOFVALIDATORS is a free data retrieval call binding the contract method 0xe086c7b1.
   886  //
   887  // Solidity: function MAX_NUM_OF_VALIDATORS() view returns(uint256)
   888  func (_BSCValidatorSet *BSCValidatorSetCaller) MAXNUMOFVALIDATORS(opts *bind.CallOpts) (*big.Int, error) {
   889  	var out []interface{}
   890  	err := _BSCValidatorSet.contract.Call(opts, &out, "MAX_NUM_OF_VALIDATORS")
   891  
   892  	if err != nil {
   893  		return *new(*big.Int), err
   894  	}
   895  
   896  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   897  
   898  	return out0, err
   899  
   900  }
   901  
   902  // MAXNUMOFVALIDATORS is a free data retrieval call binding the contract method 0xe086c7b1.
   903  //
   904  // Solidity: function MAX_NUM_OF_VALIDATORS() view returns(uint256)
   905  func (_BSCValidatorSet *BSCValidatorSetSession) MAXNUMOFVALIDATORS() (*big.Int, error) {
   906  	return _BSCValidatorSet.Contract.MAXNUMOFVALIDATORS(&_BSCValidatorSet.CallOpts)
   907  }
   908  
   909  // MAXNUMOFVALIDATORS is a free data retrieval call binding the contract method 0xe086c7b1.
   910  //
   911  // Solidity: function MAX_NUM_OF_VALIDATORS() view returns(uint256)
   912  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MAXNUMOFVALIDATORS() (*big.Int, error) {
   913  	return _BSCValidatorSet.Contract.MAXNUMOFVALIDATORS(&_BSCValidatorSet.CallOpts)
   914  }
   915  
   916  // MAXSTAKEFFFCOUNT is a free data retrieval call binding the contract method 0x8a10febe.
   917  //
   918  // Solidity: function MAX_STAKE_FFF_COUNT() view returns(uint256)
   919  func (_BSCValidatorSet *BSCValidatorSetCaller) MAXSTAKEFFFCOUNT(opts *bind.CallOpts) (*big.Int, error) {
   920  	var out []interface{}
   921  	err := _BSCValidatorSet.contract.Call(opts, &out, "MAX_STAKE_FFF_COUNT")
   922  
   923  	if err != nil {
   924  		return *new(*big.Int), err
   925  	}
   926  
   927  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   928  
   929  	return out0, err
   930  
   931  }
   932  
   933  // MAXSTAKEFFFCOUNT is a free data retrieval call binding the contract method 0x8a10febe.
   934  //
   935  // Solidity: function MAX_STAKE_FFF_COUNT() view returns(uint256)
   936  func (_BSCValidatorSet *BSCValidatorSetSession) MAXSTAKEFFFCOUNT() (*big.Int, error) {
   937  	return _BSCValidatorSet.Contract.MAXSTAKEFFFCOUNT(&_BSCValidatorSet.CallOpts)
   938  }
   939  
   940  // MAXSTAKEFFFCOUNT is a free data retrieval call binding the contract method 0x8a10febe.
   941  //
   942  // Solidity: function MAX_STAKE_FFF_COUNT() view returns(uint256)
   943  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MAXSTAKEFFFCOUNT() (*big.Int, error) {
   944  	return _BSCValidatorSet.Contract.MAXSTAKEFFFCOUNT(&_BSCValidatorSet.CallOpts)
   945  }
   946  
   947  // PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68.
   948  //
   949  // Solidity: function PRECISION() view returns(uint256)
   950  func (_BSCValidatorSet *BSCValidatorSetCaller) PRECISION(opts *bind.CallOpts) (*big.Int, error) {
   951  	var out []interface{}
   952  	err := _BSCValidatorSet.contract.Call(opts, &out, "PRECISION")
   953  
   954  	if err != nil {
   955  		return *new(*big.Int), err
   956  	}
   957  
   958  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   959  
   960  	return out0, err
   961  
   962  }
   963  
   964  // PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68.
   965  //
   966  // Solidity: function PRECISION() view returns(uint256)
   967  func (_BSCValidatorSet *BSCValidatorSetSession) PRECISION() (*big.Int, error) {
   968  	return _BSCValidatorSet.Contract.PRECISION(&_BSCValidatorSet.CallOpts)
   969  }
   970  
   971  // PRECISION is a free data retrieval call binding the contract method 0xaaf5eb68.
   972  //
   973  // Solidity: function PRECISION() view returns(uint256)
   974  func (_BSCValidatorSet *BSCValidatorSetCallerSession) PRECISION() (*big.Int, error) {
   975  	return _BSCValidatorSet.Contract.PRECISION(&_BSCValidatorSet.CallOpts)
   976  }
   977  
   978  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
   979  //
   980  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
   981  func (_BSCValidatorSet *BSCValidatorSetCaller) RELAYERHUBCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
   982  	var out []interface{}
   983  	err := _BSCValidatorSet.contract.Call(opts, &out, "RELAYERHUB_CONTRACT_ADDR")
   984  
   985  	if err != nil {
   986  		return *new(common.Address), err
   987  	}
   988  
   989  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   990  
   991  	return out0, err
   992  
   993  }
   994  
   995  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
   996  //
   997  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
   998  func (_BSCValidatorSet *BSCValidatorSetSession) RELAYERHUBCONTRACTADDR() (common.Address, error) {
   999  	return _BSCValidatorSet.Contract.RELAYERHUBCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1000  }
  1001  
  1002  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
  1003  //
  1004  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
  1005  func (_BSCValidatorSet *BSCValidatorSetCallerSession) RELAYERHUBCONTRACTADDR() (common.Address, error) {
  1006  	return _BSCValidatorSet.Contract.RELAYERHUBCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1007  }
  1008  
  1009  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  1010  //
  1011  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  1012  func (_BSCValidatorSet *BSCValidatorSetCaller) SLASHCHANNELID(opts *bind.CallOpts) (uint8, error) {
  1013  	var out []interface{}
  1014  	err := _BSCValidatorSet.contract.Call(opts, &out, "SLASH_CHANNELID")
  1015  
  1016  	if err != nil {
  1017  		return *new(uint8), err
  1018  	}
  1019  
  1020  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1021  
  1022  	return out0, err
  1023  
  1024  }
  1025  
  1026  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  1027  //
  1028  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  1029  func (_BSCValidatorSet *BSCValidatorSetSession) SLASHCHANNELID() (uint8, error) {
  1030  	return _BSCValidatorSet.Contract.SLASHCHANNELID(&_BSCValidatorSet.CallOpts)
  1031  }
  1032  
  1033  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  1034  //
  1035  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  1036  func (_BSCValidatorSet *BSCValidatorSetCallerSession) SLASHCHANNELID() (uint8, error) {
  1037  	return _BSCValidatorSet.Contract.SLASHCHANNELID(&_BSCValidatorSet.CallOpts)
  1038  }
  1039  
  1040  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  1041  //
  1042  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  1043  func (_BSCValidatorSet *BSCValidatorSetCaller) SLASHCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  1044  	var out []interface{}
  1045  	err := _BSCValidatorSet.contract.Call(opts, &out, "SLASH_CONTRACT_ADDR")
  1046  
  1047  	if err != nil {
  1048  		return *new(common.Address), err
  1049  	}
  1050  
  1051  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1052  
  1053  	return out0, err
  1054  
  1055  }
  1056  
  1057  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  1058  //
  1059  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  1060  func (_BSCValidatorSet *BSCValidatorSetSession) SLASHCONTRACTADDR() (common.Address, error) {
  1061  	return _BSCValidatorSet.Contract.SLASHCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1062  }
  1063  
  1064  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  1065  //
  1066  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  1067  func (_BSCValidatorSet *BSCValidatorSetCallerSession) SLASHCONTRACTADDR() (common.Address, error) {
  1068  	return _BSCValidatorSet.Contract.SLASHCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1069  }
  1070  
  1071  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  1072  //
  1073  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  1074  func (_BSCValidatorSet *BSCValidatorSetCaller) STAKINGCHANNELID(opts *bind.CallOpts) (uint8, error) {
  1075  	var out []interface{}
  1076  	err := _BSCValidatorSet.contract.Call(opts, &out, "STAKING_CHANNELID")
  1077  
  1078  	if err != nil {
  1079  		return *new(uint8), err
  1080  	}
  1081  
  1082  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1083  
  1084  	return out0, err
  1085  
  1086  }
  1087  
  1088  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  1089  //
  1090  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  1091  func (_BSCValidatorSet *BSCValidatorSetSession) STAKINGCHANNELID() (uint8, error) {
  1092  	return _BSCValidatorSet.Contract.STAKINGCHANNELID(&_BSCValidatorSet.CallOpts)
  1093  }
  1094  
  1095  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  1096  //
  1097  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  1098  func (_BSCValidatorSet *BSCValidatorSetCallerSession) STAKINGCHANNELID() (uint8, error) {
  1099  	return _BSCValidatorSet.Contract.STAKINGCHANNELID(&_BSCValidatorSet.CallOpts)
  1100  }
  1101  
  1102  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  1103  //
  1104  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  1105  func (_BSCValidatorSet *BSCValidatorSetCaller) SYSTEMREWARDADDR(opts *bind.CallOpts) (common.Address, error) {
  1106  	var out []interface{}
  1107  	err := _BSCValidatorSet.contract.Call(opts, &out, "SYSTEM_REWARD_ADDR")
  1108  
  1109  	if err != nil {
  1110  		return *new(common.Address), err
  1111  	}
  1112  
  1113  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1114  
  1115  	return out0, err
  1116  
  1117  }
  1118  
  1119  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  1120  //
  1121  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  1122  func (_BSCValidatorSet *BSCValidatorSetSession) SYSTEMREWARDADDR() (common.Address, error) {
  1123  	return _BSCValidatorSet.Contract.SYSTEMREWARDADDR(&_BSCValidatorSet.CallOpts)
  1124  }
  1125  
  1126  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  1127  //
  1128  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  1129  func (_BSCValidatorSet *BSCValidatorSetCallerSession) SYSTEMREWARDADDR() (common.Address, error) {
  1130  	return _BSCValidatorSet.Contract.SYSTEMREWARDADDR(&_BSCValidatorSet.CallOpts)
  1131  }
  1132  
  1133  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  1134  //
  1135  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  1136  func (_BSCValidatorSet *BSCValidatorSetCaller) TOKENHUBADDR(opts *bind.CallOpts) (common.Address, error) {
  1137  	var out []interface{}
  1138  	err := _BSCValidatorSet.contract.Call(opts, &out, "TOKEN_HUB_ADDR")
  1139  
  1140  	if err != nil {
  1141  		return *new(common.Address), err
  1142  	}
  1143  
  1144  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1145  
  1146  	return out0, err
  1147  
  1148  }
  1149  
  1150  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  1151  //
  1152  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  1153  func (_BSCValidatorSet *BSCValidatorSetSession) TOKENHUBADDR() (common.Address, error) {
  1154  	return _BSCValidatorSet.Contract.TOKENHUBADDR(&_BSCValidatorSet.CallOpts)
  1155  }
  1156  
  1157  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  1158  //
  1159  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  1160  func (_BSCValidatorSet *BSCValidatorSetCallerSession) TOKENHUBADDR() (common.Address, error) {
  1161  	return _BSCValidatorSet.Contract.TOKENHUBADDR(&_BSCValidatorSet.CallOpts)
  1162  }
  1163  
  1164  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  1165  //
  1166  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  1167  func (_BSCValidatorSet *BSCValidatorSetCaller) TOKENMANAGERADDR(opts *bind.CallOpts) (common.Address, error) {
  1168  	var out []interface{}
  1169  	err := _BSCValidatorSet.contract.Call(opts, &out, "TOKEN_MANAGER_ADDR")
  1170  
  1171  	if err != nil {
  1172  		return *new(common.Address), err
  1173  	}
  1174  
  1175  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1176  
  1177  	return out0, err
  1178  
  1179  }
  1180  
  1181  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  1182  //
  1183  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  1184  func (_BSCValidatorSet *BSCValidatorSetSession) TOKENMANAGERADDR() (common.Address, error) {
  1185  	return _BSCValidatorSet.Contract.TOKENMANAGERADDR(&_BSCValidatorSet.CallOpts)
  1186  }
  1187  
  1188  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  1189  //
  1190  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  1191  func (_BSCValidatorSet *BSCValidatorSetCallerSession) TOKENMANAGERADDR() (common.Address, error) {
  1192  	return _BSCValidatorSet.Contract.TOKENMANAGERADDR(&_BSCValidatorSet.CallOpts)
  1193  }
  1194  
  1195  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  1196  //
  1197  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  1198  func (_BSCValidatorSet *BSCValidatorSetCaller) TRANSFERINCHANNELID(opts *bind.CallOpts) (uint8, error) {
  1199  	var out []interface{}
  1200  	err := _BSCValidatorSet.contract.Call(opts, &out, "TRANSFER_IN_CHANNELID")
  1201  
  1202  	if err != nil {
  1203  		return *new(uint8), err
  1204  	}
  1205  
  1206  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1207  
  1208  	return out0, err
  1209  
  1210  }
  1211  
  1212  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  1213  //
  1214  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  1215  func (_BSCValidatorSet *BSCValidatorSetSession) TRANSFERINCHANNELID() (uint8, error) {
  1216  	return _BSCValidatorSet.Contract.TRANSFERINCHANNELID(&_BSCValidatorSet.CallOpts)
  1217  }
  1218  
  1219  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  1220  //
  1221  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  1222  func (_BSCValidatorSet *BSCValidatorSetCallerSession) TRANSFERINCHANNELID() (uint8, error) {
  1223  	return _BSCValidatorSet.Contract.TRANSFERINCHANNELID(&_BSCValidatorSet.CallOpts)
  1224  }
  1225  
  1226  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  1227  //
  1228  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  1229  func (_BSCValidatorSet *BSCValidatorSetCaller) TRANSFEROUTCHANNELID(opts *bind.CallOpts) (uint8, error) {
  1230  	var out []interface{}
  1231  	err := _BSCValidatorSet.contract.Call(opts, &out, "TRANSFER_OUT_CHANNELID")
  1232  
  1233  	if err != nil {
  1234  		return *new(uint8), err
  1235  	}
  1236  
  1237  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1238  
  1239  	return out0, err
  1240  
  1241  }
  1242  
  1243  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  1244  //
  1245  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  1246  func (_BSCValidatorSet *BSCValidatorSetSession) TRANSFEROUTCHANNELID() (uint8, error) {
  1247  	return _BSCValidatorSet.Contract.TRANSFEROUTCHANNELID(&_BSCValidatorSet.CallOpts)
  1248  }
  1249  
  1250  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  1251  //
  1252  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  1253  func (_BSCValidatorSet *BSCValidatorSetCallerSession) TRANSFEROUTCHANNELID() (uint8, error) {
  1254  	return _BSCValidatorSet.Contract.TRANSFEROUTCHANNELID(&_BSCValidatorSet.CallOpts)
  1255  }
  1256  
  1257  // VALIDATORSUPDATEMESSAGETYPE is a free data retrieval call binding the contract method 0x5667515a.
  1258  //
  1259  // Solidity: function VALIDATORS_UPDATE_MESSAGE_TYPE() view returns(uint8)
  1260  func (_BSCValidatorSet *BSCValidatorSetCaller) VALIDATORSUPDATEMESSAGETYPE(opts *bind.CallOpts) (uint8, error) {
  1261  	var out []interface{}
  1262  	err := _BSCValidatorSet.contract.Call(opts, &out, "VALIDATORS_UPDATE_MESSAGE_TYPE")
  1263  
  1264  	if err != nil {
  1265  		return *new(uint8), err
  1266  	}
  1267  
  1268  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  1269  
  1270  	return out0, err
  1271  
  1272  }
  1273  
  1274  // VALIDATORSUPDATEMESSAGETYPE is a free data retrieval call binding the contract method 0x5667515a.
  1275  //
  1276  // Solidity: function VALIDATORS_UPDATE_MESSAGE_TYPE() view returns(uint8)
  1277  func (_BSCValidatorSet *BSCValidatorSetSession) VALIDATORSUPDATEMESSAGETYPE() (uint8, error) {
  1278  	return _BSCValidatorSet.Contract.VALIDATORSUPDATEMESSAGETYPE(&_BSCValidatorSet.CallOpts)
  1279  }
  1280  
  1281  // VALIDATORSUPDATEMESSAGETYPE is a free data retrieval call binding the contract method 0x5667515a.
  1282  //
  1283  // Solidity: function VALIDATORS_UPDATE_MESSAGE_TYPE() view returns(uint8)
  1284  func (_BSCValidatorSet *BSCValidatorSetCallerSession) VALIDATORSUPDATEMESSAGETYPE() (uint8, error) {
  1285  	return _BSCValidatorSet.Contract.VALIDATORSUPDATEMESSAGETYPE(&_BSCValidatorSet.CallOpts)
  1286  }
  1287  
  1288  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  1289  //
  1290  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  1291  func (_BSCValidatorSet *BSCValidatorSetCaller) VALIDATORCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  1292  	var out []interface{}
  1293  	err := _BSCValidatorSet.contract.Call(opts, &out, "VALIDATOR_CONTRACT_ADDR")
  1294  
  1295  	if err != nil {
  1296  		return *new(common.Address), err
  1297  	}
  1298  
  1299  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1300  
  1301  	return out0, err
  1302  
  1303  }
  1304  
  1305  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  1306  //
  1307  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  1308  func (_BSCValidatorSet *BSCValidatorSetSession) VALIDATORCONTRACTADDR() (common.Address, error) {
  1309  	return _BSCValidatorSet.Contract.VALIDATORCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1310  }
  1311  
  1312  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  1313  //
  1314  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  1315  func (_BSCValidatorSet *BSCValidatorSetCallerSession) VALIDATORCONTRACTADDR() (common.Address, error) {
  1316  	return _BSCValidatorSet.Contract.VALIDATORCONTRACTADDR(&_BSCValidatorSet.CallOpts)
  1317  }
  1318  
  1319  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  1320  //
  1321  // Solidity: function alreadyInit() view returns(bool)
  1322  func (_BSCValidatorSet *BSCValidatorSetCaller) AlreadyInit(opts *bind.CallOpts) (bool, error) {
  1323  	var out []interface{}
  1324  	err := _BSCValidatorSet.contract.Call(opts, &out, "alreadyInit")
  1325  
  1326  	if err != nil {
  1327  		return *new(bool), err
  1328  	}
  1329  
  1330  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1331  
  1332  	return out0, err
  1333  
  1334  }
  1335  
  1336  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  1337  //
  1338  // Solidity: function alreadyInit() view returns(bool)
  1339  func (_BSCValidatorSet *BSCValidatorSetSession) AlreadyInit() (bool, error) {
  1340  	return _BSCValidatorSet.Contract.AlreadyInit(&_BSCValidatorSet.CallOpts)
  1341  }
  1342  
  1343  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  1344  //
  1345  // Solidity: function alreadyInit() view returns(bool)
  1346  func (_BSCValidatorSet *BSCValidatorSetCallerSession) AlreadyInit() (bool, error) {
  1347  	return _BSCValidatorSet.Contract.AlreadyInit(&_BSCValidatorSet.CallOpts)
  1348  }
  1349  
  1350  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  1351  //
  1352  // Solidity: function bscChainID() view returns(uint16)
  1353  func (_BSCValidatorSet *BSCValidatorSetCaller) BscChainID(opts *bind.CallOpts) (uint16, error) {
  1354  	var out []interface{}
  1355  	err := _BSCValidatorSet.contract.Call(opts, &out, "bscChainID")
  1356  
  1357  	if err != nil {
  1358  		return *new(uint16), err
  1359  	}
  1360  
  1361  	out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16)
  1362  
  1363  	return out0, err
  1364  
  1365  }
  1366  
  1367  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  1368  //
  1369  // Solidity: function bscChainID() view returns(uint16)
  1370  func (_BSCValidatorSet *BSCValidatorSetSession) BscChainID() (uint16, error) {
  1371  	return _BSCValidatorSet.Contract.BscChainID(&_BSCValidatorSet.CallOpts)
  1372  }
  1373  
  1374  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  1375  //
  1376  // Solidity: function bscChainID() view returns(uint16)
  1377  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BscChainID() (uint16, error) {
  1378  	return _BSCValidatorSet.Contract.BscChainID(&_BSCValidatorSet.CallOpts)
  1379  }
  1380  
  1381  // BurnRatio is a free data retrieval call binding the contract method 0x5192c82c.
  1382  //
  1383  // Solidity: function burnRatio() view returns(uint256)
  1384  func (_BSCValidatorSet *BSCValidatorSetCaller) BurnRatio(opts *bind.CallOpts) (*big.Int, error) {
  1385  	var out []interface{}
  1386  	err := _BSCValidatorSet.contract.Call(opts, &out, "burnRatio")
  1387  
  1388  	if err != nil {
  1389  		return *new(*big.Int), err
  1390  	}
  1391  
  1392  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1393  
  1394  	return out0, err
  1395  
  1396  }
  1397  
  1398  // BurnRatio is a free data retrieval call binding the contract method 0x5192c82c.
  1399  //
  1400  // Solidity: function burnRatio() view returns(uint256)
  1401  func (_BSCValidatorSet *BSCValidatorSetSession) BurnRatio() (*big.Int, error) {
  1402  	return _BSCValidatorSet.Contract.BurnRatio(&_BSCValidatorSet.CallOpts)
  1403  }
  1404  
  1405  // BurnRatio is a free data retrieval call binding the contract method 0x5192c82c.
  1406  //
  1407  // Solidity: function burnRatio() view returns(uint256)
  1408  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BurnRatio() (*big.Int, error) {
  1409  	return _BSCValidatorSet.Contract.BurnRatio(&_BSCValidatorSet.CallOpts)
  1410  }
  1411  
  1412  // BurnRatioInitialized is a free data retrieval call binding the contract method 0x152ad3b8.
  1413  //
  1414  // Solidity: function burnRatioInitialized() view returns(bool)
  1415  func (_BSCValidatorSet *BSCValidatorSetCaller) BurnRatioInitialized(opts *bind.CallOpts) (bool, error) {
  1416  	var out []interface{}
  1417  	err := _BSCValidatorSet.contract.Call(opts, &out, "burnRatioInitialized")
  1418  
  1419  	if err != nil {
  1420  		return *new(bool), err
  1421  	}
  1422  
  1423  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1424  
  1425  	return out0, err
  1426  
  1427  }
  1428  
  1429  // BurnRatioInitialized is a free data retrieval call binding the contract method 0x152ad3b8.
  1430  //
  1431  // Solidity: function burnRatioInitialized() view returns(bool)
  1432  func (_BSCValidatorSet *BSCValidatorSetSession) BurnRatioInitialized() (bool, error) {
  1433  	return _BSCValidatorSet.Contract.BurnRatioInitialized(&_BSCValidatorSet.CallOpts)
  1434  }
  1435  
  1436  // BurnRatioInitialized is a free data retrieval call binding the contract method 0x152ad3b8.
  1437  //
  1438  // Solidity: function burnRatioInitialized() view returns(bool)
  1439  func (_BSCValidatorSet *BSCValidatorSetCallerSession) BurnRatioInitialized() (bool, error) {
  1440  	return _BSCValidatorSet.Contract.BurnRatioInitialized(&_BSCValidatorSet.CallOpts)
  1441  }
  1442  
  1443  // CurrStakeFFF is a free data retrieval call binding the contract method 0x101a875f.
  1444  //
  1445  // Solidity: function currStakeFFF() view returns(uint256)
  1446  func (_BSCValidatorSet *BSCValidatorSetCaller) CurrStakeFFF(opts *bind.CallOpts) (*big.Int, error) {
  1447  	var out []interface{}
  1448  	err := _BSCValidatorSet.contract.Call(opts, &out, "currStakeFFF")
  1449  
  1450  	if err != nil {
  1451  		return *new(*big.Int), err
  1452  	}
  1453  
  1454  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1455  
  1456  	return out0, err
  1457  
  1458  }
  1459  
  1460  // CurrStakeFFF is a free data retrieval call binding the contract method 0x101a875f.
  1461  //
  1462  // Solidity: function currStakeFFF() view returns(uint256)
  1463  func (_BSCValidatorSet *BSCValidatorSetSession) CurrStakeFFF() (*big.Int, error) {
  1464  	return _BSCValidatorSet.Contract.CurrStakeFFF(&_BSCValidatorSet.CallOpts)
  1465  }
  1466  
  1467  // CurrStakeFFF is a free data retrieval call binding the contract method 0x101a875f.
  1468  //
  1469  // Solidity: function currStakeFFF() view returns(uint256)
  1470  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CurrStakeFFF() (*big.Int, error) {
  1471  	return _BSCValidatorSet.Contract.CurrStakeFFF(&_BSCValidatorSet.CallOpts)
  1472  }
  1473  
  1474  // CurrStakePeople is a free data retrieval call binding the contract method 0x93a101f3.
  1475  //
  1476  // Solidity: function currStakePeople() view returns(uint256)
  1477  func (_BSCValidatorSet *BSCValidatorSetCaller) CurrStakePeople(opts *bind.CallOpts) (*big.Int, error) {
  1478  	var out []interface{}
  1479  	err := _BSCValidatorSet.contract.Call(opts, &out, "currStakePeople")
  1480  
  1481  	if err != nil {
  1482  		return *new(*big.Int), err
  1483  	}
  1484  
  1485  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1486  
  1487  	return out0, err
  1488  
  1489  }
  1490  
  1491  // CurrStakePeople is a free data retrieval call binding the contract method 0x93a101f3.
  1492  //
  1493  // Solidity: function currStakePeople() view returns(uint256)
  1494  func (_BSCValidatorSet *BSCValidatorSetSession) CurrStakePeople() (*big.Int, error) {
  1495  	return _BSCValidatorSet.Contract.CurrStakePeople(&_BSCValidatorSet.CallOpts)
  1496  }
  1497  
  1498  // CurrStakePeople is a free data retrieval call binding the contract method 0x93a101f3.
  1499  //
  1500  // Solidity: function currStakePeople() view returns(uint256)
  1501  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CurrStakePeople() (*big.Int, error) {
  1502  	return _BSCValidatorSet.Contract.CurrStakePeople(&_BSCValidatorSet.CallOpts)
  1503  }
  1504  
  1505  // CurrStakePeopleIndex is a free data retrieval call binding the contract method 0xe3260b57.
  1506  //
  1507  // Solidity: function currStakePeopleIndex() view returns(uint256)
  1508  func (_BSCValidatorSet *BSCValidatorSetCaller) CurrStakePeopleIndex(opts *bind.CallOpts) (*big.Int, error) {
  1509  	var out []interface{}
  1510  	err := _BSCValidatorSet.contract.Call(opts, &out, "currStakePeopleIndex")
  1511  
  1512  	if err != nil {
  1513  		return *new(*big.Int), err
  1514  	}
  1515  
  1516  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1517  
  1518  	return out0, err
  1519  
  1520  }
  1521  
  1522  // CurrStakePeopleIndex is a free data retrieval call binding the contract method 0xe3260b57.
  1523  //
  1524  // Solidity: function currStakePeopleIndex() view returns(uint256)
  1525  func (_BSCValidatorSet *BSCValidatorSetSession) CurrStakePeopleIndex() (*big.Int, error) {
  1526  	return _BSCValidatorSet.Contract.CurrStakePeopleIndex(&_BSCValidatorSet.CallOpts)
  1527  }
  1528  
  1529  // CurrStakePeopleIndex is a free data retrieval call binding the contract method 0xe3260b57.
  1530  //
  1531  // Solidity: function currStakePeopleIndex() view returns(uint256)
  1532  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CurrStakePeopleIndex() (*big.Int, error) {
  1533  	return _BSCValidatorSet.Contract.CurrStakePeopleIndex(&_BSCValidatorSet.CallOpts)
  1534  }
  1535  
  1536  // CurrentValidatorSet is a free data retrieval call binding the contract method 0x6969a25c.
  1537  //
  1538  // Solidity: function currentValidatorSet(uint256 ) view returns(address consensusAddress, address feeAddress, address BBCFeeAddress, uint64 votingPower, bool jailed, uint256 incoming)
  1539  func (_BSCValidatorSet *BSCValidatorSetCaller) CurrentValidatorSet(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1540  	ConsensusAddress common.Address
  1541  	FeeAddress       common.Address
  1542  	BBCFeeAddress    common.Address
  1543  	VotingPower      uint64
  1544  	Jailed           bool
  1545  	Incoming         *big.Int
  1546  }, error) {
  1547  	var out []interface{}
  1548  	err := _BSCValidatorSet.contract.Call(opts, &out, "currentValidatorSet", arg0)
  1549  
  1550  	outstruct := new(struct {
  1551  		ConsensusAddress common.Address
  1552  		FeeAddress       common.Address
  1553  		BBCFeeAddress    common.Address
  1554  		VotingPower      uint64
  1555  		Jailed           bool
  1556  		Incoming         *big.Int
  1557  	})
  1558  	if err != nil {
  1559  		return *outstruct, err
  1560  	}
  1561  
  1562  	outstruct.ConsensusAddress = *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1563  	outstruct.FeeAddress = *abi.ConvertType(out[1], new(common.Address)).(*common.Address)
  1564  	outstruct.BBCFeeAddress = *abi.ConvertType(out[2], new(common.Address)).(*common.Address)
  1565  	outstruct.VotingPower = *abi.ConvertType(out[3], new(uint64)).(*uint64)
  1566  	outstruct.Jailed = *abi.ConvertType(out[4], new(bool)).(*bool)
  1567  	outstruct.Incoming = *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
  1568  
  1569  	return *outstruct, err
  1570  
  1571  }
  1572  
  1573  // CurrentValidatorSet is a free data retrieval call binding the contract method 0x6969a25c.
  1574  //
  1575  // Solidity: function currentValidatorSet(uint256 ) view returns(address consensusAddress, address feeAddress, address BBCFeeAddress, uint64 votingPower, bool jailed, uint256 incoming)
  1576  func (_BSCValidatorSet *BSCValidatorSetSession) CurrentValidatorSet(arg0 *big.Int) (struct {
  1577  	ConsensusAddress common.Address
  1578  	FeeAddress       common.Address
  1579  	BBCFeeAddress    common.Address
  1580  	VotingPower      uint64
  1581  	Jailed           bool
  1582  	Incoming         *big.Int
  1583  }, error) {
  1584  	return _BSCValidatorSet.Contract.CurrentValidatorSet(&_BSCValidatorSet.CallOpts, arg0)
  1585  }
  1586  
  1587  // CurrentValidatorSet is a free data retrieval call binding the contract method 0x6969a25c.
  1588  //
  1589  // Solidity: function currentValidatorSet(uint256 ) view returns(address consensusAddress, address feeAddress, address BBCFeeAddress, uint64 votingPower, bool jailed, uint256 incoming)
  1590  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CurrentValidatorSet(arg0 *big.Int) (struct {
  1591  	ConsensusAddress common.Address
  1592  	FeeAddress       common.Address
  1593  	BBCFeeAddress    common.Address
  1594  	VotingPower      uint64
  1595  	Jailed           bool
  1596  	Incoming         *big.Int
  1597  }, error) {
  1598  	return _BSCValidatorSet.Contract.CurrentValidatorSet(&_BSCValidatorSet.CallOpts, arg0)
  1599  }
  1600  
  1601  // CurrentValidatorSetMap is a free data retrieval call binding the contract method 0xad3c9da6.
  1602  //
  1603  // Solidity: function currentValidatorSetMap(address ) view returns(uint256)
  1604  func (_BSCValidatorSet *BSCValidatorSetCaller) CurrentValidatorSetMap(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  1605  	var out []interface{}
  1606  	err := _BSCValidatorSet.contract.Call(opts, &out, "currentValidatorSetMap", arg0)
  1607  
  1608  	if err != nil {
  1609  		return *new(*big.Int), err
  1610  	}
  1611  
  1612  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1613  
  1614  	return out0, err
  1615  
  1616  }
  1617  
  1618  // CurrentValidatorSetMap is a free data retrieval call binding the contract method 0xad3c9da6.
  1619  //
  1620  // Solidity: function currentValidatorSetMap(address ) view returns(uint256)
  1621  func (_BSCValidatorSet *BSCValidatorSetSession) CurrentValidatorSetMap(arg0 common.Address) (*big.Int, error) {
  1622  	return _BSCValidatorSet.Contract.CurrentValidatorSetMap(&_BSCValidatorSet.CallOpts, arg0)
  1623  }
  1624  
  1625  // CurrentValidatorSetMap is a free data retrieval call binding the contract method 0xad3c9da6.
  1626  //
  1627  // Solidity: function currentValidatorSetMap(address ) view returns(uint256)
  1628  func (_BSCValidatorSet *BSCValidatorSetCallerSession) CurrentValidatorSetMap(arg0 common.Address) (*big.Int, error) {
  1629  	return _BSCValidatorSet.Contract.CurrentValidatorSetMap(&_BSCValidatorSet.CallOpts, arg0)
  1630  }
  1631  
  1632  // ExpireTimeSecondGap is a free data retrieval call binding the contract method 0x86249882.
  1633  //
  1634  // Solidity: function expireTimeSecondGap() view returns(uint256)
  1635  func (_BSCValidatorSet *BSCValidatorSetCaller) ExpireTimeSecondGap(opts *bind.CallOpts) (*big.Int, error) {
  1636  	var out []interface{}
  1637  	err := _BSCValidatorSet.contract.Call(opts, &out, "expireTimeSecondGap")
  1638  
  1639  	if err != nil {
  1640  		return *new(*big.Int), err
  1641  	}
  1642  
  1643  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1644  
  1645  	return out0, err
  1646  
  1647  }
  1648  
  1649  // ExpireTimeSecondGap is a free data retrieval call binding the contract method 0x86249882.
  1650  //
  1651  // Solidity: function expireTimeSecondGap() view returns(uint256)
  1652  func (_BSCValidatorSet *BSCValidatorSetSession) ExpireTimeSecondGap() (*big.Int, error) {
  1653  	return _BSCValidatorSet.Contract.ExpireTimeSecondGap(&_BSCValidatorSet.CallOpts)
  1654  }
  1655  
  1656  // ExpireTimeSecondGap is a free data retrieval call binding the contract method 0x86249882.
  1657  //
  1658  // Solidity: function expireTimeSecondGap() view returns(uint256)
  1659  func (_BSCValidatorSet *BSCValidatorSetCallerSession) ExpireTimeSecondGap() (*big.Int, error) {
  1660  	return _BSCValidatorSet.Contract.ExpireTimeSecondGap(&_BSCValidatorSet.CallOpts)
  1661  }
  1662  
  1663  // GetIncoming is a free data retrieval call binding the contract method 0x565c56b3.
  1664  //
  1665  // Solidity: function getIncoming(address validator) view returns(uint256)
  1666  func (_BSCValidatorSet *BSCValidatorSetCaller) GetIncoming(opts *bind.CallOpts, validator common.Address) (*big.Int, error) {
  1667  	var out []interface{}
  1668  	err := _BSCValidatorSet.contract.Call(opts, &out, "getIncoming", validator)
  1669  
  1670  	if err != nil {
  1671  		return *new(*big.Int), err
  1672  	}
  1673  
  1674  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1675  
  1676  	return out0, err
  1677  
  1678  }
  1679  
  1680  // GetIncoming is a free data retrieval call binding the contract method 0x565c56b3.
  1681  //
  1682  // Solidity: function getIncoming(address validator) view returns(uint256)
  1683  func (_BSCValidatorSet *BSCValidatorSetSession) GetIncoming(validator common.Address) (*big.Int, error) {
  1684  	return _BSCValidatorSet.Contract.GetIncoming(&_BSCValidatorSet.CallOpts, validator)
  1685  }
  1686  
  1687  // GetIncoming is a free data retrieval call binding the contract method 0x565c56b3.
  1688  //
  1689  // Solidity: function getIncoming(address validator) view returns(uint256)
  1690  func (_BSCValidatorSet *BSCValidatorSetCallerSession) GetIncoming(validator common.Address) (*big.Int, error) {
  1691  	return _BSCValidatorSet.Contract.GetIncoming(&_BSCValidatorSet.CallOpts, validator)
  1692  }
  1693  
  1694  // GetValidators is a free data retrieval call binding the contract method 0xb7ab4db5.
  1695  //
  1696  // Solidity: function getValidators() view returns(address[])
  1697  func (_BSCValidatorSet *BSCValidatorSetCaller) GetValidators(opts *bind.CallOpts) ([]common.Address, error) {
  1698  	var out []interface{}
  1699  	err := _BSCValidatorSet.contract.Call(opts, &out, "getValidators")
  1700  
  1701  	if err != nil {
  1702  		return *new([]common.Address), err
  1703  	}
  1704  
  1705  	out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
  1706  
  1707  	return out0, err
  1708  
  1709  }
  1710  
  1711  // GetValidators is a free data retrieval call binding the contract method 0xb7ab4db5.
  1712  //
  1713  // Solidity: function getValidators() view returns(address[])
  1714  func (_BSCValidatorSet *BSCValidatorSetSession) GetValidators() ([]common.Address, error) {
  1715  	return _BSCValidatorSet.Contract.GetValidators(&_BSCValidatorSet.CallOpts)
  1716  }
  1717  
  1718  // GetValidators is a free data retrieval call binding the contract method 0xb7ab4db5.
  1719  //
  1720  // Solidity: function getValidators() view returns(address[])
  1721  func (_BSCValidatorSet *BSCValidatorSetCallerSession) GetValidators() ([]common.Address, error) {
  1722  	return _BSCValidatorSet.Contract.GetValidators(&_BSCValidatorSet.CallOpts)
  1723  }
  1724  
  1725  // MaxStakeFFFCount is a free data retrieval call binding the contract method 0xb2ccf3a4.
  1726  //
  1727  // Solidity: function maxStakeFFFCount() view returns(uint256)
  1728  func (_BSCValidatorSet *BSCValidatorSetCaller) MaxStakeFFFCount(opts *bind.CallOpts) (*big.Int, error) {
  1729  	var out []interface{}
  1730  	err := _BSCValidatorSet.contract.Call(opts, &out, "maxStakeFFFCount")
  1731  
  1732  	if err != nil {
  1733  		return *new(*big.Int), err
  1734  	}
  1735  
  1736  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1737  
  1738  	return out0, err
  1739  
  1740  }
  1741  
  1742  // MaxStakeFFFCount is a free data retrieval call binding the contract method 0xb2ccf3a4.
  1743  //
  1744  // Solidity: function maxStakeFFFCount() view returns(uint256)
  1745  func (_BSCValidatorSet *BSCValidatorSetSession) MaxStakeFFFCount() (*big.Int, error) {
  1746  	return _BSCValidatorSet.Contract.MaxStakeFFFCount(&_BSCValidatorSet.CallOpts)
  1747  }
  1748  
  1749  // MaxStakeFFFCount is a free data retrieval call binding the contract method 0xb2ccf3a4.
  1750  //
  1751  // Solidity: function maxStakeFFFCount() view returns(uint256)
  1752  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MaxStakeFFFCount() (*big.Int, error) {
  1753  	return _BSCValidatorSet.Contract.MaxStakeFFFCount(&_BSCValidatorSet.CallOpts)
  1754  }
  1755  
  1756  // MaxStakePeopleCount is a free data retrieval call binding the contract method 0xf78ffcbc.
  1757  //
  1758  // Solidity: function maxStakePeopleCount() view returns(uint256)
  1759  func (_BSCValidatorSet *BSCValidatorSetCaller) MaxStakePeopleCount(opts *bind.CallOpts) (*big.Int, error) {
  1760  	var out []interface{}
  1761  	err := _BSCValidatorSet.contract.Call(opts, &out, "maxStakePeopleCount")
  1762  
  1763  	if err != nil {
  1764  		return *new(*big.Int), err
  1765  	}
  1766  
  1767  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1768  
  1769  	return out0, err
  1770  
  1771  }
  1772  
  1773  // MaxStakePeopleCount is a free data retrieval call binding the contract method 0xf78ffcbc.
  1774  //
  1775  // Solidity: function maxStakePeopleCount() view returns(uint256)
  1776  func (_BSCValidatorSet *BSCValidatorSetSession) MaxStakePeopleCount() (*big.Int, error) {
  1777  	return _BSCValidatorSet.Contract.MaxStakePeopleCount(&_BSCValidatorSet.CallOpts)
  1778  }
  1779  
  1780  // MaxStakePeopleCount is a free data retrieval call binding the contract method 0xf78ffcbc.
  1781  //
  1782  // Solidity: function maxStakePeopleCount() view returns(uint256)
  1783  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MaxStakePeopleCount() (*big.Int, error) {
  1784  	return _BSCValidatorSet.Contract.MaxStakePeopleCount(&_BSCValidatorSet.CallOpts)
  1785  }
  1786  
  1787  // MiniStakeFFFCount is a free data retrieval call binding the contract method 0x1faea20b.
  1788  //
  1789  // Solidity: function miniStakeFFFCount() view returns(uint256)
  1790  func (_BSCValidatorSet *BSCValidatorSetCaller) MiniStakeFFFCount(opts *bind.CallOpts) (*big.Int, error) {
  1791  	var out []interface{}
  1792  	err := _BSCValidatorSet.contract.Call(opts, &out, "miniStakeFFFCount")
  1793  
  1794  	if err != nil {
  1795  		return *new(*big.Int), err
  1796  	}
  1797  
  1798  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1799  
  1800  	return out0, err
  1801  
  1802  }
  1803  
  1804  // MiniStakeFFFCount is a free data retrieval call binding the contract method 0x1faea20b.
  1805  //
  1806  // Solidity: function miniStakeFFFCount() view returns(uint256)
  1807  func (_BSCValidatorSet *BSCValidatorSetSession) MiniStakeFFFCount() (*big.Int, error) {
  1808  	return _BSCValidatorSet.Contract.MiniStakeFFFCount(&_BSCValidatorSet.CallOpts)
  1809  }
  1810  
  1811  // MiniStakeFFFCount is a free data retrieval call binding the contract method 0x1faea20b.
  1812  //
  1813  // Solidity: function miniStakeFFFCount() view returns(uint256)
  1814  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MiniStakeFFFCount() (*big.Int, error) {
  1815  	return _BSCValidatorSet.Contract.MiniStakeFFFCount(&_BSCValidatorSet.CallOpts)
  1816  }
  1817  
  1818  // MyBalance is a free data retrieval call binding the contract method 0xc9116b69.
  1819  //
  1820  // Solidity: function myBalance() view returns(uint256)
  1821  func (_BSCValidatorSet *BSCValidatorSetCaller) MyBalance(opts *bind.CallOpts) (*big.Int, error) {
  1822  	var out []interface{}
  1823  	err := _BSCValidatorSet.contract.Call(opts, &out, "myBalance")
  1824  
  1825  	if err != nil {
  1826  		return *new(*big.Int), err
  1827  	}
  1828  
  1829  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1830  
  1831  	return out0, err
  1832  
  1833  }
  1834  
  1835  // MyBalance is a free data retrieval call binding the contract method 0xc9116b69.
  1836  //
  1837  // Solidity: function myBalance() view returns(uint256)
  1838  func (_BSCValidatorSet *BSCValidatorSetSession) MyBalance() (*big.Int, error) {
  1839  	return _BSCValidatorSet.Contract.MyBalance(&_BSCValidatorSet.CallOpts)
  1840  }
  1841  
  1842  // MyBalance is a free data retrieval call binding the contract method 0xc9116b69.
  1843  //
  1844  // Solidity: function myBalance() view returns(uint256)
  1845  func (_BSCValidatorSet *BSCValidatorSetCallerSession) MyBalance() (*big.Int, error) {
  1846  	return _BSCValidatorSet.Contract.MyBalance(&_BSCValidatorSet.CallOpts)
  1847  }
  1848  
  1849  // NumOfJailed is a free data retrieval call binding the contract method 0xdaacdb66.
  1850  //
  1851  // Solidity: function numOfJailed() view returns(uint256)
  1852  func (_BSCValidatorSet *BSCValidatorSetCaller) NumOfJailed(opts *bind.CallOpts) (*big.Int, error) {
  1853  	var out []interface{}
  1854  	err := _BSCValidatorSet.contract.Call(opts, &out, "numOfJailed")
  1855  
  1856  	if err != nil {
  1857  		return *new(*big.Int), err
  1858  	}
  1859  
  1860  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1861  
  1862  	return out0, err
  1863  
  1864  }
  1865  
  1866  // NumOfJailed is a free data retrieval call binding the contract method 0xdaacdb66.
  1867  //
  1868  // Solidity: function numOfJailed() view returns(uint256)
  1869  func (_BSCValidatorSet *BSCValidatorSetSession) NumOfJailed() (*big.Int, error) {
  1870  	return _BSCValidatorSet.Contract.NumOfJailed(&_BSCValidatorSet.CallOpts)
  1871  }
  1872  
  1873  // NumOfJailed is a free data retrieval call binding the contract method 0xdaacdb66.
  1874  //
  1875  // Solidity: function numOfJailed() view returns(uint256)
  1876  func (_BSCValidatorSet *BSCValidatorSetCallerSession) NumOfJailed() (*big.Int, error) {
  1877  	return _BSCValidatorSet.Contract.NumOfJailed(&_BSCValidatorSet.CallOpts)
  1878  }
  1879  
  1880  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1881  //
  1882  // Solidity: function owner() view returns(address)
  1883  func (_BSCValidatorSet *BSCValidatorSetCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  1884  	var out []interface{}
  1885  	err := _BSCValidatorSet.contract.Call(opts, &out, "owner")
  1886  
  1887  	if err != nil {
  1888  		return *new(common.Address), err
  1889  	}
  1890  
  1891  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1892  
  1893  	return out0, err
  1894  
  1895  }
  1896  
  1897  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1898  //
  1899  // Solidity: function owner() view returns(address)
  1900  func (_BSCValidatorSet *BSCValidatorSetSession) Owner() (common.Address, error) {
  1901  	return _BSCValidatorSet.Contract.Owner(&_BSCValidatorSet.CallOpts)
  1902  }
  1903  
  1904  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1905  //
  1906  // Solidity: function owner() view returns(address)
  1907  func (_BSCValidatorSet *BSCValidatorSetCallerSession) Owner() (common.Address, error) {
  1908  	return _BSCValidatorSet.Contract.Owner(&_BSCValidatorSet.CallOpts)
  1909  }
  1910  
  1911  // StakeInfoIndexMap is a free data retrieval call binding the contract method 0x7dedf367.
  1912  //
  1913  // Solidity: function stakeInfoIndexMap(uint256 ) view returns(address)
  1914  func (_BSCValidatorSet *BSCValidatorSetCaller) StakeInfoIndexMap(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1915  	var out []interface{}
  1916  	err := _BSCValidatorSet.contract.Call(opts, &out, "stakeInfoIndexMap", arg0)
  1917  
  1918  	if err != nil {
  1919  		return *new(common.Address), err
  1920  	}
  1921  
  1922  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1923  
  1924  	return out0, err
  1925  
  1926  }
  1927  
  1928  // StakeInfoIndexMap is a free data retrieval call binding the contract method 0x7dedf367.
  1929  //
  1930  // Solidity: function stakeInfoIndexMap(uint256 ) view returns(address)
  1931  func (_BSCValidatorSet *BSCValidatorSetSession) StakeInfoIndexMap(arg0 *big.Int) (common.Address, error) {
  1932  	return _BSCValidatorSet.Contract.StakeInfoIndexMap(&_BSCValidatorSet.CallOpts, arg0)
  1933  }
  1934  
  1935  // StakeInfoIndexMap is a free data retrieval call binding the contract method 0x7dedf367.
  1936  //
  1937  // Solidity: function stakeInfoIndexMap(uint256 ) view returns(address)
  1938  func (_BSCValidatorSet *BSCValidatorSetCallerSession) StakeInfoIndexMap(arg0 *big.Int) (common.Address, error) {
  1939  	return _BSCValidatorSet.Contract.StakeInfoIndexMap(&_BSCValidatorSet.CallOpts, arg0)
  1940  }
  1941  
  1942  // StakeInfoMap is a free data retrieval call binding the contract method 0xc5f30db5.
  1943  //
  1944  // Solidity: function stakeInfoMap(address ) view returns(uint256)
  1945  func (_BSCValidatorSet *BSCValidatorSetCaller) StakeInfoMap(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  1946  	var out []interface{}
  1947  	err := _BSCValidatorSet.contract.Call(opts, &out, "stakeInfoMap", arg0)
  1948  
  1949  	if err != nil {
  1950  		return *new(*big.Int), err
  1951  	}
  1952  
  1953  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1954  
  1955  	return out0, err
  1956  
  1957  }
  1958  
  1959  // StakeInfoMap is a free data retrieval call binding the contract method 0xc5f30db5.
  1960  //
  1961  // Solidity: function stakeInfoMap(address ) view returns(uint256)
  1962  func (_BSCValidatorSet *BSCValidatorSetSession) StakeInfoMap(arg0 common.Address) (*big.Int, error) {
  1963  	return _BSCValidatorSet.Contract.StakeInfoMap(&_BSCValidatorSet.CallOpts, arg0)
  1964  }
  1965  
  1966  // StakeInfoMap is a free data retrieval call binding the contract method 0xc5f30db5.
  1967  //
  1968  // Solidity: function stakeInfoMap(address ) view returns(uint256)
  1969  func (_BSCValidatorSet *BSCValidatorSetCallerSession) StakeInfoMap(arg0 common.Address) (*big.Int, error) {
  1970  	return _BSCValidatorSet.Contract.StakeInfoMap(&_BSCValidatorSet.CallOpts, arg0)
  1971  }
  1972  
  1973  // TotalInComing is a free data retrieval call binding the contract method 0x1ff18069.
  1974  //
  1975  // Solidity: function totalInComing() view returns(uint256)
  1976  func (_BSCValidatorSet *BSCValidatorSetCaller) TotalInComing(opts *bind.CallOpts) (*big.Int, error) {
  1977  	var out []interface{}
  1978  	err := _BSCValidatorSet.contract.Call(opts, &out, "totalInComing")
  1979  
  1980  	if err != nil {
  1981  		return *new(*big.Int), err
  1982  	}
  1983  
  1984  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1985  
  1986  	return out0, err
  1987  
  1988  }
  1989  
  1990  // TotalInComing is a free data retrieval call binding the contract method 0x1ff18069.
  1991  //
  1992  // Solidity: function totalInComing() view returns(uint256)
  1993  func (_BSCValidatorSet *BSCValidatorSetSession) TotalInComing() (*big.Int, error) {
  1994  	return _BSCValidatorSet.Contract.TotalInComing(&_BSCValidatorSet.CallOpts)
  1995  }
  1996  
  1997  // TotalInComing is a free data retrieval call binding the contract method 0x1ff18069.
  1998  //
  1999  // Solidity: function totalInComing() view returns(uint256)
  2000  func (_BSCValidatorSet *BSCValidatorSetCallerSession) TotalInComing() (*big.Int, error) {
  2001  	return _BSCValidatorSet.Contract.TotalInComing(&_BSCValidatorSet.CallOpts)
  2002  }
  2003  
  2004  // StakeFFF is a paid mutator transaction binding the contract method 0x0db6cccb.
  2005  //
  2006  // Solidity: function StakeFFF() payable returns()
  2007  func (_BSCValidatorSet *BSCValidatorSetTransactor) StakeFFF(opts *bind.TransactOpts) (*types.Transaction, error) {
  2008  	return _BSCValidatorSet.contract.Transact(opts, "StakeFFF")
  2009  }
  2010  
  2011  // StakeFFF is a paid mutator transaction binding the contract method 0x0db6cccb.
  2012  //
  2013  // Solidity: function StakeFFF() payable returns()
  2014  func (_BSCValidatorSet *BSCValidatorSetSession) StakeFFF() (*types.Transaction, error) {
  2015  	return _BSCValidatorSet.Contract.StakeFFF(&_BSCValidatorSet.TransactOpts)
  2016  }
  2017  
  2018  // StakeFFF is a paid mutator transaction binding the contract method 0x0db6cccb.
  2019  //
  2020  // Solidity: function StakeFFF() payable returns()
  2021  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) StakeFFF() (*types.Transaction, error) {
  2022  	return _BSCValidatorSet.Contract.StakeFFF(&_BSCValidatorSet.TransactOpts)
  2023  }
  2024  
  2025  // UnStakeFFF is a paid mutator transaction binding the contract method 0x30c62a13.
  2026  //
  2027  // Solidity: function UnStakeFFF() payable returns()
  2028  func (_BSCValidatorSet *BSCValidatorSetTransactor) UnStakeFFF(opts *bind.TransactOpts) (*types.Transaction, error) {
  2029  	return _BSCValidatorSet.contract.Transact(opts, "UnStakeFFF")
  2030  }
  2031  
  2032  // UnStakeFFF is a paid mutator transaction binding the contract method 0x30c62a13.
  2033  //
  2034  // Solidity: function UnStakeFFF() payable returns()
  2035  func (_BSCValidatorSet *BSCValidatorSetSession) UnStakeFFF() (*types.Transaction, error) {
  2036  	return _BSCValidatorSet.Contract.UnStakeFFF(&_BSCValidatorSet.TransactOpts)
  2037  }
  2038  
  2039  // UnStakeFFF is a paid mutator transaction binding the contract method 0x30c62a13.
  2040  //
  2041  // Solidity: function UnStakeFFF() payable returns()
  2042  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) UnStakeFFF() (*types.Transaction, error) {
  2043  	return _BSCValidatorSet.Contract.UnStakeFFF(&_BSCValidatorSet.TransactOpts)
  2044  }
  2045  
  2046  // Deposit is a paid mutator transaction binding the contract method 0xf340fa01.
  2047  //
  2048  // Solidity: function deposit(address valAddr) payable returns()
  2049  func (_BSCValidatorSet *BSCValidatorSetTransactor) Deposit(opts *bind.TransactOpts, valAddr common.Address) (*types.Transaction, error) {
  2050  	return _BSCValidatorSet.contract.Transact(opts, "deposit", valAddr)
  2051  }
  2052  
  2053  // Deposit is a paid mutator transaction binding the contract method 0xf340fa01.
  2054  //
  2055  // Solidity: function deposit(address valAddr) payable returns()
  2056  func (_BSCValidatorSet *BSCValidatorSetSession) Deposit(valAddr common.Address) (*types.Transaction, error) {
  2057  	return _BSCValidatorSet.Contract.Deposit(&_BSCValidatorSet.TransactOpts, valAddr)
  2058  }
  2059  
  2060  // Deposit is a paid mutator transaction binding the contract method 0xf340fa01.
  2061  //
  2062  // Solidity: function deposit(address valAddr) payable returns()
  2063  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) Deposit(valAddr common.Address) (*types.Transaction, error) {
  2064  	return _BSCValidatorSet.Contract.Deposit(&_BSCValidatorSet.TransactOpts, valAddr)
  2065  }
  2066  
  2067  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  2068  //
  2069  // Solidity: function felony(address validator) returns()
  2070  func (_BSCValidatorSet *BSCValidatorSetTransactor) Felony(opts *bind.TransactOpts, validator common.Address) (*types.Transaction, error) {
  2071  	return _BSCValidatorSet.contract.Transact(opts, "felony", validator)
  2072  }
  2073  
  2074  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  2075  //
  2076  // Solidity: function felony(address validator) returns()
  2077  func (_BSCValidatorSet *BSCValidatorSetSession) Felony(validator common.Address) (*types.Transaction, error) {
  2078  	return _BSCValidatorSet.Contract.Felony(&_BSCValidatorSet.TransactOpts, validator)
  2079  }
  2080  
  2081  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  2082  //
  2083  // Solidity: function felony(address validator) returns()
  2084  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) Felony(validator common.Address) (*types.Transaction, error) {
  2085  	return _BSCValidatorSet.Contract.Felony(&_BSCValidatorSet.TransactOpts, validator)
  2086  }
  2087  
  2088  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  2089  //
  2090  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  2091  func (_BSCValidatorSet *BSCValidatorSetTransactor) HandleAckPackage(opts *bind.TransactOpts, channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2092  	return _BSCValidatorSet.contract.Transact(opts, "handleAckPackage", channelId, msgBytes)
  2093  }
  2094  
  2095  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  2096  //
  2097  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  2098  func (_BSCValidatorSet *BSCValidatorSetSession) HandleAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2099  	return _BSCValidatorSet.Contract.HandleAckPackage(&_BSCValidatorSet.TransactOpts, channelId, msgBytes)
  2100  }
  2101  
  2102  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  2103  //
  2104  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  2105  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) HandleAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2106  	return _BSCValidatorSet.Contract.HandleAckPackage(&_BSCValidatorSet.TransactOpts, channelId, msgBytes)
  2107  }
  2108  
  2109  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  2110  //
  2111  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  2112  func (_BSCValidatorSet *BSCValidatorSetTransactor) HandleFailAckPackage(opts *bind.TransactOpts, channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2113  	return _BSCValidatorSet.contract.Transact(opts, "handleFailAckPackage", channelId, msgBytes)
  2114  }
  2115  
  2116  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  2117  //
  2118  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  2119  func (_BSCValidatorSet *BSCValidatorSetSession) HandleFailAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2120  	return _BSCValidatorSet.Contract.HandleFailAckPackage(&_BSCValidatorSet.TransactOpts, channelId, msgBytes)
  2121  }
  2122  
  2123  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  2124  //
  2125  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  2126  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) HandleFailAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  2127  	return _BSCValidatorSet.Contract.HandleFailAckPackage(&_BSCValidatorSet.TransactOpts, channelId, msgBytes)
  2128  }
  2129  
  2130  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  2131  //
  2132  // Solidity: function handleSynPackage(uint8 , bytes msgBytes) returns(bytes responsePayload)
  2133  func (_BSCValidatorSet *BSCValidatorSetTransactor) HandleSynPackage(opts *bind.TransactOpts, arg0 uint8, msgBytes []byte) (*types.Transaction, error) {
  2134  	return _BSCValidatorSet.contract.Transact(opts, "handleSynPackage", arg0, msgBytes)
  2135  }
  2136  
  2137  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  2138  //
  2139  // Solidity: function handleSynPackage(uint8 , bytes msgBytes) returns(bytes responsePayload)
  2140  func (_BSCValidatorSet *BSCValidatorSetSession) HandleSynPackage(arg0 uint8, msgBytes []byte) (*types.Transaction, error) {
  2141  	return _BSCValidatorSet.Contract.HandleSynPackage(&_BSCValidatorSet.TransactOpts, arg0, msgBytes)
  2142  }
  2143  
  2144  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  2145  //
  2146  // Solidity: function handleSynPackage(uint8 , bytes msgBytes) returns(bytes responsePayload)
  2147  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) HandleSynPackage(arg0 uint8, msgBytes []byte) (*types.Transaction, error) {
  2148  	return _BSCValidatorSet.Contract.HandleSynPackage(&_BSCValidatorSet.TransactOpts, arg0, msgBytes)
  2149  }
  2150  
  2151  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
  2152  //
  2153  // Solidity: function init() returns()
  2154  func (_BSCValidatorSet *BSCValidatorSetTransactor) Init(opts *bind.TransactOpts) (*types.Transaction, error) {
  2155  	return _BSCValidatorSet.contract.Transact(opts, "init")
  2156  }
  2157  
  2158  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
  2159  //
  2160  // Solidity: function init() returns()
  2161  func (_BSCValidatorSet *BSCValidatorSetSession) Init() (*types.Transaction, error) {
  2162  	return _BSCValidatorSet.Contract.Init(&_BSCValidatorSet.TransactOpts)
  2163  }
  2164  
  2165  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
  2166  //
  2167  // Solidity: function init() returns()
  2168  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) Init() (*types.Transaction, error) {
  2169  	return _BSCValidatorSet.Contract.Init(&_BSCValidatorSet.TransactOpts)
  2170  }
  2171  
  2172  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  2173  //
  2174  // Solidity: function misdemeanor(address validator) returns()
  2175  func (_BSCValidatorSet *BSCValidatorSetTransactor) Misdemeanor(opts *bind.TransactOpts, validator common.Address) (*types.Transaction, error) {
  2176  	return _BSCValidatorSet.contract.Transact(opts, "misdemeanor", validator)
  2177  }
  2178  
  2179  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  2180  //
  2181  // Solidity: function misdemeanor(address validator) returns()
  2182  func (_BSCValidatorSet *BSCValidatorSetSession) Misdemeanor(validator common.Address) (*types.Transaction, error) {
  2183  	return _BSCValidatorSet.Contract.Misdemeanor(&_BSCValidatorSet.TransactOpts, validator)
  2184  }
  2185  
  2186  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  2187  //
  2188  // Solidity: function misdemeanor(address validator) returns()
  2189  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) Misdemeanor(validator common.Address) (*types.Transaction, error) {
  2190  	return _BSCValidatorSet.Contract.Misdemeanor(&_BSCValidatorSet.TransactOpts, validator)
  2191  }
  2192  
  2193  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  2194  //
  2195  // Solidity: function updateParam(string key, bytes value) returns()
  2196  func (_BSCValidatorSet *BSCValidatorSetTransactor) UpdateParam(opts *bind.TransactOpts, key string, value []byte) (*types.Transaction, error) {
  2197  	return _BSCValidatorSet.contract.Transact(opts, "updateParam", key, value)
  2198  }
  2199  
  2200  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  2201  //
  2202  // Solidity: function updateParam(string key, bytes value) returns()
  2203  func (_BSCValidatorSet *BSCValidatorSetSession) UpdateParam(key string, value []byte) (*types.Transaction, error) {
  2204  	return _BSCValidatorSet.Contract.UpdateParam(&_BSCValidatorSet.TransactOpts, key, value)
  2205  }
  2206  
  2207  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  2208  //
  2209  // Solidity: function updateParam(string key, bytes value) returns()
  2210  func (_BSCValidatorSet *BSCValidatorSetTransactorSession) UpdateParam(key string, value []byte) (*types.Transaction, error) {
  2211  	return _BSCValidatorSet.Contract.UpdateParam(&_BSCValidatorSet.TransactOpts, key, value)
  2212  }
  2213  
  2214  // BSCValidatorSetDistributeBlockRewardFuncIterator is returned from FilterDistributeBlockRewardFunc and is used to iterate over the raw logs and unpacked data for DistributeBlockRewardFunc events raised by the BSCValidatorSet contract.
  2215  type BSCValidatorSetDistributeBlockRewardFuncIterator struct {
  2216  	Event *BSCValidatorSetDistributeBlockRewardFunc // Event containing the contract specifics and raw log
  2217  
  2218  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2219  	event    string              // Event name to use for unpacking event data
  2220  
  2221  	logs chan types.Log        // Log channel receiving the found contract events
  2222  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2223  	done bool                  // Whether the subscription completed delivering logs
  2224  	fail error                 // Occurred error to stop iteration
  2225  }
  2226  
  2227  // Next advances the iterator to the subsequent event, returning whether there
  2228  // are any more events found. In case of a retrieval or parsing error, false is
  2229  // returned and Error() can be queried for the exact failure.
  2230  func (it *BSCValidatorSetDistributeBlockRewardFuncIterator) Next() bool {
  2231  	// If the iterator failed, stop iterating
  2232  	if it.fail != nil {
  2233  		return false
  2234  	}
  2235  	// If the iterator completed, deliver directly whatever's available
  2236  	if it.done {
  2237  		select {
  2238  		case log := <-it.logs:
  2239  			it.Event = new(BSCValidatorSetDistributeBlockRewardFunc)
  2240  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2241  				it.fail = err
  2242  				return false
  2243  			}
  2244  			it.Event.Raw = log
  2245  			return true
  2246  
  2247  		default:
  2248  			return false
  2249  		}
  2250  	}
  2251  	// Iterator still in progress, wait for either a data or an error event
  2252  	select {
  2253  	case log := <-it.logs:
  2254  		it.Event = new(BSCValidatorSetDistributeBlockRewardFunc)
  2255  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2256  			it.fail = err
  2257  			return false
  2258  		}
  2259  		it.Event.Raw = log
  2260  		return true
  2261  
  2262  	case err := <-it.sub.Err():
  2263  		it.done = true
  2264  		it.fail = err
  2265  		return it.Next()
  2266  	}
  2267  }
  2268  
  2269  // Error returns any retrieval or parsing error occurred during filtering.
  2270  func (it *BSCValidatorSetDistributeBlockRewardFuncIterator) Error() error {
  2271  	return it.fail
  2272  }
  2273  
  2274  // Close terminates the iteration process, releasing any pending underlying
  2275  // resources.
  2276  func (it *BSCValidatorSetDistributeBlockRewardFuncIterator) Close() error {
  2277  	it.sub.Unsubscribe()
  2278  	return nil
  2279  }
  2280  
  2281  // BSCValidatorSetDistributeBlockRewardFunc represents a DistributeBlockRewardFunc event raised by the BSCValidatorSet contract.
  2282  type BSCValidatorSetDistributeBlockRewardFunc struct {
  2283  	UserCount *big.Int
  2284  	Count     *big.Int
  2285  	Raw       types.Log // Blockchain specific contextual infos
  2286  }
  2287  
  2288  // FilterDistributeBlockRewardFunc is a free log retrieval operation binding the contract event 0x77affbec109ff6a3609c802050db936c55bc48fb23db5c88f4a4818922e65239.
  2289  //
  2290  // Solidity: event DistributeBlockRewardFunc(uint256 userCount, uint256 count)
  2291  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterDistributeBlockRewardFunc(opts *bind.FilterOpts) (*BSCValidatorSetDistributeBlockRewardFuncIterator, error) {
  2292  
  2293  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "DistributeBlockRewardFunc")
  2294  	if err != nil {
  2295  		return nil, err
  2296  	}
  2297  	return &BSCValidatorSetDistributeBlockRewardFuncIterator{contract: _BSCValidatorSet.contract, event: "DistributeBlockRewardFunc", logs: logs, sub: sub}, nil
  2298  }
  2299  
  2300  // WatchDistributeBlockRewardFunc is a free log subscription operation binding the contract event 0x77affbec109ff6a3609c802050db936c55bc48fb23db5c88f4a4818922e65239.
  2301  //
  2302  // Solidity: event DistributeBlockRewardFunc(uint256 userCount, uint256 count)
  2303  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchDistributeBlockRewardFunc(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetDistributeBlockRewardFunc) (event.Subscription, error) {
  2304  
  2305  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "DistributeBlockRewardFunc")
  2306  	if err != nil {
  2307  		return nil, err
  2308  	}
  2309  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2310  		defer sub.Unsubscribe()
  2311  		for {
  2312  			select {
  2313  			case log := <-logs:
  2314  				// New log arrived, parse the event and forward to the user
  2315  				event := new(BSCValidatorSetDistributeBlockRewardFunc)
  2316  				if err := _BSCValidatorSet.contract.UnpackLog(event, "DistributeBlockRewardFunc", log); err != nil {
  2317  					return err
  2318  				}
  2319  				event.Raw = log
  2320  
  2321  				select {
  2322  				case sink <- event:
  2323  				case err := <-sub.Err():
  2324  					return err
  2325  				case <-quit:
  2326  					return nil
  2327  				}
  2328  			case err := <-sub.Err():
  2329  				return err
  2330  			case <-quit:
  2331  				return nil
  2332  			}
  2333  		}
  2334  	}), nil
  2335  }
  2336  
  2337  // ParseDistributeBlockRewardFunc is a log parse operation binding the contract event 0x77affbec109ff6a3609c802050db936c55bc48fb23db5c88f4a4818922e65239.
  2338  //
  2339  // Solidity: event DistributeBlockRewardFunc(uint256 userCount, uint256 count)
  2340  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseDistributeBlockRewardFunc(log types.Log) (*BSCValidatorSetDistributeBlockRewardFunc, error) {
  2341  	event := new(BSCValidatorSetDistributeBlockRewardFunc)
  2342  	if err := _BSCValidatorSet.contract.UnpackLog(event, "DistributeBlockRewardFunc", log); err != nil {
  2343  		return nil, err
  2344  	}
  2345  	event.Raw = log
  2346  	return event, nil
  2347  }
  2348  
  2349  // BSCValidatorSetUserStakeFFFIterator is returned from FilterUserStakeFFF and is used to iterate over the raw logs and unpacked data for UserStakeFFF events raised by the BSCValidatorSet contract.
  2350  type BSCValidatorSetUserStakeFFFIterator struct {
  2351  	Event *BSCValidatorSetUserStakeFFF // Event containing the contract specifics and raw log
  2352  
  2353  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2354  	event    string              // Event name to use for unpacking event data
  2355  
  2356  	logs chan types.Log        // Log channel receiving the found contract events
  2357  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2358  	done bool                  // Whether the subscription completed delivering logs
  2359  	fail error                 // Occurred error to stop iteration
  2360  }
  2361  
  2362  // Next advances the iterator to the subsequent event, returning whether there
  2363  // are any more events found. In case of a retrieval or parsing error, false is
  2364  // returned and Error() can be queried for the exact failure.
  2365  func (it *BSCValidatorSetUserStakeFFFIterator) Next() bool {
  2366  	// If the iterator failed, stop iterating
  2367  	if it.fail != nil {
  2368  		return false
  2369  	}
  2370  	// If the iterator completed, deliver directly whatever's available
  2371  	if it.done {
  2372  		select {
  2373  		case log := <-it.logs:
  2374  			it.Event = new(BSCValidatorSetUserStakeFFF)
  2375  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2376  				it.fail = err
  2377  				return false
  2378  			}
  2379  			it.Event.Raw = log
  2380  			return true
  2381  
  2382  		default:
  2383  			return false
  2384  		}
  2385  	}
  2386  	// Iterator still in progress, wait for either a data or an error event
  2387  	select {
  2388  	case log := <-it.logs:
  2389  		it.Event = new(BSCValidatorSetUserStakeFFF)
  2390  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2391  			it.fail = err
  2392  			return false
  2393  		}
  2394  		it.Event.Raw = log
  2395  		return true
  2396  
  2397  	case err := <-it.sub.Err():
  2398  		it.done = true
  2399  		it.fail = err
  2400  		return it.Next()
  2401  	}
  2402  }
  2403  
  2404  // Error returns any retrieval or parsing error occurred during filtering.
  2405  func (it *BSCValidatorSetUserStakeFFFIterator) Error() error {
  2406  	return it.fail
  2407  }
  2408  
  2409  // Close terminates the iteration process, releasing any pending underlying
  2410  // resources.
  2411  func (it *BSCValidatorSetUserStakeFFFIterator) Close() error {
  2412  	it.sub.Unsubscribe()
  2413  	return nil
  2414  }
  2415  
  2416  // BSCValidatorSetUserStakeFFF represents a UserStakeFFF event raised by the BSCValidatorSet contract.
  2417  type BSCValidatorSetUserStakeFFF struct {
  2418  	User  common.Address
  2419  	Count *big.Int
  2420  	Raw   types.Log // Blockchain specific contextual infos
  2421  }
  2422  
  2423  // FilterUserStakeFFF is a free log retrieval operation binding the contract event 0x26a5c0f8e27c8ffa9a8414a94d6c0137a2ec1446b6925835dc0cf5ba74d2967f.
  2424  //
  2425  // Solidity: event UserStakeFFF(address user, uint256 count)
  2426  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterUserStakeFFF(opts *bind.FilterOpts) (*BSCValidatorSetUserStakeFFFIterator, error) {
  2427  
  2428  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "UserStakeFFF")
  2429  	if err != nil {
  2430  		return nil, err
  2431  	}
  2432  	return &BSCValidatorSetUserStakeFFFIterator{contract: _BSCValidatorSet.contract, event: "UserStakeFFF", logs: logs, sub: sub}, nil
  2433  }
  2434  
  2435  // WatchUserStakeFFF is a free log subscription operation binding the contract event 0x26a5c0f8e27c8ffa9a8414a94d6c0137a2ec1446b6925835dc0cf5ba74d2967f.
  2436  //
  2437  // Solidity: event UserStakeFFF(address user, uint256 count)
  2438  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchUserStakeFFF(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetUserStakeFFF) (event.Subscription, error) {
  2439  
  2440  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "UserStakeFFF")
  2441  	if err != nil {
  2442  		return nil, err
  2443  	}
  2444  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2445  		defer sub.Unsubscribe()
  2446  		for {
  2447  			select {
  2448  			case log := <-logs:
  2449  				// New log arrived, parse the event and forward to the user
  2450  				event := new(BSCValidatorSetUserStakeFFF)
  2451  				if err := _BSCValidatorSet.contract.UnpackLog(event, "UserStakeFFF", log); err != nil {
  2452  					return err
  2453  				}
  2454  				event.Raw = log
  2455  
  2456  				select {
  2457  				case sink <- event:
  2458  				case err := <-sub.Err():
  2459  					return err
  2460  				case <-quit:
  2461  					return nil
  2462  				}
  2463  			case err := <-sub.Err():
  2464  				return err
  2465  			case <-quit:
  2466  				return nil
  2467  			}
  2468  		}
  2469  	}), nil
  2470  }
  2471  
  2472  // ParseUserStakeFFF is a log parse operation binding the contract event 0x26a5c0f8e27c8ffa9a8414a94d6c0137a2ec1446b6925835dc0cf5ba74d2967f.
  2473  //
  2474  // Solidity: event UserStakeFFF(address user, uint256 count)
  2475  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseUserStakeFFF(log types.Log) (*BSCValidatorSetUserStakeFFF, error) {
  2476  	event := new(BSCValidatorSetUserStakeFFF)
  2477  	if err := _BSCValidatorSet.contract.UnpackLog(event, "UserStakeFFF", log); err != nil {
  2478  		return nil, err
  2479  	}
  2480  	event.Raw = log
  2481  	return event, nil
  2482  }
  2483  
  2484  // BSCValidatorSetUserUnStakeFFFIterator is returned from FilterUserUnStakeFFF and is used to iterate over the raw logs and unpacked data for UserUnStakeFFF events raised by the BSCValidatorSet contract.
  2485  type BSCValidatorSetUserUnStakeFFFIterator struct {
  2486  	Event *BSCValidatorSetUserUnStakeFFF // Event containing the contract specifics and raw log
  2487  
  2488  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2489  	event    string              // Event name to use for unpacking event data
  2490  
  2491  	logs chan types.Log        // Log channel receiving the found contract events
  2492  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2493  	done bool                  // Whether the subscription completed delivering logs
  2494  	fail error                 // Occurred error to stop iteration
  2495  }
  2496  
  2497  // Next advances the iterator to the subsequent event, returning whether there
  2498  // are any more events found. In case of a retrieval or parsing error, false is
  2499  // returned and Error() can be queried for the exact failure.
  2500  func (it *BSCValidatorSetUserUnStakeFFFIterator) Next() bool {
  2501  	// If the iterator failed, stop iterating
  2502  	if it.fail != nil {
  2503  		return false
  2504  	}
  2505  	// If the iterator completed, deliver directly whatever's available
  2506  	if it.done {
  2507  		select {
  2508  		case log := <-it.logs:
  2509  			it.Event = new(BSCValidatorSetUserUnStakeFFF)
  2510  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2511  				it.fail = err
  2512  				return false
  2513  			}
  2514  			it.Event.Raw = log
  2515  			return true
  2516  
  2517  		default:
  2518  			return false
  2519  		}
  2520  	}
  2521  	// Iterator still in progress, wait for either a data or an error event
  2522  	select {
  2523  	case log := <-it.logs:
  2524  		it.Event = new(BSCValidatorSetUserUnStakeFFF)
  2525  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2526  			it.fail = err
  2527  			return false
  2528  		}
  2529  		it.Event.Raw = log
  2530  		return true
  2531  
  2532  	case err := <-it.sub.Err():
  2533  		it.done = true
  2534  		it.fail = err
  2535  		return it.Next()
  2536  	}
  2537  }
  2538  
  2539  // Error returns any retrieval or parsing error occurred during filtering.
  2540  func (it *BSCValidatorSetUserUnStakeFFFIterator) Error() error {
  2541  	return it.fail
  2542  }
  2543  
  2544  // Close terminates the iteration process, releasing any pending underlying
  2545  // resources.
  2546  func (it *BSCValidatorSetUserUnStakeFFFIterator) Close() error {
  2547  	it.sub.Unsubscribe()
  2548  	return nil
  2549  }
  2550  
  2551  // BSCValidatorSetUserUnStakeFFF represents a UserUnStakeFFF event raised by the BSCValidatorSet contract.
  2552  type BSCValidatorSetUserUnStakeFFF struct {
  2553  	User  common.Address
  2554  	Count *big.Int
  2555  	Raw   types.Log // Blockchain specific contextual infos
  2556  }
  2557  
  2558  // FilterUserUnStakeFFF is a free log retrieval operation binding the contract event 0x433979128f828c623a175588cd9821124640d4353dd48d812d2b7273f1b76c3f.
  2559  //
  2560  // Solidity: event UserUnStakeFFF(address user, uint256 count)
  2561  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterUserUnStakeFFF(opts *bind.FilterOpts) (*BSCValidatorSetUserUnStakeFFFIterator, error) {
  2562  
  2563  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "UserUnStakeFFF")
  2564  	if err != nil {
  2565  		return nil, err
  2566  	}
  2567  	return &BSCValidatorSetUserUnStakeFFFIterator{contract: _BSCValidatorSet.contract, event: "UserUnStakeFFF", logs: logs, sub: sub}, nil
  2568  }
  2569  
  2570  // WatchUserUnStakeFFF is a free log subscription operation binding the contract event 0x433979128f828c623a175588cd9821124640d4353dd48d812d2b7273f1b76c3f.
  2571  //
  2572  // Solidity: event UserUnStakeFFF(address user, uint256 count)
  2573  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchUserUnStakeFFF(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetUserUnStakeFFF) (event.Subscription, error) {
  2574  
  2575  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "UserUnStakeFFF")
  2576  	if err != nil {
  2577  		return nil, err
  2578  	}
  2579  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2580  		defer sub.Unsubscribe()
  2581  		for {
  2582  			select {
  2583  			case log := <-logs:
  2584  				// New log arrived, parse the event and forward to the user
  2585  				event := new(BSCValidatorSetUserUnStakeFFF)
  2586  				if err := _BSCValidatorSet.contract.UnpackLog(event, "UserUnStakeFFF", log); err != nil {
  2587  					return err
  2588  				}
  2589  				event.Raw = log
  2590  
  2591  				select {
  2592  				case sink <- event:
  2593  				case err := <-sub.Err():
  2594  					return err
  2595  				case <-quit:
  2596  					return nil
  2597  				}
  2598  			case err := <-sub.Err():
  2599  				return err
  2600  			case <-quit:
  2601  				return nil
  2602  			}
  2603  		}
  2604  	}), nil
  2605  }
  2606  
  2607  // ParseUserUnStakeFFF is a log parse operation binding the contract event 0x433979128f828c623a175588cd9821124640d4353dd48d812d2b7273f1b76c3f.
  2608  //
  2609  // Solidity: event UserUnStakeFFF(address user, uint256 count)
  2610  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseUserUnStakeFFF(log types.Log) (*BSCValidatorSetUserUnStakeFFF, error) {
  2611  	event := new(BSCValidatorSetUserUnStakeFFF)
  2612  	if err := _BSCValidatorSet.contract.UnpackLog(event, "UserUnStakeFFF", log); err != nil {
  2613  		return nil, err
  2614  	}
  2615  	event.Raw = log
  2616  	return event, nil
  2617  }
  2618  
  2619  // BSCValidatorSetBatchTransferIterator is returned from FilterBatchTransfer and is used to iterate over the raw logs and unpacked data for BatchTransfer events raised by the BSCValidatorSet contract.
  2620  type BSCValidatorSetBatchTransferIterator struct {
  2621  	Event *BSCValidatorSetBatchTransfer // Event containing the contract specifics and raw log
  2622  
  2623  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2624  	event    string              // Event name to use for unpacking event data
  2625  
  2626  	logs chan types.Log        // Log channel receiving the found contract events
  2627  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2628  	done bool                  // Whether the subscription completed delivering logs
  2629  	fail error                 // Occurred error to stop iteration
  2630  }
  2631  
  2632  // Next advances the iterator to the subsequent event, returning whether there
  2633  // are any more events found. In case of a retrieval or parsing error, false is
  2634  // returned and Error() can be queried for the exact failure.
  2635  func (it *BSCValidatorSetBatchTransferIterator) Next() bool {
  2636  	// If the iterator failed, stop iterating
  2637  	if it.fail != nil {
  2638  		return false
  2639  	}
  2640  	// If the iterator completed, deliver directly whatever's available
  2641  	if it.done {
  2642  		select {
  2643  		case log := <-it.logs:
  2644  			it.Event = new(BSCValidatorSetBatchTransfer)
  2645  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2646  				it.fail = err
  2647  				return false
  2648  			}
  2649  			it.Event.Raw = log
  2650  			return true
  2651  
  2652  		default:
  2653  			return false
  2654  		}
  2655  	}
  2656  	// Iterator still in progress, wait for either a data or an error event
  2657  	select {
  2658  	case log := <-it.logs:
  2659  		it.Event = new(BSCValidatorSetBatchTransfer)
  2660  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2661  			it.fail = err
  2662  			return false
  2663  		}
  2664  		it.Event.Raw = log
  2665  		return true
  2666  
  2667  	case err := <-it.sub.Err():
  2668  		it.done = true
  2669  		it.fail = err
  2670  		return it.Next()
  2671  	}
  2672  }
  2673  
  2674  // Error returns any retrieval or parsing error occurred during filtering.
  2675  func (it *BSCValidatorSetBatchTransferIterator) Error() error {
  2676  	return it.fail
  2677  }
  2678  
  2679  // Close terminates the iteration process, releasing any pending underlying
  2680  // resources.
  2681  func (it *BSCValidatorSetBatchTransferIterator) Close() error {
  2682  	it.sub.Unsubscribe()
  2683  	return nil
  2684  }
  2685  
  2686  // BSCValidatorSetBatchTransfer represents a BatchTransfer event raised by the BSCValidatorSet contract.
  2687  type BSCValidatorSetBatchTransfer struct {
  2688  	Amount *big.Int
  2689  	Raw    types.Log // Blockchain specific contextual infos
  2690  }
  2691  
  2692  // FilterBatchTransfer is a free log retrieval operation binding the contract event 0xa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b70.
  2693  //
  2694  // Solidity: event batchTransfer(uint256 amount)
  2695  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterBatchTransfer(opts *bind.FilterOpts) (*BSCValidatorSetBatchTransferIterator, error) {
  2696  
  2697  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "batchTransfer")
  2698  	if err != nil {
  2699  		return nil, err
  2700  	}
  2701  	return &BSCValidatorSetBatchTransferIterator{contract: _BSCValidatorSet.contract, event: "batchTransfer", logs: logs, sub: sub}, nil
  2702  }
  2703  
  2704  // WatchBatchTransfer is a free log subscription operation binding the contract event 0xa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b70.
  2705  //
  2706  // Solidity: event batchTransfer(uint256 amount)
  2707  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchBatchTransfer(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetBatchTransfer) (event.Subscription, error) {
  2708  
  2709  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "batchTransfer")
  2710  	if err != nil {
  2711  		return nil, err
  2712  	}
  2713  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2714  		defer sub.Unsubscribe()
  2715  		for {
  2716  			select {
  2717  			case log := <-logs:
  2718  				// New log arrived, parse the event and forward to the user
  2719  				event := new(BSCValidatorSetBatchTransfer)
  2720  				if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransfer", log); err != nil {
  2721  					return err
  2722  				}
  2723  				event.Raw = log
  2724  
  2725  				select {
  2726  				case sink <- event:
  2727  				case err := <-sub.Err():
  2728  					return err
  2729  				case <-quit:
  2730  					return nil
  2731  				}
  2732  			case err := <-sub.Err():
  2733  				return err
  2734  			case <-quit:
  2735  				return nil
  2736  			}
  2737  		}
  2738  	}), nil
  2739  }
  2740  
  2741  // ParseBatchTransfer is a log parse operation binding the contract event 0xa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b70.
  2742  //
  2743  // Solidity: event batchTransfer(uint256 amount)
  2744  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseBatchTransfer(log types.Log) (*BSCValidatorSetBatchTransfer, error) {
  2745  	event := new(BSCValidatorSetBatchTransfer)
  2746  	if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransfer", log); err != nil {
  2747  		return nil, err
  2748  	}
  2749  	event.Raw = log
  2750  	return event, nil
  2751  }
  2752  
  2753  // BSCValidatorSetBatchTransferFailedIterator is returned from FilterBatchTransferFailed and is used to iterate over the raw logs and unpacked data for BatchTransferFailed events raised by the BSCValidatorSet contract.
  2754  type BSCValidatorSetBatchTransferFailedIterator struct {
  2755  	Event *BSCValidatorSetBatchTransferFailed // Event containing the contract specifics and raw log
  2756  
  2757  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2758  	event    string              // Event name to use for unpacking event data
  2759  
  2760  	logs chan types.Log        // Log channel receiving the found contract events
  2761  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2762  	done bool                  // Whether the subscription completed delivering logs
  2763  	fail error                 // Occurred error to stop iteration
  2764  }
  2765  
  2766  // Next advances the iterator to the subsequent event, returning whether there
  2767  // are any more events found. In case of a retrieval or parsing error, false is
  2768  // returned and Error() can be queried for the exact failure.
  2769  func (it *BSCValidatorSetBatchTransferFailedIterator) Next() bool {
  2770  	// If the iterator failed, stop iterating
  2771  	if it.fail != nil {
  2772  		return false
  2773  	}
  2774  	// If the iterator completed, deliver directly whatever's available
  2775  	if it.done {
  2776  		select {
  2777  		case log := <-it.logs:
  2778  			it.Event = new(BSCValidatorSetBatchTransferFailed)
  2779  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2780  				it.fail = err
  2781  				return false
  2782  			}
  2783  			it.Event.Raw = log
  2784  			return true
  2785  
  2786  		default:
  2787  			return false
  2788  		}
  2789  	}
  2790  	// Iterator still in progress, wait for either a data or an error event
  2791  	select {
  2792  	case log := <-it.logs:
  2793  		it.Event = new(BSCValidatorSetBatchTransferFailed)
  2794  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2795  			it.fail = err
  2796  			return false
  2797  		}
  2798  		it.Event.Raw = log
  2799  		return true
  2800  
  2801  	case err := <-it.sub.Err():
  2802  		it.done = true
  2803  		it.fail = err
  2804  		return it.Next()
  2805  	}
  2806  }
  2807  
  2808  // Error returns any retrieval or parsing error occurred during filtering.
  2809  func (it *BSCValidatorSetBatchTransferFailedIterator) Error() error {
  2810  	return it.fail
  2811  }
  2812  
  2813  // Close terminates the iteration process, releasing any pending underlying
  2814  // resources.
  2815  func (it *BSCValidatorSetBatchTransferFailedIterator) Close() error {
  2816  	it.sub.Unsubscribe()
  2817  	return nil
  2818  }
  2819  
  2820  // BSCValidatorSetBatchTransferFailed represents a BatchTransferFailed event raised by the BSCValidatorSet contract.
  2821  type BSCValidatorSetBatchTransferFailed struct {
  2822  	Amount *big.Int
  2823  	Reason string
  2824  	Raw    types.Log // Blockchain specific contextual infos
  2825  }
  2826  
  2827  // FilterBatchTransferFailed is a free log retrieval operation binding the contract event 0xa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280.
  2828  //
  2829  // Solidity: event batchTransferFailed(uint256 indexed amount, string reason)
  2830  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterBatchTransferFailed(opts *bind.FilterOpts, amount []*big.Int) (*BSCValidatorSetBatchTransferFailedIterator, error) {
  2831  
  2832  	var amountRule []interface{}
  2833  	for _, amountItem := range amount {
  2834  		amountRule = append(amountRule, amountItem)
  2835  	}
  2836  
  2837  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "batchTransferFailed", amountRule)
  2838  	if err != nil {
  2839  		return nil, err
  2840  	}
  2841  	return &BSCValidatorSetBatchTransferFailedIterator{contract: _BSCValidatorSet.contract, event: "batchTransferFailed", logs: logs, sub: sub}, nil
  2842  }
  2843  
  2844  // WatchBatchTransferFailed is a free log subscription operation binding the contract event 0xa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280.
  2845  //
  2846  // Solidity: event batchTransferFailed(uint256 indexed amount, string reason)
  2847  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchBatchTransferFailed(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetBatchTransferFailed, amount []*big.Int) (event.Subscription, error) {
  2848  
  2849  	var amountRule []interface{}
  2850  	for _, amountItem := range amount {
  2851  		amountRule = append(amountRule, amountItem)
  2852  	}
  2853  
  2854  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "batchTransferFailed", amountRule)
  2855  	if err != nil {
  2856  		return nil, err
  2857  	}
  2858  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2859  		defer sub.Unsubscribe()
  2860  		for {
  2861  			select {
  2862  			case log := <-logs:
  2863  				// New log arrived, parse the event and forward to the user
  2864  				event := new(BSCValidatorSetBatchTransferFailed)
  2865  				if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransferFailed", log); err != nil {
  2866  					return err
  2867  				}
  2868  				event.Raw = log
  2869  
  2870  				select {
  2871  				case sink <- event:
  2872  				case err := <-sub.Err():
  2873  					return err
  2874  				case <-quit:
  2875  					return nil
  2876  				}
  2877  			case err := <-sub.Err():
  2878  				return err
  2879  			case <-quit:
  2880  				return nil
  2881  			}
  2882  		}
  2883  	}), nil
  2884  }
  2885  
  2886  // ParseBatchTransferFailed is a log parse operation binding the contract event 0xa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280.
  2887  //
  2888  // Solidity: event batchTransferFailed(uint256 indexed amount, string reason)
  2889  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseBatchTransferFailed(log types.Log) (*BSCValidatorSetBatchTransferFailed, error) {
  2890  	event := new(BSCValidatorSetBatchTransferFailed)
  2891  	if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransferFailed", log); err != nil {
  2892  		return nil, err
  2893  	}
  2894  	event.Raw = log
  2895  	return event, nil
  2896  }
  2897  
  2898  // BSCValidatorSetBatchTransferLowerFailedIterator is returned from FilterBatchTransferLowerFailed and is used to iterate over the raw logs and unpacked data for BatchTransferLowerFailed events raised by the BSCValidatorSet contract.
  2899  type BSCValidatorSetBatchTransferLowerFailedIterator struct {
  2900  	Event *BSCValidatorSetBatchTransferLowerFailed // Event containing the contract specifics and raw log
  2901  
  2902  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2903  	event    string              // Event name to use for unpacking event data
  2904  
  2905  	logs chan types.Log        // Log channel receiving the found contract events
  2906  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2907  	done bool                  // Whether the subscription completed delivering logs
  2908  	fail error                 // Occurred error to stop iteration
  2909  }
  2910  
  2911  // Next advances the iterator to the subsequent event, returning whether there
  2912  // are any more events found. In case of a retrieval or parsing error, false is
  2913  // returned and Error() can be queried for the exact failure.
  2914  func (it *BSCValidatorSetBatchTransferLowerFailedIterator) Next() bool {
  2915  	// If the iterator failed, stop iterating
  2916  	if it.fail != nil {
  2917  		return false
  2918  	}
  2919  	// If the iterator completed, deliver directly whatever's available
  2920  	if it.done {
  2921  		select {
  2922  		case log := <-it.logs:
  2923  			it.Event = new(BSCValidatorSetBatchTransferLowerFailed)
  2924  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2925  				it.fail = err
  2926  				return false
  2927  			}
  2928  			it.Event.Raw = log
  2929  			return true
  2930  
  2931  		default:
  2932  			return false
  2933  		}
  2934  	}
  2935  	// Iterator still in progress, wait for either a data or an error event
  2936  	select {
  2937  	case log := <-it.logs:
  2938  		it.Event = new(BSCValidatorSetBatchTransferLowerFailed)
  2939  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2940  			it.fail = err
  2941  			return false
  2942  		}
  2943  		it.Event.Raw = log
  2944  		return true
  2945  
  2946  	case err := <-it.sub.Err():
  2947  		it.done = true
  2948  		it.fail = err
  2949  		return it.Next()
  2950  	}
  2951  }
  2952  
  2953  // Error returns any retrieval or parsing error occurred during filtering.
  2954  func (it *BSCValidatorSetBatchTransferLowerFailedIterator) Error() error {
  2955  	return it.fail
  2956  }
  2957  
  2958  // Close terminates the iteration process, releasing any pending underlying
  2959  // resources.
  2960  func (it *BSCValidatorSetBatchTransferLowerFailedIterator) Close() error {
  2961  	it.sub.Unsubscribe()
  2962  	return nil
  2963  }
  2964  
  2965  // BSCValidatorSetBatchTransferLowerFailed represents a BatchTransferLowerFailed event raised by the BSCValidatorSet contract.
  2966  type BSCValidatorSetBatchTransferLowerFailed struct {
  2967  	Amount *big.Int
  2968  	Reason []byte
  2969  	Raw    types.Log // Blockchain specific contextual infos
  2970  }
  2971  
  2972  // FilterBatchTransferLowerFailed is a free log retrieval operation binding the contract event 0xbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a45.
  2973  //
  2974  // Solidity: event batchTransferLowerFailed(uint256 indexed amount, bytes reason)
  2975  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterBatchTransferLowerFailed(opts *bind.FilterOpts, amount []*big.Int) (*BSCValidatorSetBatchTransferLowerFailedIterator, error) {
  2976  
  2977  	var amountRule []interface{}
  2978  	for _, amountItem := range amount {
  2979  		amountRule = append(amountRule, amountItem)
  2980  	}
  2981  
  2982  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "batchTransferLowerFailed", amountRule)
  2983  	if err != nil {
  2984  		return nil, err
  2985  	}
  2986  	return &BSCValidatorSetBatchTransferLowerFailedIterator{contract: _BSCValidatorSet.contract, event: "batchTransferLowerFailed", logs: logs, sub: sub}, nil
  2987  }
  2988  
  2989  // WatchBatchTransferLowerFailed is a free log subscription operation binding the contract event 0xbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a45.
  2990  //
  2991  // Solidity: event batchTransferLowerFailed(uint256 indexed amount, bytes reason)
  2992  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchBatchTransferLowerFailed(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetBatchTransferLowerFailed, amount []*big.Int) (event.Subscription, error) {
  2993  
  2994  	var amountRule []interface{}
  2995  	for _, amountItem := range amount {
  2996  		amountRule = append(amountRule, amountItem)
  2997  	}
  2998  
  2999  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "batchTransferLowerFailed", amountRule)
  3000  	if err != nil {
  3001  		return nil, err
  3002  	}
  3003  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3004  		defer sub.Unsubscribe()
  3005  		for {
  3006  			select {
  3007  			case log := <-logs:
  3008  				// New log arrived, parse the event and forward to the user
  3009  				event := new(BSCValidatorSetBatchTransferLowerFailed)
  3010  				if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransferLowerFailed", log); err != nil {
  3011  					return err
  3012  				}
  3013  				event.Raw = log
  3014  
  3015  				select {
  3016  				case sink <- event:
  3017  				case err := <-sub.Err():
  3018  					return err
  3019  				case <-quit:
  3020  					return nil
  3021  				}
  3022  			case err := <-sub.Err():
  3023  				return err
  3024  			case <-quit:
  3025  				return nil
  3026  			}
  3027  		}
  3028  	}), nil
  3029  }
  3030  
  3031  // ParseBatchTransferLowerFailed is a log parse operation binding the contract event 0xbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a45.
  3032  //
  3033  // Solidity: event batchTransferLowerFailed(uint256 indexed amount, bytes reason)
  3034  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseBatchTransferLowerFailed(log types.Log) (*BSCValidatorSetBatchTransferLowerFailed, error) {
  3035  	event := new(BSCValidatorSetBatchTransferLowerFailed)
  3036  	if err := _BSCValidatorSet.contract.UnpackLog(event, "batchTransferLowerFailed", log); err != nil {
  3037  		return nil, err
  3038  	}
  3039  	event.Raw = log
  3040  	return event, nil
  3041  }
  3042  
  3043  // BSCValidatorSetDeprecatedDepositIterator is returned from FilterDeprecatedDeposit and is used to iterate over the raw logs and unpacked data for DeprecatedDeposit events raised by the BSCValidatorSet contract.
  3044  type BSCValidatorSetDeprecatedDepositIterator struct {
  3045  	Event *BSCValidatorSetDeprecatedDeposit // Event containing the contract specifics and raw log
  3046  
  3047  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3048  	event    string              // Event name to use for unpacking event data
  3049  
  3050  	logs chan types.Log        // Log channel receiving the found contract events
  3051  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3052  	done bool                  // Whether the subscription completed delivering logs
  3053  	fail error                 // Occurred error to stop iteration
  3054  }
  3055  
  3056  // Next advances the iterator to the subsequent event, returning whether there
  3057  // are any more events found. In case of a retrieval or parsing error, false is
  3058  // returned and Error() can be queried for the exact failure.
  3059  func (it *BSCValidatorSetDeprecatedDepositIterator) Next() bool {
  3060  	// If the iterator failed, stop iterating
  3061  	if it.fail != nil {
  3062  		return false
  3063  	}
  3064  	// If the iterator completed, deliver directly whatever's available
  3065  	if it.done {
  3066  		select {
  3067  		case log := <-it.logs:
  3068  			it.Event = new(BSCValidatorSetDeprecatedDeposit)
  3069  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3070  				it.fail = err
  3071  				return false
  3072  			}
  3073  			it.Event.Raw = log
  3074  			return true
  3075  
  3076  		default:
  3077  			return false
  3078  		}
  3079  	}
  3080  	// Iterator still in progress, wait for either a data or an error event
  3081  	select {
  3082  	case log := <-it.logs:
  3083  		it.Event = new(BSCValidatorSetDeprecatedDeposit)
  3084  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3085  			it.fail = err
  3086  			return false
  3087  		}
  3088  		it.Event.Raw = log
  3089  		return true
  3090  
  3091  	case err := <-it.sub.Err():
  3092  		it.done = true
  3093  		it.fail = err
  3094  		return it.Next()
  3095  	}
  3096  }
  3097  
  3098  // Error returns any retrieval or parsing error occurred during filtering.
  3099  func (it *BSCValidatorSetDeprecatedDepositIterator) Error() error {
  3100  	return it.fail
  3101  }
  3102  
  3103  // Close terminates the iteration process, releasing any pending underlying
  3104  // resources.
  3105  func (it *BSCValidatorSetDeprecatedDepositIterator) Close() error {
  3106  	it.sub.Unsubscribe()
  3107  	return nil
  3108  }
  3109  
  3110  // BSCValidatorSetDeprecatedDeposit represents a DeprecatedDeposit event raised by the BSCValidatorSet contract.
  3111  type BSCValidatorSetDeprecatedDeposit struct {
  3112  	Validator common.Address
  3113  	Amount    *big.Int
  3114  	Raw       types.Log // Blockchain specific contextual infos
  3115  }
  3116  
  3117  // FilterDeprecatedDeposit is a free log retrieval operation binding the contract event 0xf177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4.
  3118  //
  3119  // Solidity: event deprecatedDeposit(address indexed validator, uint256 amount)
  3120  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterDeprecatedDeposit(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetDeprecatedDepositIterator, error) {
  3121  
  3122  	var validatorRule []interface{}
  3123  	for _, validatorItem := range validator {
  3124  		validatorRule = append(validatorRule, validatorItem)
  3125  	}
  3126  
  3127  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "deprecatedDeposit", validatorRule)
  3128  	if err != nil {
  3129  		return nil, err
  3130  	}
  3131  	return &BSCValidatorSetDeprecatedDepositIterator{contract: _BSCValidatorSet.contract, event: "deprecatedDeposit", logs: logs, sub: sub}, nil
  3132  }
  3133  
  3134  // WatchDeprecatedDeposit is a free log subscription operation binding the contract event 0xf177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4.
  3135  //
  3136  // Solidity: event deprecatedDeposit(address indexed validator, uint256 amount)
  3137  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchDeprecatedDeposit(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetDeprecatedDeposit, validator []common.Address) (event.Subscription, error) {
  3138  
  3139  	var validatorRule []interface{}
  3140  	for _, validatorItem := range validator {
  3141  		validatorRule = append(validatorRule, validatorItem)
  3142  	}
  3143  
  3144  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "deprecatedDeposit", validatorRule)
  3145  	if err != nil {
  3146  		return nil, err
  3147  	}
  3148  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3149  		defer sub.Unsubscribe()
  3150  		for {
  3151  			select {
  3152  			case log := <-logs:
  3153  				// New log arrived, parse the event and forward to the user
  3154  				event := new(BSCValidatorSetDeprecatedDeposit)
  3155  				if err := _BSCValidatorSet.contract.UnpackLog(event, "deprecatedDeposit", log); err != nil {
  3156  					return err
  3157  				}
  3158  				event.Raw = log
  3159  
  3160  				select {
  3161  				case sink <- event:
  3162  				case err := <-sub.Err():
  3163  					return err
  3164  				case <-quit:
  3165  					return nil
  3166  				}
  3167  			case err := <-sub.Err():
  3168  				return err
  3169  			case <-quit:
  3170  				return nil
  3171  			}
  3172  		}
  3173  	}), nil
  3174  }
  3175  
  3176  // ParseDeprecatedDeposit is a log parse operation binding the contract event 0xf177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4.
  3177  //
  3178  // Solidity: event deprecatedDeposit(address indexed validator, uint256 amount)
  3179  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseDeprecatedDeposit(log types.Log) (*BSCValidatorSetDeprecatedDeposit, error) {
  3180  	event := new(BSCValidatorSetDeprecatedDeposit)
  3181  	if err := _BSCValidatorSet.contract.UnpackLog(event, "deprecatedDeposit", log); err != nil {
  3182  		return nil, err
  3183  	}
  3184  	event.Raw = log
  3185  	return event, nil
  3186  }
  3187  
  3188  // BSCValidatorSetDirectTransferIterator is returned from FilterDirectTransfer and is used to iterate over the raw logs and unpacked data for DirectTransfer events raised by the BSCValidatorSet contract.
  3189  type BSCValidatorSetDirectTransferIterator struct {
  3190  	Event *BSCValidatorSetDirectTransfer // Event containing the contract specifics and raw log
  3191  
  3192  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3193  	event    string              // Event name to use for unpacking event data
  3194  
  3195  	logs chan types.Log        // Log channel receiving the found contract events
  3196  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3197  	done bool                  // Whether the subscription completed delivering logs
  3198  	fail error                 // Occurred error to stop iteration
  3199  }
  3200  
  3201  // Next advances the iterator to the subsequent event, returning whether there
  3202  // are any more events found. In case of a retrieval or parsing error, false is
  3203  // returned and Error() can be queried for the exact failure.
  3204  func (it *BSCValidatorSetDirectTransferIterator) Next() bool {
  3205  	// If the iterator failed, stop iterating
  3206  	if it.fail != nil {
  3207  		return false
  3208  	}
  3209  	// If the iterator completed, deliver directly whatever's available
  3210  	if it.done {
  3211  		select {
  3212  		case log := <-it.logs:
  3213  			it.Event = new(BSCValidatorSetDirectTransfer)
  3214  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3215  				it.fail = err
  3216  				return false
  3217  			}
  3218  			it.Event.Raw = log
  3219  			return true
  3220  
  3221  		default:
  3222  			return false
  3223  		}
  3224  	}
  3225  	// Iterator still in progress, wait for either a data or an error event
  3226  	select {
  3227  	case log := <-it.logs:
  3228  		it.Event = new(BSCValidatorSetDirectTransfer)
  3229  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3230  			it.fail = err
  3231  			return false
  3232  		}
  3233  		it.Event.Raw = log
  3234  		return true
  3235  
  3236  	case err := <-it.sub.Err():
  3237  		it.done = true
  3238  		it.fail = err
  3239  		return it.Next()
  3240  	}
  3241  }
  3242  
  3243  // Error returns any retrieval or parsing error occurred during filtering.
  3244  func (it *BSCValidatorSetDirectTransferIterator) Error() error {
  3245  	return it.fail
  3246  }
  3247  
  3248  // Close terminates the iteration process, releasing any pending underlying
  3249  // resources.
  3250  func (it *BSCValidatorSetDirectTransferIterator) Close() error {
  3251  	it.sub.Unsubscribe()
  3252  	return nil
  3253  }
  3254  
  3255  // BSCValidatorSetDirectTransfer represents a DirectTransfer event raised by the BSCValidatorSet contract.
  3256  type BSCValidatorSetDirectTransfer struct {
  3257  	Validator common.Address
  3258  	Amount    *big.Int
  3259  	Raw       types.Log // Blockchain specific contextual infos
  3260  }
  3261  
  3262  // FilterDirectTransfer is a free log retrieval operation binding the contract event 0x6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d.
  3263  //
  3264  // Solidity: event directTransfer(address indexed validator, uint256 amount)
  3265  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterDirectTransfer(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetDirectTransferIterator, error) {
  3266  
  3267  	var validatorRule []interface{}
  3268  	for _, validatorItem := range validator {
  3269  		validatorRule = append(validatorRule, validatorItem)
  3270  	}
  3271  
  3272  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "directTransfer", validatorRule)
  3273  	if err != nil {
  3274  		return nil, err
  3275  	}
  3276  	return &BSCValidatorSetDirectTransferIterator{contract: _BSCValidatorSet.contract, event: "directTransfer", logs: logs, sub: sub}, nil
  3277  }
  3278  
  3279  // WatchDirectTransfer is a free log subscription operation binding the contract event 0x6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d.
  3280  //
  3281  // Solidity: event directTransfer(address indexed validator, uint256 amount)
  3282  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchDirectTransfer(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetDirectTransfer, validator []common.Address) (event.Subscription, error) {
  3283  
  3284  	var validatorRule []interface{}
  3285  	for _, validatorItem := range validator {
  3286  		validatorRule = append(validatorRule, validatorItem)
  3287  	}
  3288  
  3289  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "directTransfer", validatorRule)
  3290  	if err != nil {
  3291  		return nil, err
  3292  	}
  3293  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3294  		defer sub.Unsubscribe()
  3295  		for {
  3296  			select {
  3297  			case log := <-logs:
  3298  				// New log arrived, parse the event and forward to the user
  3299  				event := new(BSCValidatorSetDirectTransfer)
  3300  				if err := _BSCValidatorSet.contract.UnpackLog(event, "directTransfer", log); err != nil {
  3301  					return err
  3302  				}
  3303  				event.Raw = log
  3304  
  3305  				select {
  3306  				case sink <- event:
  3307  				case err := <-sub.Err():
  3308  					return err
  3309  				case <-quit:
  3310  					return nil
  3311  				}
  3312  			case err := <-sub.Err():
  3313  				return err
  3314  			case <-quit:
  3315  				return nil
  3316  			}
  3317  		}
  3318  	}), nil
  3319  }
  3320  
  3321  // ParseDirectTransfer is a log parse operation binding the contract event 0x6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d.
  3322  //
  3323  // Solidity: event directTransfer(address indexed validator, uint256 amount)
  3324  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseDirectTransfer(log types.Log) (*BSCValidatorSetDirectTransfer, error) {
  3325  	event := new(BSCValidatorSetDirectTransfer)
  3326  	if err := _BSCValidatorSet.contract.UnpackLog(event, "directTransfer", log); err != nil {
  3327  		return nil, err
  3328  	}
  3329  	event.Raw = log
  3330  	return event, nil
  3331  }
  3332  
  3333  // BSCValidatorSetDirectTransferFailIterator is returned from FilterDirectTransferFail and is used to iterate over the raw logs and unpacked data for DirectTransferFail events raised by the BSCValidatorSet contract.
  3334  type BSCValidatorSetDirectTransferFailIterator struct {
  3335  	Event *BSCValidatorSetDirectTransferFail // Event containing the contract specifics and raw log
  3336  
  3337  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3338  	event    string              // Event name to use for unpacking event data
  3339  
  3340  	logs chan types.Log        // Log channel receiving the found contract events
  3341  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3342  	done bool                  // Whether the subscription completed delivering logs
  3343  	fail error                 // Occurred error to stop iteration
  3344  }
  3345  
  3346  // Next advances the iterator to the subsequent event, returning whether there
  3347  // are any more events found. In case of a retrieval or parsing error, false is
  3348  // returned and Error() can be queried for the exact failure.
  3349  func (it *BSCValidatorSetDirectTransferFailIterator) Next() bool {
  3350  	// If the iterator failed, stop iterating
  3351  	if it.fail != nil {
  3352  		return false
  3353  	}
  3354  	// If the iterator completed, deliver directly whatever's available
  3355  	if it.done {
  3356  		select {
  3357  		case log := <-it.logs:
  3358  			it.Event = new(BSCValidatorSetDirectTransferFail)
  3359  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3360  				it.fail = err
  3361  				return false
  3362  			}
  3363  			it.Event.Raw = log
  3364  			return true
  3365  
  3366  		default:
  3367  			return false
  3368  		}
  3369  	}
  3370  	// Iterator still in progress, wait for either a data or an error event
  3371  	select {
  3372  	case log := <-it.logs:
  3373  		it.Event = new(BSCValidatorSetDirectTransferFail)
  3374  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3375  			it.fail = err
  3376  			return false
  3377  		}
  3378  		it.Event.Raw = log
  3379  		return true
  3380  
  3381  	case err := <-it.sub.Err():
  3382  		it.done = true
  3383  		it.fail = err
  3384  		return it.Next()
  3385  	}
  3386  }
  3387  
  3388  // Error returns any retrieval or parsing error occurred during filtering.
  3389  func (it *BSCValidatorSetDirectTransferFailIterator) Error() error {
  3390  	return it.fail
  3391  }
  3392  
  3393  // Close terminates the iteration process, releasing any pending underlying
  3394  // resources.
  3395  func (it *BSCValidatorSetDirectTransferFailIterator) Close() error {
  3396  	it.sub.Unsubscribe()
  3397  	return nil
  3398  }
  3399  
  3400  // BSCValidatorSetDirectTransferFail represents a DirectTransferFail event raised by the BSCValidatorSet contract.
  3401  type BSCValidatorSetDirectTransferFail struct {
  3402  	Validator common.Address
  3403  	Amount    *big.Int
  3404  	Raw       types.Log // Blockchain specific contextual infos
  3405  }
  3406  
  3407  // FilterDirectTransferFail is a free log retrieval operation binding the contract event 0x25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d.
  3408  //
  3409  // Solidity: event directTransferFail(address indexed validator, uint256 amount)
  3410  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterDirectTransferFail(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetDirectTransferFailIterator, error) {
  3411  
  3412  	var validatorRule []interface{}
  3413  	for _, validatorItem := range validator {
  3414  		validatorRule = append(validatorRule, validatorItem)
  3415  	}
  3416  
  3417  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "directTransferFail", validatorRule)
  3418  	if err != nil {
  3419  		return nil, err
  3420  	}
  3421  	return &BSCValidatorSetDirectTransferFailIterator{contract: _BSCValidatorSet.contract, event: "directTransferFail", logs: logs, sub: sub}, nil
  3422  }
  3423  
  3424  // WatchDirectTransferFail is a free log subscription operation binding the contract event 0x25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d.
  3425  //
  3426  // Solidity: event directTransferFail(address indexed validator, uint256 amount)
  3427  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchDirectTransferFail(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetDirectTransferFail, validator []common.Address) (event.Subscription, error) {
  3428  
  3429  	var validatorRule []interface{}
  3430  	for _, validatorItem := range validator {
  3431  		validatorRule = append(validatorRule, validatorItem)
  3432  	}
  3433  
  3434  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "directTransferFail", validatorRule)
  3435  	if err != nil {
  3436  		return nil, err
  3437  	}
  3438  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3439  		defer sub.Unsubscribe()
  3440  		for {
  3441  			select {
  3442  			case log := <-logs:
  3443  				// New log arrived, parse the event and forward to the user
  3444  				event := new(BSCValidatorSetDirectTransferFail)
  3445  				if err := _BSCValidatorSet.contract.UnpackLog(event, "directTransferFail", log); err != nil {
  3446  					return err
  3447  				}
  3448  				event.Raw = log
  3449  
  3450  				select {
  3451  				case sink <- event:
  3452  				case err := <-sub.Err():
  3453  					return err
  3454  				case <-quit:
  3455  					return nil
  3456  				}
  3457  			case err := <-sub.Err():
  3458  				return err
  3459  			case <-quit:
  3460  				return nil
  3461  			}
  3462  		}
  3463  	}), nil
  3464  }
  3465  
  3466  // ParseDirectTransferFail is a log parse operation binding the contract event 0x25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d.
  3467  //
  3468  // Solidity: event directTransferFail(address indexed validator, uint256 amount)
  3469  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseDirectTransferFail(log types.Log) (*BSCValidatorSetDirectTransferFail, error) {
  3470  	event := new(BSCValidatorSetDirectTransferFail)
  3471  	if err := _BSCValidatorSet.contract.UnpackLog(event, "directTransferFail", log); err != nil {
  3472  		return nil, err
  3473  	}
  3474  	event.Raw = log
  3475  	return event, nil
  3476  }
  3477  
  3478  // BSCValidatorSetFailReasonWithStrIterator is returned from FilterFailReasonWithStr and is used to iterate over the raw logs and unpacked data for FailReasonWithStr events raised by the BSCValidatorSet contract.
  3479  type BSCValidatorSetFailReasonWithStrIterator struct {
  3480  	Event *BSCValidatorSetFailReasonWithStr // Event containing the contract specifics and raw log
  3481  
  3482  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3483  	event    string              // Event name to use for unpacking event data
  3484  
  3485  	logs chan types.Log        // Log channel receiving the found contract events
  3486  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3487  	done bool                  // Whether the subscription completed delivering logs
  3488  	fail error                 // Occurred error to stop iteration
  3489  }
  3490  
  3491  // Next advances the iterator to the subsequent event, returning whether there
  3492  // are any more events found. In case of a retrieval or parsing error, false is
  3493  // returned and Error() can be queried for the exact failure.
  3494  func (it *BSCValidatorSetFailReasonWithStrIterator) Next() bool {
  3495  	// If the iterator failed, stop iterating
  3496  	if it.fail != nil {
  3497  		return false
  3498  	}
  3499  	// If the iterator completed, deliver directly whatever's available
  3500  	if it.done {
  3501  		select {
  3502  		case log := <-it.logs:
  3503  			it.Event = new(BSCValidatorSetFailReasonWithStr)
  3504  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3505  				it.fail = err
  3506  				return false
  3507  			}
  3508  			it.Event.Raw = log
  3509  			return true
  3510  
  3511  		default:
  3512  			return false
  3513  		}
  3514  	}
  3515  	// Iterator still in progress, wait for either a data or an error event
  3516  	select {
  3517  	case log := <-it.logs:
  3518  		it.Event = new(BSCValidatorSetFailReasonWithStr)
  3519  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3520  			it.fail = err
  3521  			return false
  3522  		}
  3523  		it.Event.Raw = log
  3524  		return true
  3525  
  3526  	case err := <-it.sub.Err():
  3527  		it.done = true
  3528  		it.fail = err
  3529  		return it.Next()
  3530  	}
  3531  }
  3532  
  3533  // Error returns any retrieval or parsing error occurred during filtering.
  3534  func (it *BSCValidatorSetFailReasonWithStrIterator) Error() error {
  3535  	return it.fail
  3536  }
  3537  
  3538  // Close terminates the iteration process, releasing any pending underlying
  3539  // resources.
  3540  func (it *BSCValidatorSetFailReasonWithStrIterator) Close() error {
  3541  	it.sub.Unsubscribe()
  3542  	return nil
  3543  }
  3544  
  3545  // BSCValidatorSetFailReasonWithStr represents a FailReasonWithStr event raised by the BSCValidatorSet contract.
  3546  type BSCValidatorSetFailReasonWithStr struct {
  3547  	Message string
  3548  	Raw     types.Log // Blockchain specific contextual infos
  3549  }
  3550  
  3551  // FilterFailReasonWithStr is a free log retrieval operation binding the contract event 0x70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2.
  3552  //
  3553  // Solidity: event failReasonWithStr(string message)
  3554  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterFailReasonWithStr(opts *bind.FilterOpts) (*BSCValidatorSetFailReasonWithStrIterator, error) {
  3555  
  3556  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "failReasonWithStr")
  3557  	if err != nil {
  3558  		return nil, err
  3559  	}
  3560  	return &BSCValidatorSetFailReasonWithStrIterator{contract: _BSCValidatorSet.contract, event: "failReasonWithStr", logs: logs, sub: sub}, nil
  3561  }
  3562  
  3563  // WatchFailReasonWithStr is a free log subscription operation binding the contract event 0x70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2.
  3564  //
  3565  // Solidity: event failReasonWithStr(string message)
  3566  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchFailReasonWithStr(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetFailReasonWithStr) (event.Subscription, error) {
  3567  
  3568  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "failReasonWithStr")
  3569  	if err != nil {
  3570  		return nil, err
  3571  	}
  3572  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3573  		defer sub.Unsubscribe()
  3574  		for {
  3575  			select {
  3576  			case log := <-logs:
  3577  				// New log arrived, parse the event and forward to the user
  3578  				event := new(BSCValidatorSetFailReasonWithStr)
  3579  				if err := _BSCValidatorSet.contract.UnpackLog(event, "failReasonWithStr", log); err != nil {
  3580  					return err
  3581  				}
  3582  				event.Raw = log
  3583  
  3584  				select {
  3585  				case sink <- event:
  3586  				case err := <-sub.Err():
  3587  					return err
  3588  				case <-quit:
  3589  					return nil
  3590  				}
  3591  			case err := <-sub.Err():
  3592  				return err
  3593  			case <-quit:
  3594  				return nil
  3595  			}
  3596  		}
  3597  	}), nil
  3598  }
  3599  
  3600  // ParseFailReasonWithStr is a log parse operation binding the contract event 0x70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2.
  3601  //
  3602  // Solidity: event failReasonWithStr(string message)
  3603  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseFailReasonWithStr(log types.Log) (*BSCValidatorSetFailReasonWithStr, error) {
  3604  	event := new(BSCValidatorSetFailReasonWithStr)
  3605  	if err := _BSCValidatorSet.contract.UnpackLog(event, "failReasonWithStr", log); err != nil {
  3606  		return nil, err
  3607  	}
  3608  	event.Raw = log
  3609  	return event, nil
  3610  }
  3611  
  3612  // BSCValidatorSetFeeBurnedIterator is returned from FilterFeeBurned and is used to iterate over the raw logs and unpacked data for FeeBurned events raised by the BSCValidatorSet contract.
  3613  type BSCValidatorSetFeeBurnedIterator struct {
  3614  	Event *BSCValidatorSetFeeBurned // Event containing the contract specifics and raw log
  3615  
  3616  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3617  	event    string              // Event name to use for unpacking event data
  3618  
  3619  	logs chan types.Log        // Log channel receiving the found contract events
  3620  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3621  	done bool                  // Whether the subscription completed delivering logs
  3622  	fail error                 // Occurred error to stop iteration
  3623  }
  3624  
  3625  // Next advances the iterator to the subsequent event, returning whether there
  3626  // are any more events found. In case of a retrieval or parsing error, false is
  3627  // returned and Error() can be queried for the exact failure.
  3628  func (it *BSCValidatorSetFeeBurnedIterator) Next() bool {
  3629  	// If the iterator failed, stop iterating
  3630  	if it.fail != nil {
  3631  		return false
  3632  	}
  3633  	// If the iterator completed, deliver directly whatever's available
  3634  	if it.done {
  3635  		select {
  3636  		case log := <-it.logs:
  3637  			it.Event = new(BSCValidatorSetFeeBurned)
  3638  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3639  				it.fail = err
  3640  				return false
  3641  			}
  3642  			it.Event.Raw = log
  3643  			return true
  3644  
  3645  		default:
  3646  			return false
  3647  		}
  3648  	}
  3649  	// Iterator still in progress, wait for either a data or an error event
  3650  	select {
  3651  	case log := <-it.logs:
  3652  		it.Event = new(BSCValidatorSetFeeBurned)
  3653  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3654  			it.fail = err
  3655  			return false
  3656  		}
  3657  		it.Event.Raw = log
  3658  		return true
  3659  
  3660  	case err := <-it.sub.Err():
  3661  		it.done = true
  3662  		it.fail = err
  3663  		return it.Next()
  3664  	}
  3665  }
  3666  
  3667  // Error returns any retrieval or parsing error occurred during filtering.
  3668  func (it *BSCValidatorSetFeeBurnedIterator) Error() error {
  3669  	return it.fail
  3670  }
  3671  
  3672  // Close terminates the iteration process, releasing any pending underlying
  3673  // resources.
  3674  func (it *BSCValidatorSetFeeBurnedIterator) Close() error {
  3675  	it.sub.Unsubscribe()
  3676  	return nil
  3677  }
  3678  
  3679  // BSCValidatorSetFeeBurned represents a FeeBurned event raised by the BSCValidatorSet contract.
  3680  type BSCValidatorSetFeeBurned struct {
  3681  	Amount *big.Int
  3682  	Raw    types.Log // Blockchain specific contextual infos
  3683  }
  3684  
  3685  // FilterFeeBurned is a free log retrieval operation binding the contract event 0x627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5.
  3686  //
  3687  // Solidity: event feeBurned(uint256 amount)
  3688  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterFeeBurned(opts *bind.FilterOpts) (*BSCValidatorSetFeeBurnedIterator, error) {
  3689  
  3690  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "feeBurned")
  3691  	if err != nil {
  3692  		return nil, err
  3693  	}
  3694  	return &BSCValidatorSetFeeBurnedIterator{contract: _BSCValidatorSet.contract, event: "feeBurned", logs: logs, sub: sub}, nil
  3695  }
  3696  
  3697  // WatchFeeBurned is a free log subscription operation binding the contract event 0x627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5.
  3698  //
  3699  // Solidity: event feeBurned(uint256 amount)
  3700  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchFeeBurned(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetFeeBurned) (event.Subscription, error) {
  3701  
  3702  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "feeBurned")
  3703  	if err != nil {
  3704  		return nil, err
  3705  	}
  3706  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3707  		defer sub.Unsubscribe()
  3708  		for {
  3709  			select {
  3710  			case log := <-logs:
  3711  				// New log arrived, parse the event and forward to the user
  3712  				event := new(BSCValidatorSetFeeBurned)
  3713  				if err := _BSCValidatorSet.contract.UnpackLog(event, "feeBurned", log); err != nil {
  3714  					return err
  3715  				}
  3716  				event.Raw = log
  3717  
  3718  				select {
  3719  				case sink <- event:
  3720  				case err := <-sub.Err():
  3721  					return err
  3722  				case <-quit:
  3723  					return nil
  3724  				}
  3725  			case err := <-sub.Err():
  3726  				return err
  3727  			case <-quit:
  3728  				return nil
  3729  			}
  3730  		}
  3731  	}), nil
  3732  }
  3733  
  3734  // ParseFeeBurned is a log parse operation binding the contract event 0x627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5.
  3735  //
  3736  // Solidity: event feeBurned(uint256 amount)
  3737  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseFeeBurned(log types.Log) (*BSCValidatorSetFeeBurned, error) {
  3738  	event := new(BSCValidatorSetFeeBurned)
  3739  	if err := _BSCValidatorSet.contract.UnpackLog(event, "feeBurned", log); err != nil {
  3740  		return nil, err
  3741  	}
  3742  	event.Raw = log
  3743  	return event, nil
  3744  }
  3745  
  3746  // BSCValidatorSetParamChangeIterator is returned from FilterParamChange and is used to iterate over the raw logs and unpacked data for ParamChange events raised by the BSCValidatorSet contract.
  3747  type BSCValidatorSetParamChangeIterator struct {
  3748  	Event *BSCValidatorSetParamChange // Event containing the contract specifics and raw log
  3749  
  3750  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3751  	event    string              // Event name to use for unpacking event data
  3752  
  3753  	logs chan types.Log        // Log channel receiving the found contract events
  3754  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3755  	done bool                  // Whether the subscription completed delivering logs
  3756  	fail error                 // Occurred error to stop iteration
  3757  }
  3758  
  3759  // Next advances the iterator to the subsequent event, returning whether there
  3760  // are any more events found. In case of a retrieval or parsing error, false is
  3761  // returned and Error() can be queried for the exact failure.
  3762  func (it *BSCValidatorSetParamChangeIterator) Next() bool {
  3763  	// If the iterator failed, stop iterating
  3764  	if it.fail != nil {
  3765  		return false
  3766  	}
  3767  	// If the iterator completed, deliver directly whatever's available
  3768  	if it.done {
  3769  		select {
  3770  		case log := <-it.logs:
  3771  			it.Event = new(BSCValidatorSetParamChange)
  3772  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3773  				it.fail = err
  3774  				return false
  3775  			}
  3776  			it.Event.Raw = log
  3777  			return true
  3778  
  3779  		default:
  3780  			return false
  3781  		}
  3782  	}
  3783  	// Iterator still in progress, wait for either a data or an error event
  3784  	select {
  3785  	case log := <-it.logs:
  3786  		it.Event = new(BSCValidatorSetParamChange)
  3787  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3788  			it.fail = err
  3789  			return false
  3790  		}
  3791  		it.Event.Raw = log
  3792  		return true
  3793  
  3794  	case err := <-it.sub.Err():
  3795  		it.done = true
  3796  		it.fail = err
  3797  		return it.Next()
  3798  	}
  3799  }
  3800  
  3801  // Error returns any retrieval or parsing error occurred during filtering.
  3802  func (it *BSCValidatorSetParamChangeIterator) Error() error {
  3803  	return it.fail
  3804  }
  3805  
  3806  // Close terminates the iteration process, releasing any pending underlying
  3807  // resources.
  3808  func (it *BSCValidatorSetParamChangeIterator) Close() error {
  3809  	it.sub.Unsubscribe()
  3810  	return nil
  3811  }
  3812  
  3813  // BSCValidatorSetParamChange represents a ParamChange event raised by the BSCValidatorSet contract.
  3814  type BSCValidatorSetParamChange struct {
  3815  	Key   string
  3816  	Value []byte
  3817  	Raw   types.Log // Blockchain specific contextual infos
  3818  }
  3819  
  3820  // FilterParamChange is a free log retrieval operation binding the contract event 0x6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a.
  3821  //
  3822  // Solidity: event paramChange(string key, bytes value)
  3823  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterParamChange(opts *bind.FilterOpts) (*BSCValidatorSetParamChangeIterator, error) {
  3824  
  3825  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "paramChange")
  3826  	if err != nil {
  3827  		return nil, err
  3828  	}
  3829  	return &BSCValidatorSetParamChangeIterator{contract: _BSCValidatorSet.contract, event: "paramChange", logs: logs, sub: sub}, nil
  3830  }
  3831  
  3832  // WatchParamChange is a free log subscription operation binding the contract event 0x6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a.
  3833  //
  3834  // Solidity: event paramChange(string key, bytes value)
  3835  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchParamChange(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetParamChange) (event.Subscription, error) {
  3836  
  3837  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "paramChange")
  3838  	if err != nil {
  3839  		return nil, err
  3840  	}
  3841  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3842  		defer sub.Unsubscribe()
  3843  		for {
  3844  			select {
  3845  			case log := <-logs:
  3846  				// New log arrived, parse the event and forward to the user
  3847  				event := new(BSCValidatorSetParamChange)
  3848  				if err := _BSCValidatorSet.contract.UnpackLog(event, "paramChange", log); err != nil {
  3849  					return err
  3850  				}
  3851  				event.Raw = log
  3852  
  3853  				select {
  3854  				case sink <- event:
  3855  				case err := <-sub.Err():
  3856  					return err
  3857  				case <-quit:
  3858  					return nil
  3859  				}
  3860  			case err := <-sub.Err():
  3861  				return err
  3862  			case <-quit:
  3863  				return nil
  3864  			}
  3865  		}
  3866  	}), nil
  3867  }
  3868  
  3869  // ParseParamChange is a log parse operation binding the contract event 0x6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a.
  3870  //
  3871  // Solidity: event paramChange(string key, bytes value)
  3872  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseParamChange(log types.Log) (*BSCValidatorSetParamChange, error) {
  3873  	event := new(BSCValidatorSetParamChange)
  3874  	if err := _BSCValidatorSet.contract.UnpackLog(event, "paramChange", log); err != nil {
  3875  		return nil, err
  3876  	}
  3877  	event.Raw = log
  3878  	return event, nil
  3879  }
  3880  
  3881  // BSCValidatorSetSystemTransferIterator is returned from FilterSystemTransfer and is used to iterate over the raw logs and unpacked data for SystemTransfer events raised by the BSCValidatorSet contract.
  3882  type BSCValidatorSetSystemTransferIterator struct {
  3883  	Event *BSCValidatorSetSystemTransfer // Event containing the contract specifics and raw log
  3884  
  3885  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3886  	event    string              // Event name to use for unpacking event data
  3887  
  3888  	logs chan types.Log        // Log channel receiving the found contract events
  3889  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3890  	done bool                  // Whether the subscription completed delivering logs
  3891  	fail error                 // Occurred error to stop iteration
  3892  }
  3893  
  3894  // Next advances the iterator to the subsequent event, returning whether there
  3895  // are any more events found. In case of a retrieval or parsing error, false is
  3896  // returned and Error() can be queried for the exact failure.
  3897  func (it *BSCValidatorSetSystemTransferIterator) Next() bool {
  3898  	// If the iterator failed, stop iterating
  3899  	if it.fail != nil {
  3900  		return false
  3901  	}
  3902  	// If the iterator completed, deliver directly whatever's available
  3903  	if it.done {
  3904  		select {
  3905  		case log := <-it.logs:
  3906  			it.Event = new(BSCValidatorSetSystemTransfer)
  3907  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3908  				it.fail = err
  3909  				return false
  3910  			}
  3911  			it.Event.Raw = log
  3912  			return true
  3913  
  3914  		default:
  3915  			return false
  3916  		}
  3917  	}
  3918  	// Iterator still in progress, wait for either a data or an error event
  3919  	select {
  3920  	case log := <-it.logs:
  3921  		it.Event = new(BSCValidatorSetSystemTransfer)
  3922  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3923  			it.fail = err
  3924  			return false
  3925  		}
  3926  		it.Event.Raw = log
  3927  		return true
  3928  
  3929  	case err := <-it.sub.Err():
  3930  		it.done = true
  3931  		it.fail = err
  3932  		return it.Next()
  3933  	}
  3934  }
  3935  
  3936  // Error returns any retrieval or parsing error occurred during filtering.
  3937  func (it *BSCValidatorSetSystemTransferIterator) Error() error {
  3938  	return it.fail
  3939  }
  3940  
  3941  // Close terminates the iteration process, releasing any pending underlying
  3942  // resources.
  3943  func (it *BSCValidatorSetSystemTransferIterator) Close() error {
  3944  	it.sub.Unsubscribe()
  3945  	return nil
  3946  }
  3947  
  3948  // BSCValidatorSetSystemTransfer represents a SystemTransfer event raised by the BSCValidatorSet contract.
  3949  type BSCValidatorSetSystemTransfer struct {
  3950  	Amount *big.Int
  3951  	Raw    types.Log // Blockchain specific contextual infos
  3952  }
  3953  
  3954  // FilterSystemTransfer is a free log retrieval operation binding the contract event 0x6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d.
  3955  //
  3956  // Solidity: event systemTransfer(uint256 amount)
  3957  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterSystemTransfer(opts *bind.FilterOpts) (*BSCValidatorSetSystemTransferIterator, error) {
  3958  
  3959  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "systemTransfer")
  3960  	if err != nil {
  3961  		return nil, err
  3962  	}
  3963  	return &BSCValidatorSetSystemTransferIterator{contract: _BSCValidatorSet.contract, event: "systemTransfer", logs: logs, sub: sub}, nil
  3964  }
  3965  
  3966  // WatchSystemTransfer is a free log subscription operation binding the contract event 0x6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d.
  3967  //
  3968  // Solidity: event systemTransfer(uint256 amount)
  3969  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchSystemTransfer(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetSystemTransfer) (event.Subscription, error) {
  3970  
  3971  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "systemTransfer")
  3972  	if err != nil {
  3973  		return nil, err
  3974  	}
  3975  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3976  		defer sub.Unsubscribe()
  3977  		for {
  3978  			select {
  3979  			case log := <-logs:
  3980  				// New log arrived, parse the event and forward to the user
  3981  				event := new(BSCValidatorSetSystemTransfer)
  3982  				if err := _BSCValidatorSet.contract.UnpackLog(event, "systemTransfer", log); err != nil {
  3983  					return err
  3984  				}
  3985  				event.Raw = log
  3986  
  3987  				select {
  3988  				case sink <- event:
  3989  				case err := <-sub.Err():
  3990  					return err
  3991  				case <-quit:
  3992  					return nil
  3993  				}
  3994  			case err := <-sub.Err():
  3995  				return err
  3996  			case <-quit:
  3997  				return nil
  3998  			}
  3999  		}
  4000  	}), nil
  4001  }
  4002  
  4003  // ParseSystemTransfer is a log parse operation binding the contract event 0x6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d.
  4004  //
  4005  // Solidity: event systemTransfer(uint256 amount)
  4006  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseSystemTransfer(log types.Log) (*BSCValidatorSetSystemTransfer, error) {
  4007  	event := new(BSCValidatorSetSystemTransfer)
  4008  	if err := _BSCValidatorSet.contract.UnpackLog(event, "systemTransfer", log); err != nil {
  4009  		return nil, err
  4010  	}
  4011  	event.Raw = log
  4012  	return event, nil
  4013  }
  4014  
  4015  // BSCValidatorSetUnexpectedPackageIterator is returned from FilterUnexpectedPackage and is used to iterate over the raw logs and unpacked data for UnexpectedPackage events raised by the BSCValidatorSet contract.
  4016  type BSCValidatorSetUnexpectedPackageIterator struct {
  4017  	Event *BSCValidatorSetUnexpectedPackage // Event containing the contract specifics and raw log
  4018  
  4019  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4020  	event    string              // Event name to use for unpacking event data
  4021  
  4022  	logs chan types.Log        // Log channel receiving the found contract events
  4023  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4024  	done bool                  // Whether the subscription completed delivering logs
  4025  	fail error                 // Occurred error to stop iteration
  4026  }
  4027  
  4028  // Next advances the iterator to the subsequent event, returning whether there
  4029  // are any more events found. In case of a retrieval or parsing error, false is
  4030  // returned and Error() can be queried for the exact failure.
  4031  func (it *BSCValidatorSetUnexpectedPackageIterator) Next() bool {
  4032  	// If the iterator failed, stop iterating
  4033  	if it.fail != nil {
  4034  		return false
  4035  	}
  4036  	// If the iterator completed, deliver directly whatever's available
  4037  	if it.done {
  4038  		select {
  4039  		case log := <-it.logs:
  4040  			it.Event = new(BSCValidatorSetUnexpectedPackage)
  4041  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4042  				it.fail = err
  4043  				return false
  4044  			}
  4045  			it.Event.Raw = log
  4046  			return true
  4047  
  4048  		default:
  4049  			return false
  4050  		}
  4051  	}
  4052  	// Iterator still in progress, wait for either a data or an error event
  4053  	select {
  4054  	case log := <-it.logs:
  4055  		it.Event = new(BSCValidatorSetUnexpectedPackage)
  4056  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4057  			it.fail = err
  4058  			return false
  4059  		}
  4060  		it.Event.Raw = log
  4061  		return true
  4062  
  4063  	case err := <-it.sub.Err():
  4064  		it.done = true
  4065  		it.fail = err
  4066  		return it.Next()
  4067  	}
  4068  }
  4069  
  4070  // Error returns any retrieval or parsing error occurred during filtering.
  4071  func (it *BSCValidatorSetUnexpectedPackageIterator) Error() error {
  4072  	return it.fail
  4073  }
  4074  
  4075  // Close terminates the iteration process, releasing any pending underlying
  4076  // resources.
  4077  func (it *BSCValidatorSetUnexpectedPackageIterator) Close() error {
  4078  	it.sub.Unsubscribe()
  4079  	return nil
  4080  }
  4081  
  4082  // BSCValidatorSetUnexpectedPackage represents a UnexpectedPackage event raised by the BSCValidatorSet contract.
  4083  type BSCValidatorSetUnexpectedPackage struct {
  4084  	ChannelId uint8
  4085  	MsgBytes  []byte
  4086  	Raw       types.Log // Blockchain specific contextual infos
  4087  }
  4088  
  4089  // FilterUnexpectedPackage is a free log retrieval operation binding the contract event 0x41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605.
  4090  //
  4091  // Solidity: event unexpectedPackage(uint8 channelId, bytes msgBytes)
  4092  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterUnexpectedPackage(opts *bind.FilterOpts) (*BSCValidatorSetUnexpectedPackageIterator, error) {
  4093  
  4094  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "unexpectedPackage")
  4095  	if err != nil {
  4096  		return nil, err
  4097  	}
  4098  	return &BSCValidatorSetUnexpectedPackageIterator{contract: _BSCValidatorSet.contract, event: "unexpectedPackage", logs: logs, sub: sub}, nil
  4099  }
  4100  
  4101  // WatchUnexpectedPackage is a free log subscription operation binding the contract event 0x41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605.
  4102  //
  4103  // Solidity: event unexpectedPackage(uint8 channelId, bytes msgBytes)
  4104  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchUnexpectedPackage(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetUnexpectedPackage) (event.Subscription, error) {
  4105  
  4106  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "unexpectedPackage")
  4107  	if err != nil {
  4108  		return nil, err
  4109  	}
  4110  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4111  		defer sub.Unsubscribe()
  4112  		for {
  4113  			select {
  4114  			case log := <-logs:
  4115  				// New log arrived, parse the event and forward to the user
  4116  				event := new(BSCValidatorSetUnexpectedPackage)
  4117  				if err := _BSCValidatorSet.contract.UnpackLog(event, "unexpectedPackage", log); err != nil {
  4118  					return err
  4119  				}
  4120  				event.Raw = log
  4121  
  4122  				select {
  4123  				case sink <- event:
  4124  				case err := <-sub.Err():
  4125  					return err
  4126  				case <-quit:
  4127  					return nil
  4128  				}
  4129  			case err := <-sub.Err():
  4130  				return err
  4131  			case <-quit:
  4132  				return nil
  4133  			}
  4134  		}
  4135  	}), nil
  4136  }
  4137  
  4138  // ParseUnexpectedPackage is a log parse operation binding the contract event 0x41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605.
  4139  //
  4140  // Solidity: event unexpectedPackage(uint8 channelId, bytes msgBytes)
  4141  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseUnexpectedPackage(log types.Log) (*BSCValidatorSetUnexpectedPackage, error) {
  4142  	event := new(BSCValidatorSetUnexpectedPackage)
  4143  	if err := _BSCValidatorSet.contract.UnpackLog(event, "unexpectedPackage", log); err != nil {
  4144  		return nil, err
  4145  	}
  4146  	event.Raw = log
  4147  	return event, nil
  4148  }
  4149  
  4150  // BSCValidatorSetValidatorDepositIterator is returned from FilterValidatorDeposit and is used to iterate over the raw logs and unpacked data for ValidatorDeposit events raised by the BSCValidatorSet contract.
  4151  type BSCValidatorSetValidatorDepositIterator struct {
  4152  	Event *BSCValidatorSetValidatorDeposit // Event containing the contract specifics and raw log
  4153  
  4154  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4155  	event    string              // Event name to use for unpacking event data
  4156  
  4157  	logs chan types.Log        // Log channel receiving the found contract events
  4158  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4159  	done bool                  // Whether the subscription completed delivering logs
  4160  	fail error                 // Occurred error to stop iteration
  4161  }
  4162  
  4163  // Next advances the iterator to the subsequent event, returning whether there
  4164  // are any more events found. In case of a retrieval or parsing error, false is
  4165  // returned and Error() can be queried for the exact failure.
  4166  func (it *BSCValidatorSetValidatorDepositIterator) Next() bool {
  4167  	// If the iterator failed, stop iterating
  4168  	if it.fail != nil {
  4169  		return false
  4170  	}
  4171  	// If the iterator completed, deliver directly whatever's available
  4172  	if it.done {
  4173  		select {
  4174  		case log := <-it.logs:
  4175  			it.Event = new(BSCValidatorSetValidatorDeposit)
  4176  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4177  				it.fail = err
  4178  				return false
  4179  			}
  4180  			it.Event.Raw = log
  4181  			return true
  4182  
  4183  		default:
  4184  			return false
  4185  		}
  4186  	}
  4187  	// Iterator still in progress, wait for either a data or an error event
  4188  	select {
  4189  	case log := <-it.logs:
  4190  		it.Event = new(BSCValidatorSetValidatorDeposit)
  4191  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4192  			it.fail = err
  4193  			return false
  4194  		}
  4195  		it.Event.Raw = log
  4196  		return true
  4197  
  4198  	case err := <-it.sub.Err():
  4199  		it.done = true
  4200  		it.fail = err
  4201  		return it.Next()
  4202  	}
  4203  }
  4204  
  4205  // Error returns any retrieval or parsing error occurred during filtering.
  4206  func (it *BSCValidatorSetValidatorDepositIterator) Error() error {
  4207  	return it.fail
  4208  }
  4209  
  4210  // Close terminates the iteration process, releasing any pending underlying
  4211  // resources.
  4212  func (it *BSCValidatorSetValidatorDepositIterator) Close() error {
  4213  	it.sub.Unsubscribe()
  4214  	return nil
  4215  }
  4216  
  4217  // BSCValidatorSetValidatorDeposit represents a ValidatorDeposit event raised by the BSCValidatorSet contract.
  4218  type BSCValidatorSetValidatorDeposit struct {
  4219  	Validator common.Address
  4220  	Amount    *big.Int
  4221  	Raw       types.Log // Blockchain specific contextual infos
  4222  }
  4223  
  4224  // FilterValidatorDeposit is a free log retrieval operation binding the contract event 0x93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055.
  4225  //
  4226  // Solidity: event validatorDeposit(address indexed validator, uint256 amount)
  4227  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorDeposit(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetValidatorDepositIterator, error) {
  4228  
  4229  	var validatorRule []interface{}
  4230  	for _, validatorItem := range validator {
  4231  		validatorRule = append(validatorRule, validatorItem)
  4232  	}
  4233  
  4234  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorDeposit", validatorRule)
  4235  	if err != nil {
  4236  		return nil, err
  4237  	}
  4238  	return &BSCValidatorSetValidatorDepositIterator{contract: _BSCValidatorSet.contract, event: "validatorDeposit", logs: logs, sub: sub}, nil
  4239  }
  4240  
  4241  // WatchValidatorDeposit is a free log subscription operation binding the contract event 0x93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055.
  4242  //
  4243  // Solidity: event validatorDeposit(address indexed validator, uint256 amount)
  4244  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorDeposit(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorDeposit, validator []common.Address) (event.Subscription, error) {
  4245  
  4246  	var validatorRule []interface{}
  4247  	for _, validatorItem := range validator {
  4248  		validatorRule = append(validatorRule, validatorItem)
  4249  	}
  4250  
  4251  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorDeposit", validatorRule)
  4252  	if err != nil {
  4253  		return nil, err
  4254  	}
  4255  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4256  		defer sub.Unsubscribe()
  4257  		for {
  4258  			select {
  4259  			case log := <-logs:
  4260  				// New log arrived, parse the event and forward to the user
  4261  				event := new(BSCValidatorSetValidatorDeposit)
  4262  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorDeposit", log); err != nil {
  4263  					return err
  4264  				}
  4265  				event.Raw = log
  4266  
  4267  				select {
  4268  				case sink <- event:
  4269  				case err := <-sub.Err():
  4270  					return err
  4271  				case <-quit:
  4272  					return nil
  4273  				}
  4274  			case err := <-sub.Err():
  4275  				return err
  4276  			case <-quit:
  4277  				return nil
  4278  			}
  4279  		}
  4280  	}), nil
  4281  }
  4282  
  4283  // ParseValidatorDeposit is a log parse operation binding the contract event 0x93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055.
  4284  //
  4285  // Solidity: event validatorDeposit(address indexed validator, uint256 amount)
  4286  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorDeposit(log types.Log) (*BSCValidatorSetValidatorDeposit, error) {
  4287  	event := new(BSCValidatorSetValidatorDeposit)
  4288  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorDeposit", log); err != nil {
  4289  		return nil, err
  4290  	}
  4291  	event.Raw = log
  4292  	return event, nil
  4293  }
  4294  
  4295  // BSCValidatorSetValidatorEmptyJailedIterator is returned from FilterValidatorEmptyJailed and is used to iterate over the raw logs and unpacked data for ValidatorEmptyJailed events raised by the BSCValidatorSet contract.
  4296  type BSCValidatorSetValidatorEmptyJailedIterator struct {
  4297  	Event *BSCValidatorSetValidatorEmptyJailed // Event containing the contract specifics and raw log
  4298  
  4299  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4300  	event    string              // Event name to use for unpacking event data
  4301  
  4302  	logs chan types.Log        // Log channel receiving the found contract events
  4303  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4304  	done bool                  // Whether the subscription completed delivering logs
  4305  	fail error                 // Occurred error to stop iteration
  4306  }
  4307  
  4308  // Next advances the iterator to the subsequent event, returning whether there
  4309  // are any more events found. In case of a retrieval or parsing error, false is
  4310  // returned and Error() can be queried for the exact failure.
  4311  func (it *BSCValidatorSetValidatorEmptyJailedIterator) Next() bool {
  4312  	// If the iterator failed, stop iterating
  4313  	if it.fail != nil {
  4314  		return false
  4315  	}
  4316  	// If the iterator completed, deliver directly whatever's available
  4317  	if it.done {
  4318  		select {
  4319  		case log := <-it.logs:
  4320  			it.Event = new(BSCValidatorSetValidatorEmptyJailed)
  4321  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4322  				it.fail = err
  4323  				return false
  4324  			}
  4325  			it.Event.Raw = log
  4326  			return true
  4327  
  4328  		default:
  4329  			return false
  4330  		}
  4331  	}
  4332  	// Iterator still in progress, wait for either a data or an error event
  4333  	select {
  4334  	case log := <-it.logs:
  4335  		it.Event = new(BSCValidatorSetValidatorEmptyJailed)
  4336  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4337  			it.fail = err
  4338  			return false
  4339  		}
  4340  		it.Event.Raw = log
  4341  		return true
  4342  
  4343  	case err := <-it.sub.Err():
  4344  		it.done = true
  4345  		it.fail = err
  4346  		return it.Next()
  4347  	}
  4348  }
  4349  
  4350  // Error returns any retrieval or parsing error occurred during filtering.
  4351  func (it *BSCValidatorSetValidatorEmptyJailedIterator) Error() error {
  4352  	return it.fail
  4353  }
  4354  
  4355  // Close terminates the iteration process, releasing any pending underlying
  4356  // resources.
  4357  func (it *BSCValidatorSetValidatorEmptyJailedIterator) Close() error {
  4358  	it.sub.Unsubscribe()
  4359  	return nil
  4360  }
  4361  
  4362  // BSCValidatorSetValidatorEmptyJailed represents a ValidatorEmptyJailed event raised by the BSCValidatorSet contract.
  4363  type BSCValidatorSetValidatorEmptyJailed struct {
  4364  	Validator common.Address
  4365  	Raw       types.Log // Blockchain specific contextual infos
  4366  }
  4367  
  4368  // FilterValidatorEmptyJailed is a free log retrieval operation binding the contract event 0xe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be.
  4369  //
  4370  // Solidity: event validatorEmptyJailed(address indexed validator)
  4371  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorEmptyJailed(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetValidatorEmptyJailedIterator, error) {
  4372  
  4373  	var validatorRule []interface{}
  4374  	for _, validatorItem := range validator {
  4375  		validatorRule = append(validatorRule, validatorItem)
  4376  	}
  4377  
  4378  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorEmptyJailed", validatorRule)
  4379  	if err != nil {
  4380  		return nil, err
  4381  	}
  4382  	return &BSCValidatorSetValidatorEmptyJailedIterator{contract: _BSCValidatorSet.contract, event: "validatorEmptyJailed", logs: logs, sub: sub}, nil
  4383  }
  4384  
  4385  // WatchValidatorEmptyJailed is a free log subscription operation binding the contract event 0xe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be.
  4386  //
  4387  // Solidity: event validatorEmptyJailed(address indexed validator)
  4388  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorEmptyJailed(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorEmptyJailed, validator []common.Address) (event.Subscription, error) {
  4389  
  4390  	var validatorRule []interface{}
  4391  	for _, validatorItem := range validator {
  4392  		validatorRule = append(validatorRule, validatorItem)
  4393  	}
  4394  
  4395  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorEmptyJailed", validatorRule)
  4396  	if err != nil {
  4397  		return nil, err
  4398  	}
  4399  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4400  		defer sub.Unsubscribe()
  4401  		for {
  4402  			select {
  4403  			case log := <-logs:
  4404  				// New log arrived, parse the event and forward to the user
  4405  				event := new(BSCValidatorSetValidatorEmptyJailed)
  4406  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorEmptyJailed", log); err != nil {
  4407  					return err
  4408  				}
  4409  				event.Raw = log
  4410  
  4411  				select {
  4412  				case sink <- event:
  4413  				case err := <-sub.Err():
  4414  					return err
  4415  				case <-quit:
  4416  					return nil
  4417  				}
  4418  			case err := <-sub.Err():
  4419  				return err
  4420  			case <-quit:
  4421  				return nil
  4422  			}
  4423  		}
  4424  	}), nil
  4425  }
  4426  
  4427  // ParseValidatorEmptyJailed is a log parse operation binding the contract event 0xe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be.
  4428  //
  4429  // Solidity: event validatorEmptyJailed(address indexed validator)
  4430  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorEmptyJailed(log types.Log) (*BSCValidatorSetValidatorEmptyJailed, error) {
  4431  	event := new(BSCValidatorSetValidatorEmptyJailed)
  4432  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorEmptyJailed", log); err != nil {
  4433  		return nil, err
  4434  	}
  4435  	event.Raw = log
  4436  	return event, nil
  4437  }
  4438  
  4439  // BSCValidatorSetValidatorFelonyIterator is returned from FilterValidatorFelony and is used to iterate over the raw logs and unpacked data for ValidatorFelony events raised by the BSCValidatorSet contract.
  4440  type BSCValidatorSetValidatorFelonyIterator struct {
  4441  	Event *BSCValidatorSetValidatorFelony // Event containing the contract specifics and raw log
  4442  
  4443  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4444  	event    string              // Event name to use for unpacking event data
  4445  
  4446  	logs chan types.Log        // Log channel receiving the found contract events
  4447  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4448  	done bool                  // Whether the subscription completed delivering logs
  4449  	fail error                 // Occurred error to stop iteration
  4450  }
  4451  
  4452  // Next advances the iterator to the subsequent event, returning whether there
  4453  // are any more events found. In case of a retrieval or parsing error, false is
  4454  // returned and Error() can be queried for the exact failure.
  4455  func (it *BSCValidatorSetValidatorFelonyIterator) Next() bool {
  4456  	// If the iterator failed, stop iterating
  4457  	if it.fail != nil {
  4458  		return false
  4459  	}
  4460  	// If the iterator completed, deliver directly whatever's available
  4461  	if it.done {
  4462  		select {
  4463  		case log := <-it.logs:
  4464  			it.Event = new(BSCValidatorSetValidatorFelony)
  4465  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4466  				it.fail = err
  4467  				return false
  4468  			}
  4469  			it.Event.Raw = log
  4470  			return true
  4471  
  4472  		default:
  4473  			return false
  4474  		}
  4475  	}
  4476  	// Iterator still in progress, wait for either a data or an error event
  4477  	select {
  4478  	case log := <-it.logs:
  4479  		it.Event = new(BSCValidatorSetValidatorFelony)
  4480  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4481  			it.fail = err
  4482  			return false
  4483  		}
  4484  		it.Event.Raw = log
  4485  		return true
  4486  
  4487  	case err := <-it.sub.Err():
  4488  		it.done = true
  4489  		it.fail = err
  4490  		return it.Next()
  4491  	}
  4492  }
  4493  
  4494  // Error returns any retrieval or parsing error occurred during filtering.
  4495  func (it *BSCValidatorSetValidatorFelonyIterator) Error() error {
  4496  	return it.fail
  4497  }
  4498  
  4499  // Close terminates the iteration process, releasing any pending underlying
  4500  // resources.
  4501  func (it *BSCValidatorSetValidatorFelonyIterator) Close() error {
  4502  	it.sub.Unsubscribe()
  4503  	return nil
  4504  }
  4505  
  4506  // BSCValidatorSetValidatorFelony represents a ValidatorFelony event raised by the BSCValidatorSet contract.
  4507  type BSCValidatorSetValidatorFelony struct {
  4508  	Validator common.Address
  4509  	Amount    *big.Int
  4510  	Raw       types.Log // Blockchain specific contextual infos
  4511  }
  4512  
  4513  // FilterValidatorFelony is a free log retrieval operation binding the contract event 0x3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70.
  4514  //
  4515  // Solidity: event validatorFelony(address indexed validator, uint256 amount)
  4516  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorFelony(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetValidatorFelonyIterator, error) {
  4517  
  4518  	var validatorRule []interface{}
  4519  	for _, validatorItem := range validator {
  4520  		validatorRule = append(validatorRule, validatorItem)
  4521  	}
  4522  
  4523  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorFelony", validatorRule)
  4524  	if err != nil {
  4525  		return nil, err
  4526  	}
  4527  	return &BSCValidatorSetValidatorFelonyIterator{contract: _BSCValidatorSet.contract, event: "validatorFelony", logs: logs, sub: sub}, nil
  4528  }
  4529  
  4530  // WatchValidatorFelony is a free log subscription operation binding the contract event 0x3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70.
  4531  //
  4532  // Solidity: event validatorFelony(address indexed validator, uint256 amount)
  4533  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorFelony(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorFelony, validator []common.Address) (event.Subscription, error) {
  4534  
  4535  	var validatorRule []interface{}
  4536  	for _, validatorItem := range validator {
  4537  		validatorRule = append(validatorRule, validatorItem)
  4538  	}
  4539  
  4540  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorFelony", validatorRule)
  4541  	if err != nil {
  4542  		return nil, err
  4543  	}
  4544  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4545  		defer sub.Unsubscribe()
  4546  		for {
  4547  			select {
  4548  			case log := <-logs:
  4549  				// New log arrived, parse the event and forward to the user
  4550  				event := new(BSCValidatorSetValidatorFelony)
  4551  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorFelony", log); err != nil {
  4552  					return err
  4553  				}
  4554  				event.Raw = log
  4555  
  4556  				select {
  4557  				case sink <- event:
  4558  				case err := <-sub.Err():
  4559  					return err
  4560  				case <-quit:
  4561  					return nil
  4562  				}
  4563  			case err := <-sub.Err():
  4564  				return err
  4565  			case <-quit:
  4566  				return nil
  4567  			}
  4568  		}
  4569  	}), nil
  4570  }
  4571  
  4572  // ParseValidatorFelony is a log parse operation binding the contract event 0x3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70.
  4573  //
  4574  // Solidity: event validatorFelony(address indexed validator, uint256 amount)
  4575  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorFelony(log types.Log) (*BSCValidatorSetValidatorFelony, error) {
  4576  	event := new(BSCValidatorSetValidatorFelony)
  4577  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorFelony", log); err != nil {
  4578  		return nil, err
  4579  	}
  4580  	event.Raw = log
  4581  	return event, nil
  4582  }
  4583  
  4584  // BSCValidatorSetValidatorJailedIterator is returned from FilterValidatorJailed and is used to iterate over the raw logs and unpacked data for ValidatorJailed events raised by the BSCValidatorSet contract.
  4585  type BSCValidatorSetValidatorJailedIterator struct {
  4586  	Event *BSCValidatorSetValidatorJailed // Event containing the contract specifics and raw log
  4587  
  4588  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4589  	event    string              // Event name to use for unpacking event data
  4590  
  4591  	logs chan types.Log        // Log channel receiving the found contract events
  4592  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4593  	done bool                  // Whether the subscription completed delivering logs
  4594  	fail error                 // Occurred error to stop iteration
  4595  }
  4596  
  4597  // Next advances the iterator to the subsequent event, returning whether there
  4598  // are any more events found. In case of a retrieval or parsing error, false is
  4599  // returned and Error() can be queried for the exact failure.
  4600  func (it *BSCValidatorSetValidatorJailedIterator) Next() bool {
  4601  	// If the iterator failed, stop iterating
  4602  	if it.fail != nil {
  4603  		return false
  4604  	}
  4605  	// If the iterator completed, deliver directly whatever's available
  4606  	if it.done {
  4607  		select {
  4608  		case log := <-it.logs:
  4609  			it.Event = new(BSCValidatorSetValidatorJailed)
  4610  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4611  				it.fail = err
  4612  				return false
  4613  			}
  4614  			it.Event.Raw = log
  4615  			return true
  4616  
  4617  		default:
  4618  			return false
  4619  		}
  4620  	}
  4621  	// Iterator still in progress, wait for either a data or an error event
  4622  	select {
  4623  	case log := <-it.logs:
  4624  		it.Event = new(BSCValidatorSetValidatorJailed)
  4625  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4626  			it.fail = err
  4627  			return false
  4628  		}
  4629  		it.Event.Raw = log
  4630  		return true
  4631  
  4632  	case err := <-it.sub.Err():
  4633  		it.done = true
  4634  		it.fail = err
  4635  		return it.Next()
  4636  	}
  4637  }
  4638  
  4639  // Error returns any retrieval or parsing error occurred during filtering.
  4640  func (it *BSCValidatorSetValidatorJailedIterator) Error() error {
  4641  	return it.fail
  4642  }
  4643  
  4644  // Close terminates the iteration process, releasing any pending underlying
  4645  // resources.
  4646  func (it *BSCValidatorSetValidatorJailedIterator) Close() error {
  4647  	it.sub.Unsubscribe()
  4648  	return nil
  4649  }
  4650  
  4651  // BSCValidatorSetValidatorJailed represents a ValidatorJailed event raised by the BSCValidatorSet contract.
  4652  type BSCValidatorSetValidatorJailed struct {
  4653  	Validator common.Address
  4654  	Raw       types.Log // Blockchain specific contextual infos
  4655  }
  4656  
  4657  // FilterValidatorJailed is a free log retrieval operation binding the contract event 0xf226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a.
  4658  //
  4659  // Solidity: event validatorJailed(address indexed validator)
  4660  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorJailed(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetValidatorJailedIterator, error) {
  4661  
  4662  	var validatorRule []interface{}
  4663  	for _, validatorItem := range validator {
  4664  		validatorRule = append(validatorRule, validatorItem)
  4665  	}
  4666  
  4667  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorJailed", validatorRule)
  4668  	if err != nil {
  4669  		return nil, err
  4670  	}
  4671  	return &BSCValidatorSetValidatorJailedIterator{contract: _BSCValidatorSet.contract, event: "validatorJailed", logs: logs, sub: sub}, nil
  4672  }
  4673  
  4674  // WatchValidatorJailed is a free log subscription operation binding the contract event 0xf226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a.
  4675  //
  4676  // Solidity: event validatorJailed(address indexed validator)
  4677  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorJailed(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorJailed, validator []common.Address) (event.Subscription, error) {
  4678  
  4679  	var validatorRule []interface{}
  4680  	for _, validatorItem := range validator {
  4681  		validatorRule = append(validatorRule, validatorItem)
  4682  	}
  4683  
  4684  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorJailed", validatorRule)
  4685  	if err != nil {
  4686  		return nil, err
  4687  	}
  4688  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4689  		defer sub.Unsubscribe()
  4690  		for {
  4691  			select {
  4692  			case log := <-logs:
  4693  				// New log arrived, parse the event and forward to the user
  4694  				event := new(BSCValidatorSetValidatorJailed)
  4695  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorJailed", log); err != nil {
  4696  					return err
  4697  				}
  4698  				event.Raw = log
  4699  
  4700  				select {
  4701  				case sink <- event:
  4702  				case err := <-sub.Err():
  4703  					return err
  4704  				case <-quit:
  4705  					return nil
  4706  				}
  4707  			case err := <-sub.Err():
  4708  				return err
  4709  			case <-quit:
  4710  				return nil
  4711  			}
  4712  		}
  4713  	}), nil
  4714  }
  4715  
  4716  // ParseValidatorJailed is a log parse operation binding the contract event 0xf226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a.
  4717  //
  4718  // Solidity: event validatorJailed(address indexed validator)
  4719  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorJailed(log types.Log) (*BSCValidatorSetValidatorJailed, error) {
  4720  	event := new(BSCValidatorSetValidatorJailed)
  4721  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorJailed", log); err != nil {
  4722  		return nil, err
  4723  	}
  4724  	event.Raw = log
  4725  	return event, nil
  4726  }
  4727  
  4728  // BSCValidatorSetValidatorMisdemeanorIterator is returned from FilterValidatorMisdemeanor and is used to iterate over the raw logs and unpacked data for ValidatorMisdemeanor events raised by the BSCValidatorSet contract.
  4729  type BSCValidatorSetValidatorMisdemeanorIterator struct {
  4730  	Event *BSCValidatorSetValidatorMisdemeanor // Event containing the contract specifics and raw log
  4731  
  4732  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4733  	event    string              // Event name to use for unpacking event data
  4734  
  4735  	logs chan types.Log        // Log channel receiving the found contract events
  4736  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4737  	done bool                  // Whether the subscription completed delivering logs
  4738  	fail error                 // Occurred error to stop iteration
  4739  }
  4740  
  4741  // Next advances the iterator to the subsequent event, returning whether there
  4742  // are any more events found. In case of a retrieval or parsing error, false is
  4743  // returned and Error() can be queried for the exact failure.
  4744  func (it *BSCValidatorSetValidatorMisdemeanorIterator) Next() bool {
  4745  	// If the iterator failed, stop iterating
  4746  	if it.fail != nil {
  4747  		return false
  4748  	}
  4749  	// If the iterator completed, deliver directly whatever's available
  4750  	if it.done {
  4751  		select {
  4752  		case log := <-it.logs:
  4753  			it.Event = new(BSCValidatorSetValidatorMisdemeanor)
  4754  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4755  				it.fail = err
  4756  				return false
  4757  			}
  4758  			it.Event.Raw = log
  4759  			return true
  4760  
  4761  		default:
  4762  			return false
  4763  		}
  4764  	}
  4765  	// Iterator still in progress, wait for either a data or an error event
  4766  	select {
  4767  	case log := <-it.logs:
  4768  		it.Event = new(BSCValidatorSetValidatorMisdemeanor)
  4769  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4770  			it.fail = err
  4771  			return false
  4772  		}
  4773  		it.Event.Raw = log
  4774  		return true
  4775  
  4776  	case err := <-it.sub.Err():
  4777  		it.done = true
  4778  		it.fail = err
  4779  		return it.Next()
  4780  	}
  4781  }
  4782  
  4783  // Error returns any retrieval or parsing error occurred during filtering.
  4784  func (it *BSCValidatorSetValidatorMisdemeanorIterator) Error() error {
  4785  	return it.fail
  4786  }
  4787  
  4788  // Close terminates the iteration process, releasing any pending underlying
  4789  // resources.
  4790  func (it *BSCValidatorSetValidatorMisdemeanorIterator) Close() error {
  4791  	it.sub.Unsubscribe()
  4792  	return nil
  4793  }
  4794  
  4795  // BSCValidatorSetValidatorMisdemeanor represents a ValidatorMisdemeanor event raised by the BSCValidatorSet contract.
  4796  type BSCValidatorSetValidatorMisdemeanor struct {
  4797  	Validator common.Address
  4798  	Amount    *big.Int
  4799  	Raw       types.Log // Blockchain specific contextual infos
  4800  }
  4801  
  4802  // FilterValidatorMisdemeanor is a free log retrieval operation binding the contract event 0x8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d.
  4803  //
  4804  // Solidity: event validatorMisdemeanor(address indexed validator, uint256 amount)
  4805  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorMisdemeanor(opts *bind.FilterOpts, validator []common.Address) (*BSCValidatorSetValidatorMisdemeanorIterator, error) {
  4806  
  4807  	var validatorRule []interface{}
  4808  	for _, validatorItem := range validator {
  4809  		validatorRule = append(validatorRule, validatorItem)
  4810  	}
  4811  
  4812  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorMisdemeanor", validatorRule)
  4813  	if err != nil {
  4814  		return nil, err
  4815  	}
  4816  	return &BSCValidatorSetValidatorMisdemeanorIterator{contract: _BSCValidatorSet.contract, event: "validatorMisdemeanor", logs: logs, sub: sub}, nil
  4817  }
  4818  
  4819  // WatchValidatorMisdemeanor is a free log subscription operation binding the contract event 0x8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d.
  4820  //
  4821  // Solidity: event validatorMisdemeanor(address indexed validator, uint256 amount)
  4822  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorMisdemeanor(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorMisdemeanor, validator []common.Address) (event.Subscription, error) {
  4823  
  4824  	var validatorRule []interface{}
  4825  	for _, validatorItem := range validator {
  4826  		validatorRule = append(validatorRule, validatorItem)
  4827  	}
  4828  
  4829  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorMisdemeanor", validatorRule)
  4830  	if err != nil {
  4831  		return nil, err
  4832  	}
  4833  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4834  		defer sub.Unsubscribe()
  4835  		for {
  4836  			select {
  4837  			case log := <-logs:
  4838  				// New log arrived, parse the event and forward to the user
  4839  				event := new(BSCValidatorSetValidatorMisdemeanor)
  4840  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorMisdemeanor", log); err != nil {
  4841  					return err
  4842  				}
  4843  				event.Raw = log
  4844  
  4845  				select {
  4846  				case sink <- event:
  4847  				case err := <-sub.Err():
  4848  					return err
  4849  				case <-quit:
  4850  					return nil
  4851  				}
  4852  			case err := <-sub.Err():
  4853  				return err
  4854  			case <-quit:
  4855  				return nil
  4856  			}
  4857  		}
  4858  	}), nil
  4859  }
  4860  
  4861  // ParseValidatorMisdemeanor is a log parse operation binding the contract event 0x8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d.
  4862  //
  4863  // Solidity: event validatorMisdemeanor(address indexed validator, uint256 amount)
  4864  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorMisdemeanor(log types.Log) (*BSCValidatorSetValidatorMisdemeanor, error) {
  4865  	event := new(BSCValidatorSetValidatorMisdemeanor)
  4866  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorMisdemeanor", log); err != nil {
  4867  		return nil, err
  4868  	}
  4869  	event.Raw = log
  4870  	return event, nil
  4871  }
  4872  
  4873  // BSCValidatorSetValidatorSetUpdatedIterator is returned from FilterValidatorSetUpdated and is used to iterate over the raw logs and unpacked data for ValidatorSetUpdated events raised by the BSCValidatorSet contract.
  4874  type BSCValidatorSetValidatorSetUpdatedIterator struct {
  4875  	Event *BSCValidatorSetValidatorSetUpdated // Event containing the contract specifics and raw log
  4876  
  4877  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4878  	event    string              // Event name to use for unpacking event data
  4879  
  4880  	logs chan types.Log        // Log channel receiving the found contract events
  4881  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4882  	done bool                  // Whether the subscription completed delivering logs
  4883  	fail error                 // Occurred error to stop iteration
  4884  }
  4885  
  4886  // Next advances the iterator to the subsequent event, returning whether there
  4887  // are any more events found. In case of a retrieval or parsing error, false is
  4888  // returned and Error() can be queried for the exact failure.
  4889  func (it *BSCValidatorSetValidatorSetUpdatedIterator) Next() bool {
  4890  	// If the iterator failed, stop iterating
  4891  	if it.fail != nil {
  4892  		return false
  4893  	}
  4894  	// If the iterator completed, deliver directly whatever's available
  4895  	if it.done {
  4896  		select {
  4897  		case log := <-it.logs:
  4898  			it.Event = new(BSCValidatorSetValidatorSetUpdated)
  4899  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4900  				it.fail = err
  4901  				return false
  4902  			}
  4903  			it.Event.Raw = log
  4904  			return true
  4905  
  4906  		default:
  4907  			return false
  4908  		}
  4909  	}
  4910  	// Iterator still in progress, wait for either a data or an error event
  4911  	select {
  4912  	case log := <-it.logs:
  4913  		it.Event = new(BSCValidatorSetValidatorSetUpdated)
  4914  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4915  			it.fail = err
  4916  			return false
  4917  		}
  4918  		it.Event.Raw = log
  4919  		return true
  4920  
  4921  	case err := <-it.sub.Err():
  4922  		it.done = true
  4923  		it.fail = err
  4924  		return it.Next()
  4925  	}
  4926  }
  4927  
  4928  // Error returns any retrieval or parsing error occurred during filtering.
  4929  func (it *BSCValidatorSetValidatorSetUpdatedIterator) Error() error {
  4930  	return it.fail
  4931  }
  4932  
  4933  // Close terminates the iteration process, releasing any pending underlying
  4934  // resources.
  4935  func (it *BSCValidatorSetValidatorSetUpdatedIterator) Close() error {
  4936  	it.sub.Unsubscribe()
  4937  	return nil
  4938  }
  4939  
  4940  // BSCValidatorSetValidatorSetUpdated represents a ValidatorSetUpdated event raised by the BSCValidatorSet contract.
  4941  type BSCValidatorSetValidatorSetUpdated struct {
  4942  	Raw types.Log // Blockchain specific contextual infos
  4943  }
  4944  
  4945  // FilterValidatorSetUpdated is a free log retrieval operation binding the contract event 0xedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf.
  4946  //
  4947  // Solidity: event validatorSetUpdated()
  4948  func (_BSCValidatorSet *BSCValidatorSetFilterer) FilterValidatorSetUpdated(opts *bind.FilterOpts) (*BSCValidatorSetValidatorSetUpdatedIterator, error) {
  4949  
  4950  	logs, sub, err := _BSCValidatorSet.contract.FilterLogs(opts, "validatorSetUpdated")
  4951  	if err != nil {
  4952  		return nil, err
  4953  	}
  4954  	return &BSCValidatorSetValidatorSetUpdatedIterator{contract: _BSCValidatorSet.contract, event: "validatorSetUpdated", logs: logs, sub: sub}, nil
  4955  }
  4956  
  4957  // WatchValidatorSetUpdated is a free log subscription operation binding the contract event 0xedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf.
  4958  //
  4959  // Solidity: event validatorSetUpdated()
  4960  func (_BSCValidatorSet *BSCValidatorSetFilterer) WatchValidatorSetUpdated(opts *bind.WatchOpts, sink chan<- *BSCValidatorSetValidatorSetUpdated) (event.Subscription, error) {
  4961  
  4962  	logs, sub, err := _BSCValidatorSet.contract.WatchLogs(opts, "validatorSetUpdated")
  4963  	if err != nil {
  4964  		return nil, err
  4965  	}
  4966  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4967  		defer sub.Unsubscribe()
  4968  		for {
  4969  			select {
  4970  			case log := <-logs:
  4971  				// New log arrived, parse the event and forward to the user
  4972  				event := new(BSCValidatorSetValidatorSetUpdated)
  4973  				if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorSetUpdated", log); err != nil {
  4974  					return err
  4975  				}
  4976  				event.Raw = log
  4977  
  4978  				select {
  4979  				case sink <- event:
  4980  				case err := <-sub.Err():
  4981  					return err
  4982  				case <-quit:
  4983  					return nil
  4984  				}
  4985  			case err := <-sub.Err():
  4986  				return err
  4987  			case <-quit:
  4988  				return nil
  4989  			}
  4990  		}
  4991  	}), nil
  4992  }
  4993  
  4994  // ParseValidatorSetUpdated is a log parse operation binding the contract event 0xedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf.
  4995  //
  4996  // Solidity: event validatorSetUpdated()
  4997  func (_BSCValidatorSet *BSCValidatorSetFilterer) ParseValidatorSetUpdated(log types.Log) (*BSCValidatorSetValidatorSetUpdated, error) {
  4998  	event := new(BSCValidatorSetValidatorSetUpdated)
  4999  	if err := _BSCValidatorSet.contract.UnpackLog(event, "validatorSetUpdated", log); err != nil {
  5000  		return nil, err
  5001  	}
  5002  	event.Raw = log
  5003  	return event, nil
  5004  }
  5005  
  5006  // BytesToTypesABI is the input ABI used to generate the binding from.
  5007  const BytesToTypesABI = "[]"
  5008  
  5009  // BytesToTypesBin is the compiled bytecode used for deploying new contracts.
  5010  var BytesToTypesBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a33734ce4b05e2a4f24fb6a43c76c2a990deec01482ee930645ff1694633109f64736f6c63430006040033"
  5011  
  5012  // DeployBytesToTypes deploys a new Ethereum contract, binding an instance of BytesToTypes to it.
  5013  func DeployBytesToTypes(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BytesToTypes, error) {
  5014  	parsed, err := abi.JSON(strings.NewReader(BytesToTypesABI))
  5015  	if err != nil {
  5016  		return common.Address{}, nil, nil, err
  5017  	}
  5018  
  5019  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BytesToTypesBin), backend)
  5020  	if err != nil {
  5021  		return common.Address{}, nil, nil, err
  5022  	}
  5023  	return address, tx, &BytesToTypes{BytesToTypesCaller: BytesToTypesCaller{contract: contract}, BytesToTypesTransactor: BytesToTypesTransactor{contract: contract}, BytesToTypesFilterer: BytesToTypesFilterer{contract: contract}}, nil
  5024  }
  5025  
  5026  // BytesToTypes is an auto generated Go binding around an Ethereum contract.
  5027  type BytesToTypes struct {
  5028  	BytesToTypesCaller     // Read-only binding to the contract
  5029  	BytesToTypesTransactor // Write-only binding to the contract
  5030  	BytesToTypesFilterer   // Log filterer for contract events
  5031  }
  5032  
  5033  // BytesToTypesCaller is an auto generated read-only Go binding around an Ethereum contract.
  5034  type BytesToTypesCaller struct {
  5035  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5036  }
  5037  
  5038  // BytesToTypesTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5039  type BytesToTypesTransactor struct {
  5040  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5041  }
  5042  
  5043  // BytesToTypesFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5044  type BytesToTypesFilterer struct {
  5045  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5046  }
  5047  
  5048  // BytesToTypesSession is an auto generated Go binding around an Ethereum contract,
  5049  // with pre-set call and transact options.
  5050  type BytesToTypesSession struct {
  5051  	Contract     *BytesToTypes     // Generic contract binding to set the session for
  5052  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5053  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5054  }
  5055  
  5056  // BytesToTypesCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5057  // with pre-set call options.
  5058  type BytesToTypesCallerSession struct {
  5059  	Contract *BytesToTypesCaller // Generic contract caller binding to set the session for
  5060  	CallOpts bind.CallOpts       // Call options to use throughout this session
  5061  }
  5062  
  5063  // BytesToTypesTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5064  // with pre-set transact options.
  5065  type BytesToTypesTransactorSession struct {
  5066  	Contract     *BytesToTypesTransactor // Generic contract transactor binding to set the session for
  5067  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5068  }
  5069  
  5070  // BytesToTypesRaw is an auto generated low-level Go binding around an Ethereum contract.
  5071  type BytesToTypesRaw struct {
  5072  	Contract *BytesToTypes // Generic contract binding to access the raw methods on
  5073  }
  5074  
  5075  // BytesToTypesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5076  type BytesToTypesCallerRaw struct {
  5077  	Contract *BytesToTypesCaller // Generic read-only contract binding to access the raw methods on
  5078  }
  5079  
  5080  // BytesToTypesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5081  type BytesToTypesTransactorRaw struct {
  5082  	Contract *BytesToTypesTransactor // Generic write-only contract binding to access the raw methods on
  5083  }
  5084  
  5085  // NewBytesToTypes creates a new instance of BytesToTypes, bound to a specific deployed contract.
  5086  func NewBytesToTypes(address common.Address, backend bind.ContractBackend) (*BytesToTypes, error) {
  5087  	contract, err := bindBytesToTypes(address, backend, backend, backend)
  5088  	if err != nil {
  5089  		return nil, err
  5090  	}
  5091  	return &BytesToTypes{BytesToTypesCaller: BytesToTypesCaller{contract: contract}, BytesToTypesTransactor: BytesToTypesTransactor{contract: contract}, BytesToTypesFilterer: BytesToTypesFilterer{contract: contract}}, nil
  5092  }
  5093  
  5094  // NewBytesToTypesCaller creates a new read-only instance of BytesToTypes, bound to a specific deployed contract.
  5095  func NewBytesToTypesCaller(address common.Address, caller bind.ContractCaller) (*BytesToTypesCaller, error) {
  5096  	contract, err := bindBytesToTypes(address, caller, nil, nil)
  5097  	if err != nil {
  5098  		return nil, err
  5099  	}
  5100  	return &BytesToTypesCaller{contract: contract}, nil
  5101  }
  5102  
  5103  // NewBytesToTypesTransactor creates a new write-only instance of BytesToTypes, bound to a specific deployed contract.
  5104  func NewBytesToTypesTransactor(address common.Address, transactor bind.ContractTransactor) (*BytesToTypesTransactor, error) {
  5105  	contract, err := bindBytesToTypes(address, nil, transactor, nil)
  5106  	if err != nil {
  5107  		return nil, err
  5108  	}
  5109  	return &BytesToTypesTransactor{contract: contract}, nil
  5110  }
  5111  
  5112  // NewBytesToTypesFilterer creates a new log filterer instance of BytesToTypes, bound to a specific deployed contract.
  5113  func NewBytesToTypesFilterer(address common.Address, filterer bind.ContractFilterer) (*BytesToTypesFilterer, error) {
  5114  	contract, err := bindBytesToTypes(address, nil, nil, filterer)
  5115  	if err != nil {
  5116  		return nil, err
  5117  	}
  5118  	return &BytesToTypesFilterer{contract: contract}, nil
  5119  }
  5120  
  5121  // bindBytesToTypes binds a generic wrapper to an already deployed contract.
  5122  func bindBytesToTypes(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5123  	parsed, err := abi.JSON(strings.NewReader(BytesToTypesABI))
  5124  	if err != nil {
  5125  		return nil, err
  5126  	}
  5127  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5128  }
  5129  
  5130  // Call invokes the (constant) contract method with params as input values and
  5131  // sets the output to result. The result type might be a single field for simple
  5132  // returns, a slice of interfaces for anonymous returns and a struct for named
  5133  // returns.
  5134  func (_BytesToTypes *BytesToTypesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5135  	return _BytesToTypes.Contract.BytesToTypesCaller.contract.Call(opts, result, method, params...)
  5136  }
  5137  
  5138  // Transfer initiates a plain transaction to move funds to the contract, calling
  5139  // its default method if one is available.
  5140  func (_BytesToTypes *BytesToTypesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5141  	return _BytesToTypes.Contract.BytesToTypesTransactor.contract.Transfer(opts)
  5142  }
  5143  
  5144  // Transact invokes the (paid) contract method with params as input values.
  5145  func (_BytesToTypes *BytesToTypesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5146  	return _BytesToTypes.Contract.BytesToTypesTransactor.contract.Transact(opts, method, params...)
  5147  }
  5148  
  5149  // Call invokes the (constant) contract method with params as input values and
  5150  // sets the output to result. The result type might be a single field for simple
  5151  // returns, a slice of interfaces for anonymous returns and a struct for named
  5152  // returns.
  5153  func (_BytesToTypes *BytesToTypesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5154  	return _BytesToTypes.Contract.contract.Call(opts, result, method, params...)
  5155  }
  5156  
  5157  // Transfer initiates a plain transaction to move funds to the contract, calling
  5158  // its default method if one is available.
  5159  func (_BytesToTypes *BytesToTypesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5160  	return _BytesToTypes.Contract.contract.Transfer(opts)
  5161  }
  5162  
  5163  // Transact invokes the (paid) contract method with params as input values.
  5164  func (_BytesToTypes *BytesToTypesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5165  	return _BytesToTypes.Contract.contract.Transact(opts, method, params...)
  5166  }
  5167  
  5168  // CmnPkgABI is the input ABI used to generate the binding from.
  5169  const CmnPkgABI = "[]"
  5170  
  5171  // CmnPkgBin is the compiled bytecode used for deploying new contracts.
  5172  var CmnPkgBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122013cba6ca7d42b9596ab731c4e5624b92170ac09ff98e457a52610505ed13982a64736f6c63430006040033"
  5173  
  5174  // DeployCmnPkg deploys a new Ethereum contract, binding an instance of CmnPkg to it.
  5175  func DeployCmnPkg(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *CmnPkg, error) {
  5176  	parsed, err := abi.JSON(strings.NewReader(CmnPkgABI))
  5177  	if err != nil {
  5178  		return common.Address{}, nil, nil, err
  5179  	}
  5180  
  5181  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CmnPkgBin), backend)
  5182  	if err != nil {
  5183  		return common.Address{}, nil, nil, err
  5184  	}
  5185  	return address, tx, &CmnPkg{CmnPkgCaller: CmnPkgCaller{contract: contract}, CmnPkgTransactor: CmnPkgTransactor{contract: contract}, CmnPkgFilterer: CmnPkgFilterer{contract: contract}}, nil
  5186  }
  5187  
  5188  // CmnPkg is an auto generated Go binding around an Ethereum contract.
  5189  type CmnPkg struct {
  5190  	CmnPkgCaller     // Read-only binding to the contract
  5191  	CmnPkgTransactor // Write-only binding to the contract
  5192  	CmnPkgFilterer   // Log filterer for contract events
  5193  }
  5194  
  5195  // CmnPkgCaller is an auto generated read-only Go binding around an Ethereum contract.
  5196  type CmnPkgCaller struct {
  5197  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5198  }
  5199  
  5200  // CmnPkgTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5201  type CmnPkgTransactor struct {
  5202  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5203  }
  5204  
  5205  // CmnPkgFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5206  type CmnPkgFilterer struct {
  5207  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5208  }
  5209  
  5210  // CmnPkgSession is an auto generated Go binding around an Ethereum contract,
  5211  // with pre-set call and transact options.
  5212  type CmnPkgSession struct {
  5213  	Contract     *CmnPkg           // Generic contract binding to set the session for
  5214  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5215  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5216  }
  5217  
  5218  // CmnPkgCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5219  // with pre-set call options.
  5220  type CmnPkgCallerSession struct {
  5221  	Contract *CmnPkgCaller // Generic contract caller binding to set the session for
  5222  	CallOpts bind.CallOpts // Call options to use throughout this session
  5223  }
  5224  
  5225  // CmnPkgTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5226  // with pre-set transact options.
  5227  type CmnPkgTransactorSession struct {
  5228  	Contract     *CmnPkgTransactor // Generic contract transactor binding to set the session for
  5229  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5230  }
  5231  
  5232  // CmnPkgRaw is an auto generated low-level Go binding around an Ethereum contract.
  5233  type CmnPkgRaw struct {
  5234  	Contract *CmnPkg // Generic contract binding to access the raw methods on
  5235  }
  5236  
  5237  // CmnPkgCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5238  type CmnPkgCallerRaw struct {
  5239  	Contract *CmnPkgCaller // Generic read-only contract binding to access the raw methods on
  5240  }
  5241  
  5242  // CmnPkgTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5243  type CmnPkgTransactorRaw struct {
  5244  	Contract *CmnPkgTransactor // Generic write-only contract binding to access the raw methods on
  5245  }
  5246  
  5247  // NewCmnPkg creates a new instance of CmnPkg, bound to a specific deployed contract.
  5248  func NewCmnPkg(address common.Address, backend bind.ContractBackend) (*CmnPkg, error) {
  5249  	contract, err := bindCmnPkg(address, backend, backend, backend)
  5250  	if err != nil {
  5251  		return nil, err
  5252  	}
  5253  	return &CmnPkg{CmnPkgCaller: CmnPkgCaller{contract: contract}, CmnPkgTransactor: CmnPkgTransactor{contract: contract}, CmnPkgFilterer: CmnPkgFilterer{contract: contract}}, nil
  5254  }
  5255  
  5256  // NewCmnPkgCaller creates a new read-only instance of CmnPkg, bound to a specific deployed contract.
  5257  func NewCmnPkgCaller(address common.Address, caller bind.ContractCaller) (*CmnPkgCaller, error) {
  5258  	contract, err := bindCmnPkg(address, caller, nil, nil)
  5259  	if err != nil {
  5260  		return nil, err
  5261  	}
  5262  	return &CmnPkgCaller{contract: contract}, nil
  5263  }
  5264  
  5265  // NewCmnPkgTransactor creates a new write-only instance of CmnPkg, bound to a specific deployed contract.
  5266  func NewCmnPkgTransactor(address common.Address, transactor bind.ContractTransactor) (*CmnPkgTransactor, error) {
  5267  	contract, err := bindCmnPkg(address, nil, transactor, nil)
  5268  	if err != nil {
  5269  		return nil, err
  5270  	}
  5271  	return &CmnPkgTransactor{contract: contract}, nil
  5272  }
  5273  
  5274  // NewCmnPkgFilterer creates a new log filterer instance of CmnPkg, bound to a specific deployed contract.
  5275  func NewCmnPkgFilterer(address common.Address, filterer bind.ContractFilterer) (*CmnPkgFilterer, error) {
  5276  	contract, err := bindCmnPkg(address, nil, nil, filterer)
  5277  	if err != nil {
  5278  		return nil, err
  5279  	}
  5280  	return &CmnPkgFilterer{contract: contract}, nil
  5281  }
  5282  
  5283  // bindCmnPkg binds a generic wrapper to an already deployed contract.
  5284  func bindCmnPkg(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5285  	parsed, err := abi.JSON(strings.NewReader(CmnPkgABI))
  5286  	if err != nil {
  5287  		return nil, err
  5288  	}
  5289  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5290  }
  5291  
  5292  // Call invokes the (constant) contract method with params as input values and
  5293  // sets the output to result. The result type might be a single field for simple
  5294  // returns, a slice of interfaces for anonymous returns and a struct for named
  5295  // returns.
  5296  func (_CmnPkg *CmnPkgRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5297  	return _CmnPkg.Contract.CmnPkgCaller.contract.Call(opts, result, method, params...)
  5298  }
  5299  
  5300  // Transfer initiates a plain transaction to move funds to the contract, calling
  5301  // its default method if one is available.
  5302  func (_CmnPkg *CmnPkgRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5303  	return _CmnPkg.Contract.CmnPkgTransactor.contract.Transfer(opts)
  5304  }
  5305  
  5306  // Transact invokes the (paid) contract method with params as input values.
  5307  func (_CmnPkg *CmnPkgRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5308  	return _CmnPkg.Contract.CmnPkgTransactor.contract.Transact(opts, method, params...)
  5309  }
  5310  
  5311  // Call invokes the (constant) contract method with params as input values and
  5312  // sets the output to result. The result type might be a single field for simple
  5313  // returns, a slice of interfaces for anonymous returns and a struct for named
  5314  // returns.
  5315  func (_CmnPkg *CmnPkgCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5316  	return _CmnPkg.Contract.contract.Call(opts, result, method, params...)
  5317  }
  5318  
  5319  // Transfer initiates a plain transaction to move funds to the contract, calling
  5320  // its default method if one is available.
  5321  func (_CmnPkg *CmnPkgTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5322  	return _CmnPkg.Contract.contract.Transfer(opts)
  5323  }
  5324  
  5325  // Transact invokes the (paid) contract method with params as input values.
  5326  func (_CmnPkg *CmnPkgTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5327  	return _CmnPkg.Contract.contract.Transact(opts, method, params...)
  5328  }
  5329  
  5330  // IApplicationABI is the input ABI used to generate the binding from.
  5331  const IApplicationABI = "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleAckPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleFailAckPackage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"channelId\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"msgBytes\",\"type\":\"bytes\"}],\"name\":\"handleSynPackage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"responsePayload\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5332  
  5333  // IApplicationFuncSigs maps the 4-byte function signature to its string representation.
  5334  var IApplicationFuncSigs = map[string]string{
  5335  	"831d65d1": "handleAckPackage(uint8,bytes)",
  5336  	"c8509d81": "handleFailAckPackage(uint8,bytes)",
  5337  	"1182b875": "handleSynPackage(uint8,bytes)",
  5338  }
  5339  
  5340  // IApplication is an auto generated Go binding around an Ethereum contract.
  5341  type IApplication struct {
  5342  	IApplicationCaller     // Read-only binding to the contract
  5343  	IApplicationTransactor // Write-only binding to the contract
  5344  	IApplicationFilterer   // Log filterer for contract events
  5345  }
  5346  
  5347  // IApplicationCaller is an auto generated read-only Go binding around an Ethereum contract.
  5348  type IApplicationCaller struct {
  5349  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5350  }
  5351  
  5352  // IApplicationTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5353  type IApplicationTransactor struct {
  5354  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5355  }
  5356  
  5357  // IApplicationFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5358  type IApplicationFilterer struct {
  5359  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5360  }
  5361  
  5362  // IApplicationSession is an auto generated Go binding around an Ethereum contract,
  5363  // with pre-set call and transact options.
  5364  type IApplicationSession struct {
  5365  	Contract     *IApplication     // Generic contract binding to set the session for
  5366  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5367  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5368  }
  5369  
  5370  // IApplicationCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5371  // with pre-set call options.
  5372  type IApplicationCallerSession struct {
  5373  	Contract *IApplicationCaller // Generic contract caller binding to set the session for
  5374  	CallOpts bind.CallOpts       // Call options to use throughout this session
  5375  }
  5376  
  5377  // IApplicationTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5378  // with pre-set transact options.
  5379  type IApplicationTransactorSession struct {
  5380  	Contract     *IApplicationTransactor // Generic contract transactor binding to set the session for
  5381  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5382  }
  5383  
  5384  // IApplicationRaw is an auto generated low-level Go binding around an Ethereum contract.
  5385  type IApplicationRaw struct {
  5386  	Contract *IApplication // Generic contract binding to access the raw methods on
  5387  }
  5388  
  5389  // IApplicationCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5390  type IApplicationCallerRaw struct {
  5391  	Contract *IApplicationCaller // Generic read-only contract binding to access the raw methods on
  5392  }
  5393  
  5394  // IApplicationTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5395  type IApplicationTransactorRaw struct {
  5396  	Contract *IApplicationTransactor // Generic write-only contract binding to access the raw methods on
  5397  }
  5398  
  5399  // NewIApplication creates a new instance of IApplication, bound to a specific deployed contract.
  5400  func NewIApplication(address common.Address, backend bind.ContractBackend) (*IApplication, error) {
  5401  	contract, err := bindIApplication(address, backend, backend, backend)
  5402  	if err != nil {
  5403  		return nil, err
  5404  	}
  5405  	return &IApplication{IApplicationCaller: IApplicationCaller{contract: contract}, IApplicationTransactor: IApplicationTransactor{contract: contract}, IApplicationFilterer: IApplicationFilterer{contract: contract}}, nil
  5406  }
  5407  
  5408  // NewIApplicationCaller creates a new read-only instance of IApplication, bound to a specific deployed contract.
  5409  func NewIApplicationCaller(address common.Address, caller bind.ContractCaller) (*IApplicationCaller, error) {
  5410  	contract, err := bindIApplication(address, caller, nil, nil)
  5411  	if err != nil {
  5412  		return nil, err
  5413  	}
  5414  	return &IApplicationCaller{contract: contract}, nil
  5415  }
  5416  
  5417  // NewIApplicationTransactor creates a new write-only instance of IApplication, bound to a specific deployed contract.
  5418  func NewIApplicationTransactor(address common.Address, transactor bind.ContractTransactor) (*IApplicationTransactor, error) {
  5419  	contract, err := bindIApplication(address, nil, transactor, nil)
  5420  	if err != nil {
  5421  		return nil, err
  5422  	}
  5423  	return &IApplicationTransactor{contract: contract}, nil
  5424  }
  5425  
  5426  // NewIApplicationFilterer creates a new log filterer instance of IApplication, bound to a specific deployed contract.
  5427  func NewIApplicationFilterer(address common.Address, filterer bind.ContractFilterer) (*IApplicationFilterer, error) {
  5428  	contract, err := bindIApplication(address, nil, nil, filterer)
  5429  	if err != nil {
  5430  		return nil, err
  5431  	}
  5432  	return &IApplicationFilterer{contract: contract}, nil
  5433  }
  5434  
  5435  // bindIApplication binds a generic wrapper to an already deployed contract.
  5436  func bindIApplication(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5437  	parsed, err := abi.JSON(strings.NewReader(IApplicationABI))
  5438  	if err != nil {
  5439  		return nil, err
  5440  	}
  5441  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5442  }
  5443  
  5444  // Call invokes the (constant) contract method with params as input values and
  5445  // sets the output to result. The result type might be a single field for simple
  5446  // returns, a slice of interfaces for anonymous returns and a struct for named
  5447  // returns.
  5448  func (_IApplication *IApplicationRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5449  	return _IApplication.Contract.IApplicationCaller.contract.Call(opts, result, method, params...)
  5450  }
  5451  
  5452  // Transfer initiates a plain transaction to move funds to the contract, calling
  5453  // its default method if one is available.
  5454  func (_IApplication *IApplicationRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5455  	return _IApplication.Contract.IApplicationTransactor.contract.Transfer(opts)
  5456  }
  5457  
  5458  // Transact invokes the (paid) contract method with params as input values.
  5459  func (_IApplication *IApplicationRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5460  	return _IApplication.Contract.IApplicationTransactor.contract.Transact(opts, method, params...)
  5461  }
  5462  
  5463  // Call invokes the (constant) contract method with params as input values and
  5464  // sets the output to result. The result type might be a single field for simple
  5465  // returns, a slice of interfaces for anonymous returns and a struct for named
  5466  // returns.
  5467  func (_IApplication *IApplicationCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5468  	return _IApplication.Contract.contract.Call(opts, result, method, params...)
  5469  }
  5470  
  5471  // Transfer initiates a plain transaction to move funds to the contract, calling
  5472  // its default method if one is available.
  5473  func (_IApplication *IApplicationTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5474  	return _IApplication.Contract.contract.Transfer(opts)
  5475  }
  5476  
  5477  // Transact invokes the (paid) contract method with params as input values.
  5478  func (_IApplication *IApplicationTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5479  	return _IApplication.Contract.contract.Transact(opts, method, params...)
  5480  }
  5481  
  5482  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  5483  //
  5484  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  5485  func (_IApplication *IApplicationTransactor) HandleAckPackage(opts *bind.TransactOpts, channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5486  	return _IApplication.contract.Transact(opts, "handleAckPackage", channelId, msgBytes)
  5487  }
  5488  
  5489  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  5490  //
  5491  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  5492  func (_IApplication *IApplicationSession) HandleAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5493  	return _IApplication.Contract.HandleAckPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5494  }
  5495  
  5496  // HandleAckPackage is a paid mutator transaction binding the contract method 0x831d65d1.
  5497  //
  5498  // Solidity: function handleAckPackage(uint8 channelId, bytes msgBytes) returns()
  5499  func (_IApplication *IApplicationTransactorSession) HandleAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5500  	return _IApplication.Contract.HandleAckPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5501  }
  5502  
  5503  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  5504  //
  5505  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  5506  func (_IApplication *IApplicationTransactor) HandleFailAckPackage(opts *bind.TransactOpts, channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5507  	return _IApplication.contract.Transact(opts, "handleFailAckPackage", channelId, msgBytes)
  5508  }
  5509  
  5510  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  5511  //
  5512  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  5513  func (_IApplication *IApplicationSession) HandleFailAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5514  	return _IApplication.Contract.HandleFailAckPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5515  }
  5516  
  5517  // HandleFailAckPackage is a paid mutator transaction binding the contract method 0xc8509d81.
  5518  //
  5519  // Solidity: function handleFailAckPackage(uint8 channelId, bytes msgBytes) returns()
  5520  func (_IApplication *IApplicationTransactorSession) HandleFailAckPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5521  	return _IApplication.Contract.HandleFailAckPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5522  }
  5523  
  5524  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  5525  //
  5526  // Solidity: function handleSynPackage(uint8 channelId, bytes msgBytes) returns(bytes responsePayload)
  5527  func (_IApplication *IApplicationTransactor) HandleSynPackage(opts *bind.TransactOpts, channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5528  	return _IApplication.contract.Transact(opts, "handleSynPackage", channelId, msgBytes)
  5529  }
  5530  
  5531  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  5532  //
  5533  // Solidity: function handleSynPackage(uint8 channelId, bytes msgBytes) returns(bytes responsePayload)
  5534  func (_IApplication *IApplicationSession) HandleSynPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5535  	return _IApplication.Contract.HandleSynPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5536  }
  5537  
  5538  // HandleSynPackage is a paid mutator transaction binding the contract method 0x1182b875.
  5539  //
  5540  // Solidity: function handleSynPackage(uint8 channelId, bytes msgBytes) returns(bytes responsePayload)
  5541  func (_IApplication *IApplicationTransactorSession) HandleSynPackage(channelId uint8, msgBytes []byte) (*types.Transaction, error) {
  5542  	return _IApplication.Contract.HandleSynPackage(&_IApplication.TransactOpts, channelId, msgBytes)
  5543  }
  5544  
  5545  // IBSCValidatorSetABI is the input ABI used to generate the binding from.
  5546  const IBSCValidatorSetABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"felony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"misdemeanor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5547  
  5548  // IBSCValidatorSetFuncSigs maps the 4-byte function signature to its string representation.
  5549  var IBSCValidatorSetFuncSigs = map[string]string{
  5550  	"35409f7f": "felony(address)",
  5551  	"eb57e202": "misdemeanor(address)",
  5552  }
  5553  
  5554  // IBSCValidatorSet is an auto generated Go binding around an Ethereum contract.
  5555  type IBSCValidatorSet struct {
  5556  	IBSCValidatorSetCaller     // Read-only binding to the contract
  5557  	IBSCValidatorSetTransactor // Write-only binding to the contract
  5558  	IBSCValidatorSetFilterer   // Log filterer for contract events
  5559  }
  5560  
  5561  // IBSCValidatorSetCaller is an auto generated read-only Go binding around an Ethereum contract.
  5562  type IBSCValidatorSetCaller struct {
  5563  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5564  }
  5565  
  5566  // IBSCValidatorSetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5567  type IBSCValidatorSetTransactor struct {
  5568  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5569  }
  5570  
  5571  // IBSCValidatorSetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5572  type IBSCValidatorSetFilterer struct {
  5573  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5574  }
  5575  
  5576  // IBSCValidatorSetSession is an auto generated Go binding around an Ethereum contract,
  5577  // with pre-set call and transact options.
  5578  type IBSCValidatorSetSession struct {
  5579  	Contract     *IBSCValidatorSet // Generic contract binding to set the session for
  5580  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5581  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5582  }
  5583  
  5584  // IBSCValidatorSetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5585  // with pre-set call options.
  5586  type IBSCValidatorSetCallerSession struct {
  5587  	Contract *IBSCValidatorSetCaller // Generic contract caller binding to set the session for
  5588  	CallOpts bind.CallOpts           // Call options to use throughout this session
  5589  }
  5590  
  5591  // IBSCValidatorSetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5592  // with pre-set transact options.
  5593  type IBSCValidatorSetTransactorSession struct {
  5594  	Contract     *IBSCValidatorSetTransactor // Generic contract transactor binding to set the session for
  5595  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  5596  }
  5597  
  5598  // IBSCValidatorSetRaw is an auto generated low-level Go binding around an Ethereum contract.
  5599  type IBSCValidatorSetRaw struct {
  5600  	Contract *IBSCValidatorSet // Generic contract binding to access the raw methods on
  5601  }
  5602  
  5603  // IBSCValidatorSetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5604  type IBSCValidatorSetCallerRaw struct {
  5605  	Contract *IBSCValidatorSetCaller // Generic read-only contract binding to access the raw methods on
  5606  }
  5607  
  5608  // IBSCValidatorSetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5609  type IBSCValidatorSetTransactorRaw struct {
  5610  	Contract *IBSCValidatorSetTransactor // Generic write-only contract binding to access the raw methods on
  5611  }
  5612  
  5613  // NewIBSCValidatorSet creates a new instance of IBSCValidatorSet, bound to a specific deployed contract.
  5614  func NewIBSCValidatorSet(address common.Address, backend bind.ContractBackend) (*IBSCValidatorSet, error) {
  5615  	contract, err := bindIBSCValidatorSet(address, backend, backend, backend)
  5616  	if err != nil {
  5617  		return nil, err
  5618  	}
  5619  	return &IBSCValidatorSet{IBSCValidatorSetCaller: IBSCValidatorSetCaller{contract: contract}, IBSCValidatorSetTransactor: IBSCValidatorSetTransactor{contract: contract}, IBSCValidatorSetFilterer: IBSCValidatorSetFilterer{contract: contract}}, nil
  5620  }
  5621  
  5622  // NewIBSCValidatorSetCaller creates a new read-only instance of IBSCValidatorSet, bound to a specific deployed contract.
  5623  func NewIBSCValidatorSetCaller(address common.Address, caller bind.ContractCaller) (*IBSCValidatorSetCaller, error) {
  5624  	contract, err := bindIBSCValidatorSet(address, caller, nil, nil)
  5625  	if err != nil {
  5626  		return nil, err
  5627  	}
  5628  	return &IBSCValidatorSetCaller{contract: contract}, nil
  5629  }
  5630  
  5631  // NewIBSCValidatorSetTransactor creates a new write-only instance of IBSCValidatorSet, bound to a specific deployed contract.
  5632  func NewIBSCValidatorSetTransactor(address common.Address, transactor bind.ContractTransactor) (*IBSCValidatorSetTransactor, error) {
  5633  	contract, err := bindIBSCValidatorSet(address, nil, transactor, nil)
  5634  	if err != nil {
  5635  		return nil, err
  5636  	}
  5637  	return &IBSCValidatorSetTransactor{contract: contract}, nil
  5638  }
  5639  
  5640  // NewIBSCValidatorSetFilterer creates a new log filterer instance of IBSCValidatorSet, bound to a specific deployed contract.
  5641  func NewIBSCValidatorSetFilterer(address common.Address, filterer bind.ContractFilterer) (*IBSCValidatorSetFilterer, error) {
  5642  	contract, err := bindIBSCValidatorSet(address, nil, nil, filterer)
  5643  	if err != nil {
  5644  		return nil, err
  5645  	}
  5646  	return &IBSCValidatorSetFilterer{contract: contract}, nil
  5647  }
  5648  
  5649  // bindIBSCValidatorSet binds a generic wrapper to an already deployed contract.
  5650  func bindIBSCValidatorSet(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5651  	parsed, err := abi.JSON(strings.NewReader(IBSCValidatorSetABI))
  5652  	if err != nil {
  5653  		return nil, err
  5654  	}
  5655  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5656  }
  5657  
  5658  // Call invokes the (constant) contract method with params as input values and
  5659  // sets the output to result. The result type might be a single field for simple
  5660  // returns, a slice of interfaces for anonymous returns and a struct for named
  5661  // returns.
  5662  func (_IBSCValidatorSet *IBSCValidatorSetRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5663  	return _IBSCValidatorSet.Contract.IBSCValidatorSetCaller.contract.Call(opts, result, method, params...)
  5664  }
  5665  
  5666  // Transfer initiates a plain transaction to move funds to the contract, calling
  5667  // its default method if one is available.
  5668  func (_IBSCValidatorSet *IBSCValidatorSetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5669  	return _IBSCValidatorSet.Contract.IBSCValidatorSetTransactor.contract.Transfer(opts)
  5670  }
  5671  
  5672  // Transact invokes the (paid) contract method with params as input values.
  5673  func (_IBSCValidatorSet *IBSCValidatorSetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5674  	return _IBSCValidatorSet.Contract.IBSCValidatorSetTransactor.contract.Transact(opts, method, params...)
  5675  }
  5676  
  5677  // Call invokes the (constant) contract method with params as input values and
  5678  // sets the output to result. The result type might be a single field for simple
  5679  // returns, a slice of interfaces for anonymous returns and a struct for named
  5680  // returns.
  5681  func (_IBSCValidatorSet *IBSCValidatorSetCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5682  	return _IBSCValidatorSet.Contract.contract.Call(opts, result, method, params...)
  5683  }
  5684  
  5685  // Transfer initiates a plain transaction to move funds to the contract, calling
  5686  // its default method if one is available.
  5687  func (_IBSCValidatorSet *IBSCValidatorSetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5688  	return _IBSCValidatorSet.Contract.contract.Transfer(opts)
  5689  }
  5690  
  5691  // Transact invokes the (paid) contract method with params as input values.
  5692  func (_IBSCValidatorSet *IBSCValidatorSetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5693  	return _IBSCValidatorSet.Contract.contract.Transact(opts, method, params...)
  5694  }
  5695  
  5696  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  5697  //
  5698  // Solidity: function felony(address validator) returns()
  5699  func (_IBSCValidatorSet *IBSCValidatorSetTransactor) Felony(opts *bind.TransactOpts, validator common.Address) (*types.Transaction, error) {
  5700  	return _IBSCValidatorSet.contract.Transact(opts, "felony", validator)
  5701  }
  5702  
  5703  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  5704  //
  5705  // Solidity: function felony(address validator) returns()
  5706  func (_IBSCValidatorSet *IBSCValidatorSetSession) Felony(validator common.Address) (*types.Transaction, error) {
  5707  	return _IBSCValidatorSet.Contract.Felony(&_IBSCValidatorSet.TransactOpts, validator)
  5708  }
  5709  
  5710  // Felony is a paid mutator transaction binding the contract method 0x35409f7f.
  5711  //
  5712  // Solidity: function felony(address validator) returns()
  5713  func (_IBSCValidatorSet *IBSCValidatorSetTransactorSession) Felony(validator common.Address) (*types.Transaction, error) {
  5714  	return _IBSCValidatorSet.Contract.Felony(&_IBSCValidatorSet.TransactOpts, validator)
  5715  }
  5716  
  5717  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  5718  //
  5719  // Solidity: function misdemeanor(address validator) returns()
  5720  func (_IBSCValidatorSet *IBSCValidatorSetTransactor) Misdemeanor(opts *bind.TransactOpts, validator common.Address) (*types.Transaction, error) {
  5721  	return _IBSCValidatorSet.contract.Transact(opts, "misdemeanor", validator)
  5722  }
  5723  
  5724  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  5725  //
  5726  // Solidity: function misdemeanor(address validator) returns()
  5727  func (_IBSCValidatorSet *IBSCValidatorSetSession) Misdemeanor(validator common.Address) (*types.Transaction, error) {
  5728  	return _IBSCValidatorSet.Contract.Misdemeanor(&_IBSCValidatorSet.TransactOpts, validator)
  5729  }
  5730  
  5731  // Misdemeanor is a paid mutator transaction binding the contract method 0xeb57e202.
  5732  //
  5733  // Solidity: function misdemeanor(address validator) returns()
  5734  func (_IBSCValidatorSet *IBSCValidatorSetTransactorSession) Misdemeanor(validator common.Address) (*types.Transaction, error) {
  5735  	return _IBSCValidatorSet.Contract.Misdemeanor(&_IBSCValidatorSet.TransactOpts, validator)
  5736  }
  5737  
  5738  // ILightClientABI is the input ABI used to generate the binding from.
  5739  const ILightClientABI = "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"}],\"name\":\"getAppHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"}],\"name\":\"getSubmitter\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"}],\"name\":\"isHeaderSynced\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  5740  
  5741  // ILightClientFuncSigs maps the 4-byte function signature to its string representation.
  5742  var ILightClientFuncSigs = map[string]string{
  5743  	"cba510a9": "getAppHash(uint64)",
  5744  	"dda83148": "getSubmitter(uint64)",
  5745  	"df5fe704": "isHeaderSynced(uint64)",
  5746  }
  5747  
  5748  // ILightClient is an auto generated Go binding around an Ethereum contract.
  5749  type ILightClient struct {
  5750  	ILightClientCaller     // Read-only binding to the contract
  5751  	ILightClientTransactor // Write-only binding to the contract
  5752  	ILightClientFilterer   // Log filterer for contract events
  5753  }
  5754  
  5755  // ILightClientCaller is an auto generated read-only Go binding around an Ethereum contract.
  5756  type ILightClientCaller struct {
  5757  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5758  }
  5759  
  5760  // ILightClientTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5761  type ILightClientTransactor struct {
  5762  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5763  }
  5764  
  5765  // ILightClientFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5766  type ILightClientFilterer struct {
  5767  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5768  }
  5769  
  5770  // ILightClientSession is an auto generated Go binding around an Ethereum contract,
  5771  // with pre-set call and transact options.
  5772  type ILightClientSession struct {
  5773  	Contract     *ILightClient     // Generic contract binding to set the session for
  5774  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5775  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5776  }
  5777  
  5778  // ILightClientCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5779  // with pre-set call options.
  5780  type ILightClientCallerSession struct {
  5781  	Contract *ILightClientCaller // Generic contract caller binding to set the session for
  5782  	CallOpts bind.CallOpts       // Call options to use throughout this session
  5783  }
  5784  
  5785  // ILightClientTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5786  // with pre-set transact options.
  5787  type ILightClientTransactorSession struct {
  5788  	Contract     *ILightClientTransactor // Generic contract transactor binding to set the session for
  5789  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5790  }
  5791  
  5792  // ILightClientRaw is an auto generated low-level Go binding around an Ethereum contract.
  5793  type ILightClientRaw struct {
  5794  	Contract *ILightClient // Generic contract binding to access the raw methods on
  5795  }
  5796  
  5797  // ILightClientCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5798  type ILightClientCallerRaw struct {
  5799  	Contract *ILightClientCaller // Generic read-only contract binding to access the raw methods on
  5800  }
  5801  
  5802  // ILightClientTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5803  type ILightClientTransactorRaw struct {
  5804  	Contract *ILightClientTransactor // Generic write-only contract binding to access the raw methods on
  5805  }
  5806  
  5807  // NewILightClient creates a new instance of ILightClient, bound to a specific deployed contract.
  5808  func NewILightClient(address common.Address, backend bind.ContractBackend) (*ILightClient, error) {
  5809  	contract, err := bindILightClient(address, backend, backend, backend)
  5810  	if err != nil {
  5811  		return nil, err
  5812  	}
  5813  	return &ILightClient{ILightClientCaller: ILightClientCaller{contract: contract}, ILightClientTransactor: ILightClientTransactor{contract: contract}, ILightClientFilterer: ILightClientFilterer{contract: contract}}, nil
  5814  }
  5815  
  5816  // NewILightClientCaller creates a new read-only instance of ILightClient, bound to a specific deployed contract.
  5817  func NewILightClientCaller(address common.Address, caller bind.ContractCaller) (*ILightClientCaller, error) {
  5818  	contract, err := bindILightClient(address, caller, nil, nil)
  5819  	if err != nil {
  5820  		return nil, err
  5821  	}
  5822  	return &ILightClientCaller{contract: contract}, nil
  5823  }
  5824  
  5825  // NewILightClientTransactor creates a new write-only instance of ILightClient, bound to a specific deployed contract.
  5826  func NewILightClientTransactor(address common.Address, transactor bind.ContractTransactor) (*ILightClientTransactor, error) {
  5827  	contract, err := bindILightClient(address, nil, transactor, nil)
  5828  	if err != nil {
  5829  		return nil, err
  5830  	}
  5831  	return &ILightClientTransactor{contract: contract}, nil
  5832  }
  5833  
  5834  // NewILightClientFilterer creates a new log filterer instance of ILightClient, bound to a specific deployed contract.
  5835  func NewILightClientFilterer(address common.Address, filterer bind.ContractFilterer) (*ILightClientFilterer, error) {
  5836  	contract, err := bindILightClient(address, nil, nil, filterer)
  5837  	if err != nil {
  5838  		return nil, err
  5839  	}
  5840  	return &ILightClientFilterer{contract: contract}, nil
  5841  }
  5842  
  5843  // bindILightClient binds a generic wrapper to an already deployed contract.
  5844  func bindILightClient(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5845  	parsed, err := abi.JSON(strings.NewReader(ILightClientABI))
  5846  	if err != nil {
  5847  		return nil, err
  5848  	}
  5849  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5850  }
  5851  
  5852  // Call invokes the (constant) contract method with params as input values and
  5853  // sets the output to result. The result type might be a single field for simple
  5854  // returns, a slice of interfaces for anonymous returns and a struct for named
  5855  // returns.
  5856  func (_ILightClient *ILightClientRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5857  	return _ILightClient.Contract.ILightClientCaller.contract.Call(opts, result, method, params...)
  5858  }
  5859  
  5860  // Transfer initiates a plain transaction to move funds to the contract, calling
  5861  // its default method if one is available.
  5862  func (_ILightClient *ILightClientRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5863  	return _ILightClient.Contract.ILightClientTransactor.contract.Transfer(opts)
  5864  }
  5865  
  5866  // Transact invokes the (paid) contract method with params as input values.
  5867  func (_ILightClient *ILightClientRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5868  	return _ILightClient.Contract.ILightClientTransactor.contract.Transact(opts, method, params...)
  5869  }
  5870  
  5871  // Call invokes the (constant) contract method with params as input values and
  5872  // sets the output to result. The result type might be a single field for simple
  5873  // returns, a slice of interfaces for anonymous returns and a struct for named
  5874  // returns.
  5875  func (_ILightClient *ILightClientCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5876  	return _ILightClient.Contract.contract.Call(opts, result, method, params...)
  5877  }
  5878  
  5879  // Transfer initiates a plain transaction to move funds to the contract, calling
  5880  // its default method if one is available.
  5881  func (_ILightClient *ILightClientTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5882  	return _ILightClient.Contract.contract.Transfer(opts)
  5883  }
  5884  
  5885  // Transact invokes the (paid) contract method with params as input values.
  5886  func (_ILightClient *ILightClientTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5887  	return _ILightClient.Contract.contract.Transact(opts, method, params...)
  5888  }
  5889  
  5890  // GetAppHash is a free data retrieval call binding the contract method 0xcba510a9.
  5891  //
  5892  // Solidity: function getAppHash(uint64 height) view returns(bytes32)
  5893  func (_ILightClient *ILightClientCaller) GetAppHash(opts *bind.CallOpts, height uint64) ([32]byte, error) {
  5894  	var out []interface{}
  5895  	err := _ILightClient.contract.Call(opts, &out, "getAppHash", height)
  5896  
  5897  	if err != nil {
  5898  		return *new([32]byte), err
  5899  	}
  5900  
  5901  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  5902  
  5903  	return out0, err
  5904  
  5905  }
  5906  
  5907  // GetAppHash is a free data retrieval call binding the contract method 0xcba510a9.
  5908  //
  5909  // Solidity: function getAppHash(uint64 height) view returns(bytes32)
  5910  func (_ILightClient *ILightClientSession) GetAppHash(height uint64) ([32]byte, error) {
  5911  	return _ILightClient.Contract.GetAppHash(&_ILightClient.CallOpts, height)
  5912  }
  5913  
  5914  // GetAppHash is a free data retrieval call binding the contract method 0xcba510a9.
  5915  //
  5916  // Solidity: function getAppHash(uint64 height) view returns(bytes32)
  5917  func (_ILightClient *ILightClientCallerSession) GetAppHash(height uint64) ([32]byte, error) {
  5918  	return _ILightClient.Contract.GetAppHash(&_ILightClient.CallOpts, height)
  5919  }
  5920  
  5921  // GetSubmitter is a free data retrieval call binding the contract method 0xdda83148.
  5922  //
  5923  // Solidity: function getSubmitter(uint64 height) view returns(address)
  5924  func (_ILightClient *ILightClientCaller) GetSubmitter(opts *bind.CallOpts, height uint64) (common.Address, error) {
  5925  	var out []interface{}
  5926  	err := _ILightClient.contract.Call(opts, &out, "getSubmitter", height)
  5927  
  5928  	if err != nil {
  5929  		return *new(common.Address), err
  5930  	}
  5931  
  5932  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5933  
  5934  	return out0, err
  5935  
  5936  }
  5937  
  5938  // GetSubmitter is a free data retrieval call binding the contract method 0xdda83148.
  5939  //
  5940  // Solidity: function getSubmitter(uint64 height) view returns(address)
  5941  func (_ILightClient *ILightClientSession) GetSubmitter(height uint64) (common.Address, error) {
  5942  	return _ILightClient.Contract.GetSubmitter(&_ILightClient.CallOpts, height)
  5943  }
  5944  
  5945  // GetSubmitter is a free data retrieval call binding the contract method 0xdda83148.
  5946  //
  5947  // Solidity: function getSubmitter(uint64 height) view returns(address)
  5948  func (_ILightClient *ILightClientCallerSession) GetSubmitter(height uint64) (common.Address, error) {
  5949  	return _ILightClient.Contract.GetSubmitter(&_ILightClient.CallOpts, height)
  5950  }
  5951  
  5952  // IsHeaderSynced is a free data retrieval call binding the contract method 0xdf5fe704.
  5953  //
  5954  // Solidity: function isHeaderSynced(uint64 height) view returns(bool)
  5955  func (_ILightClient *ILightClientCaller) IsHeaderSynced(opts *bind.CallOpts, height uint64) (bool, error) {
  5956  	var out []interface{}
  5957  	err := _ILightClient.contract.Call(opts, &out, "isHeaderSynced", height)
  5958  
  5959  	if err != nil {
  5960  		return *new(bool), err
  5961  	}
  5962  
  5963  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5964  
  5965  	return out0, err
  5966  
  5967  }
  5968  
  5969  // IsHeaderSynced is a free data retrieval call binding the contract method 0xdf5fe704.
  5970  //
  5971  // Solidity: function isHeaderSynced(uint64 height) view returns(bool)
  5972  func (_ILightClient *ILightClientSession) IsHeaderSynced(height uint64) (bool, error) {
  5973  	return _ILightClient.Contract.IsHeaderSynced(&_ILightClient.CallOpts, height)
  5974  }
  5975  
  5976  // IsHeaderSynced is a free data retrieval call binding the contract method 0xdf5fe704.
  5977  //
  5978  // Solidity: function isHeaderSynced(uint64 height) view returns(bool)
  5979  func (_ILightClient *ILightClientCallerSession) IsHeaderSynced(height uint64) (bool, error) {
  5980  	return _ILightClient.Contract.IsHeaderSynced(&_ILightClient.CallOpts, height)
  5981  }
  5982  
  5983  // IParamSubscriberABI is the input ABI used to generate the binding from.
  5984  const IParamSubscriberABI = "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"updateParam\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5985  
  5986  // IParamSubscriberFuncSigs maps the 4-byte function signature to its string representation.
  5987  var IParamSubscriberFuncSigs = map[string]string{
  5988  	"ac431751": "updateParam(string,bytes)",
  5989  }
  5990  
  5991  // IParamSubscriber is an auto generated Go binding around an Ethereum contract.
  5992  type IParamSubscriber struct {
  5993  	IParamSubscriberCaller     // Read-only binding to the contract
  5994  	IParamSubscriberTransactor // Write-only binding to the contract
  5995  	IParamSubscriberFilterer   // Log filterer for contract events
  5996  }
  5997  
  5998  // IParamSubscriberCaller is an auto generated read-only Go binding around an Ethereum contract.
  5999  type IParamSubscriberCaller struct {
  6000  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6001  }
  6002  
  6003  // IParamSubscriberTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6004  type IParamSubscriberTransactor struct {
  6005  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6006  }
  6007  
  6008  // IParamSubscriberFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6009  type IParamSubscriberFilterer struct {
  6010  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6011  }
  6012  
  6013  // IParamSubscriberSession is an auto generated Go binding around an Ethereum contract,
  6014  // with pre-set call and transact options.
  6015  type IParamSubscriberSession struct {
  6016  	Contract     *IParamSubscriber // Generic contract binding to set the session for
  6017  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6018  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6019  }
  6020  
  6021  // IParamSubscriberCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6022  // with pre-set call options.
  6023  type IParamSubscriberCallerSession struct {
  6024  	Contract *IParamSubscriberCaller // Generic contract caller binding to set the session for
  6025  	CallOpts bind.CallOpts           // Call options to use throughout this session
  6026  }
  6027  
  6028  // IParamSubscriberTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6029  // with pre-set transact options.
  6030  type IParamSubscriberTransactorSession struct {
  6031  	Contract     *IParamSubscriberTransactor // Generic contract transactor binding to set the session for
  6032  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  6033  }
  6034  
  6035  // IParamSubscriberRaw is an auto generated low-level Go binding around an Ethereum contract.
  6036  type IParamSubscriberRaw struct {
  6037  	Contract *IParamSubscriber // Generic contract binding to access the raw methods on
  6038  }
  6039  
  6040  // IParamSubscriberCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6041  type IParamSubscriberCallerRaw struct {
  6042  	Contract *IParamSubscriberCaller // Generic read-only contract binding to access the raw methods on
  6043  }
  6044  
  6045  // IParamSubscriberTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6046  type IParamSubscriberTransactorRaw struct {
  6047  	Contract *IParamSubscriberTransactor // Generic write-only contract binding to access the raw methods on
  6048  }
  6049  
  6050  // NewIParamSubscriber creates a new instance of IParamSubscriber, bound to a specific deployed contract.
  6051  func NewIParamSubscriber(address common.Address, backend bind.ContractBackend) (*IParamSubscriber, error) {
  6052  	contract, err := bindIParamSubscriber(address, backend, backend, backend)
  6053  	if err != nil {
  6054  		return nil, err
  6055  	}
  6056  	return &IParamSubscriber{IParamSubscriberCaller: IParamSubscriberCaller{contract: contract}, IParamSubscriberTransactor: IParamSubscriberTransactor{contract: contract}, IParamSubscriberFilterer: IParamSubscriberFilterer{contract: contract}}, nil
  6057  }
  6058  
  6059  // NewIParamSubscriberCaller creates a new read-only instance of IParamSubscriber, bound to a specific deployed contract.
  6060  func NewIParamSubscriberCaller(address common.Address, caller bind.ContractCaller) (*IParamSubscriberCaller, error) {
  6061  	contract, err := bindIParamSubscriber(address, caller, nil, nil)
  6062  	if err != nil {
  6063  		return nil, err
  6064  	}
  6065  	return &IParamSubscriberCaller{contract: contract}, nil
  6066  }
  6067  
  6068  // NewIParamSubscriberTransactor creates a new write-only instance of IParamSubscriber, bound to a specific deployed contract.
  6069  func NewIParamSubscriberTransactor(address common.Address, transactor bind.ContractTransactor) (*IParamSubscriberTransactor, error) {
  6070  	contract, err := bindIParamSubscriber(address, nil, transactor, nil)
  6071  	if err != nil {
  6072  		return nil, err
  6073  	}
  6074  	return &IParamSubscriberTransactor{contract: contract}, nil
  6075  }
  6076  
  6077  // NewIParamSubscriberFilterer creates a new log filterer instance of IParamSubscriber, bound to a specific deployed contract.
  6078  func NewIParamSubscriberFilterer(address common.Address, filterer bind.ContractFilterer) (*IParamSubscriberFilterer, error) {
  6079  	contract, err := bindIParamSubscriber(address, nil, nil, filterer)
  6080  	if err != nil {
  6081  		return nil, err
  6082  	}
  6083  	return &IParamSubscriberFilterer{contract: contract}, nil
  6084  }
  6085  
  6086  // bindIParamSubscriber binds a generic wrapper to an already deployed contract.
  6087  func bindIParamSubscriber(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6088  	parsed, err := abi.JSON(strings.NewReader(IParamSubscriberABI))
  6089  	if err != nil {
  6090  		return nil, err
  6091  	}
  6092  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6093  }
  6094  
  6095  // Call invokes the (constant) contract method with params as input values and
  6096  // sets the output to result. The result type might be a single field for simple
  6097  // returns, a slice of interfaces for anonymous returns and a struct for named
  6098  // returns.
  6099  func (_IParamSubscriber *IParamSubscriberRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6100  	return _IParamSubscriber.Contract.IParamSubscriberCaller.contract.Call(opts, result, method, params...)
  6101  }
  6102  
  6103  // Transfer initiates a plain transaction to move funds to the contract, calling
  6104  // its default method if one is available.
  6105  func (_IParamSubscriber *IParamSubscriberRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6106  	return _IParamSubscriber.Contract.IParamSubscriberTransactor.contract.Transfer(opts)
  6107  }
  6108  
  6109  // Transact invokes the (paid) contract method with params as input values.
  6110  func (_IParamSubscriber *IParamSubscriberRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6111  	return _IParamSubscriber.Contract.IParamSubscriberTransactor.contract.Transact(opts, method, params...)
  6112  }
  6113  
  6114  // Call invokes the (constant) contract method with params as input values and
  6115  // sets the output to result. The result type might be a single field for simple
  6116  // returns, a slice of interfaces for anonymous returns and a struct for named
  6117  // returns.
  6118  func (_IParamSubscriber *IParamSubscriberCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6119  	return _IParamSubscriber.Contract.contract.Call(opts, result, method, params...)
  6120  }
  6121  
  6122  // Transfer initiates a plain transaction to move funds to the contract, calling
  6123  // its default method if one is available.
  6124  func (_IParamSubscriber *IParamSubscriberTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6125  	return _IParamSubscriber.Contract.contract.Transfer(opts)
  6126  }
  6127  
  6128  // Transact invokes the (paid) contract method with params as input values.
  6129  func (_IParamSubscriber *IParamSubscriberTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6130  	return _IParamSubscriber.Contract.contract.Transact(opts, method, params...)
  6131  }
  6132  
  6133  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  6134  //
  6135  // Solidity: function updateParam(string key, bytes value) returns()
  6136  func (_IParamSubscriber *IParamSubscriberTransactor) UpdateParam(opts *bind.TransactOpts, key string, value []byte) (*types.Transaction, error) {
  6137  	return _IParamSubscriber.contract.Transact(opts, "updateParam", key, value)
  6138  }
  6139  
  6140  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  6141  //
  6142  // Solidity: function updateParam(string key, bytes value) returns()
  6143  func (_IParamSubscriber *IParamSubscriberSession) UpdateParam(key string, value []byte) (*types.Transaction, error) {
  6144  	return _IParamSubscriber.Contract.UpdateParam(&_IParamSubscriber.TransactOpts, key, value)
  6145  }
  6146  
  6147  // UpdateParam is a paid mutator transaction binding the contract method 0xac431751.
  6148  //
  6149  // Solidity: function updateParam(string key, bytes value) returns()
  6150  func (_IParamSubscriber *IParamSubscriberTransactorSession) UpdateParam(key string, value []byte) (*types.Transaction, error) {
  6151  	return _IParamSubscriber.Contract.UpdateParam(&_IParamSubscriber.TransactOpts, key, value)
  6152  }
  6153  
  6154  // IRelayerHubABI is the input ABI used to generate the binding from.
  6155  const IRelayerHubABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  6156  
  6157  // IRelayerHubFuncSigs maps the 4-byte function signature to its string representation.
  6158  var IRelayerHubFuncSigs = map[string]string{
  6159  	"541d5548": "isRelayer(address)",
  6160  }
  6161  
  6162  // IRelayerHub is an auto generated Go binding around an Ethereum contract.
  6163  type IRelayerHub struct {
  6164  	IRelayerHubCaller     // Read-only binding to the contract
  6165  	IRelayerHubTransactor // Write-only binding to the contract
  6166  	IRelayerHubFilterer   // Log filterer for contract events
  6167  }
  6168  
  6169  // IRelayerHubCaller is an auto generated read-only Go binding around an Ethereum contract.
  6170  type IRelayerHubCaller struct {
  6171  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6172  }
  6173  
  6174  // IRelayerHubTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6175  type IRelayerHubTransactor struct {
  6176  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6177  }
  6178  
  6179  // IRelayerHubFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6180  type IRelayerHubFilterer struct {
  6181  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6182  }
  6183  
  6184  // IRelayerHubSession is an auto generated Go binding around an Ethereum contract,
  6185  // with pre-set call and transact options.
  6186  type IRelayerHubSession struct {
  6187  	Contract     *IRelayerHub      // Generic contract binding to set the session for
  6188  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6189  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6190  }
  6191  
  6192  // IRelayerHubCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6193  // with pre-set call options.
  6194  type IRelayerHubCallerSession struct {
  6195  	Contract *IRelayerHubCaller // Generic contract caller binding to set the session for
  6196  	CallOpts bind.CallOpts      // Call options to use throughout this session
  6197  }
  6198  
  6199  // IRelayerHubTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6200  // with pre-set transact options.
  6201  type IRelayerHubTransactorSession struct {
  6202  	Contract     *IRelayerHubTransactor // Generic contract transactor binding to set the session for
  6203  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  6204  }
  6205  
  6206  // IRelayerHubRaw is an auto generated low-level Go binding around an Ethereum contract.
  6207  type IRelayerHubRaw struct {
  6208  	Contract *IRelayerHub // Generic contract binding to access the raw methods on
  6209  }
  6210  
  6211  // IRelayerHubCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6212  type IRelayerHubCallerRaw struct {
  6213  	Contract *IRelayerHubCaller // Generic read-only contract binding to access the raw methods on
  6214  }
  6215  
  6216  // IRelayerHubTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6217  type IRelayerHubTransactorRaw struct {
  6218  	Contract *IRelayerHubTransactor // Generic write-only contract binding to access the raw methods on
  6219  }
  6220  
  6221  // NewIRelayerHub creates a new instance of IRelayerHub, bound to a specific deployed contract.
  6222  func NewIRelayerHub(address common.Address, backend bind.ContractBackend) (*IRelayerHub, error) {
  6223  	contract, err := bindIRelayerHub(address, backend, backend, backend)
  6224  	if err != nil {
  6225  		return nil, err
  6226  	}
  6227  	return &IRelayerHub{IRelayerHubCaller: IRelayerHubCaller{contract: contract}, IRelayerHubTransactor: IRelayerHubTransactor{contract: contract}, IRelayerHubFilterer: IRelayerHubFilterer{contract: contract}}, nil
  6228  }
  6229  
  6230  // NewIRelayerHubCaller creates a new read-only instance of IRelayerHub, bound to a specific deployed contract.
  6231  func NewIRelayerHubCaller(address common.Address, caller bind.ContractCaller) (*IRelayerHubCaller, error) {
  6232  	contract, err := bindIRelayerHub(address, caller, nil, nil)
  6233  	if err != nil {
  6234  		return nil, err
  6235  	}
  6236  	return &IRelayerHubCaller{contract: contract}, nil
  6237  }
  6238  
  6239  // NewIRelayerHubTransactor creates a new write-only instance of IRelayerHub, bound to a specific deployed contract.
  6240  func NewIRelayerHubTransactor(address common.Address, transactor bind.ContractTransactor) (*IRelayerHubTransactor, error) {
  6241  	contract, err := bindIRelayerHub(address, nil, transactor, nil)
  6242  	if err != nil {
  6243  		return nil, err
  6244  	}
  6245  	return &IRelayerHubTransactor{contract: contract}, nil
  6246  }
  6247  
  6248  // NewIRelayerHubFilterer creates a new log filterer instance of IRelayerHub, bound to a specific deployed contract.
  6249  func NewIRelayerHubFilterer(address common.Address, filterer bind.ContractFilterer) (*IRelayerHubFilterer, error) {
  6250  	contract, err := bindIRelayerHub(address, nil, nil, filterer)
  6251  	if err != nil {
  6252  		return nil, err
  6253  	}
  6254  	return &IRelayerHubFilterer{contract: contract}, nil
  6255  }
  6256  
  6257  // bindIRelayerHub binds a generic wrapper to an already deployed contract.
  6258  func bindIRelayerHub(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6259  	parsed, err := abi.JSON(strings.NewReader(IRelayerHubABI))
  6260  	if err != nil {
  6261  		return nil, err
  6262  	}
  6263  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6264  }
  6265  
  6266  // Call invokes the (constant) contract method with params as input values and
  6267  // sets the output to result. The result type might be a single field for simple
  6268  // returns, a slice of interfaces for anonymous returns and a struct for named
  6269  // returns.
  6270  func (_IRelayerHub *IRelayerHubRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6271  	return _IRelayerHub.Contract.IRelayerHubCaller.contract.Call(opts, result, method, params...)
  6272  }
  6273  
  6274  // Transfer initiates a plain transaction to move funds to the contract, calling
  6275  // its default method if one is available.
  6276  func (_IRelayerHub *IRelayerHubRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6277  	return _IRelayerHub.Contract.IRelayerHubTransactor.contract.Transfer(opts)
  6278  }
  6279  
  6280  // Transact invokes the (paid) contract method with params as input values.
  6281  func (_IRelayerHub *IRelayerHubRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6282  	return _IRelayerHub.Contract.IRelayerHubTransactor.contract.Transact(opts, method, params...)
  6283  }
  6284  
  6285  // Call invokes the (constant) contract method with params as input values and
  6286  // sets the output to result. The result type might be a single field for simple
  6287  // returns, a slice of interfaces for anonymous returns and a struct for named
  6288  // returns.
  6289  func (_IRelayerHub *IRelayerHubCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6290  	return _IRelayerHub.Contract.contract.Call(opts, result, method, params...)
  6291  }
  6292  
  6293  // Transfer initiates a plain transaction to move funds to the contract, calling
  6294  // its default method if one is available.
  6295  func (_IRelayerHub *IRelayerHubTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6296  	return _IRelayerHub.Contract.contract.Transfer(opts)
  6297  }
  6298  
  6299  // Transact invokes the (paid) contract method with params as input values.
  6300  func (_IRelayerHub *IRelayerHubTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6301  	return _IRelayerHub.Contract.contract.Transact(opts, method, params...)
  6302  }
  6303  
  6304  // IsRelayer is a free data retrieval call binding the contract method 0x541d5548.
  6305  //
  6306  // Solidity: function isRelayer(address sender) view returns(bool)
  6307  func (_IRelayerHub *IRelayerHubCaller) IsRelayer(opts *bind.CallOpts, sender common.Address) (bool, error) {
  6308  	var out []interface{}
  6309  	err := _IRelayerHub.contract.Call(opts, &out, "isRelayer", sender)
  6310  
  6311  	if err != nil {
  6312  		return *new(bool), err
  6313  	}
  6314  
  6315  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6316  
  6317  	return out0, err
  6318  
  6319  }
  6320  
  6321  // IsRelayer is a free data retrieval call binding the contract method 0x541d5548.
  6322  //
  6323  // Solidity: function isRelayer(address sender) view returns(bool)
  6324  func (_IRelayerHub *IRelayerHubSession) IsRelayer(sender common.Address) (bool, error) {
  6325  	return _IRelayerHub.Contract.IsRelayer(&_IRelayerHub.CallOpts, sender)
  6326  }
  6327  
  6328  // IsRelayer is a free data retrieval call binding the contract method 0x541d5548.
  6329  //
  6330  // Solidity: function isRelayer(address sender) view returns(bool)
  6331  func (_IRelayerHub *IRelayerHubCallerSession) IsRelayer(sender common.Address) (bool, error) {
  6332  	return _IRelayerHub.Contract.IsRelayer(&_IRelayerHub.CallOpts, sender)
  6333  }
  6334  
  6335  // ISlashIndicatorABI is the input ABI used to generate the binding from.
  6336  const ISlashIndicatorABI = "[{\"inputs\":[],\"name\":\"clean\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6337  
  6338  // ISlashIndicatorFuncSigs maps the 4-byte function signature to its string representation.
  6339  var ISlashIndicatorFuncSigs = map[string]string{
  6340  	"fc4333cd": "clean()",
  6341  }
  6342  
  6343  // ISlashIndicator is an auto generated Go binding around an Ethereum contract.
  6344  type ISlashIndicator struct {
  6345  	ISlashIndicatorCaller     // Read-only binding to the contract
  6346  	ISlashIndicatorTransactor // Write-only binding to the contract
  6347  	ISlashIndicatorFilterer   // Log filterer for contract events
  6348  }
  6349  
  6350  // ISlashIndicatorCaller is an auto generated read-only Go binding around an Ethereum contract.
  6351  type ISlashIndicatorCaller struct {
  6352  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6353  }
  6354  
  6355  // ISlashIndicatorTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6356  type ISlashIndicatorTransactor struct {
  6357  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6358  }
  6359  
  6360  // ISlashIndicatorFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6361  type ISlashIndicatorFilterer struct {
  6362  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6363  }
  6364  
  6365  // ISlashIndicatorSession is an auto generated Go binding around an Ethereum contract,
  6366  // with pre-set call and transact options.
  6367  type ISlashIndicatorSession struct {
  6368  	Contract     *ISlashIndicator  // Generic contract binding to set the session for
  6369  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6370  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6371  }
  6372  
  6373  // ISlashIndicatorCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6374  // with pre-set call options.
  6375  type ISlashIndicatorCallerSession struct {
  6376  	Contract *ISlashIndicatorCaller // Generic contract caller binding to set the session for
  6377  	CallOpts bind.CallOpts          // Call options to use throughout this session
  6378  }
  6379  
  6380  // ISlashIndicatorTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6381  // with pre-set transact options.
  6382  type ISlashIndicatorTransactorSession struct {
  6383  	Contract     *ISlashIndicatorTransactor // Generic contract transactor binding to set the session for
  6384  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  6385  }
  6386  
  6387  // ISlashIndicatorRaw is an auto generated low-level Go binding around an Ethereum contract.
  6388  type ISlashIndicatorRaw struct {
  6389  	Contract *ISlashIndicator // Generic contract binding to access the raw methods on
  6390  }
  6391  
  6392  // ISlashIndicatorCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6393  type ISlashIndicatorCallerRaw struct {
  6394  	Contract *ISlashIndicatorCaller // Generic read-only contract binding to access the raw methods on
  6395  }
  6396  
  6397  // ISlashIndicatorTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6398  type ISlashIndicatorTransactorRaw struct {
  6399  	Contract *ISlashIndicatorTransactor // Generic write-only contract binding to access the raw methods on
  6400  }
  6401  
  6402  // NewISlashIndicator creates a new instance of ISlashIndicator, bound to a specific deployed contract.
  6403  func NewISlashIndicator(address common.Address, backend bind.ContractBackend) (*ISlashIndicator, error) {
  6404  	contract, err := bindISlashIndicator(address, backend, backend, backend)
  6405  	if err != nil {
  6406  		return nil, err
  6407  	}
  6408  	return &ISlashIndicator{ISlashIndicatorCaller: ISlashIndicatorCaller{contract: contract}, ISlashIndicatorTransactor: ISlashIndicatorTransactor{contract: contract}, ISlashIndicatorFilterer: ISlashIndicatorFilterer{contract: contract}}, nil
  6409  }
  6410  
  6411  // NewISlashIndicatorCaller creates a new read-only instance of ISlashIndicator, bound to a specific deployed contract.
  6412  func NewISlashIndicatorCaller(address common.Address, caller bind.ContractCaller) (*ISlashIndicatorCaller, error) {
  6413  	contract, err := bindISlashIndicator(address, caller, nil, nil)
  6414  	if err != nil {
  6415  		return nil, err
  6416  	}
  6417  	return &ISlashIndicatorCaller{contract: contract}, nil
  6418  }
  6419  
  6420  // NewISlashIndicatorTransactor creates a new write-only instance of ISlashIndicator, bound to a specific deployed contract.
  6421  func NewISlashIndicatorTransactor(address common.Address, transactor bind.ContractTransactor) (*ISlashIndicatorTransactor, error) {
  6422  	contract, err := bindISlashIndicator(address, nil, transactor, nil)
  6423  	if err != nil {
  6424  		return nil, err
  6425  	}
  6426  	return &ISlashIndicatorTransactor{contract: contract}, nil
  6427  }
  6428  
  6429  // NewISlashIndicatorFilterer creates a new log filterer instance of ISlashIndicator, bound to a specific deployed contract.
  6430  func NewISlashIndicatorFilterer(address common.Address, filterer bind.ContractFilterer) (*ISlashIndicatorFilterer, error) {
  6431  	contract, err := bindISlashIndicator(address, nil, nil, filterer)
  6432  	if err != nil {
  6433  		return nil, err
  6434  	}
  6435  	return &ISlashIndicatorFilterer{contract: contract}, nil
  6436  }
  6437  
  6438  // bindISlashIndicator binds a generic wrapper to an already deployed contract.
  6439  func bindISlashIndicator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6440  	parsed, err := abi.JSON(strings.NewReader(ISlashIndicatorABI))
  6441  	if err != nil {
  6442  		return nil, err
  6443  	}
  6444  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6445  }
  6446  
  6447  // Call invokes the (constant) contract method with params as input values and
  6448  // sets the output to result. The result type might be a single field for simple
  6449  // returns, a slice of interfaces for anonymous returns and a struct for named
  6450  // returns.
  6451  func (_ISlashIndicator *ISlashIndicatorRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6452  	return _ISlashIndicator.Contract.ISlashIndicatorCaller.contract.Call(opts, result, method, params...)
  6453  }
  6454  
  6455  // Transfer initiates a plain transaction to move funds to the contract, calling
  6456  // its default method if one is available.
  6457  func (_ISlashIndicator *ISlashIndicatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6458  	return _ISlashIndicator.Contract.ISlashIndicatorTransactor.contract.Transfer(opts)
  6459  }
  6460  
  6461  // Transact invokes the (paid) contract method with params as input values.
  6462  func (_ISlashIndicator *ISlashIndicatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6463  	return _ISlashIndicator.Contract.ISlashIndicatorTransactor.contract.Transact(opts, method, params...)
  6464  }
  6465  
  6466  // Call invokes the (constant) contract method with params as input values and
  6467  // sets the output to result. The result type might be a single field for simple
  6468  // returns, a slice of interfaces for anonymous returns and a struct for named
  6469  // returns.
  6470  func (_ISlashIndicator *ISlashIndicatorCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6471  	return _ISlashIndicator.Contract.contract.Call(opts, result, method, params...)
  6472  }
  6473  
  6474  // Transfer initiates a plain transaction to move funds to the contract, calling
  6475  // its default method if one is available.
  6476  func (_ISlashIndicator *ISlashIndicatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6477  	return _ISlashIndicator.Contract.contract.Transfer(opts)
  6478  }
  6479  
  6480  // Transact invokes the (paid) contract method with params as input values.
  6481  func (_ISlashIndicator *ISlashIndicatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6482  	return _ISlashIndicator.Contract.contract.Transact(opts, method, params...)
  6483  }
  6484  
  6485  // Clean is a paid mutator transaction binding the contract method 0xfc4333cd.
  6486  //
  6487  // Solidity: function clean() returns()
  6488  func (_ISlashIndicator *ISlashIndicatorTransactor) Clean(opts *bind.TransactOpts) (*types.Transaction, error) {
  6489  	return _ISlashIndicator.contract.Transact(opts, "clean")
  6490  }
  6491  
  6492  // Clean is a paid mutator transaction binding the contract method 0xfc4333cd.
  6493  //
  6494  // Solidity: function clean() returns()
  6495  func (_ISlashIndicator *ISlashIndicatorSession) Clean() (*types.Transaction, error) {
  6496  	return _ISlashIndicator.Contract.Clean(&_ISlashIndicator.TransactOpts)
  6497  }
  6498  
  6499  // Clean is a paid mutator transaction binding the contract method 0xfc4333cd.
  6500  //
  6501  // Solidity: function clean() returns()
  6502  func (_ISlashIndicator *ISlashIndicatorTransactorSession) Clean() (*types.Transaction, error) {
  6503  	return _ISlashIndicator.Contract.Clean(&_ISlashIndicator.TransactOpts)
  6504  }
  6505  
  6506  // ISystemRewardABI is the input ABI used to generate the binding from.
  6507  const ISystemRewardABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"claimRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6508  
  6509  // ISystemRewardFuncSigs maps the 4-byte function signature to its string representation.
  6510  var ISystemRewardFuncSigs = map[string]string{
  6511  	"9a99b4f0": "claimRewards(address,uint256)",
  6512  }
  6513  
  6514  // ISystemReward is an auto generated Go binding around an Ethereum contract.
  6515  type ISystemReward struct {
  6516  	ISystemRewardCaller     // Read-only binding to the contract
  6517  	ISystemRewardTransactor // Write-only binding to the contract
  6518  	ISystemRewardFilterer   // Log filterer for contract events
  6519  }
  6520  
  6521  // ISystemRewardCaller is an auto generated read-only Go binding around an Ethereum contract.
  6522  type ISystemRewardCaller struct {
  6523  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6524  }
  6525  
  6526  // ISystemRewardTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6527  type ISystemRewardTransactor struct {
  6528  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6529  }
  6530  
  6531  // ISystemRewardFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6532  type ISystemRewardFilterer struct {
  6533  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6534  }
  6535  
  6536  // ISystemRewardSession is an auto generated Go binding around an Ethereum contract,
  6537  // with pre-set call and transact options.
  6538  type ISystemRewardSession struct {
  6539  	Contract     *ISystemReward    // Generic contract binding to set the session for
  6540  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6541  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6542  }
  6543  
  6544  // ISystemRewardCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6545  // with pre-set call options.
  6546  type ISystemRewardCallerSession struct {
  6547  	Contract *ISystemRewardCaller // Generic contract caller binding to set the session for
  6548  	CallOpts bind.CallOpts        // Call options to use throughout this session
  6549  }
  6550  
  6551  // ISystemRewardTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6552  // with pre-set transact options.
  6553  type ISystemRewardTransactorSession struct {
  6554  	Contract     *ISystemRewardTransactor // Generic contract transactor binding to set the session for
  6555  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  6556  }
  6557  
  6558  // ISystemRewardRaw is an auto generated low-level Go binding around an Ethereum contract.
  6559  type ISystemRewardRaw struct {
  6560  	Contract *ISystemReward // Generic contract binding to access the raw methods on
  6561  }
  6562  
  6563  // ISystemRewardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6564  type ISystemRewardCallerRaw struct {
  6565  	Contract *ISystemRewardCaller // Generic read-only contract binding to access the raw methods on
  6566  }
  6567  
  6568  // ISystemRewardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6569  type ISystemRewardTransactorRaw struct {
  6570  	Contract *ISystemRewardTransactor // Generic write-only contract binding to access the raw methods on
  6571  }
  6572  
  6573  // NewISystemReward creates a new instance of ISystemReward, bound to a specific deployed contract.
  6574  func NewISystemReward(address common.Address, backend bind.ContractBackend) (*ISystemReward, error) {
  6575  	contract, err := bindISystemReward(address, backend, backend, backend)
  6576  	if err != nil {
  6577  		return nil, err
  6578  	}
  6579  	return &ISystemReward{ISystemRewardCaller: ISystemRewardCaller{contract: contract}, ISystemRewardTransactor: ISystemRewardTransactor{contract: contract}, ISystemRewardFilterer: ISystemRewardFilterer{contract: contract}}, nil
  6580  }
  6581  
  6582  // NewISystemRewardCaller creates a new read-only instance of ISystemReward, bound to a specific deployed contract.
  6583  func NewISystemRewardCaller(address common.Address, caller bind.ContractCaller) (*ISystemRewardCaller, error) {
  6584  	contract, err := bindISystemReward(address, caller, nil, nil)
  6585  	if err != nil {
  6586  		return nil, err
  6587  	}
  6588  	return &ISystemRewardCaller{contract: contract}, nil
  6589  }
  6590  
  6591  // NewISystemRewardTransactor creates a new write-only instance of ISystemReward, bound to a specific deployed contract.
  6592  func NewISystemRewardTransactor(address common.Address, transactor bind.ContractTransactor) (*ISystemRewardTransactor, error) {
  6593  	contract, err := bindISystemReward(address, nil, transactor, nil)
  6594  	if err != nil {
  6595  		return nil, err
  6596  	}
  6597  	return &ISystemRewardTransactor{contract: contract}, nil
  6598  }
  6599  
  6600  // NewISystemRewardFilterer creates a new log filterer instance of ISystemReward, bound to a specific deployed contract.
  6601  func NewISystemRewardFilterer(address common.Address, filterer bind.ContractFilterer) (*ISystemRewardFilterer, error) {
  6602  	contract, err := bindISystemReward(address, nil, nil, filterer)
  6603  	if err != nil {
  6604  		return nil, err
  6605  	}
  6606  	return &ISystemRewardFilterer{contract: contract}, nil
  6607  }
  6608  
  6609  // bindISystemReward binds a generic wrapper to an already deployed contract.
  6610  func bindISystemReward(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6611  	parsed, err := abi.JSON(strings.NewReader(ISystemRewardABI))
  6612  	if err != nil {
  6613  		return nil, err
  6614  	}
  6615  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6616  }
  6617  
  6618  // Call invokes the (constant) contract method with params as input values and
  6619  // sets the output to result. The result type might be a single field for simple
  6620  // returns, a slice of interfaces for anonymous returns and a struct for named
  6621  // returns.
  6622  func (_ISystemReward *ISystemRewardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6623  	return _ISystemReward.Contract.ISystemRewardCaller.contract.Call(opts, result, method, params...)
  6624  }
  6625  
  6626  // Transfer initiates a plain transaction to move funds to the contract, calling
  6627  // its default method if one is available.
  6628  func (_ISystemReward *ISystemRewardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6629  	return _ISystemReward.Contract.ISystemRewardTransactor.contract.Transfer(opts)
  6630  }
  6631  
  6632  // Transact invokes the (paid) contract method with params as input values.
  6633  func (_ISystemReward *ISystemRewardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6634  	return _ISystemReward.Contract.ISystemRewardTransactor.contract.Transact(opts, method, params...)
  6635  }
  6636  
  6637  // Call invokes the (constant) contract method with params as input values and
  6638  // sets the output to result. The result type might be a single field for simple
  6639  // returns, a slice of interfaces for anonymous returns and a struct for named
  6640  // returns.
  6641  func (_ISystemReward *ISystemRewardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6642  	return _ISystemReward.Contract.contract.Call(opts, result, method, params...)
  6643  }
  6644  
  6645  // Transfer initiates a plain transaction to move funds to the contract, calling
  6646  // its default method if one is available.
  6647  func (_ISystemReward *ISystemRewardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6648  	return _ISystemReward.Contract.contract.Transfer(opts)
  6649  }
  6650  
  6651  // Transact invokes the (paid) contract method with params as input values.
  6652  func (_ISystemReward *ISystemRewardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6653  	return _ISystemReward.Contract.contract.Transact(opts, method, params...)
  6654  }
  6655  
  6656  // ClaimRewards is a paid mutator transaction binding the contract method 0x9a99b4f0.
  6657  //
  6658  // Solidity: function claimRewards(address to, uint256 amount) returns(uint256 actualAmount)
  6659  func (_ISystemReward *ISystemRewardTransactor) ClaimRewards(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) {
  6660  	return _ISystemReward.contract.Transact(opts, "claimRewards", to, amount)
  6661  }
  6662  
  6663  // ClaimRewards is a paid mutator transaction binding the contract method 0x9a99b4f0.
  6664  //
  6665  // Solidity: function claimRewards(address to, uint256 amount) returns(uint256 actualAmount)
  6666  func (_ISystemReward *ISystemRewardSession) ClaimRewards(to common.Address, amount *big.Int) (*types.Transaction, error) {
  6667  	return _ISystemReward.Contract.ClaimRewards(&_ISystemReward.TransactOpts, to, amount)
  6668  }
  6669  
  6670  // ClaimRewards is a paid mutator transaction binding the contract method 0x9a99b4f0.
  6671  //
  6672  // Solidity: function claimRewards(address to, uint256 amount) returns(uint256 actualAmount)
  6673  func (_ISystemReward *ISystemRewardTransactorSession) ClaimRewards(to common.Address, amount *big.Int) (*types.Transaction, error) {
  6674  	return _ISystemReward.Contract.ClaimRewards(&_ISystemReward.TransactOpts, to, amount)
  6675  }
  6676  
  6677  // ITokenHubABI is the input ABI used to generate the binding from.
  6678  const ITokenHubABI = "[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"recipientAddrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"refundAddrs\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"expireTime\",\"type\":\"uint64\"}],\"name\":\"batchTransferOutBNB\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bep2Symbol\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"bindToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"name\":\"getBep2SymbolByContractAddr\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bep2Symbol\",\"type\":\"bytes32\"}],\"name\":\"getContractAddrByBEP2Symbol\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMiniRelayFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"expireTime\",\"type\":\"uint64\"}],\"name\":\"transferOut\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"bep2Symbol\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddr\",\"type\":\"address\"}],\"name\":\"unbindToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6679  
  6680  // ITokenHubFuncSigs maps the 4-byte function signature to its string representation.
  6681  var ITokenHubFuncSigs = map[string]string{
  6682  	"6e056520": "batchTransferOutBNB(address[],uint256[],address[],uint64)",
  6683  	"8eff336c": "bindToken(bytes32,address,uint256)",
  6684  	"bd466461": "getBep2SymbolByContractAddr(address)",
  6685  	"59b92789": "getContractAddrByBEP2Symbol(bytes32)",
  6686  	"149d14d9": "getMiniRelayFee()",
  6687  	"aa7415f5": "transferOut(address,address,uint256,uint64)",
  6688  	"b99328c5": "unbindToken(bytes32,address)",
  6689  }
  6690  
  6691  // ITokenHub is an auto generated Go binding around an Ethereum contract.
  6692  type ITokenHub struct {
  6693  	ITokenHubCaller     // Read-only binding to the contract
  6694  	ITokenHubTransactor // Write-only binding to the contract
  6695  	ITokenHubFilterer   // Log filterer for contract events
  6696  }
  6697  
  6698  // ITokenHubCaller is an auto generated read-only Go binding around an Ethereum contract.
  6699  type ITokenHubCaller struct {
  6700  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6701  }
  6702  
  6703  // ITokenHubTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6704  type ITokenHubTransactor struct {
  6705  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6706  }
  6707  
  6708  // ITokenHubFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6709  type ITokenHubFilterer struct {
  6710  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6711  }
  6712  
  6713  // ITokenHubSession is an auto generated Go binding around an Ethereum contract,
  6714  // with pre-set call and transact options.
  6715  type ITokenHubSession struct {
  6716  	Contract     *ITokenHub        // Generic contract binding to set the session for
  6717  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6718  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6719  }
  6720  
  6721  // ITokenHubCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6722  // with pre-set call options.
  6723  type ITokenHubCallerSession struct {
  6724  	Contract *ITokenHubCaller // Generic contract caller binding to set the session for
  6725  	CallOpts bind.CallOpts    // Call options to use throughout this session
  6726  }
  6727  
  6728  // ITokenHubTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6729  // with pre-set transact options.
  6730  type ITokenHubTransactorSession struct {
  6731  	Contract     *ITokenHubTransactor // Generic contract transactor binding to set the session for
  6732  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  6733  }
  6734  
  6735  // ITokenHubRaw is an auto generated low-level Go binding around an Ethereum contract.
  6736  type ITokenHubRaw struct {
  6737  	Contract *ITokenHub // Generic contract binding to access the raw methods on
  6738  }
  6739  
  6740  // ITokenHubCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6741  type ITokenHubCallerRaw struct {
  6742  	Contract *ITokenHubCaller // Generic read-only contract binding to access the raw methods on
  6743  }
  6744  
  6745  // ITokenHubTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6746  type ITokenHubTransactorRaw struct {
  6747  	Contract *ITokenHubTransactor // Generic write-only contract binding to access the raw methods on
  6748  }
  6749  
  6750  // NewITokenHub creates a new instance of ITokenHub, bound to a specific deployed contract.
  6751  func NewITokenHub(address common.Address, backend bind.ContractBackend) (*ITokenHub, error) {
  6752  	contract, err := bindITokenHub(address, backend, backend, backend)
  6753  	if err != nil {
  6754  		return nil, err
  6755  	}
  6756  	return &ITokenHub{ITokenHubCaller: ITokenHubCaller{contract: contract}, ITokenHubTransactor: ITokenHubTransactor{contract: contract}, ITokenHubFilterer: ITokenHubFilterer{contract: contract}}, nil
  6757  }
  6758  
  6759  // NewITokenHubCaller creates a new read-only instance of ITokenHub, bound to a specific deployed contract.
  6760  func NewITokenHubCaller(address common.Address, caller bind.ContractCaller) (*ITokenHubCaller, error) {
  6761  	contract, err := bindITokenHub(address, caller, nil, nil)
  6762  	if err != nil {
  6763  		return nil, err
  6764  	}
  6765  	return &ITokenHubCaller{contract: contract}, nil
  6766  }
  6767  
  6768  // NewITokenHubTransactor creates a new write-only instance of ITokenHub, bound to a specific deployed contract.
  6769  func NewITokenHubTransactor(address common.Address, transactor bind.ContractTransactor) (*ITokenHubTransactor, error) {
  6770  	contract, err := bindITokenHub(address, nil, transactor, nil)
  6771  	if err != nil {
  6772  		return nil, err
  6773  	}
  6774  	return &ITokenHubTransactor{contract: contract}, nil
  6775  }
  6776  
  6777  // NewITokenHubFilterer creates a new log filterer instance of ITokenHub, bound to a specific deployed contract.
  6778  func NewITokenHubFilterer(address common.Address, filterer bind.ContractFilterer) (*ITokenHubFilterer, error) {
  6779  	contract, err := bindITokenHub(address, nil, nil, filterer)
  6780  	if err != nil {
  6781  		return nil, err
  6782  	}
  6783  	return &ITokenHubFilterer{contract: contract}, nil
  6784  }
  6785  
  6786  // bindITokenHub binds a generic wrapper to an already deployed contract.
  6787  func bindITokenHub(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6788  	parsed, err := abi.JSON(strings.NewReader(ITokenHubABI))
  6789  	if err != nil {
  6790  		return nil, err
  6791  	}
  6792  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6793  }
  6794  
  6795  // Call invokes the (constant) contract method with params as input values and
  6796  // sets the output to result. The result type might be a single field for simple
  6797  // returns, a slice of interfaces for anonymous returns and a struct for named
  6798  // returns.
  6799  func (_ITokenHub *ITokenHubRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6800  	return _ITokenHub.Contract.ITokenHubCaller.contract.Call(opts, result, method, params...)
  6801  }
  6802  
  6803  // Transfer initiates a plain transaction to move funds to the contract, calling
  6804  // its default method if one is available.
  6805  func (_ITokenHub *ITokenHubRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6806  	return _ITokenHub.Contract.ITokenHubTransactor.contract.Transfer(opts)
  6807  }
  6808  
  6809  // Transact invokes the (paid) contract method with params as input values.
  6810  func (_ITokenHub *ITokenHubRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6811  	return _ITokenHub.Contract.ITokenHubTransactor.contract.Transact(opts, method, params...)
  6812  }
  6813  
  6814  // Call invokes the (constant) contract method with params as input values and
  6815  // sets the output to result. The result type might be a single field for simple
  6816  // returns, a slice of interfaces for anonymous returns and a struct for named
  6817  // returns.
  6818  func (_ITokenHub *ITokenHubCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6819  	return _ITokenHub.Contract.contract.Call(opts, result, method, params...)
  6820  }
  6821  
  6822  // Transfer initiates a plain transaction to move funds to the contract, calling
  6823  // its default method if one is available.
  6824  func (_ITokenHub *ITokenHubTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6825  	return _ITokenHub.Contract.contract.Transfer(opts)
  6826  }
  6827  
  6828  // Transact invokes the (paid) contract method with params as input values.
  6829  func (_ITokenHub *ITokenHubTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6830  	return _ITokenHub.Contract.contract.Transact(opts, method, params...)
  6831  }
  6832  
  6833  // GetBep2SymbolByContractAddr is a free data retrieval call binding the contract method 0xbd466461.
  6834  //
  6835  // Solidity: function getBep2SymbolByContractAddr(address contractAddr) view returns(bytes32)
  6836  func (_ITokenHub *ITokenHubCaller) GetBep2SymbolByContractAddr(opts *bind.CallOpts, contractAddr common.Address) ([32]byte, error) {
  6837  	var out []interface{}
  6838  	err := _ITokenHub.contract.Call(opts, &out, "getBep2SymbolByContractAddr", contractAddr)
  6839  
  6840  	if err != nil {
  6841  		return *new([32]byte), err
  6842  	}
  6843  
  6844  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  6845  
  6846  	return out0, err
  6847  
  6848  }
  6849  
  6850  // GetBep2SymbolByContractAddr is a free data retrieval call binding the contract method 0xbd466461.
  6851  //
  6852  // Solidity: function getBep2SymbolByContractAddr(address contractAddr) view returns(bytes32)
  6853  func (_ITokenHub *ITokenHubSession) GetBep2SymbolByContractAddr(contractAddr common.Address) ([32]byte, error) {
  6854  	return _ITokenHub.Contract.GetBep2SymbolByContractAddr(&_ITokenHub.CallOpts, contractAddr)
  6855  }
  6856  
  6857  // GetBep2SymbolByContractAddr is a free data retrieval call binding the contract method 0xbd466461.
  6858  //
  6859  // Solidity: function getBep2SymbolByContractAddr(address contractAddr) view returns(bytes32)
  6860  func (_ITokenHub *ITokenHubCallerSession) GetBep2SymbolByContractAddr(contractAddr common.Address) ([32]byte, error) {
  6861  	return _ITokenHub.Contract.GetBep2SymbolByContractAddr(&_ITokenHub.CallOpts, contractAddr)
  6862  }
  6863  
  6864  // GetContractAddrByBEP2Symbol is a free data retrieval call binding the contract method 0x59b92789.
  6865  //
  6866  // Solidity: function getContractAddrByBEP2Symbol(bytes32 bep2Symbol) view returns(address)
  6867  func (_ITokenHub *ITokenHubCaller) GetContractAddrByBEP2Symbol(opts *bind.CallOpts, bep2Symbol [32]byte) (common.Address, error) {
  6868  	var out []interface{}
  6869  	err := _ITokenHub.contract.Call(opts, &out, "getContractAddrByBEP2Symbol", bep2Symbol)
  6870  
  6871  	if err != nil {
  6872  		return *new(common.Address), err
  6873  	}
  6874  
  6875  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  6876  
  6877  	return out0, err
  6878  
  6879  }
  6880  
  6881  // GetContractAddrByBEP2Symbol is a free data retrieval call binding the contract method 0x59b92789.
  6882  //
  6883  // Solidity: function getContractAddrByBEP2Symbol(bytes32 bep2Symbol) view returns(address)
  6884  func (_ITokenHub *ITokenHubSession) GetContractAddrByBEP2Symbol(bep2Symbol [32]byte) (common.Address, error) {
  6885  	return _ITokenHub.Contract.GetContractAddrByBEP2Symbol(&_ITokenHub.CallOpts, bep2Symbol)
  6886  }
  6887  
  6888  // GetContractAddrByBEP2Symbol is a free data retrieval call binding the contract method 0x59b92789.
  6889  //
  6890  // Solidity: function getContractAddrByBEP2Symbol(bytes32 bep2Symbol) view returns(address)
  6891  func (_ITokenHub *ITokenHubCallerSession) GetContractAddrByBEP2Symbol(bep2Symbol [32]byte) (common.Address, error) {
  6892  	return _ITokenHub.Contract.GetContractAddrByBEP2Symbol(&_ITokenHub.CallOpts, bep2Symbol)
  6893  }
  6894  
  6895  // GetMiniRelayFee is a free data retrieval call binding the contract method 0x149d14d9.
  6896  //
  6897  // Solidity: function getMiniRelayFee() view returns(uint256)
  6898  func (_ITokenHub *ITokenHubCaller) GetMiniRelayFee(opts *bind.CallOpts) (*big.Int, error) {
  6899  	var out []interface{}
  6900  	err := _ITokenHub.contract.Call(opts, &out, "getMiniRelayFee")
  6901  
  6902  	if err != nil {
  6903  		return *new(*big.Int), err
  6904  	}
  6905  
  6906  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6907  
  6908  	return out0, err
  6909  
  6910  }
  6911  
  6912  // GetMiniRelayFee is a free data retrieval call binding the contract method 0x149d14d9.
  6913  //
  6914  // Solidity: function getMiniRelayFee() view returns(uint256)
  6915  func (_ITokenHub *ITokenHubSession) GetMiniRelayFee() (*big.Int, error) {
  6916  	return _ITokenHub.Contract.GetMiniRelayFee(&_ITokenHub.CallOpts)
  6917  }
  6918  
  6919  // GetMiniRelayFee is a free data retrieval call binding the contract method 0x149d14d9.
  6920  //
  6921  // Solidity: function getMiniRelayFee() view returns(uint256)
  6922  func (_ITokenHub *ITokenHubCallerSession) GetMiniRelayFee() (*big.Int, error) {
  6923  	return _ITokenHub.Contract.GetMiniRelayFee(&_ITokenHub.CallOpts)
  6924  }
  6925  
  6926  // BatchTransferOutBNB is a paid mutator transaction binding the contract method 0x6e056520.
  6927  //
  6928  // Solidity: function batchTransferOutBNB(address[] recipientAddrs, uint256[] amounts, address[] refundAddrs, uint64 expireTime) payable returns(bool)
  6929  func (_ITokenHub *ITokenHubTransactor) BatchTransferOutBNB(opts *bind.TransactOpts, recipientAddrs []common.Address, amounts []*big.Int, refundAddrs []common.Address, expireTime uint64) (*types.Transaction, error) {
  6930  	return _ITokenHub.contract.Transact(opts, "batchTransferOutBNB", recipientAddrs, amounts, refundAddrs, expireTime)
  6931  }
  6932  
  6933  // BatchTransferOutBNB is a paid mutator transaction binding the contract method 0x6e056520.
  6934  //
  6935  // Solidity: function batchTransferOutBNB(address[] recipientAddrs, uint256[] amounts, address[] refundAddrs, uint64 expireTime) payable returns(bool)
  6936  func (_ITokenHub *ITokenHubSession) BatchTransferOutBNB(recipientAddrs []common.Address, amounts []*big.Int, refundAddrs []common.Address, expireTime uint64) (*types.Transaction, error) {
  6937  	return _ITokenHub.Contract.BatchTransferOutBNB(&_ITokenHub.TransactOpts, recipientAddrs, amounts, refundAddrs, expireTime)
  6938  }
  6939  
  6940  // BatchTransferOutBNB is a paid mutator transaction binding the contract method 0x6e056520.
  6941  //
  6942  // Solidity: function batchTransferOutBNB(address[] recipientAddrs, uint256[] amounts, address[] refundAddrs, uint64 expireTime) payable returns(bool)
  6943  func (_ITokenHub *ITokenHubTransactorSession) BatchTransferOutBNB(recipientAddrs []common.Address, amounts []*big.Int, refundAddrs []common.Address, expireTime uint64) (*types.Transaction, error) {
  6944  	return _ITokenHub.Contract.BatchTransferOutBNB(&_ITokenHub.TransactOpts, recipientAddrs, amounts, refundAddrs, expireTime)
  6945  }
  6946  
  6947  // BindToken is a paid mutator transaction binding the contract method 0x8eff336c.
  6948  //
  6949  // Solidity: function bindToken(bytes32 bep2Symbol, address contractAddr, uint256 decimals) returns()
  6950  func (_ITokenHub *ITokenHubTransactor) BindToken(opts *bind.TransactOpts, bep2Symbol [32]byte, contractAddr common.Address, decimals *big.Int) (*types.Transaction, error) {
  6951  	return _ITokenHub.contract.Transact(opts, "bindToken", bep2Symbol, contractAddr, decimals)
  6952  }
  6953  
  6954  // BindToken is a paid mutator transaction binding the contract method 0x8eff336c.
  6955  //
  6956  // Solidity: function bindToken(bytes32 bep2Symbol, address contractAddr, uint256 decimals) returns()
  6957  func (_ITokenHub *ITokenHubSession) BindToken(bep2Symbol [32]byte, contractAddr common.Address, decimals *big.Int) (*types.Transaction, error) {
  6958  	return _ITokenHub.Contract.BindToken(&_ITokenHub.TransactOpts, bep2Symbol, contractAddr, decimals)
  6959  }
  6960  
  6961  // BindToken is a paid mutator transaction binding the contract method 0x8eff336c.
  6962  //
  6963  // Solidity: function bindToken(bytes32 bep2Symbol, address contractAddr, uint256 decimals) returns()
  6964  func (_ITokenHub *ITokenHubTransactorSession) BindToken(bep2Symbol [32]byte, contractAddr common.Address, decimals *big.Int) (*types.Transaction, error) {
  6965  	return _ITokenHub.Contract.BindToken(&_ITokenHub.TransactOpts, bep2Symbol, contractAddr, decimals)
  6966  }
  6967  
  6968  // TransferOut is a paid mutator transaction binding the contract method 0xaa7415f5.
  6969  //
  6970  // Solidity: function transferOut(address contractAddr, address recipient, uint256 amount, uint64 expireTime) payable returns(bool)
  6971  func (_ITokenHub *ITokenHubTransactor) TransferOut(opts *bind.TransactOpts, contractAddr common.Address, recipient common.Address, amount *big.Int, expireTime uint64) (*types.Transaction, error) {
  6972  	return _ITokenHub.contract.Transact(opts, "transferOut", contractAddr, recipient, amount, expireTime)
  6973  }
  6974  
  6975  // TransferOut is a paid mutator transaction binding the contract method 0xaa7415f5.
  6976  //
  6977  // Solidity: function transferOut(address contractAddr, address recipient, uint256 amount, uint64 expireTime) payable returns(bool)
  6978  func (_ITokenHub *ITokenHubSession) TransferOut(contractAddr common.Address, recipient common.Address, amount *big.Int, expireTime uint64) (*types.Transaction, error) {
  6979  	return _ITokenHub.Contract.TransferOut(&_ITokenHub.TransactOpts, contractAddr, recipient, amount, expireTime)
  6980  }
  6981  
  6982  // TransferOut is a paid mutator transaction binding the contract method 0xaa7415f5.
  6983  //
  6984  // Solidity: function transferOut(address contractAddr, address recipient, uint256 amount, uint64 expireTime) payable returns(bool)
  6985  func (_ITokenHub *ITokenHubTransactorSession) TransferOut(contractAddr common.Address, recipient common.Address, amount *big.Int, expireTime uint64) (*types.Transaction, error) {
  6986  	return _ITokenHub.Contract.TransferOut(&_ITokenHub.TransactOpts, contractAddr, recipient, amount, expireTime)
  6987  }
  6988  
  6989  // UnbindToken is a paid mutator transaction binding the contract method 0xb99328c5.
  6990  //
  6991  // Solidity: function unbindToken(bytes32 bep2Symbol, address contractAddr) returns()
  6992  func (_ITokenHub *ITokenHubTransactor) UnbindToken(opts *bind.TransactOpts, bep2Symbol [32]byte, contractAddr common.Address) (*types.Transaction, error) {
  6993  	return _ITokenHub.contract.Transact(opts, "unbindToken", bep2Symbol, contractAddr)
  6994  }
  6995  
  6996  // UnbindToken is a paid mutator transaction binding the contract method 0xb99328c5.
  6997  //
  6998  // Solidity: function unbindToken(bytes32 bep2Symbol, address contractAddr) returns()
  6999  func (_ITokenHub *ITokenHubSession) UnbindToken(bep2Symbol [32]byte, contractAddr common.Address) (*types.Transaction, error) {
  7000  	return _ITokenHub.Contract.UnbindToken(&_ITokenHub.TransactOpts, bep2Symbol, contractAddr)
  7001  }
  7002  
  7003  // UnbindToken is a paid mutator transaction binding the contract method 0xb99328c5.
  7004  //
  7005  // Solidity: function unbindToken(bytes32 bep2Symbol, address contractAddr) returns()
  7006  func (_ITokenHub *ITokenHubTransactorSession) UnbindToken(bep2Symbol [32]byte, contractAddr common.Address) (*types.Transaction, error) {
  7007  	return _ITokenHub.Contract.UnbindToken(&_ITokenHub.TransactOpts, bep2Symbol, contractAddr)
  7008  }
  7009  
  7010  // MemoryABI is the input ABI used to generate the binding from.
  7011  const MemoryABI = "[]"
  7012  
  7013  // MemoryBin is the compiled bytecode used for deploying new contracts.
  7014  var MemoryBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209323a48b104f52ad6049da30c049f2d948fdd51593f63649bed67841938c956664736f6c63430006040033"
  7015  
  7016  // DeployMemory deploys a new Ethereum contract, binding an instance of Memory to it.
  7017  func DeployMemory(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Memory, error) {
  7018  	parsed, err := abi.JSON(strings.NewReader(MemoryABI))
  7019  	if err != nil {
  7020  		return common.Address{}, nil, nil, err
  7021  	}
  7022  
  7023  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MemoryBin), backend)
  7024  	if err != nil {
  7025  		return common.Address{}, nil, nil, err
  7026  	}
  7027  	return address, tx, &Memory{MemoryCaller: MemoryCaller{contract: contract}, MemoryTransactor: MemoryTransactor{contract: contract}, MemoryFilterer: MemoryFilterer{contract: contract}}, nil
  7028  }
  7029  
  7030  // Memory is an auto generated Go binding around an Ethereum contract.
  7031  type Memory struct {
  7032  	MemoryCaller     // Read-only binding to the contract
  7033  	MemoryTransactor // Write-only binding to the contract
  7034  	MemoryFilterer   // Log filterer for contract events
  7035  }
  7036  
  7037  // MemoryCaller is an auto generated read-only Go binding around an Ethereum contract.
  7038  type MemoryCaller struct {
  7039  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7040  }
  7041  
  7042  // MemoryTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7043  type MemoryTransactor struct {
  7044  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7045  }
  7046  
  7047  // MemoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7048  type MemoryFilterer struct {
  7049  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7050  }
  7051  
  7052  // MemorySession is an auto generated Go binding around an Ethereum contract,
  7053  // with pre-set call and transact options.
  7054  type MemorySession struct {
  7055  	Contract     *Memory           // Generic contract binding to set the session for
  7056  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7057  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7058  }
  7059  
  7060  // MemoryCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7061  // with pre-set call options.
  7062  type MemoryCallerSession struct {
  7063  	Contract *MemoryCaller // Generic contract caller binding to set the session for
  7064  	CallOpts bind.CallOpts // Call options to use throughout this session
  7065  }
  7066  
  7067  // MemoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7068  // with pre-set transact options.
  7069  type MemoryTransactorSession struct {
  7070  	Contract     *MemoryTransactor // Generic contract transactor binding to set the session for
  7071  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7072  }
  7073  
  7074  // MemoryRaw is an auto generated low-level Go binding around an Ethereum contract.
  7075  type MemoryRaw struct {
  7076  	Contract *Memory // Generic contract binding to access the raw methods on
  7077  }
  7078  
  7079  // MemoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7080  type MemoryCallerRaw struct {
  7081  	Contract *MemoryCaller // Generic read-only contract binding to access the raw methods on
  7082  }
  7083  
  7084  // MemoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7085  type MemoryTransactorRaw struct {
  7086  	Contract *MemoryTransactor // Generic write-only contract binding to access the raw methods on
  7087  }
  7088  
  7089  // NewMemory creates a new instance of Memory, bound to a specific deployed contract.
  7090  func NewMemory(address common.Address, backend bind.ContractBackend) (*Memory, error) {
  7091  	contract, err := bindMemory(address, backend, backend, backend)
  7092  	if err != nil {
  7093  		return nil, err
  7094  	}
  7095  	return &Memory{MemoryCaller: MemoryCaller{contract: contract}, MemoryTransactor: MemoryTransactor{contract: contract}, MemoryFilterer: MemoryFilterer{contract: contract}}, nil
  7096  }
  7097  
  7098  // NewMemoryCaller creates a new read-only instance of Memory, bound to a specific deployed contract.
  7099  func NewMemoryCaller(address common.Address, caller bind.ContractCaller) (*MemoryCaller, error) {
  7100  	contract, err := bindMemory(address, caller, nil, nil)
  7101  	if err != nil {
  7102  		return nil, err
  7103  	}
  7104  	return &MemoryCaller{contract: contract}, nil
  7105  }
  7106  
  7107  // NewMemoryTransactor creates a new write-only instance of Memory, bound to a specific deployed contract.
  7108  func NewMemoryTransactor(address common.Address, transactor bind.ContractTransactor) (*MemoryTransactor, error) {
  7109  	contract, err := bindMemory(address, nil, transactor, nil)
  7110  	if err != nil {
  7111  		return nil, err
  7112  	}
  7113  	return &MemoryTransactor{contract: contract}, nil
  7114  }
  7115  
  7116  // NewMemoryFilterer creates a new log filterer instance of Memory, bound to a specific deployed contract.
  7117  func NewMemoryFilterer(address common.Address, filterer bind.ContractFilterer) (*MemoryFilterer, error) {
  7118  	contract, err := bindMemory(address, nil, nil, filterer)
  7119  	if err != nil {
  7120  		return nil, err
  7121  	}
  7122  	return &MemoryFilterer{contract: contract}, nil
  7123  }
  7124  
  7125  // bindMemory binds a generic wrapper to an already deployed contract.
  7126  func bindMemory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7127  	parsed, err := abi.JSON(strings.NewReader(MemoryABI))
  7128  	if err != nil {
  7129  		return nil, err
  7130  	}
  7131  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7132  }
  7133  
  7134  // Call invokes the (constant) contract method with params as input values and
  7135  // sets the output to result. The result type might be a single field for simple
  7136  // returns, a slice of interfaces for anonymous returns and a struct for named
  7137  // returns.
  7138  func (_Memory *MemoryRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7139  	return _Memory.Contract.MemoryCaller.contract.Call(opts, result, method, params...)
  7140  }
  7141  
  7142  // Transfer initiates a plain transaction to move funds to the contract, calling
  7143  // its default method if one is available.
  7144  func (_Memory *MemoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7145  	return _Memory.Contract.MemoryTransactor.contract.Transfer(opts)
  7146  }
  7147  
  7148  // Transact invokes the (paid) contract method with params as input values.
  7149  func (_Memory *MemoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7150  	return _Memory.Contract.MemoryTransactor.contract.Transact(opts, method, params...)
  7151  }
  7152  
  7153  // Call invokes the (constant) contract method with params as input values and
  7154  // sets the output to result. The result type might be a single field for simple
  7155  // returns, a slice of interfaces for anonymous returns and a struct for named
  7156  // returns.
  7157  func (_Memory *MemoryCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7158  	return _Memory.Contract.contract.Call(opts, result, method, params...)
  7159  }
  7160  
  7161  // Transfer initiates a plain transaction to move funds to the contract, calling
  7162  // its default method if one is available.
  7163  func (_Memory *MemoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7164  	return _Memory.Contract.contract.Transfer(opts)
  7165  }
  7166  
  7167  // Transact invokes the (paid) contract method with params as input values.
  7168  func (_Memory *MemoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7169  	return _Memory.Contract.contract.Transact(opts, method, params...)
  7170  }
  7171  
  7172  // RLPDecodeABI is the input ABI used to generate the binding from.
  7173  const RLPDecodeABI = "[]"
  7174  
  7175  // RLPDecodeBin is the compiled bytecode used for deploying new contracts.
  7176  var RLPDecodeBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220181baf58d2f79353375cbba9ae73c1d7d112f8842f92bc48cb128f13700b978964736f6c63430006040033"
  7177  
  7178  // DeployRLPDecode deploys a new Ethereum contract, binding an instance of RLPDecode to it.
  7179  func DeployRLPDecode(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLPDecode, error) {
  7180  	parsed, err := abi.JSON(strings.NewReader(RLPDecodeABI))
  7181  	if err != nil {
  7182  		return common.Address{}, nil, nil, err
  7183  	}
  7184  
  7185  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPDecodeBin), backend)
  7186  	if err != nil {
  7187  		return common.Address{}, nil, nil, err
  7188  	}
  7189  	return address, tx, &RLPDecode{RLPDecodeCaller: RLPDecodeCaller{contract: contract}, RLPDecodeTransactor: RLPDecodeTransactor{contract: contract}, RLPDecodeFilterer: RLPDecodeFilterer{contract: contract}}, nil
  7190  }
  7191  
  7192  // RLPDecode is an auto generated Go binding around an Ethereum contract.
  7193  type RLPDecode struct {
  7194  	RLPDecodeCaller     // Read-only binding to the contract
  7195  	RLPDecodeTransactor // Write-only binding to the contract
  7196  	RLPDecodeFilterer   // Log filterer for contract events
  7197  }
  7198  
  7199  // RLPDecodeCaller is an auto generated read-only Go binding around an Ethereum contract.
  7200  type RLPDecodeCaller struct {
  7201  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7202  }
  7203  
  7204  // RLPDecodeTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7205  type RLPDecodeTransactor struct {
  7206  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7207  }
  7208  
  7209  // RLPDecodeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7210  type RLPDecodeFilterer struct {
  7211  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7212  }
  7213  
  7214  // RLPDecodeSession is an auto generated Go binding around an Ethereum contract,
  7215  // with pre-set call and transact options.
  7216  type RLPDecodeSession struct {
  7217  	Contract     *RLPDecode        // Generic contract binding to set the session for
  7218  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7219  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7220  }
  7221  
  7222  // RLPDecodeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7223  // with pre-set call options.
  7224  type RLPDecodeCallerSession struct {
  7225  	Contract *RLPDecodeCaller // Generic contract caller binding to set the session for
  7226  	CallOpts bind.CallOpts    // Call options to use throughout this session
  7227  }
  7228  
  7229  // RLPDecodeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7230  // with pre-set transact options.
  7231  type RLPDecodeTransactorSession struct {
  7232  	Contract     *RLPDecodeTransactor // Generic contract transactor binding to set the session for
  7233  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  7234  }
  7235  
  7236  // RLPDecodeRaw is an auto generated low-level Go binding around an Ethereum contract.
  7237  type RLPDecodeRaw struct {
  7238  	Contract *RLPDecode // Generic contract binding to access the raw methods on
  7239  }
  7240  
  7241  // RLPDecodeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7242  type RLPDecodeCallerRaw struct {
  7243  	Contract *RLPDecodeCaller // Generic read-only contract binding to access the raw methods on
  7244  }
  7245  
  7246  // RLPDecodeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7247  type RLPDecodeTransactorRaw struct {
  7248  	Contract *RLPDecodeTransactor // Generic write-only contract binding to access the raw methods on
  7249  }
  7250  
  7251  // NewRLPDecode creates a new instance of RLPDecode, bound to a specific deployed contract.
  7252  func NewRLPDecode(address common.Address, backend bind.ContractBackend) (*RLPDecode, error) {
  7253  	contract, err := bindRLPDecode(address, backend, backend, backend)
  7254  	if err != nil {
  7255  		return nil, err
  7256  	}
  7257  	return &RLPDecode{RLPDecodeCaller: RLPDecodeCaller{contract: contract}, RLPDecodeTransactor: RLPDecodeTransactor{contract: contract}, RLPDecodeFilterer: RLPDecodeFilterer{contract: contract}}, nil
  7258  }
  7259  
  7260  // NewRLPDecodeCaller creates a new read-only instance of RLPDecode, bound to a specific deployed contract.
  7261  func NewRLPDecodeCaller(address common.Address, caller bind.ContractCaller) (*RLPDecodeCaller, error) {
  7262  	contract, err := bindRLPDecode(address, caller, nil, nil)
  7263  	if err != nil {
  7264  		return nil, err
  7265  	}
  7266  	return &RLPDecodeCaller{contract: contract}, nil
  7267  }
  7268  
  7269  // NewRLPDecodeTransactor creates a new write-only instance of RLPDecode, bound to a specific deployed contract.
  7270  func NewRLPDecodeTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPDecodeTransactor, error) {
  7271  	contract, err := bindRLPDecode(address, nil, transactor, nil)
  7272  	if err != nil {
  7273  		return nil, err
  7274  	}
  7275  	return &RLPDecodeTransactor{contract: contract}, nil
  7276  }
  7277  
  7278  // NewRLPDecodeFilterer creates a new log filterer instance of RLPDecode, bound to a specific deployed contract.
  7279  func NewRLPDecodeFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPDecodeFilterer, error) {
  7280  	contract, err := bindRLPDecode(address, nil, nil, filterer)
  7281  	if err != nil {
  7282  		return nil, err
  7283  	}
  7284  	return &RLPDecodeFilterer{contract: contract}, nil
  7285  }
  7286  
  7287  // bindRLPDecode binds a generic wrapper to an already deployed contract.
  7288  func bindRLPDecode(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7289  	parsed, err := abi.JSON(strings.NewReader(RLPDecodeABI))
  7290  	if err != nil {
  7291  		return nil, err
  7292  	}
  7293  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7294  }
  7295  
  7296  // Call invokes the (constant) contract method with params as input values and
  7297  // sets the output to result. The result type might be a single field for simple
  7298  // returns, a slice of interfaces for anonymous returns and a struct for named
  7299  // returns.
  7300  func (_RLPDecode *RLPDecodeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7301  	return _RLPDecode.Contract.RLPDecodeCaller.contract.Call(opts, result, method, params...)
  7302  }
  7303  
  7304  // Transfer initiates a plain transaction to move funds to the contract, calling
  7305  // its default method if one is available.
  7306  func (_RLPDecode *RLPDecodeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7307  	return _RLPDecode.Contract.RLPDecodeTransactor.contract.Transfer(opts)
  7308  }
  7309  
  7310  // Transact invokes the (paid) contract method with params as input values.
  7311  func (_RLPDecode *RLPDecodeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7312  	return _RLPDecode.Contract.RLPDecodeTransactor.contract.Transact(opts, method, params...)
  7313  }
  7314  
  7315  // Call invokes the (constant) contract method with params as input values and
  7316  // sets the output to result. The result type might be a single field for simple
  7317  // returns, a slice of interfaces for anonymous returns and a struct for named
  7318  // returns.
  7319  func (_RLPDecode *RLPDecodeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7320  	return _RLPDecode.Contract.contract.Call(opts, result, method, params...)
  7321  }
  7322  
  7323  // Transfer initiates a plain transaction to move funds to the contract, calling
  7324  // its default method if one is available.
  7325  func (_RLPDecode *RLPDecodeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7326  	return _RLPDecode.Contract.contract.Transfer(opts)
  7327  }
  7328  
  7329  // Transact invokes the (paid) contract method with params as input values.
  7330  func (_RLPDecode *RLPDecodeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7331  	return _RLPDecode.Contract.contract.Transact(opts, method, params...)
  7332  }
  7333  
  7334  // RLPEncodeABI is the input ABI used to generate the binding from.
  7335  const RLPEncodeABI = "[]"
  7336  
  7337  // RLPEncodeBin is the compiled bytecode used for deploying new contracts.
  7338  var RLPEncodeBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7f8a9dea63ff28a573c4d26717079867be48faf1c6611bb94144eba7330cd6664736f6c63430006040033"
  7339  
  7340  // DeployRLPEncode deploys a new Ethereum contract, binding an instance of RLPEncode to it.
  7341  func DeployRLPEncode(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLPEncode, error) {
  7342  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  7343  	if err != nil {
  7344  		return common.Address{}, nil, nil, err
  7345  	}
  7346  
  7347  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPEncodeBin), backend)
  7348  	if err != nil {
  7349  		return common.Address{}, nil, nil, err
  7350  	}
  7351  	return address, tx, &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  7352  }
  7353  
  7354  // RLPEncode is an auto generated Go binding around an Ethereum contract.
  7355  type RLPEncode struct {
  7356  	RLPEncodeCaller     // Read-only binding to the contract
  7357  	RLPEncodeTransactor // Write-only binding to the contract
  7358  	RLPEncodeFilterer   // Log filterer for contract events
  7359  }
  7360  
  7361  // RLPEncodeCaller is an auto generated read-only Go binding around an Ethereum contract.
  7362  type RLPEncodeCaller struct {
  7363  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7364  }
  7365  
  7366  // RLPEncodeTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7367  type RLPEncodeTransactor struct {
  7368  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7369  }
  7370  
  7371  // RLPEncodeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7372  type RLPEncodeFilterer struct {
  7373  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7374  }
  7375  
  7376  // RLPEncodeSession is an auto generated Go binding around an Ethereum contract,
  7377  // with pre-set call and transact options.
  7378  type RLPEncodeSession struct {
  7379  	Contract     *RLPEncode        // Generic contract binding to set the session for
  7380  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7381  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7382  }
  7383  
  7384  // RLPEncodeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7385  // with pre-set call options.
  7386  type RLPEncodeCallerSession struct {
  7387  	Contract *RLPEncodeCaller // Generic contract caller binding to set the session for
  7388  	CallOpts bind.CallOpts    // Call options to use throughout this session
  7389  }
  7390  
  7391  // RLPEncodeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7392  // with pre-set transact options.
  7393  type RLPEncodeTransactorSession struct {
  7394  	Contract     *RLPEncodeTransactor // Generic contract transactor binding to set the session for
  7395  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  7396  }
  7397  
  7398  // RLPEncodeRaw is an auto generated low-level Go binding around an Ethereum contract.
  7399  type RLPEncodeRaw struct {
  7400  	Contract *RLPEncode // Generic contract binding to access the raw methods on
  7401  }
  7402  
  7403  // RLPEncodeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7404  type RLPEncodeCallerRaw struct {
  7405  	Contract *RLPEncodeCaller // Generic read-only contract binding to access the raw methods on
  7406  }
  7407  
  7408  // RLPEncodeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7409  type RLPEncodeTransactorRaw struct {
  7410  	Contract *RLPEncodeTransactor // Generic write-only contract binding to access the raw methods on
  7411  }
  7412  
  7413  // NewRLPEncode creates a new instance of RLPEncode, bound to a specific deployed contract.
  7414  func NewRLPEncode(address common.Address, backend bind.ContractBackend) (*RLPEncode, error) {
  7415  	contract, err := bindRLPEncode(address, backend, backend, backend)
  7416  	if err != nil {
  7417  		return nil, err
  7418  	}
  7419  	return &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  7420  }
  7421  
  7422  // NewRLPEncodeCaller creates a new read-only instance of RLPEncode, bound to a specific deployed contract.
  7423  func NewRLPEncodeCaller(address common.Address, caller bind.ContractCaller) (*RLPEncodeCaller, error) {
  7424  	contract, err := bindRLPEncode(address, caller, nil, nil)
  7425  	if err != nil {
  7426  		return nil, err
  7427  	}
  7428  	return &RLPEncodeCaller{contract: contract}, nil
  7429  }
  7430  
  7431  // NewRLPEncodeTransactor creates a new write-only instance of RLPEncode, bound to a specific deployed contract.
  7432  func NewRLPEncodeTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPEncodeTransactor, error) {
  7433  	contract, err := bindRLPEncode(address, nil, transactor, nil)
  7434  	if err != nil {
  7435  		return nil, err
  7436  	}
  7437  	return &RLPEncodeTransactor{contract: contract}, nil
  7438  }
  7439  
  7440  // NewRLPEncodeFilterer creates a new log filterer instance of RLPEncode, bound to a specific deployed contract.
  7441  func NewRLPEncodeFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPEncodeFilterer, error) {
  7442  	contract, err := bindRLPEncode(address, nil, nil, filterer)
  7443  	if err != nil {
  7444  		return nil, err
  7445  	}
  7446  	return &RLPEncodeFilterer{contract: contract}, nil
  7447  }
  7448  
  7449  // bindRLPEncode binds a generic wrapper to an already deployed contract.
  7450  func bindRLPEncode(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7451  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  7452  	if err != nil {
  7453  		return nil, err
  7454  	}
  7455  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7456  }
  7457  
  7458  // Call invokes the (constant) contract method with params as input values and
  7459  // sets the output to result. The result type might be a single field for simple
  7460  // returns, a slice of interfaces for anonymous returns and a struct for named
  7461  // returns.
  7462  func (_RLPEncode *RLPEncodeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7463  	return _RLPEncode.Contract.RLPEncodeCaller.contract.Call(opts, result, method, params...)
  7464  }
  7465  
  7466  // Transfer initiates a plain transaction to move funds to the contract, calling
  7467  // its default method if one is available.
  7468  func (_RLPEncode *RLPEncodeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7469  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transfer(opts)
  7470  }
  7471  
  7472  // Transact invokes the (paid) contract method with params as input values.
  7473  func (_RLPEncode *RLPEncodeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7474  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transact(opts, method, params...)
  7475  }
  7476  
  7477  // Call invokes the (constant) contract method with params as input values and
  7478  // sets the output to result. The result type might be a single field for simple
  7479  // returns, a slice of interfaces for anonymous returns and a struct for named
  7480  // returns.
  7481  func (_RLPEncode *RLPEncodeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7482  	return _RLPEncode.Contract.contract.Call(opts, result, method, params...)
  7483  }
  7484  
  7485  // Transfer initiates a plain transaction to move funds to the contract, calling
  7486  // its default method if one is available.
  7487  func (_RLPEncode *RLPEncodeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7488  	return _RLPEncode.Contract.contract.Transfer(opts)
  7489  }
  7490  
  7491  // Transact invokes the (paid) contract method with params as input values.
  7492  func (_RLPEncode *RLPEncodeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7493  	return _RLPEncode.Contract.contract.Transact(opts, method, params...)
  7494  }
  7495  
  7496  // SafeMathABI is the input ABI used to generate the binding from.
  7497  const SafeMathABI = "[]"
  7498  
  7499  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  7500  var SafeMathBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220330623cf29bc2b24ef9154ec313ab44fb4077fbaf305c00404422c7fd32ab7bf64736f6c63430006040033"
  7501  
  7502  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
  7503  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  7504  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  7505  	if err != nil {
  7506  		return common.Address{}, nil, nil, err
  7507  	}
  7508  
  7509  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
  7510  	if err != nil {
  7511  		return common.Address{}, nil, nil, err
  7512  	}
  7513  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  7514  }
  7515  
  7516  // SafeMath is an auto generated Go binding around an Ethereum contract.
  7517  type SafeMath struct {
  7518  	SafeMathCaller     // Read-only binding to the contract
  7519  	SafeMathTransactor // Write-only binding to the contract
  7520  	SafeMathFilterer   // Log filterer for contract events
  7521  }
  7522  
  7523  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
  7524  type SafeMathCaller struct {
  7525  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7526  }
  7527  
  7528  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7529  type SafeMathTransactor struct {
  7530  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7531  }
  7532  
  7533  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7534  type SafeMathFilterer struct {
  7535  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7536  }
  7537  
  7538  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
  7539  // with pre-set call and transact options.
  7540  type SafeMathSession struct {
  7541  	Contract     *SafeMath         // Generic contract binding to set the session for
  7542  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7543  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7544  }
  7545  
  7546  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7547  // with pre-set call options.
  7548  type SafeMathCallerSession struct {
  7549  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  7550  	CallOpts bind.CallOpts   // Call options to use throughout this session
  7551  }
  7552  
  7553  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7554  // with pre-set transact options.
  7555  type SafeMathTransactorSession struct {
  7556  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  7557  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  7558  }
  7559  
  7560  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
  7561  type SafeMathRaw struct {
  7562  	Contract *SafeMath // Generic contract binding to access the raw methods on
  7563  }
  7564  
  7565  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7566  type SafeMathCallerRaw struct {
  7567  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  7568  }
  7569  
  7570  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7571  type SafeMathTransactorRaw struct {
  7572  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  7573  }
  7574  
  7575  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  7576  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  7577  	contract, err := bindSafeMath(address, backend, backend, backend)
  7578  	if err != nil {
  7579  		return nil, err
  7580  	}
  7581  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  7582  }
  7583  
  7584  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  7585  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  7586  	contract, err := bindSafeMath(address, caller, nil, nil)
  7587  	if err != nil {
  7588  		return nil, err
  7589  	}
  7590  	return &SafeMathCaller{contract: contract}, nil
  7591  }
  7592  
  7593  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  7594  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  7595  	contract, err := bindSafeMath(address, nil, transactor, nil)
  7596  	if err != nil {
  7597  		return nil, err
  7598  	}
  7599  	return &SafeMathTransactor{contract: contract}, nil
  7600  }
  7601  
  7602  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  7603  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  7604  	contract, err := bindSafeMath(address, nil, nil, filterer)
  7605  	if err != nil {
  7606  		return nil, err
  7607  	}
  7608  	return &SafeMathFilterer{contract: contract}, nil
  7609  }
  7610  
  7611  // bindSafeMath binds a generic wrapper to an already deployed contract.
  7612  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7613  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  7614  	if err != nil {
  7615  		return nil, err
  7616  	}
  7617  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7618  }
  7619  
  7620  // Call invokes the (constant) contract method with params as input values and
  7621  // sets the output to result. The result type might be a single field for simple
  7622  // returns, a slice of interfaces for anonymous returns and a struct for named
  7623  // returns.
  7624  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7625  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  7626  }
  7627  
  7628  // Transfer initiates a plain transaction to move funds to the contract, calling
  7629  // its default method if one is available.
  7630  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7631  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  7632  }
  7633  
  7634  // Transact invokes the (paid) contract method with params as input values.
  7635  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7636  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  7637  }
  7638  
  7639  // Call invokes the (constant) contract method with params as input values and
  7640  // sets the output to result. The result type might be a single field for simple
  7641  // returns, a slice of interfaces for anonymous returns and a struct for named
  7642  // returns.
  7643  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7644  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  7645  }
  7646  
  7647  // Transfer initiates a plain transaction to move funds to the contract, calling
  7648  // its default method if one is available.
  7649  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7650  	return _SafeMath.Contract.contract.Transfer(opts)
  7651  }
  7652  
  7653  // Transact invokes the (paid) contract method with params as input values.
  7654  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7655  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  7656  }
  7657  
  7658  // SystemABI is the input ABI used to generate the binding from.
  7659  const SystemABI = "[{\"inputs\":[],\"name\":\"BIND_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CODE_OK\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CROSS_CHAIN_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERROR_FAIL_DECODE\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOV_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOV_HUB_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVIZE_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYERHUB_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAKING_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_REWARD_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_HUB_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKEN_MANAGER_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_IN_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRANSFER_OUT_CHANNELID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_CONTRACT_ADDR\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"alreadyInit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bscChainID\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  7660  
  7661  // SystemFuncSigs maps the 4-byte function signature to its string representation.
  7662  var SystemFuncSigs = map[string]string{
  7663  	"3dffc387": "BIND_CHANNELID()",
  7664  	"ab51bb96": "CODE_OK()",
  7665  	"51e80672": "CROSS_CHAIN_CONTRACT_ADDR()",
  7666  	"0bee7a67": "ERROR_FAIL_DECODE()",
  7667  	"96713da9": "GOV_CHANNELID()",
  7668  	"9dc09262": "GOV_HUB_ADDR()",
  7669  	"6e47b482": "INCENTIVIZE_ADDR()",
  7670  	"dc927faf": "LIGHT_CLIENT_ADDR()",
  7671  	"a1a11bf5": "RELAYERHUB_CONTRACT_ADDR()",
  7672  	"7942fd05": "SLASH_CHANNELID()",
  7673  	"43756e5c": "SLASH_CONTRACT_ADDR()",
  7674  	"4bf6c882": "STAKING_CHANNELID()",
  7675  	"c81b1662": "SYSTEM_REWARD_ADDR()",
  7676  	"fd6a6879": "TOKEN_HUB_ADDR()",
  7677  	"75d47a0a": "TOKEN_MANAGER_ADDR()",
  7678  	"70fd5bad": "TRANSFER_IN_CHANNELID()",
  7679  	"fc3e5908": "TRANSFER_OUT_CHANNELID()",
  7680  	"f9a2bbc7": "VALIDATOR_CONTRACT_ADDR()",
  7681  	"a78abc16": "alreadyInit()",
  7682  	"493279b1": "bscChainID()",
  7683  }
  7684  
  7685  // SystemBin is the compiled bytecode used for deploying new contracts.
  7686  var SystemBin = "0x608060405234801561001057600080fd5b506102ef806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806396713da9116100ad578063c81b166211610071578063c81b16621461021f578063dc927faf14610227578063f9a2bbc71461022f578063fc3e590814610237578063fd6a68791461023f5761012c565b806396713da9146101e35780639dc09262146101eb578063a1a11bf5146101f3578063a78abc16146101fb578063ab51bb96146102175761012c565b806351e80672116100f457806351e80672146101bb5780636e47b482146101c357806370fd5bad146101cb57806375d47a0a146101d35780637942fd05146101db5761012c565b80630bee7a67146101315780633dffc3871461015257806343756e5c14610170578063493279b1146101945780634bf6c882146101b3575b600080fd5b610139610247565b6040805163ffffffff9092168252519081900360200190f35b61015a61024c565b6040805160ff9092168252519081900360200190f35b610178610251565b604080516001600160a01b039092168252519081900360200190f35b61019c610257565b6040805161ffff9092168252519081900360200190f35b61015a61025c565b610178610261565b610178610267565b61015a61026d565b610178610272565b61015a610278565b61015a61027d565b610178610282565b610178610288565b61020361028e565b604080519115158252519081900360200190f35b610139610297565b61017861029c565b6101786102a2565b6101786102a8565b61015a6102ae565b6101786102b3565b606481565b600181565b61100181565b606081565b600881565b61200081565b61100581565b600281565b61100881565b600b81565b600981565b61100781565b61100681565b60005460ff1681565b600081565b61100281565b61100381565b61100081565b600381565b6110048156fea2646970667358221220f6bd4ecf625b4bcfbb66bc7843198370f23b5b7c20b542107de9b5c9ba2acf9464736f6c63430006040033"
  7687  
  7688  // DeploySystem deploys a new Ethereum contract, binding an instance of System to it.
  7689  func DeploySystem(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *System, error) {
  7690  	parsed, err := abi.JSON(strings.NewReader(SystemABI))
  7691  	if err != nil {
  7692  		return common.Address{}, nil, nil, err
  7693  	}
  7694  
  7695  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SystemBin), backend)
  7696  	if err != nil {
  7697  		return common.Address{}, nil, nil, err
  7698  	}
  7699  	return address, tx, &System{SystemCaller: SystemCaller{contract: contract}, SystemTransactor: SystemTransactor{contract: contract}, SystemFilterer: SystemFilterer{contract: contract}}, nil
  7700  }
  7701  
  7702  // System is an auto generated Go binding around an Ethereum contract.
  7703  type System struct {
  7704  	SystemCaller     // Read-only binding to the contract
  7705  	SystemTransactor // Write-only binding to the contract
  7706  	SystemFilterer   // Log filterer for contract events
  7707  }
  7708  
  7709  // SystemCaller is an auto generated read-only Go binding around an Ethereum contract.
  7710  type SystemCaller struct {
  7711  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7712  }
  7713  
  7714  // SystemTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7715  type SystemTransactor struct {
  7716  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7717  }
  7718  
  7719  // SystemFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7720  type SystemFilterer struct {
  7721  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7722  }
  7723  
  7724  // SystemSession is an auto generated Go binding around an Ethereum contract,
  7725  // with pre-set call and transact options.
  7726  type SystemSession struct {
  7727  	Contract     *System           // Generic contract binding to set the session for
  7728  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7729  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7730  }
  7731  
  7732  // SystemCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7733  // with pre-set call options.
  7734  type SystemCallerSession struct {
  7735  	Contract *SystemCaller // Generic contract caller binding to set the session for
  7736  	CallOpts bind.CallOpts // Call options to use throughout this session
  7737  }
  7738  
  7739  // SystemTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7740  // with pre-set transact options.
  7741  type SystemTransactorSession struct {
  7742  	Contract     *SystemTransactor // Generic contract transactor binding to set the session for
  7743  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7744  }
  7745  
  7746  // SystemRaw is an auto generated low-level Go binding around an Ethereum contract.
  7747  type SystemRaw struct {
  7748  	Contract *System // Generic contract binding to access the raw methods on
  7749  }
  7750  
  7751  // SystemCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7752  type SystemCallerRaw struct {
  7753  	Contract *SystemCaller // Generic read-only contract binding to access the raw methods on
  7754  }
  7755  
  7756  // SystemTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7757  type SystemTransactorRaw struct {
  7758  	Contract *SystemTransactor // Generic write-only contract binding to access the raw methods on
  7759  }
  7760  
  7761  // NewSystem creates a new instance of System, bound to a specific deployed contract.
  7762  func NewSystem(address common.Address, backend bind.ContractBackend) (*System, error) {
  7763  	contract, err := bindSystem(address, backend, backend, backend)
  7764  	if err != nil {
  7765  		return nil, err
  7766  	}
  7767  	return &System{SystemCaller: SystemCaller{contract: contract}, SystemTransactor: SystemTransactor{contract: contract}, SystemFilterer: SystemFilterer{contract: contract}}, nil
  7768  }
  7769  
  7770  // NewSystemCaller creates a new read-only instance of System, bound to a specific deployed contract.
  7771  func NewSystemCaller(address common.Address, caller bind.ContractCaller) (*SystemCaller, error) {
  7772  	contract, err := bindSystem(address, caller, nil, nil)
  7773  	if err != nil {
  7774  		return nil, err
  7775  	}
  7776  	return &SystemCaller{contract: contract}, nil
  7777  }
  7778  
  7779  // NewSystemTransactor creates a new write-only instance of System, bound to a specific deployed contract.
  7780  func NewSystemTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemTransactor, error) {
  7781  	contract, err := bindSystem(address, nil, transactor, nil)
  7782  	if err != nil {
  7783  		return nil, err
  7784  	}
  7785  	return &SystemTransactor{contract: contract}, nil
  7786  }
  7787  
  7788  // NewSystemFilterer creates a new log filterer instance of System, bound to a specific deployed contract.
  7789  func NewSystemFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemFilterer, error) {
  7790  	contract, err := bindSystem(address, nil, nil, filterer)
  7791  	if err != nil {
  7792  		return nil, err
  7793  	}
  7794  	return &SystemFilterer{contract: contract}, nil
  7795  }
  7796  
  7797  // bindSystem binds a generic wrapper to an already deployed contract.
  7798  func bindSystem(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7799  	parsed, err := abi.JSON(strings.NewReader(SystemABI))
  7800  	if err != nil {
  7801  		return nil, err
  7802  	}
  7803  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7804  }
  7805  
  7806  // Call invokes the (constant) contract method with params as input values and
  7807  // sets the output to result. The result type might be a single field for simple
  7808  // returns, a slice of interfaces for anonymous returns and a struct for named
  7809  // returns.
  7810  func (_System *SystemRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7811  	return _System.Contract.SystemCaller.contract.Call(opts, result, method, params...)
  7812  }
  7813  
  7814  // Transfer initiates a plain transaction to move funds to the contract, calling
  7815  // its default method if one is available.
  7816  func (_System *SystemRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7817  	return _System.Contract.SystemTransactor.contract.Transfer(opts)
  7818  }
  7819  
  7820  // Transact invokes the (paid) contract method with params as input values.
  7821  func (_System *SystemRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7822  	return _System.Contract.SystemTransactor.contract.Transact(opts, method, params...)
  7823  }
  7824  
  7825  // Call invokes the (constant) contract method with params as input values and
  7826  // sets the output to result. The result type might be a single field for simple
  7827  // returns, a slice of interfaces for anonymous returns and a struct for named
  7828  // returns.
  7829  func (_System *SystemCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7830  	return _System.Contract.contract.Call(opts, result, method, params...)
  7831  }
  7832  
  7833  // Transfer initiates a plain transaction to move funds to the contract, calling
  7834  // its default method if one is available.
  7835  func (_System *SystemTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7836  	return _System.Contract.contract.Transfer(opts)
  7837  }
  7838  
  7839  // Transact invokes the (paid) contract method with params as input values.
  7840  func (_System *SystemTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7841  	return _System.Contract.contract.Transact(opts, method, params...)
  7842  }
  7843  
  7844  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
  7845  //
  7846  // Solidity: function BIND_CHANNELID() view returns(uint8)
  7847  func (_System *SystemCaller) BINDCHANNELID(opts *bind.CallOpts) (uint8, error) {
  7848  	var out []interface{}
  7849  	err := _System.contract.Call(opts, &out, "BIND_CHANNELID")
  7850  
  7851  	if err != nil {
  7852  		return *new(uint8), err
  7853  	}
  7854  
  7855  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  7856  
  7857  	return out0, err
  7858  
  7859  }
  7860  
  7861  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
  7862  //
  7863  // Solidity: function BIND_CHANNELID() view returns(uint8)
  7864  func (_System *SystemSession) BINDCHANNELID() (uint8, error) {
  7865  	return _System.Contract.BINDCHANNELID(&_System.CallOpts)
  7866  }
  7867  
  7868  // BINDCHANNELID is a free data retrieval call binding the contract method 0x3dffc387.
  7869  //
  7870  // Solidity: function BIND_CHANNELID() view returns(uint8)
  7871  func (_System *SystemCallerSession) BINDCHANNELID() (uint8, error) {
  7872  	return _System.Contract.BINDCHANNELID(&_System.CallOpts)
  7873  }
  7874  
  7875  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
  7876  //
  7877  // Solidity: function CODE_OK() view returns(uint32)
  7878  func (_System *SystemCaller) CODEOK(opts *bind.CallOpts) (uint32, error) {
  7879  	var out []interface{}
  7880  	err := _System.contract.Call(opts, &out, "CODE_OK")
  7881  
  7882  	if err != nil {
  7883  		return *new(uint32), err
  7884  	}
  7885  
  7886  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
  7887  
  7888  	return out0, err
  7889  
  7890  }
  7891  
  7892  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
  7893  //
  7894  // Solidity: function CODE_OK() view returns(uint32)
  7895  func (_System *SystemSession) CODEOK() (uint32, error) {
  7896  	return _System.Contract.CODEOK(&_System.CallOpts)
  7897  }
  7898  
  7899  // CODEOK is a free data retrieval call binding the contract method 0xab51bb96.
  7900  //
  7901  // Solidity: function CODE_OK() view returns(uint32)
  7902  func (_System *SystemCallerSession) CODEOK() (uint32, error) {
  7903  	return _System.Contract.CODEOK(&_System.CallOpts)
  7904  }
  7905  
  7906  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
  7907  //
  7908  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
  7909  func (_System *SystemCaller) CROSSCHAINCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  7910  	var out []interface{}
  7911  	err := _System.contract.Call(opts, &out, "CROSS_CHAIN_CONTRACT_ADDR")
  7912  
  7913  	if err != nil {
  7914  		return *new(common.Address), err
  7915  	}
  7916  
  7917  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7918  
  7919  	return out0, err
  7920  
  7921  }
  7922  
  7923  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
  7924  //
  7925  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
  7926  func (_System *SystemSession) CROSSCHAINCONTRACTADDR() (common.Address, error) {
  7927  	return _System.Contract.CROSSCHAINCONTRACTADDR(&_System.CallOpts)
  7928  }
  7929  
  7930  // CROSSCHAINCONTRACTADDR is a free data retrieval call binding the contract method 0x51e80672.
  7931  //
  7932  // Solidity: function CROSS_CHAIN_CONTRACT_ADDR() view returns(address)
  7933  func (_System *SystemCallerSession) CROSSCHAINCONTRACTADDR() (common.Address, error) {
  7934  	return _System.Contract.CROSSCHAINCONTRACTADDR(&_System.CallOpts)
  7935  }
  7936  
  7937  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
  7938  //
  7939  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
  7940  func (_System *SystemCaller) ERRORFAILDECODE(opts *bind.CallOpts) (uint32, error) {
  7941  	var out []interface{}
  7942  	err := _System.contract.Call(opts, &out, "ERROR_FAIL_DECODE")
  7943  
  7944  	if err != nil {
  7945  		return *new(uint32), err
  7946  	}
  7947  
  7948  	out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32)
  7949  
  7950  	return out0, err
  7951  
  7952  }
  7953  
  7954  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
  7955  //
  7956  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
  7957  func (_System *SystemSession) ERRORFAILDECODE() (uint32, error) {
  7958  	return _System.Contract.ERRORFAILDECODE(&_System.CallOpts)
  7959  }
  7960  
  7961  // ERRORFAILDECODE is a free data retrieval call binding the contract method 0x0bee7a67.
  7962  //
  7963  // Solidity: function ERROR_FAIL_DECODE() view returns(uint32)
  7964  func (_System *SystemCallerSession) ERRORFAILDECODE() (uint32, error) {
  7965  	return _System.Contract.ERRORFAILDECODE(&_System.CallOpts)
  7966  }
  7967  
  7968  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
  7969  //
  7970  // Solidity: function GOV_CHANNELID() view returns(uint8)
  7971  func (_System *SystemCaller) GOVCHANNELID(opts *bind.CallOpts) (uint8, error) {
  7972  	var out []interface{}
  7973  	err := _System.contract.Call(opts, &out, "GOV_CHANNELID")
  7974  
  7975  	if err != nil {
  7976  		return *new(uint8), err
  7977  	}
  7978  
  7979  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  7980  
  7981  	return out0, err
  7982  
  7983  }
  7984  
  7985  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
  7986  //
  7987  // Solidity: function GOV_CHANNELID() view returns(uint8)
  7988  func (_System *SystemSession) GOVCHANNELID() (uint8, error) {
  7989  	return _System.Contract.GOVCHANNELID(&_System.CallOpts)
  7990  }
  7991  
  7992  // GOVCHANNELID is a free data retrieval call binding the contract method 0x96713da9.
  7993  //
  7994  // Solidity: function GOV_CHANNELID() view returns(uint8)
  7995  func (_System *SystemCallerSession) GOVCHANNELID() (uint8, error) {
  7996  	return _System.Contract.GOVCHANNELID(&_System.CallOpts)
  7997  }
  7998  
  7999  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
  8000  //
  8001  // Solidity: function GOV_HUB_ADDR() view returns(address)
  8002  func (_System *SystemCaller) GOVHUBADDR(opts *bind.CallOpts) (common.Address, error) {
  8003  	var out []interface{}
  8004  	err := _System.contract.Call(opts, &out, "GOV_HUB_ADDR")
  8005  
  8006  	if err != nil {
  8007  		return *new(common.Address), err
  8008  	}
  8009  
  8010  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8011  
  8012  	return out0, err
  8013  
  8014  }
  8015  
  8016  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
  8017  //
  8018  // Solidity: function GOV_HUB_ADDR() view returns(address)
  8019  func (_System *SystemSession) GOVHUBADDR() (common.Address, error) {
  8020  	return _System.Contract.GOVHUBADDR(&_System.CallOpts)
  8021  }
  8022  
  8023  // GOVHUBADDR is a free data retrieval call binding the contract method 0x9dc09262.
  8024  //
  8025  // Solidity: function GOV_HUB_ADDR() view returns(address)
  8026  func (_System *SystemCallerSession) GOVHUBADDR() (common.Address, error) {
  8027  	return _System.Contract.GOVHUBADDR(&_System.CallOpts)
  8028  }
  8029  
  8030  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
  8031  //
  8032  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
  8033  func (_System *SystemCaller) INCENTIVIZEADDR(opts *bind.CallOpts) (common.Address, error) {
  8034  	var out []interface{}
  8035  	err := _System.contract.Call(opts, &out, "INCENTIVIZE_ADDR")
  8036  
  8037  	if err != nil {
  8038  		return *new(common.Address), err
  8039  	}
  8040  
  8041  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8042  
  8043  	return out0, err
  8044  
  8045  }
  8046  
  8047  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
  8048  //
  8049  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
  8050  func (_System *SystemSession) INCENTIVIZEADDR() (common.Address, error) {
  8051  	return _System.Contract.INCENTIVIZEADDR(&_System.CallOpts)
  8052  }
  8053  
  8054  // INCENTIVIZEADDR is a free data retrieval call binding the contract method 0x6e47b482.
  8055  //
  8056  // Solidity: function INCENTIVIZE_ADDR() view returns(address)
  8057  func (_System *SystemCallerSession) INCENTIVIZEADDR() (common.Address, error) {
  8058  	return _System.Contract.INCENTIVIZEADDR(&_System.CallOpts)
  8059  }
  8060  
  8061  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
  8062  //
  8063  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
  8064  func (_System *SystemCaller) LIGHTCLIENTADDR(opts *bind.CallOpts) (common.Address, error) {
  8065  	var out []interface{}
  8066  	err := _System.contract.Call(opts, &out, "LIGHT_CLIENT_ADDR")
  8067  
  8068  	if err != nil {
  8069  		return *new(common.Address), err
  8070  	}
  8071  
  8072  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8073  
  8074  	return out0, err
  8075  
  8076  }
  8077  
  8078  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
  8079  //
  8080  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
  8081  func (_System *SystemSession) LIGHTCLIENTADDR() (common.Address, error) {
  8082  	return _System.Contract.LIGHTCLIENTADDR(&_System.CallOpts)
  8083  }
  8084  
  8085  // LIGHTCLIENTADDR is a free data retrieval call binding the contract method 0xdc927faf.
  8086  //
  8087  // Solidity: function LIGHT_CLIENT_ADDR() view returns(address)
  8088  func (_System *SystemCallerSession) LIGHTCLIENTADDR() (common.Address, error) {
  8089  	return _System.Contract.LIGHTCLIENTADDR(&_System.CallOpts)
  8090  }
  8091  
  8092  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
  8093  //
  8094  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
  8095  func (_System *SystemCaller) RELAYERHUBCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  8096  	var out []interface{}
  8097  	err := _System.contract.Call(opts, &out, "RELAYERHUB_CONTRACT_ADDR")
  8098  
  8099  	if err != nil {
  8100  		return *new(common.Address), err
  8101  	}
  8102  
  8103  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8104  
  8105  	return out0, err
  8106  
  8107  }
  8108  
  8109  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
  8110  //
  8111  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
  8112  func (_System *SystemSession) RELAYERHUBCONTRACTADDR() (common.Address, error) {
  8113  	return _System.Contract.RELAYERHUBCONTRACTADDR(&_System.CallOpts)
  8114  }
  8115  
  8116  // RELAYERHUBCONTRACTADDR is a free data retrieval call binding the contract method 0xa1a11bf5.
  8117  //
  8118  // Solidity: function RELAYERHUB_CONTRACT_ADDR() view returns(address)
  8119  func (_System *SystemCallerSession) RELAYERHUBCONTRACTADDR() (common.Address, error) {
  8120  	return _System.Contract.RELAYERHUBCONTRACTADDR(&_System.CallOpts)
  8121  }
  8122  
  8123  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  8124  //
  8125  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  8126  func (_System *SystemCaller) SLASHCHANNELID(opts *bind.CallOpts) (uint8, error) {
  8127  	var out []interface{}
  8128  	err := _System.contract.Call(opts, &out, "SLASH_CHANNELID")
  8129  
  8130  	if err != nil {
  8131  		return *new(uint8), err
  8132  	}
  8133  
  8134  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  8135  
  8136  	return out0, err
  8137  
  8138  }
  8139  
  8140  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  8141  //
  8142  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  8143  func (_System *SystemSession) SLASHCHANNELID() (uint8, error) {
  8144  	return _System.Contract.SLASHCHANNELID(&_System.CallOpts)
  8145  }
  8146  
  8147  // SLASHCHANNELID is a free data retrieval call binding the contract method 0x7942fd05.
  8148  //
  8149  // Solidity: function SLASH_CHANNELID() view returns(uint8)
  8150  func (_System *SystemCallerSession) SLASHCHANNELID() (uint8, error) {
  8151  	return _System.Contract.SLASHCHANNELID(&_System.CallOpts)
  8152  }
  8153  
  8154  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  8155  //
  8156  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  8157  func (_System *SystemCaller) SLASHCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  8158  	var out []interface{}
  8159  	err := _System.contract.Call(opts, &out, "SLASH_CONTRACT_ADDR")
  8160  
  8161  	if err != nil {
  8162  		return *new(common.Address), err
  8163  	}
  8164  
  8165  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8166  
  8167  	return out0, err
  8168  
  8169  }
  8170  
  8171  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  8172  //
  8173  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  8174  func (_System *SystemSession) SLASHCONTRACTADDR() (common.Address, error) {
  8175  	return _System.Contract.SLASHCONTRACTADDR(&_System.CallOpts)
  8176  }
  8177  
  8178  // SLASHCONTRACTADDR is a free data retrieval call binding the contract method 0x43756e5c.
  8179  //
  8180  // Solidity: function SLASH_CONTRACT_ADDR() view returns(address)
  8181  func (_System *SystemCallerSession) SLASHCONTRACTADDR() (common.Address, error) {
  8182  	return _System.Contract.SLASHCONTRACTADDR(&_System.CallOpts)
  8183  }
  8184  
  8185  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  8186  //
  8187  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  8188  func (_System *SystemCaller) STAKINGCHANNELID(opts *bind.CallOpts) (uint8, error) {
  8189  	var out []interface{}
  8190  	err := _System.contract.Call(opts, &out, "STAKING_CHANNELID")
  8191  
  8192  	if err != nil {
  8193  		return *new(uint8), err
  8194  	}
  8195  
  8196  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  8197  
  8198  	return out0, err
  8199  
  8200  }
  8201  
  8202  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  8203  //
  8204  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  8205  func (_System *SystemSession) STAKINGCHANNELID() (uint8, error) {
  8206  	return _System.Contract.STAKINGCHANNELID(&_System.CallOpts)
  8207  }
  8208  
  8209  // STAKINGCHANNELID is a free data retrieval call binding the contract method 0x4bf6c882.
  8210  //
  8211  // Solidity: function STAKING_CHANNELID() view returns(uint8)
  8212  func (_System *SystemCallerSession) STAKINGCHANNELID() (uint8, error) {
  8213  	return _System.Contract.STAKINGCHANNELID(&_System.CallOpts)
  8214  }
  8215  
  8216  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  8217  //
  8218  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  8219  func (_System *SystemCaller) SYSTEMREWARDADDR(opts *bind.CallOpts) (common.Address, error) {
  8220  	var out []interface{}
  8221  	err := _System.contract.Call(opts, &out, "SYSTEM_REWARD_ADDR")
  8222  
  8223  	if err != nil {
  8224  		return *new(common.Address), err
  8225  	}
  8226  
  8227  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8228  
  8229  	return out0, err
  8230  
  8231  }
  8232  
  8233  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  8234  //
  8235  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  8236  func (_System *SystemSession) SYSTEMREWARDADDR() (common.Address, error) {
  8237  	return _System.Contract.SYSTEMREWARDADDR(&_System.CallOpts)
  8238  }
  8239  
  8240  // SYSTEMREWARDADDR is a free data retrieval call binding the contract method 0xc81b1662.
  8241  //
  8242  // Solidity: function SYSTEM_REWARD_ADDR() view returns(address)
  8243  func (_System *SystemCallerSession) SYSTEMREWARDADDR() (common.Address, error) {
  8244  	return _System.Contract.SYSTEMREWARDADDR(&_System.CallOpts)
  8245  }
  8246  
  8247  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  8248  //
  8249  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  8250  func (_System *SystemCaller) TOKENHUBADDR(opts *bind.CallOpts) (common.Address, error) {
  8251  	var out []interface{}
  8252  	err := _System.contract.Call(opts, &out, "TOKEN_HUB_ADDR")
  8253  
  8254  	if err != nil {
  8255  		return *new(common.Address), err
  8256  	}
  8257  
  8258  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8259  
  8260  	return out0, err
  8261  
  8262  }
  8263  
  8264  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  8265  //
  8266  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  8267  func (_System *SystemSession) TOKENHUBADDR() (common.Address, error) {
  8268  	return _System.Contract.TOKENHUBADDR(&_System.CallOpts)
  8269  }
  8270  
  8271  // TOKENHUBADDR is a free data retrieval call binding the contract method 0xfd6a6879.
  8272  //
  8273  // Solidity: function TOKEN_HUB_ADDR() view returns(address)
  8274  func (_System *SystemCallerSession) TOKENHUBADDR() (common.Address, error) {
  8275  	return _System.Contract.TOKENHUBADDR(&_System.CallOpts)
  8276  }
  8277  
  8278  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  8279  //
  8280  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  8281  func (_System *SystemCaller) TOKENMANAGERADDR(opts *bind.CallOpts) (common.Address, error) {
  8282  	var out []interface{}
  8283  	err := _System.contract.Call(opts, &out, "TOKEN_MANAGER_ADDR")
  8284  
  8285  	if err != nil {
  8286  		return *new(common.Address), err
  8287  	}
  8288  
  8289  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8290  
  8291  	return out0, err
  8292  
  8293  }
  8294  
  8295  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  8296  //
  8297  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  8298  func (_System *SystemSession) TOKENMANAGERADDR() (common.Address, error) {
  8299  	return _System.Contract.TOKENMANAGERADDR(&_System.CallOpts)
  8300  }
  8301  
  8302  // TOKENMANAGERADDR is a free data retrieval call binding the contract method 0x75d47a0a.
  8303  //
  8304  // Solidity: function TOKEN_MANAGER_ADDR() view returns(address)
  8305  func (_System *SystemCallerSession) TOKENMANAGERADDR() (common.Address, error) {
  8306  	return _System.Contract.TOKENMANAGERADDR(&_System.CallOpts)
  8307  }
  8308  
  8309  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  8310  //
  8311  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  8312  func (_System *SystemCaller) TRANSFERINCHANNELID(opts *bind.CallOpts) (uint8, error) {
  8313  	var out []interface{}
  8314  	err := _System.contract.Call(opts, &out, "TRANSFER_IN_CHANNELID")
  8315  
  8316  	if err != nil {
  8317  		return *new(uint8), err
  8318  	}
  8319  
  8320  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  8321  
  8322  	return out0, err
  8323  
  8324  }
  8325  
  8326  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  8327  //
  8328  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  8329  func (_System *SystemSession) TRANSFERINCHANNELID() (uint8, error) {
  8330  	return _System.Contract.TRANSFERINCHANNELID(&_System.CallOpts)
  8331  }
  8332  
  8333  // TRANSFERINCHANNELID is a free data retrieval call binding the contract method 0x70fd5bad.
  8334  //
  8335  // Solidity: function TRANSFER_IN_CHANNELID() view returns(uint8)
  8336  func (_System *SystemCallerSession) TRANSFERINCHANNELID() (uint8, error) {
  8337  	return _System.Contract.TRANSFERINCHANNELID(&_System.CallOpts)
  8338  }
  8339  
  8340  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  8341  //
  8342  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  8343  func (_System *SystemCaller) TRANSFEROUTCHANNELID(opts *bind.CallOpts) (uint8, error) {
  8344  	var out []interface{}
  8345  	err := _System.contract.Call(opts, &out, "TRANSFER_OUT_CHANNELID")
  8346  
  8347  	if err != nil {
  8348  		return *new(uint8), err
  8349  	}
  8350  
  8351  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  8352  
  8353  	return out0, err
  8354  
  8355  }
  8356  
  8357  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  8358  //
  8359  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  8360  func (_System *SystemSession) TRANSFEROUTCHANNELID() (uint8, error) {
  8361  	return _System.Contract.TRANSFEROUTCHANNELID(&_System.CallOpts)
  8362  }
  8363  
  8364  // TRANSFEROUTCHANNELID is a free data retrieval call binding the contract method 0xfc3e5908.
  8365  //
  8366  // Solidity: function TRANSFER_OUT_CHANNELID() view returns(uint8)
  8367  func (_System *SystemCallerSession) TRANSFEROUTCHANNELID() (uint8, error) {
  8368  	return _System.Contract.TRANSFEROUTCHANNELID(&_System.CallOpts)
  8369  }
  8370  
  8371  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  8372  //
  8373  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  8374  func (_System *SystemCaller) VALIDATORCONTRACTADDR(opts *bind.CallOpts) (common.Address, error) {
  8375  	var out []interface{}
  8376  	err := _System.contract.Call(opts, &out, "VALIDATOR_CONTRACT_ADDR")
  8377  
  8378  	if err != nil {
  8379  		return *new(common.Address), err
  8380  	}
  8381  
  8382  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8383  
  8384  	return out0, err
  8385  
  8386  }
  8387  
  8388  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  8389  //
  8390  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  8391  func (_System *SystemSession) VALIDATORCONTRACTADDR() (common.Address, error) {
  8392  	return _System.Contract.VALIDATORCONTRACTADDR(&_System.CallOpts)
  8393  }
  8394  
  8395  // VALIDATORCONTRACTADDR is a free data retrieval call binding the contract method 0xf9a2bbc7.
  8396  //
  8397  // Solidity: function VALIDATOR_CONTRACT_ADDR() view returns(address)
  8398  func (_System *SystemCallerSession) VALIDATORCONTRACTADDR() (common.Address, error) {
  8399  	return _System.Contract.VALIDATORCONTRACTADDR(&_System.CallOpts)
  8400  }
  8401  
  8402  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  8403  //
  8404  // Solidity: function alreadyInit() view returns(bool)
  8405  func (_System *SystemCaller) AlreadyInit(opts *bind.CallOpts) (bool, error) {
  8406  	var out []interface{}
  8407  	err := _System.contract.Call(opts, &out, "alreadyInit")
  8408  
  8409  	if err != nil {
  8410  		return *new(bool), err
  8411  	}
  8412  
  8413  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  8414  
  8415  	return out0, err
  8416  
  8417  }
  8418  
  8419  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  8420  //
  8421  // Solidity: function alreadyInit() view returns(bool)
  8422  func (_System *SystemSession) AlreadyInit() (bool, error) {
  8423  	return _System.Contract.AlreadyInit(&_System.CallOpts)
  8424  }
  8425  
  8426  // AlreadyInit is a free data retrieval call binding the contract method 0xa78abc16.
  8427  //
  8428  // Solidity: function alreadyInit() view returns(bool)
  8429  func (_System *SystemCallerSession) AlreadyInit() (bool, error) {
  8430  	return _System.Contract.AlreadyInit(&_System.CallOpts)
  8431  }
  8432  
  8433  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  8434  //
  8435  // Solidity: function bscChainID() view returns(uint16)
  8436  func (_System *SystemCaller) BscChainID(opts *bind.CallOpts) (uint16, error) {
  8437  	var out []interface{}
  8438  	err := _System.contract.Call(opts, &out, "bscChainID")
  8439  
  8440  	if err != nil {
  8441  		return *new(uint16), err
  8442  	}
  8443  
  8444  	out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16)
  8445  
  8446  	return out0, err
  8447  
  8448  }
  8449  
  8450  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  8451  //
  8452  // Solidity: function bscChainID() view returns(uint16)
  8453  func (_System *SystemSession) BscChainID() (uint16, error) {
  8454  	return _System.Contract.BscChainID(&_System.CallOpts)
  8455  }
  8456  
  8457  // BscChainID is a free data retrieval call binding the contract method 0x493279b1.
  8458  //
  8459  // Solidity: function bscChainID() view returns(uint16)
  8460  func (_System *SystemCallerSession) BscChainID() (uint16, error) {
  8461  	return _System.Contract.BscChainID(&_System.CallOpts)
  8462  }
  8463  
  8464  // TransferHelperABI is the input ABI used to generate the binding from.
  8465  const TransferHelperABI = "[]"
  8466  
  8467  // TransferHelperBin is the compiled bytecode used for deploying new contracts.
  8468  var TransferHelperBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220384675e16fcf4874ef3db109f5b14245017bbe24e4fbd824294bd89b9eefe0d464736f6c63430006040033"
  8469  
  8470  // DeployTransferHelper deploys a new Ethereum contract, binding an instance of TransferHelper to it.
  8471  func DeployTransferHelper(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *TransferHelper, error) {
  8472  	parsed, err := abi.JSON(strings.NewReader(TransferHelperABI))
  8473  	if err != nil {
  8474  		return common.Address{}, nil, nil, err
  8475  	}
  8476  
  8477  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(TransferHelperBin), backend)
  8478  	if err != nil {
  8479  		return common.Address{}, nil, nil, err
  8480  	}
  8481  	return address, tx, &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil
  8482  }
  8483  
  8484  // TransferHelper is an auto generated Go binding around an Ethereum contract.
  8485  type TransferHelper struct {
  8486  	TransferHelperCaller     // Read-only binding to the contract
  8487  	TransferHelperTransactor // Write-only binding to the contract
  8488  	TransferHelperFilterer   // Log filterer for contract events
  8489  }
  8490  
  8491  // TransferHelperCaller is an auto generated read-only Go binding around an Ethereum contract.
  8492  type TransferHelperCaller struct {
  8493  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8494  }
  8495  
  8496  // TransferHelperTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8497  type TransferHelperTransactor struct {
  8498  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8499  }
  8500  
  8501  // TransferHelperFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8502  type TransferHelperFilterer struct {
  8503  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8504  }
  8505  
  8506  // TransferHelperSession is an auto generated Go binding around an Ethereum contract,
  8507  // with pre-set call and transact options.
  8508  type TransferHelperSession struct {
  8509  	Contract     *TransferHelper   // Generic contract binding to set the session for
  8510  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8511  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8512  }
  8513  
  8514  // TransferHelperCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8515  // with pre-set call options.
  8516  type TransferHelperCallerSession struct {
  8517  	Contract *TransferHelperCaller // Generic contract caller binding to set the session for
  8518  	CallOpts bind.CallOpts         // Call options to use throughout this session
  8519  }
  8520  
  8521  // TransferHelperTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8522  // with pre-set transact options.
  8523  type TransferHelperTransactorSession struct {
  8524  	Contract     *TransferHelperTransactor // Generic contract transactor binding to set the session for
  8525  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  8526  }
  8527  
  8528  // TransferHelperRaw is an auto generated low-level Go binding around an Ethereum contract.
  8529  type TransferHelperRaw struct {
  8530  	Contract *TransferHelper // Generic contract binding to access the raw methods on
  8531  }
  8532  
  8533  // TransferHelperCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8534  type TransferHelperCallerRaw struct {
  8535  	Contract *TransferHelperCaller // Generic read-only contract binding to access the raw methods on
  8536  }
  8537  
  8538  // TransferHelperTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8539  type TransferHelperTransactorRaw struct {
  8540  	Contract *TransferHelperTransactor // Generic write-only contract binding to access the raw methods on
  8541  }
  8542  
  8543  // NewTransferHelper creates a new instance of TransferHelper, bound to a specific deployed contract.
  8544  func NewTransferHelper(address common.Address, backend bind.ContractBackend) (*TransferHelper, error) {
  8545  	contract, err := bindTransferHelper(address, backend, backend, backend)
  8546  	if err != nil {
  8547  		return nil, err
  8548  	}
  8549  	return &TransferHelper{TransferHelperCaller: TransferHelperCaller{contract: contract}, TransferHelperTransactor: TransferHelperTransactor{contract: contract}, TransferHelperFilterer: TransferHelperFilterer{contract: contract}}, nil
  8550  }
  8551  
  8552  // NewTransferHelperCaller creates a new read-only instance of TransferHelper, bound to a specific deployed contract.
  8553  func NewTransferHelperCaller(address common.Address, caller bind.ContractCaller) (*TransferHelperCaller, error) {
  8554  	contract, err := bindTransferHelper(address, caller, nil, nil)
  8555  	if err != nil {
  8556  		return nil, err
  8557  	}
  8558  	return &TransferHelperCaller{contract: contract}, nil
  8559  }
  8560  
  8561  // NewTransferHelperTransactor creates a new write-only instance of TransferHelper, bound to a specific deployed contract.
  8562  func NewTransferHelperTransactor(address common.Address, transactor bind.ContractTransactor) (*TransferHelperTransactor, error) {
  8563  	contract, err := bindTransferHelper(address, nil, transactor, nil)
  8564  	if err != nil {
  8565  		return nil, err
  8566  	}
  8567  	return &TransferHelperTransactor{contract: contract}, nil
  8568  }
  8569  
  8570  // NewTransferHelperFilterer creates a new log filterer instance of TransferHelper, bound to a specific deployed contract.
  8571  func NewTransferHelperFilterer(address common.Address, filterer bind.ContractFilterer) (*TransferHelperFilterer, error) {
  8572  	contract, err := bindTransferHelper(address, nil, nil, filterer)
  8573  	if err != nil {
  8574  		return nil, err
  8575  	}
  8576  	return &TransferHelperFilterer{contract: contract}, nil
  8577  }
  8578  
  8579  // bindTransferHelper binds a generic wrapper to an already deployed contract.
  8580  func bindTransferHelper(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8581  	parsed, err := abi.JSON(strings.NewReader(TransferHelperABI))
  8582  	if err != nil {
  8583  		return nil, err
  8584  	}
  8585  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8586  }
  8587  
  8588  // Call invokes the (constant) contract method with params as input values and
  8589  // sets the output to result. The result type might be a single field for simple
  8590  // returns, a slice of interfaces for anonymous returns and a struct for named
  8591  // returns.
  8592  func (_TransferHelper *TransferHelperRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8593  	return _TransferHelper.Contract.TransferHelperCaller.contract.Call(opts, result, method, params...)
  8594  }
  8595  
  8596  // Transfer initiates a plain transaction to move funds to the contract, calling
  8597  // its default method if one is available.
  8598  func (_TransferHelper *TransferHelperRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8599  	return _TransferHelper.Contract.TransferHelperTransactor.contract.Transfer(opts)
  8600  }
  8601  
  8602  // Transact invokes the (paid) contract method with params as input values.
  8603  func (_TransferHelper *TransferHelperRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8604  	return _TransferHelper.Contract.TransferHelperTransactor.contract.Transact(opts, method, params...)
  8605  }
  8606  
  8607  // Call invokes the (constant) contract method with params as input values and
  8608  // sets the output to result. The result type might be a single field for simple
  8609  // returns, a slice of interfaces for anonymous returns and a struct for named
  8610  // returns.
  8611  func (_TransferHelper *TransferHelperCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8612  	return _TransferHelper.Contract.contract.Call(opts, result, method, params...)
  8613  }
  8614  
  8615  // Transfer initiates a plain transaction to move funds to the contract, calling
  8616  // its default method if one is available.
  8617  func (_TransferHelper *TransferHelperTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8618  	return _TransferHelper.Contract.contract.Transfer(opts)
  8619  }
  8620  
  8621  // Transact invokes the (paid) contract method with params as input values.
  8622  func (_TransferHelper *TransferHelperTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8623  	return _TransferHelper.Contract.contract.Transact(opts, method, params...)
  8624  }