interface IEventDataProps {
  data?: any
  nativeEvent?: Event
}
interface IEventWithData extends IEventDataProps {
  type: string
}
  type IEventCallback = (event: IEventWithData) => void

interface IEventManager {
  addEventListener: (eventType: string, callback: IEventCallback) => void
  removeEventListener: (eventType: string, callback: IEventCallback) => void
  dispatchEvent: (event: IEventWithData) => void
}

export type {
  IEventDataProps,
  IEventWithData,
  IEventManager,
  IEventCallback
}
