{-# LANGUAGE ConstraintKinds #-}

module Layout.Types
    ( Action
    , DeadKey'(..)
    , BaseChar'(..)
    , BaseChar
    , ActionResult'(..)
    , ActionResult
    , ActionMap
    , DeadKey
    , Letter(..)
    , Key
    , _pos
    , _shortcutPos
    , _shiftlevels
    , _letters
    , _capslock
    , Information
    , _fullName
    , _name
    , _copyright
    , _company
    , _localeId
    , _version
    , _description
    , Layout
    , _info
    , _singletonKeys
    , _mods
    , _variants
    , _keys
    , SingletonKey(..)
    , _sPos
    , _sLetter
    , Variant(..)
    , Logger
    , Mod(..)
    , Modifier
    , ModifierEffect(..)
    , Shiftstate
    , Shiftlevel
    , Pos
    ) where

import Layout.Action (Action)
import Layout.DeadKey (DeadKey'(..), BaseChar'(..), ActionResult'(..))
import Layout.Key (BaseChar, ActionResult, ActionMap, DeadKey, Letter(..), Key, _pos, _shortcutPos, _shiftlevels, _letters, _capslock)
import Layout.Layout (Information(..), _fullName, _name, _copyright, _company, _localeId, _version, _description, Layout(..), _info, _singletonKeys, _mods, _variants, _keys, SingletonKey(..), _sPos, _sLetter, Variant(..))
import Layout.Mod (Mod(..))
import Layout.Modifier (Modifier, Shiftstate, Shiftlevel)
import Layout.ModifierEffect (ModifierEffect(..))
import Layout.Pos (Pos)

import Control.Monad.Writer (MonadWriter)

type Logger = MonadWriter [String]
