    -- |
    -- Module: Options.Types
    -- License: MIT
    module Options.Types
    	( OptionDefinitions(..)
    	, GroupInfo(..)
    	, OptionInfo(..)
    	, TokensFor(..)
    	) where

    data OptionDefinitions a = OptionDefinitions [OptionInfo] [(String, [OptionInfo])]

    data GroupInfo = GroupInfo
    	{ groupInfoName :: String
    	, groupInfoTitle :: String
    	, groupInfoDescription :: String
    	}
    	deriving (Eq, Show)

    data OptionInfo = OptionInfo
    	{ optionInfoKey :: String
    	, optionInfoShortFlags :: [Char]
    	, optionInfoLongFlags :: [String]
    	, optionInfoDefault :: String
    	, optionInfoUnary :: Bool
    	, optionInfoDescription :: String
    	, optionInfoGroup :: Maybe GroupInfo
    	}
    	deriving (Eq, Show)

    data TokensFor a = TokensFor [(String, (String, String))] [String]