// Code generated by "callbackgen -type Stream -interface"; DO NOT EDIT.

package binance

import ()

func (s *Stream) OnDepthEvent(cb func(e *DepthEvent)) {
	s.depthEventCallbacks = append(s.depthEventCallbacks, cb)
}

func (s *Stream) EmitDepthEvent(e *DepthEvent) {
	for _, cb := range s.depthEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnKLineEvent(cb func(e *KLineEvent)) {
	s.kLineEventCallbacks = append(s.kLineEventCallbacks, cb)
}

func (s *Stream) EmitKLineEvent(e *KLineEvent) {
	for _, cb := range s.kLineEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnKLineClosedEvent(cb func(e *KLineEvent)) {
	s.kLineClosedEventCallbacks = append(s.kLineClosedEventCallbacks, cb)
}

func (s *Stream) EmitKLineClosedEvent(e *KLineEvent) {
	for _, cb := range s.kLineClosedEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnMarketTradeEvent(cb func(e *MarketTradeEvent)) {
	s.marketTradeEventCallbacks = append(s.marketTradeEventCallbacks, cb)
}

func (s *Stream) EmitMarketTradeEvent(e *MarketTradeEvent) {
	for _, cb := range s.marketTradeEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnAggTradeEvent(cb func(e *AggTradeEvent)) {
	s.aggTradeEventCallbacks = append(s.aggTradeEventCallbacks, cb)
}

func (s *Stream) EmitAggTradeEvent(e *AggTradeEvent) {
	for _, cb := range s.aggTradeEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnForceOrderEvent(cb func(e *ForceOrderEvent)) {
	s.forceOrderEventCallbacks = append(s.forceOrderEventCallbacks, cb)
}

func (s *Stream) EmitForceOrderEvent(e *ForceOrderEvent) {
	for _, cb := range s.forceOrderEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnBalanceUpdateEvent(cb func(event *BalanceUpdateEvent)) {
	s.balanceUpdateEventCallbacks = append(s.balanceUpdateEventCallbacks, cb)
}

func (s *Stream) EmitBalanceUpdateEvent(event *BalanceUpdateEvent) {
	for _, cb := range s.balanceUpdateEventCallbacks {
		cb(event)
	}
}

func (s *Stream) OnOutboundAccountInfoEvent(cb func(event *OutboundAccountInfoEvent)) {
	s.outboundAccountInfoEventCallbacks = append(s.outboundAccountInfoEventCallbacks, cb)
}

func (s *Stream) EmitOutboundAccountInfoEvent(event *OutboundAccountInfoEvent) {
	for _, cb := range s.outboundAccountInfoEventCallbacks {
		cb(event)
	}
}

func (s *Stream) OnOutboundAccountPositionEvent(cb func(event *OutboundAccountPositionEvent)) {
	s.outboundAccountPositionEventCallbacks = append(s.outboundAccountPositionEventCallbacks, cb)
}

func (s *Stream) EmitOutboundAccountPositionEvent(event *OutboundAccountPositionEvent) {
	for _, cb := range s.outboundAccountPositionEventCallbacks {
		cb(event)
	}
}

func (s *Stream) OnExecutionReportEvent(cb func(event *ExecutionReportEvent)) {
	s.executionReportEventCallbacks = append(s.executionReportEventCallbacks, cb)
}

func (s *Stream) EmitExecutionReportEvent(event *ExecutionReportEvent) {
	for _, cb := range s.executionReportEventCallbacks {
		cb(event)
	}
}

func (s *Stream) OnBookTickerEvent(cb func(event *BookTickerEvent)) {
	s.bookTickerEventCallbacks = append(s.bookTickerEventCallbacks, cb)
}

func (s *Stream) EmitBookTickerEvent(event *BookTickerEvent) {
	for _, cb := range s.bookTickerEventCallbacks {
		cb(event)
	}
}

func (s *Stream) OnMarkPriceUpdateEvent(cb func(e *MarkPriceUpdateEvent)) {
	s.markPriceUpdateEventCallbacks = append(s.markPriceUpdateEventCallbacks, cb)
}

func (s *Stream) EmitMarkPriceUpdateEvent(e *MarkPriceUpdateEvent) {
	for _, cb := range s.markPriceUpdateEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnContinuousKLineEvent(cb func(e *ContinuousKLineEvent)) {
	s.continuousKLineEventCallbacks = append(s.continuousKLineEventCallbacks, cb)
}

func (s *Stream) EmitContinuousKLineEvent(e *ContinuousKLineEvent) {
	for _, cb := range s.continuousKLineEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnContinuousKLineClosedEvent(cb func(e *ContinuousKLineEvent)) {
	s.continuousKLineClosedEventCallbacks = append(s.continuousKLineClosedEventCallbacks, cb)
}

func (s *Stream) EmitContinuousKLineClosedEvent(e *ContinuousKLineEvent) {
	for _, cb := range s.continuousKLineClosedEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnOrderTradeUpdateEvent(cb func(e *OrderTradeUpdateEvent)) {
	s.orderTradeUpdateEventCallbacks = append(s.orderTradeUpdateEventCallbacks, cb)
}

func (s *Stream) EmitOrderTradeUpdateEvent(e *OrderTradeUpdateEvent) {
	for _, cb := range s.orderTradeUpdateEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnAccountUpdateEvent(cb func(e *AccountUpdateEvent)) {
	s.accountUpdateEventCallbacks = append(s.accountUpdateEventCallbacks, cb)
}

func (s *Stream) EmitAccountUpdateEvent(e *AccountUpdateEvent) {
	for _, cb := range s.accountUpdateEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnAccountConfigUpdateEvent(cb func(e *AccountConfigUpdateEvent)) {
	s.accountConfigUpdateEventCallbacks = append(s.accountConfigUpdateEventCallbacks, cb)
}

func (s *Stream) EmitAccountConfigUpdateEvent(e *AccountConfigUpdateEvent) {
	for _, cb := range s.accountConfigUpdateEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnMarginCallEvent(cb func(e *MarginCallEvent)) {
	s.marginCallEventCallbacks = append(s.marginCallEventCallbacks, cb)
}

func (s *Stream) EmitMarginCallEvent(e *MarginCallEvent) {
	for _, cb := range s.marginCallEventCallbacks {
		cb(e)
	}
}

func (s *Stream) OnListenKeyExpired(cb func(e *ListenKeyExpired)) {
	s.listenKeyExpiredCallbacks = append(s.listenKeyExpiredCallbacks, cb)
}

func (s *Stream) EmitListenKeyExpired(e *ListenKeyExpired) {
	for _, cb := range s.listenKeyExpiredCallbacks {
		cb(e)
	}
}

func (s *Stream) OnError(cb func(e *ErrorEvent)) {
	s.errorCallbacks = append(s.errorCallbacks, cb)
}

func (s *Stream) EmitError(e *ErrorEvent) {
	for _, cb := range s.errorCallbacks {
		cb(e)
	}
}

type StreamEventHub interface {
	OnDepthEvent(cb func(e *DepthEvent))

	OnKLineEvent(cb func(e *KLineEvent))

	OnKLineClosedEvent(cb func(e *KLineEvent))

	OnMarketTradeEvent(cb func(e *MarketTradeEvent))

	OnAggTradeEvent(cb func(e *AggTradeEvent))

	OnForceOrderEvent(cb func(e *ForceOrderEvent))

	OnBalanceUpdateEvent(cb func(event *BalanceUpdateEvent))

	OnOutboundAccountInfoEvent(cb func(event *OutboundAccountInfoEvent))

	OnOutboundAccountPositionEvent(cb func(event *OutboundAccountPositionEvent))

	OnExecutionReportEvent(cb func(event *ExecutionReportEvent))

	OnBookTickerEvent(cb func(event *BookTickerEvent))

	OnMarkPriceUpdateEvent(cb func(e *MarkPriceUpdateEvent))

	OnContinuousKLineEvent(cb func(e *ContinuousKLineEvent))

	OnContinuousKLineClosedEvent(cb func(e *ContinuousKLineEvent))

	OnOrderTradeUpdateEvent(cb func(e *OrderTradeUpdateEvent))

	OnAccountUpdateEvent(cb func(e *AccountUpdateEvent))

	OnAccountConfigUpdateEvent(cb func(e *AccountConfigUpdateEvent))

	OnMarginCallEvent(cb func(e *MarginCallEvent))

	OnListenKeyExpired(cb func(e *ListenKeyExpired))

	OnError(cb func(e *ErrorEvent))
}
