github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/contracts/bin/EmitLog2/EmitLog2.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 EmitLog2
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	ethereum "github.com/ethereum/go-ethereum"
    12  	"github.com/ethereum/go-ethereum/accounts/abi"
    13  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    14  	"github.com/ethereum/go-ethereum/common"
    15  	"github.com/ethereum/go-ethereum/core/types"
    16  	"github.com/ethereum/go-ethereum/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = ethereum.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // EmitLog2MetaData contains all meta data concerning the EmitLog2 contract.
    33  var EmitLog2MetaData = &bind.MetaData{
    34  	ABI: "[{\"anonymous\":false,\"inputs\":[],\"name\":\"Log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"}],\"name\":\"LogA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"a\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"d\",\"type\":\"uint256\"}],\"name\":\"LogABCD\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"emitLogs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    35  	Bin: "0x608060405234801561001057600080fd5b50610106806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80637966b4f614602d575b600080fd5b60336035565b005b60206000a06040517f5e7df75d54e493185612379c616118a4c9ac802de621b010c96f74d22df4b30a90600090a16040516001907f977224b24e70d33f3be87246a29c5636cfc8dd6853e175b54af01ff493ffac6290600090a26003600260017fe5562b12d9276c5c987df08afff7b1946f2d869236866ea2285c7e2e95685a64600460405160c691815260200190565b60405180910390a456fea2646970667358221220c82511092869da72fde6f1cec9478f4be47e0e13870c8d5af848ffddfeae937764736f6c634300080c0033",
    36  }
    37  
    38  // EmitLog2ABI is the input ABI used to generate the binding from.
    39  // Deprecated: Use EmitLog2MetaData.ABI instead.
    40  var EmitLog2ABI = EmitLog2MetaData.ABI
    41  
    42  // EmitLog2Bin is the compiled bytecode used for deploying new contracts.
    43  // Deprecated: Use EmitLog2MetaData.Bin instead.
    44  var EmitLog2Bin = EmitLog2MetaData.Bin
    45  
    46  // DeployEmitLog2 deploys a new Ethereum contract, binding an instance of EmitLog2 to it.
    47  func DeployEmitLog2(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *EmitLog2, error) {
    48  	parsed, err := EmitLog2MetaData.GetAbi()
    49  	if err != nil {
    50  		return common.Address{}, nil, nil, err
    51  	}
    52  	if parsed == nil {
    53  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    54  	}
    55  
    56  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(EmitLog2Bin), backend)
    57  	if err != nil {
    58  		return common.Address{}, nil, nil, err
    59  	}
    60  	return address, tx, &EmitLog2{EmitLog2Caller: EmitLog2Caller{contract: contract}, EmitLog2Transactor: EmitLog2Transactor{contract: contract}, EmitLog2Filterer: EmitLog2Filterer{contract: contract}}, nil
    61  }
    62  
    63  // EmitLog2 is an auto generated Go binding around an Ethereum contract.
    64  type EmitLog2 struct {
    65  	EmitLog2Caller     // Read-only binding to the contract
    66  	EmitLog2Transactor // Write-only binding to the contract
    67  	EmitLog2Filterer   // Log filterer for contract events
    68  }
    69  
    70  // EmitLog2Caller is an auto generated read-only Go binding around an Ethereum contract.
    71  type EmitLog2Caller struct {
    72  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    73  }
    74  
    75  // EmitLog2Transactor is an auto generated write-only Go binding around an Ethereum contract.
    76  type EmitLog2Transactor struct {
    77  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    78  }
    79  
    80  // EmitLog2Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    81  type EmitLog2Filterer struct {
    82  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    83  }
    84  
    85  // EmitLog2Session is an auto generated Go binding around an Ethereum contract,
    86  // with pre-set call and transact options.
    87  type EmitLog2Session struct {
    88  	Contract     *EmitLog2         // Generic contract binding to set the session for
    89  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    90  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    91  }
    92  
    93  // EmitLog2CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    94  // with pre-set call options.
    95  type EmitLog2CallerSession struct {
    96  	Contract *EmitLog2Caller // Generic contract caller binding to set the session for
    97  	CallOpts bind.CallOpts   // Call options to use throughout this session
    98  }
    99  
   100  // EmitLog2TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   101  // with pre-set transact options.
   102  type EmitLog2TransactorSession struct {
   103  	Contract     *EmitLog2Transactor // Generic contract transactor binding to set the session for
   104  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   105  }
   106  
   107  // EmitLog2Raw is an auto generated low-level Go binding around an Ethereum contract.
   108  type EmitLog2Raw struct {
   109  	Contract *EmitLog2 // Generic contract binding to access the raw methods on
   110  }
   111  
   112  // EmitLog2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   113  type EmitLog2CallerRaw struct {
   114  	Contract *EmitLog2Caller // Generic read-only contract binding to access the raw methods on
   115  }
   116  
   117  // EmitLog2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   118  type EmitLog2TransactorRaw struct {
   119  	Contract *EmitLog2Transactor // Generic write-only contract binding to access the raw methods on
   120  }
   121  
   122  // NewEmitLog2 creates a new instance of EmitLog2, bound to a specific deployed contract.
   123  func NewEmitLog2(address common.Address, backend bind.ContractBackend) (*EmitLog2, error) {
   124  	contract, err := bindEmitLog2(address, backend, backend, backend)
   125  	if err != nil {
   126  		return nil, err
   127  	}
   128  	return &EmitLog2{EmitLog2Caller: EmitLog2Caller{contract: contract}, EmitLog2Transactor: EmitLog2Transactor{contract: contract}, EmitLog2Filterer: EmitLog2Filterer{contract: contract}}, nil
   129  }
   130  
   131  // NewEmitLog2Caller creates a new read-only instance of EmitLog2, bound to a specific deployed contract.
   132  func NewEmitLog2Caller(address common.Address, caller bind.ContractCaller) (*EmitLog2Caller, error) {
   133  	contract, err := bindEmitLog2(address, caller, nil, nil)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &EmitLog2Caller{contract: contract}, nil
   138  }
   139  
   140  // NewEmitLog2Transactor creates a new write-only instance of EmitLog2, bound to a specific deployed contract.
   141  func NewEmitLog2Transactor(address common.Address, transactor bind.ContractTransactor) (*EmitLog2Transactor, error) {
   142  	contract, err := bindEmitLog2(address, nil, transactor, nil)
   143  	if err != nil {
   144  		return nil, err
   145  	}
   146  	return &EmitLog2Transactor{contract: contract}, nil
   147  }
   148  
   149  // NewEmitLog2Filterer creates a new log filterer instance of EmitLog2, bound to a specific deployed contract.
   150  func NewEmitLog2Filterer(address common.Address, filterer bind.ContractFilterer) (*EmitLog2Filterer, error) {
   151  	contract, err := bindEmitLog2(address, nil, nil, filterer)
   152  	if err != nil {
   153  		return nil, err
   154  	}
   155  	return &EmitLog2Filterer{contract: contract}, nil
   156  }
   157  
   158  // bindEmitLog2 binds a generic wrapper to an already deployed contract.
   159  func bindEmitLog2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   160  	parsed, err := EmitLog2MetaData.GetAbi()
   161  	if err != nil {
   162  		return nil, err
   163  	}
   164  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   165  }
   166  
   167  // Call invokes the (constant) contract method with params as input values and
   168  // sets the output to result. The result type might be a single field for simple
   169  // returns, a slice of interfaces for anonymous returns and a struct for named
   170  // returns.
   171  func (_EmitLog2 *EmitLog2Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   172  	return _EmitLog2.Contract.EmitLog2Caller.contract.Call(opts, result, method, params...)
   173  }
   174  
   175  // Transfer initiates a plain transaction to move funds to the contract, calling
   176  // its default method if one is available.
   177  func (_EmitLog2 *EmitLog2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   178  	return _EmitLog2.Contract.EmitLog2Transactor.contract.Transfer(opts)
   179  }
   180  
   181  // Transact invokes the (paid) contract method with params as input values.
   182  func (_EmitLog2 *EmitLog2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   183  	return _EmitLog2.Contract.EmitLog2Transactor.contract.Transact(opts, method, params...)
   184  }
   185  
   186  // Call invokes the (constant) contract method with params as input values and
   187  // sets the output to result. The result type might be a single field for simple
   188  // returns, a slice of interfaces for anonymous returns and a struct for named
   189  // returns.
   190  func (_EmitLog2 *EmitLog2CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   191  	return _EmitLog2.Contract.contract.Call(opts, result, method, params...)
   192  }
   193  
   194  // Transfer initiates a plain transaction to move funds to the contract, calling
   195  // its default method if one is available.
   196  func (_EmitLog2 *EmitLog2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   197  	return _EmitLog2.Contract.contract.Transfer(opts)
   198  }
   199  
   200  // Transact invokes the (paid) contract method with params as input values.
   201  func (_EmitLog2 *EmitLog2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   202  	return _EmitLog2.Contract.contract.Transact(opts, method, params...)
   203  }
   204  
   205  // EmitLogs is a paid mutator transaction binding the contract method 0x7966b4f6.
   206  //
   207  // Solidity: function emitLogs() returns()
   208  func (_EmitLog2 *EmitLog2Transactor) EmitLogs(opts *bind.TransactOpts) (*types.Transaction, error) {
   209  	return _EmitLog2.contract.Transact(opts, "emitLogs")
   210  }
   211  
   212  // EmitLogs is a paid mutator transaction binding the contract method 0x7966b4f6.
   213  //
   214  // Solidity: function emitLogs() returns()
   215  func (_EmitLog2 *EmitLog2Session) EmitLogs() (*types.Transaction, error) {
   216  	return _EmitLog2.Contract.EmitLogs(&_EmitLog2.TransactOpts)
   217  }
   218  
   219  // EmitLogs is a paid mutator transaction binding the contract method 0x7966b4f6.
   220  //
   221  // Solidity: function emitLogs() returns()
   222  func (_EmitLog2 *EmitLog2TransactorSession) EmitLogs() (*types.Transaction, error) {
   223  	return _EmitLog2.Contract.EmitLogs(&_EmitLog2.TransactOpts)
   224  }
   225  
   226  // EmitLog2LogIterator is returned from FilterLog and is used to iterate over the raw logs and unpacked data for Log events raised by the EmitLog2 contract.
   227  type EmitLog2LogIterator struct {
   228  	Event *EmitLog2Log // Event containing the contract specifics and raw log
   229  
   230  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   231  	event    string              // Event name to use for unpacking event data
   232  
   233  	logs chan types.Log        // Log channel receiving the found contract events
   234  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   235  	done bool                  // Whether the subscription completed delivering logs
   236  	fail error                 // Occurred error to stop iteration
   237  }
   238  
   239  // Next advances the iterator to the subsequent event, returning whether there
   240  // are any more events found. In case of a retrieval or parsing error, false is
   241  // returned and Error() can be queried for the exact failure.
   242  func (it *EmitLog2LogIterator) Next() bool {
   243  	// If the iterator failed, stop iterating
   244  	if it.fail != nil {
   245  		return false
   246  	}
   247  	// If the iterator completed, deliver directly whatever's available
   248  	if it.done {
   249  		select {
   250  		case log := <-it.logs:
   251  			it.Event = new(EmitLog2Log)
   252  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   253  				it.fail = err
   254  				return false
   255  			}
   256  			it.Event.Raw = log
   257  			return true
   258  
   259  		default:
   260  			return false
   261  		}
   262  	}
   263  	// Iterator still in progress, wait for either a data or an error event
   264  	select {
   265  	case log := <-it.logs:
   266  		it.Event = new(EmitLog2Log)
   267  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   268  			it.fail = err
   269  			return false
   270  		}
   271  		it.Event.Raw = log
   272  		return true
   273  
   274  	case err := <-it.sub.Err():
   275  		it.done = true
   276  		it.fail = err
   277  		return it.Next()
   278  	}
   279  }
   280  
   281  // Error returns any retrieval or parsing error occurred during filtering.
   282  func (it *EmitLog2LogIterator) Error() error {
   283  	return it.fail
   284  }
   285  
   286  // Close terminates the iteration process, releasing any pending underlying
   287  // resources.
   288  func (it *EmitLog2LogIterator) Close() error {
   289  	it.sub.Unsubscribe()
   290  	return nil
   291  }
   292  
   293  // EmitLog2Log represents a Log event raised by the EmitLog2 contract.
   294  type EmitLog2Log struct {
   295  	Raw types.Log // Blockchain specific contextual infos
   296  }
   297  
   298  // FilterLog is a free log retrieval operation binding the contract event 0x5e7df75d54e493185612379c616118a4c9ac802de621b010c96f74d22df4b30a.
   299  //
   300  // Solidity: event Log()
   301  func (_EmitLog2 *EmitLog2Filterer) FilterLog(opts *bind.FilterOpts) (*EmitLog2LogIterator, error) {
   302  
   303  	logs, sub, err := _EmitLog2.contract.FilterLogs(opts, "Log")
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	return &EmitLog2LogIterator{contract: _EmitLog2.contract, event: "Log", logs: logs, sub: sub}, nil
   308  }
   309  
   310  // WatchLog is a free log subscription operation binding the contract event 0x5e7df75d54e493185612379c616118a4c9ac802de621b010c96f74d22df4b30a.
   311  //
   312  // Solidity: event Log()
   313  func (_EmitLog2 *EmitLog2Filterer) WatchLog(opts *bind.WatchOpts, sink chan<- *EmitLog2Log) (event.Subscription, error) {
   314  
   315  	logs, sub, err := _EmitLog2.contract.WatchLogs(opts, "Log")
   316  	if err != nil {
   317  		return nil, err
   318  	}
   319  	return event.NewSubscription(func(quit <-chan struct{}) error {
   320  		defer sub.Unsubscribe()
   321  		for {
   322  			select {
   323  			case log := <-logs:
   324  				// New log arrived, parse the event and forward to the user
   325  				event := new(EmitLog2Log)
   326  				if err := _EmitLog2.contract.UnpackLog(event, "Log", log); err != nil {
   327  					return err
   328  				}
   329  				event.Raw = log
   330  
   331  				select {
   332  				case sink <- event:
   333  				case err := <-sub.Err():
   334  					return err
   335  				case <-quit:
   336  					return nil
   337  				}
   338  			case err := <-sub.Err():
   339  				return err
   340  			case <-quit:
   341  				return nil
   342  			}
   343  		}
   344  	}), nil
   345  }
   346  
   347  // ParseLog is a log parse operation binding the contract event 0x5e7df75d54e493185612379c616118a4c9ac802de621b010c96f74d22df4b30a.
   348  //
   349  // Solidity: event Log()
   350  func (_EmitLog2 *EmitLog2Filterer) ParseLog(log types.Log) (*EmitLog2Log, error) {
   351  	event := new(EmitLog2Log)
   352  	if err := _EmitLog2.contract.UnpackLog(event, "Log", log); err != nil {
   353  		return nil, err
   354  	}
   355  	event.Raw = log
   356  	return event, nil
   357  }
   358  
   359  // EmitLog2LogAIterator is returned from FilterLogA and is used to iterate over the raw logs and unpacked data for LogA events raised by the EmitLog2 contract.
   360  type EmitLog2LogAIterator struct {
   361  	Event *EmitLog2LogA // Event containing the contract specifics and raw log
   362  
   363  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   364  	event    string              // Event name to use for unpacking event data
   365  
   366  	logs chan types.Log        // Log channel receiving the found contract events
   367  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   368  	done bool                  // Whether the subscription completed delivering logs
   369  	fail error                 // Occurred error to stop iteration
   370  }
   371  
   372  // Next advances the iterator to the subsequent event, returning whether there
   373  // are any more events found. In case of a retrieval or parsing error, false is
   374  // returned and Error() can be queried for the exact failure.
   375  func (it *EmitLog2LogAIterator) Next() bool {
   376  	// If the iterator failed, stop iterating
   377  	if it.fail != nil {
   378  		return false
   379  	}
   380  	// If the iterator completed, deliver directly whatever's available
   381  	if it.done {
   382  		select {
   383  		case log := <-it.logs:
   384  			it.Event = new(EmitLog2LogA)
   385  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   386  				it.fail = err
   387  				return false
   388  			}
   389  			it.Event.Raw = log
   390  			return true
   391  
   392  		default:
   393  			return false
   394  		}
   395  	}
   396  	// Iterator still in progress, wait for either a data or an error event
   397  	select {
   398  	case log := <-it.logs:
   399  		it.Event = new(EmitLog2LogA)
   400  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   401  			it.fail = err
   402  			return false
   403  		}
   404  		it.Event.Raw = log
   405  		return true
   406  
   407  	case err := <-it.sub.Err():
   408  		it.done = true
   409  		it.fail = err
   410  		return it.Next()
   411  	}
   412  }
   413  
   414  // Error returns any retrieval or parsing error occurred during filtering.
   415  func (it *EmitLog2LogAIterator) Error() error {
   416  	return it.fail
   417  }
   418  
   419  // Close terminates the iteration process, releasing any pending underlying
   420  // resources.
   421  func (it *EmitLog2LogAIterator) Close() error {
   422  	it.sub.Unsubscribe()
   423  	return nil
   424  }
   425  
   426  // EmitLog2LogA represents a LogA event raised by the EmitLog2 contract.
   427  type EmitLog2LogA struct {
   428  	A   *big.Int
   429  	Raw types.Log // Blockchain specific contextual infos
   430  }
   431  
   432  // FilterLogA is a free log retrieval operation binding the contract event 0x977224b24e70d33f3be87246a29c5636cfc8dd6853e175b54af01ff493ffac62.
   433  //
   434  // Solidity: event LogA(uint256 indexed a)
   435  func (_EmitLog2 *EmitLog2Filterer) FilterLogA(opts *bind.FilterOpts, a []*big.Int) (*EmitLog2LogAIterator, error) {
   436  
   437  	var aRule []interface{}
   438  	for _, aItem := range a {
   439  		aRule = append(aRule, aItem)
   440  	}
   441  
   442  	logs, sub, err := _EmitLog2.contract.FilterLogs(opts, "LogA", aRule)
   443  	if err != nil {
   444  		return nil, err
   445  	}
   446  	return &EmitLog2LogAIterator{contract: _EmitLog2.contract, event: "LogA", logs: logs, sub: sub}, nil
   447  }
   448  
   449  // WatchLogA is a free log subscription operation binding the contract event 0x977224b24e70d33f3be87246a29c5636cfc8dd6853e175b54af01ff493ffac62.
   450  //
   451  // Solidity: event LogA(uint256 indexed a)
   452  func (_EmitLog2 *EmitLog2Filterer) WatchLogA(opts *bind.WatchOpts, sink chan<- *EmitLog2LogA, a []*big.Int) (event.Subscription, error) {
   453  
   454  	var aRule []interface{}
   455  	for _, aItem := range a {
   456  		aRule = append(aRule, aItem)
   457  	}
   458  
   459  	logs, sub, err := _EmitLog2.contract.WatchLogs(opts, "LogA", aRule)
   460  	if err != nil {
   461  		return nil, err
   462  	}
   463  	return event.NewSubscription(func(quit <-chan struct{}) error {
   464  		defer sub.Unsubscribe()
   465  		for {
   466  			select {
   467  			case log := <-logs:
   468  				// New log arrived, parse the event and forward to the user
   469  				event := new(EmitLog2LogA)
   470  				if err := _EmitLog2.contract.UnpackLog(event, "LogA", log); err != nil {
   471  					return err
   472  				}
   473  				event.Raw = log
   474  
   475  				select {
   476  				case sink <- event:
   477  				case err := <-sub.Err():
   478  					return err
   479  				case <-quit:
   480  					return nil
   481  				}
   482  			case err := <-sub.Err():
   483  				return err
   484  			case <-quit:
   485  				return nil
   486  			}
   487  		}
   488  	}), nil
   489  }
   490  
   491  // ParseLogA is a log parse operation binding the contract event 0x977224b24e70d33f3be87246a29c5636cfc8dd6853e175b54af01ff493ffac62.
   492  //
   493  // Solidity: event LogA(uint256 indexed a)
   494  func (_EmitLog2 *EmitLog2Filterer) ParseLogA(log types.Log) (*EmitLog2LogA, error) {
   495  	event := new(EmitLog2LogA)
   496  	if err := _EmitLog2.contract.UnpackLog(event, "LogA", log); err != nil {
   497  		return nil, err
   498  	}
   499  	event.Raw = log
   500  	return event, nil
   501  }
   502  
   503  // EmitLog2LogABCDIterator is returned from FilterLogABCD and is used to iterate over the raw logs and unpacked data for LogABCD events raised by the EmitLog2 contract.
   504  type EmitLog2LogABCDIterator struct {
   505  	Event *EmitLog2LogABCD // Event containing the contract specifics and raw log
   506  
   507  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   508  	event    string              // Event name to use for unpacking event data
   509  
   510  	logs chan types.Log        // Log channel receiving the found contract events
   511  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   512  	done bool                  // Whether the subscription completed delivering logs
   513  	fail error                 // Occurred error to stop iteration
   514  }
   515  
   516  // Next advances the iterator to the subsequent event, returning whether there
   517  // are any more events found. In case of a retrieval or parsing error, false is
   518  // returned and Error() can be queried for the exact failure.
   519  func (it *EmitLog2LogABCDIterator) Next() bool {
   520  	// If the iterator failed, stop iterating
   521  	if it.fail != nil {
   522  		return false
   523  	}
   524  	// If the iterator completed, deliver directly whatever's available
   525  	if it.done {
   526  		select {
   527  		case log := <-it.logs:
   528  			it.Event = new(EmitLog2LogABCD)
   529  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   530  				it.fail = err
   531  				return false
   532  			}
   533  			it.Event.Raw = log
   534  			return true
   535  
   536  		default:
   537  			return false
   538  		}
   539  	}
   540  	// Iterator still in progress, wait for either a data or an error event
   541  	select {
   542  	case log := <-it.logs:
   543  		it.Event = new(EmitLog2LogABCD)
   544  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   545  			it.fail = err
   546  			return false
   547  		}
   548  		it.Event.Raw = log
   549  		return true
   550  
   551  	case err := <-it.sub.Err():
   552  		it.done = true
   553  		it.fail = err
   554  		return it.Next()
   555  	}
   556  }
   557  
   558  // Error returns any retrieval or parsing error occurred during filtering.
   559  func (it *EmitLog2LogABCDIterator) Error() error {
   560  	return it.fail
   561  }
   562  
   563  // Close terminates the iteration process, releasing any pending underlying
   564  // resources.
   565  func (it *EmitLog2LogABCDIterator) Close() error {
   566  	it.sub.Unsubscribe()
   567  	return nil
   568  }
   569  
   570  // EmitLog2LogABCD represents a LogABCD event raised by the EmitLog2 contract.
   571  type EmitLog2LogABCD struct {
   572  	A   *big.Int
   573  	B   *big.Int
   574  	C   *big.Int
   575  	D   *big.Int
   576  	Raw types.Log // Blockchain specific contextual infos
   577  }
   578  
   579  // FilterLogABCD is a free log retrieval operation binding the contract event 0xe5562b12d9276c5c987df08afff7b1946f2d869236866ea2285c7e2e95685a64.
   580  //
   581  // Solidity: event LogABCD(uint256 indexed a, uint256 indexed b, uint256 indexed c, uint256 d)
   582  func (_EmitLog2 *EmitLog2Filterer) FilterLogABCD(opts *bind.FilterOpts, a []*big.Int, b []*big.Int, c []*big.Int) (*EmitLog2LogABCDIterator, error) {
   583  
   584  	var aRule []interface{}
   585  	for _, aItem := range a {
   586  		aRule = append(aRule, aItem)
   587  	}
   588  	var bRule []interface{}
   589  	for _, bItem := range b {
   590  		bRule = append(bRule, bItem)
   591  	}
   592  	var cRule []interface{}
   593  	for _, cItem := range c {
   594  		cRule = append(cRule, cItem)
   595  	}
   596  
   597  	logs, sub, err := _EmitLog2.contract.FilterLogs(opts, "LogABCD", aRule, bRule, cRule)
   598  	if err != nil {
   599  		return nil, err
   600  	}
   601  	return &EmitLog2LogABCDIterator{contract: _EmitLog2.contract, event: "LogABCD", logs: logs, sub: sub}, nil
   602  }
   603  
   604  // WatchLogABCD is a free log subscription operation binding the contract event 0xe5562b12d9276c5c987df08afff7b1946f2d869236866ea2285c7e2e95685a64.
   605  //
   606  // Solidity: event LogABCD(uint256 indexed a, uint256 indexed b, uint256 indexed c, uint256 d)
   607  func (_EmitLog2 *EmitLog2Filterer) WatchLogABCD(opts *bind.WatchOpts, sink chan<- *EmitLog2LogABCD, a []*big.Int, b []*big.Int, c []*big.Int) (event.Subscription, error) {
   608  
   609  	var aRule []interface{}
   610  	for _, aItem := range a {
   611  		aRule = append(aRule, aItem)
   612  	}
   613  	var bRule []interface{}
   614  	for _, bItem := range b {
   615  		bRule = append(bRule, bItem)
   616  	}
   617  	var cRule []interface{}
   618  	for _, cItem := range c {
   619  		cRule = append(cRule, cItem)
   620  	}
   621  
   622  	logs, sub, err := _EmitLog2.contract.WatchLogs(opts, "LogABCD", aRule, bRule, cRule)
   623  	if err != nil {
   624  		return nil, err
   625  	}
   626  	return event.NewSubscription(func(quit <-chan struct{}) error {
   627  		defer sub.Unsubscribe()
   628  		for {
   629  			select {
   630  			case log := <-logs:
   631  				// New log arrived, parse the event and forward to the user
   632  				event := new(EmitLog2LogABCD)
   633  				if err := _EmitLog2.contract.UnpackLog(event, "LogABCD", log); err != nil {
   634  					return err
   635  				}
   636  				event.Raw = log
   637  
   638  				select {
   639  				case sink <- event:
   640  				case err := <-sub.Err():
   641  					return err
   642  				case <-quit:
   643  					return nil
   644  				}
   645  			case err := <-sub.Err():
   646  				return err
   647  			case <-quit:
   648  				return nil
   649  			}
   650  		}
   651  	}), nil
   652  }
   653  
   654  // ParseLogABCD is a log parse operation binding the contract event 0xe5562b12d9276c5c987df08afff7b1946f2d869236866ea2285c7e2e95685a64.
   655  //
   656  // Solidity: event LogABCD(uint256 indexed a, uint256 indexed b, uint256 indexed c, uint256 d)
   657  func (_EmitLog2 *EmitLog2Filterer) ParseLogABCD(log types.Log) (*EmitLog2LogABCD, error) {
   658  	event := new(EmitLog2LogABCD)
   659  	if err := _EmitLog2.contract.UnpackLog(event, "LogABCD", log); err != nil {
   660  		return nil, err
   661  	}
   662  	event.Raw = log
   663  	return event, nil
   664  }