func (_Sigmacore *SigmacoreFilterer) WatchLOGJOIN(opts *bind.WatchOpts, sink chan<- *SigmacoreLOGJOIN, caller []common.Address, tokenIn []common.Address) (event.Subscription, error) {

	var callerRule []interface{}
	for _, callerItem := range caller {
		callerRule = append(callerRule, callerItem)
	}
	var tokenInRule []interface{}
	for _, tokenInItem := range tokenIn {
		tokenInRule = append(tokenInRule, tokenInItem)
	}

	logs, sub, err := _Sigmacore.contract.WatchLogs(opts, "LOG_JOIN", callerRule, tokenInRule)
	if err != nil {
		return nil, err
	}
	return event.NewSubscription(func(quit <-chan struct{}) error {
		defer sub.Unsubscribe()
		for {
			select {
			case log := <-logs:
				// New log arrived, parse the event and forward to the user
				event := new(SigmacoreLOGJOIN)
				if err := _Sigmacore.contract.UnpackLog(event, "LOG_JOIN", log); err != nil {
					return err
				}
				event.Raw = log

				select {
				case sink <- event:
				case err := <-sub.Err():
					return err
				case <-quit:
					return nil
				}
			case err := <-sub.Err():
				return err
			case <-quit:
				return nil
			}
		}
	}), nil
}
// WatchLOGJOIN is a free log subscription operation binding the contract event 0x63982df10efd8dfaaaa0fcc7f50b2d93b7cba26ccc48adee2873220d485dc39a.
//
// Solidity: event LOG_JOIN(address indexed caller, address indexed tokenIn, uint256 tokenAmountIn)


event LOG_JOIN(address indexed caller, address indexed tokenIn, uint256 tokenAmountIn)
// WatchLOGJOIN is a free log subscription operation binding the contract event 0x63982df10efd8dfaaaa0fcc7f50b2d93b7cba26ccc48adee2873220d485dc39a . // // Solidity : event LOG_JOIN ( address indexed caller address indexed tokenIn uint256 tokenAmountIn )
func (_Sigmacore *SigmacoreFilterer) WatchLOGJOIN(opts *bind.WatchOpts, sink chan<- *SigmacoreLOGJOIN, caller []common.Address, tokenIn []common.Address) (event.Subscription, error) {
	var callerRule []interface{}
	for _, callerItem := range caller {
		callerRule = append(callerRule, callerItem)
	}
	var tokenInRule []interface{}
	for _, tokenInItem := range tokenIn {
		tokenInRule = append(tokenInRule, tokenInItem)
	}
	logs, sub, err := _Sigmacore.contract.WatchLogs(opts, "LOG_JOIN", callerRule, tokenInRule)
	if err != nil {
		return nil, err
	}
	return event.NewSubscription(func(quit <-chan struct{}) error {
		defer sub.Unsubscribe()
		for {
			select {
			case log := <-logs:
				event := new(SigmacoreLOGJOIN)
				if err := _Sigmacore.contract.UnpackLog(event, "LOG_JOIN", log); err != nil {
					return err
				}
				event.Raw = log
				select {
				case sink <- event:
				case err := <-sub.Err():
					return err
				case <-quit:
					return nil
				}
			case err := <-sub.Err():
				return err
			case <-quit:
				return nil
			}
		}
	}), nil
}
func ( _Sigmacore * SigmacoreFilterer ) WatchLOGJOIN ( opts * bind . WatchOpts , sink chan <- * SigmacoreLOGJOIN , caller [ ] common . Address , tokenIn [ ] common . Address ) ( event . Subscription , error ) { var callerRule [ ] interface { } for _ , callerItem := range caller { callerRule = append ( callerRule , callerItem ) } var tokenInRule [ ] interface { } for _ , tokenInItem := range tokenIn { tokenInRule = append ( tokenInRule , tokenInItem ) } logs , sub , err := _Sigmacore . contract . WatchLogs ( opts , " " , callerRule , tokenInRule ) if err != nil { return nil , err } return event . NewSubscription ( func ( quit <- chan struct { } ) error { defer sub . Unsubscribe ( ) for { select { case log := <- logs : event := new ( SigmacoreLOGJOIN ) if err := _Sigmacore . contract . UnpackLog ( event , " " , log ) ; err != nil { return err } event . Raw = log select { case sink <- event : case err := <- sub . Err ( ) : return err case <- quit : return nil } case err := <- sub . Err ( ) : return err case <- quit : return nil } } } ) , nil }
// New log arrived, parse the event and forward to the user