{-|
Module      : EventLoop
Description : Complete import of all the exposed features of this library.
Copyright   : (c) Sebastiaan la Fleur, 2014
License     : BSD3
Maintainer  : sebastiaan.la.fleur@gmail.com
Stability   : experimental
Portability : All

Complete import of all the exposed features of this library. 
The Eventloop package is used to express the communication between a Haskell server and a program modelling an \'IO Device'.
This package contains an example implementation of how such a server would like when a browser is used as a graphical IO device also containing a mouse and keyboard.
The 'EventLoop.Input.InputEvents.InputEvent' models the possible mouse and keyboard events. The 'EventLoop.Output.OutputEvents.OutputEvent' models the possible graphical
output events. There are also input and output systemmessages to communicate metadata between the Haskell server and the graphical IO browser.
The starting point for this example implementation is 'EventLoop.Main.start'.
-}
module EventLoop(
    start,
    Pos,
    Dimension,
    Element,
    
    InputEvent(..),
    Keyboard(..),
    KeyboardButton,
    Mouse(..),
    MouseButton(..),
    SystemMessageIn(..),
    
    OutputEvent(..),
    SystemMessageOut(..),
    Graphical(..),
    GObject(..),
    Primitive(..),
    Name,
    Groupname,
    Color,
    Font,
    Relative,
    outSingle
) where

import EventLoop.Main
import EventLoop.CommonTypes
import EventLoop.Input
import EventLoop.Output