module Data.Aeson.AutoType.Plugin.Subtype (
SubtypePlugin (..)
, SubtypeDesc (..)
) where
import Data.Aeson.AutoType.Type
import Data.Aeson
import Data.Dynamic
type TypeDesc = String
data SubtypePlugin = SubtypePlugin {
SubtypePlugin -> [Value] -> Maybe SubtypeDesc
detect :: [Value] -> Maybe SubtypeDesc
, SubtypePlugin
-> SubtypeDesc -> SubtypeDesc -> Either SubtypeDesc Type
unify :: SubtypeDesc -> SubtypeDesc -> Either SubtypeDesc Type
}
data SubtypeDesc = SubtypeDesc {
SubtypeDesc -> String
subtypeName :: String
, SubtypeDesc -> Type
subtypeClass :: Type
, SubtypeDesc -> String -> String
reference :: String -> String
, SubtypeDesc -> String
declare :: String
, SubtypeDesc -> Dynamic
typeInfo :: Dynamic
}