{-# LANGUAGE DeriveAnyClass  #-}
{-# LANGUAGE DeriveGeneric   #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}

-- |
-- Module      :  Network.Polkadot.Metadata.V9
-- Copyright   :  Aleksandr Krupenkin 2016-2024
-- License     :  Apache-2.0
--
-- Maintainer  :  mail@akru.me
-- Stability   :  experimental
-- Portability :  portable
--
-- Metadata version 9 definitions.
--

module Network.Polkadot.Metadata.V9 where

import           Codec.Scale                    (Decode, Encode, Generic)
import           Data.Aeson                     (Options (constructorTagModifier, fieldLabelModifier, sumEncoding),
                                                 SumEncoding (ObjectWithSingleField),
                                                 defaultOptions)
import           Data.Aeson.TH                  (deriveJSON)
import           Data.ByteArray.HexString       (HexString)
import           Data.Char                      (toLower)
import           Data.Text                      (Text)
import qualified GHC.Generics                   as GHC (Generic)
import           Lens.Micro                     (_head, over)

import           Network.Polkadot.Metadata.Type (Type)

data FunctionArgumentMetadata = FunctionArgumentMetadata
    { FunctionArgumentMetadata -> Text
argumentName :: !Text
    , FunctionArgumentMetadata -> Type
argumentType :: !Type
    } deriving (FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool
(FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool)
-> (FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool)
-> Eq FunctionArgumentMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool
== :: FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool
$c/= :: FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool
/= :: FunctionArgumentMetadata -> FunctionArgumentMetadata -> Bool
Eq, Int -> FunctionArgumentMetadata -> ShowS
[FunctionArgumentMetadata] -> ShowS
FunctionArgumentMetadata -> String
(Int -> FunctionArgumentMetadata -> ShowS)
-> (FunctionArgumentMetadata -> String)
-> ([FunctionArgumentMetadata] -> ShowS)
-> Show FunctionArgumentMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FunctionArgumentMetadata -> ShowS
showsPrec :: Int -> FunctionArgumentMetadata -> ShowS
$cshow :: FunctionArgumentMetadata -> String
show :: FunctionArgumentMetadata -> String
$cshowList :: [FunctionArgumentMetadata] -> ShowS
showList :: [FunctionArgumentMetadata] -> ShowS
Show, All SListI (Code FunctionArgumentMetadata)
All SListI (Code FunctionArgumentMetadata) =>
(FunctionArgumentMetadata -> Rep FunctionArgumentMetadata)
-> (Rep FunctionArgumentMetadata -> FunctionArgumentMetadata)
-> Generic FunctionArgumentMetadata
Rep FunctionArgumentMetadata -> FunctionArgumentMetadata
FunctionArgumentMetadata -> Rep FunctionArgumentMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: FunctionArgumentMetadata -> Rep FunctionArgumentMetadata
from :: FunctionArgumentMetadata -> Rep FunctionArgumentMetadata
$cto :: Rep FunctionArgumentMetadata -> FunctionArgumentMetadata
to :: Rep FunctionArgumentMetadata -> FunctionArgumentMetadata
Generic, (forall x.
 FunctionArgumentMetadata -> Rep FunctionArgumentMetadata x)
-> (forall x.
    Rep FunctionArgumentMetadata x -> FunctionArgumentMetadata)
-> Generic FunctionArgumentMetadata
forall x.
Rep FunctionArgumentMetadata x -> FunctionArgumentMetadata
forall x.
FunctionArgumentMetadata -> Rep FunctionArgumentMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
FunctionArgumentMetadata -> Rep FunctionArgumentMetadata x
from :: forall x.
FunctionArgumentMetadata -> Rep FunctionArgumentMetadata x
$cto :: forall x.
Rep FunctionArgumentMetadata x -> FunctionArgumentMetadata
to :: forall x.
Rep FunctionArgumentMetadata x -> FunctionArgumentMetadata
GHC.Generic, Putter FunctionArgumentMetadata
Putter FunctionArgumentMetadata -> Encode FunctionArgumentMetadata
forall a. Putter a -> Encode a
$cput :: Putter FunctionArgumentMetadata
put :: Putter FunctionArgumentMetadata
Encode, Get FunctionArgumentMetadata
Get FunctionArgumentMetadata -> Decode FunctionArgumentMetadata
forall a. Get a -> Decode a
$cget :: Get FunctionArgumentMetadata
get :: Get FunctionArgumentMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 8 }) ''FunctionArgumentMetadata)

data FunctionMetadata = FunctionMetadata
    { FunctionMetadata -> Text
functionName :: !Text
    , FunctionMetadata -> [FunctionArgumentMetadata]
functionArgs :: ![FunctionArgumentMetadata]
    , FunctionMetadata -> [Text]
functionDocs :: ![Text]
    } deriving (FunctionMetadata -> FunctionMetadata -> Bool
(FunctionMetadata -> FunctionMetadata -> Bool)
-> (FunctionMetadata -> FunctionMetadata -> Bool)
-> Eq FunctionMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: FunctionMetadata -> FunctionMetadata -> Bool
== :: FunctionMetadata -> FunctionMetadata -> Bool
$c/= :: FunctionMetadata -> FunctionMetadata -> Bool
/= :: FunctionMetadata -> FunctionMetadata -> Bool
Eq, Int -> FunctionMetadata -> ShowS
[FunctionMetadata] -> ShowS
FunctionMetadata -> String
(Int -> FunctionMetadata -> ShowS)
-> (FunctionMetadata -> String)
-> ([FunctionMetadata] -> ShowS)
-> Show FunctionMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> FunctionMetadata -> ShowS
showsPrec :: Int -> FunctionMetadata -> ShowS
$cshow :: FunctionMetadata -> String
show :: FunctionMetadata -> String
$cshowList :: [FunctionMetadata] -> ShowS
showList :: [FunctionMetadata] -> ShowS
Show, All SListI (Code FunctionMetadata)
All SListI (Code FunctionMetadata) =>
(FunctionMetadata -> Rep FunctionMetadata)
-> (Rep FunctionMetadata -> FunctionMetadata)
-> Generic FunctionMetadata
Rep FunctionMetadata -> FunctionMetadata
FunctionMetadata -> Rep FunctionMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: FunctionMetadata -> Rep FunctionMetadata
from :: FunctionMetadata -> Rep FunctionMetadata
$cto :: Rep FunctionMetadata -> FunctionMetadata
to :: Rep FunctionMetadata -> FunctionMetadata
Generic, (forall x. FunctionMetadata -> Rep FunctionMetadata x)
-> (forall x. Rep FunctionMetadata x -> FunctionMetadata)
-> Generic FunctionMetadata
forall x. Rep FunctionMetadata x -> FunctionMetadata
forall x. FunctionMetadata -> Rep FunctionMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. FunctionMetadata -> Rep FunctionMetadata x
from :: forall x. FunctionMetadata -> Rep FunctionMetadata x
$cto :: forall x. Rep FunctionMetadata x -> FunctionMetadata
to :: forall x. Rep FunctionMetadata x -> FunctionMetadata
GHC.Generic, Putter FunctionMetadata
Putter FunctionMetadata -> Encode FunctionMetadata
forall a. Putter a -> Encode a
$cput :: Putter FunctionMetadata
put :: Putter FunctionMetadata
Encode, Get FunctionMetadata
Get FunctionMetadata -> Decode FunctionMetadata
forall a. Get a -> Decode a
$cget :: Get FunctionMetadata
get :: Get FunctionMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 8 }) ''FunctionMetadata)

data EventMetadata = EventMetadata
    { EventMetadata -> Text
eventName :: !Text
    , EventMetadata -> [Type]
eventArgs :: ![Type]
    , EventMetadata -> [Text]
eventDocs :: ![Text]
    } deriving (EventMetadata -> EventMetadata -> Bool
(EventMetadata -> EventMetadata -> Bool)
-> (EventMetadata -> EventMetadata -> Bool) -> Eq EventMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EventMetadata -> EventMetadata -> Bool
== :: EventMetadata -> EventMetadata -> Bool
$c/= :: EventMetadata -> EventMetadata -> Bool
/= :: EventMetadata -> EventMetadata -> Bool
Eq, Int -> EventMetadata -> ShowS
[EventMetadata] -> ShowS
EventMetadata -> String
(Int -> EventMetadata -> ShowS)
-> (EventMetadata -> String)
-> ([EventMetadata] -> ShowS)
-> Show EventMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EventMetadata -> ShowS
showsPrec :: Int -> EventMetadata -> ShowS
$cshow :: EventMetadata -> String
show :: EventMetadata -> String
$cshowList :: [EventMetadata] -> ShowS
showList :: [EventMetadata] -> ShowS
Show, All SListI (Code EventMetadata)
All SListI (Code EventMetadata) =>
(EventMetadata -> Rep EventMetadata)
-> (Rep EventMetadata -> EventMetadata) -> Generic EventMetadata
Rep EventMetadata -> EventMetadata
EventMetadata -> Rep EventMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: EventMetadata -> Rep EventMetadata
from :: EventMetadata -> Rep EventMetadata
$cto :: Rep EventMetadata -> EventMetadata
to :: Rep EventMetadata -> EventMetadata
Generic, (forall x. EventMetadata -> Rep EventMetadata x)
-> (forall x. Rep EventMetadata x -> EventMetadata)
-> Generic EventMetadata
forall x. Rep EventMetadata x -> EventMetadata
forall x. EventMetadata -> Rep EventMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EventMetadata -> Rep EventMetadata x
from :: forall x. EventMetadata -> Rep EventMetadata x
$cto :: forall x. Rep EventMetadata x -> EventMetadata
to :: forall x. Rep EventMetadata x -> EventMetadata
GHC.Generic, Putter EventMetadata
Putter EventMetadata -> Encode EventMetadata
forall a. Putter a -> Encode a
$cput :: Putter EventMetadata
put :: Putter EventMetadata
Encode, Get EventMetadata
Get EventMetadata -> Decode EventMetadata
forall a. Get a -> Decode a
$cget :: Get EventMetadata
get :: Get EventMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 5 }) ''EventMetadata)

data ModuleConstantMetadata = ModuleConstantMetadata
    { ModuleConstantMetadata -> Text
constantName  :: !Text
    , ModuleConstantMetadata -> Type
constantType  :: !Type
    , ModuleConstantMetadata -> HexString
constantValue :: !HexString
    , ModuleConstantMetadata -> [Text]
constantDocs  :: ![Text]
    } deriving (ModuleConstantMetadata -> ModuleConstantMetadata -> Bool
(ModuleConstantMetadata -> ModuleConstantMetadata -> Bool)
-> (ModuleConstantMetadata -> ModuleConstantMetadata -> Bool)
-> Eq ModuleConstantMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ModuleConstantMetadata -> ModuleConstantMetadata -> Bool
== :: ModuleConstantMetadata -> ModuleConstantMetadata -> Bool
$c/= :: ModuleConstantMetadata -> ModuleConstantMetadata -> Bool
/= :: ModuleConstantMetadata -> ModuleConstantMetadata -> Bool
Eq, Int -> ModuleConstantMetadata -> ShowS
[ModuleConstantMetadata] -> ShowS
ModuleConstantMetadata -> String
(Int -> ModuleConstantMetadata -> ShowS)
-> (ModuleConstantMetadata -> String)
-> ([ModuleConstantMetadata] -> ShowS)
-> Show ModuleConstantMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ModuleConstantMetadata -> ShowS
showsPrec :: Int -> ModuleConstantMetadata -> ShowS
$cshow :: ModuleConstantMetadata -> String
show :: ModuleConstantMetadata -> String
$cshowList :: [ModuleConstantMetadata] -> ShowS
showList :: [ModuleConstantMetadata] -> ShowS
Show, All SListI (Code ModuleConstantMetadata)
All SListI (Code ModuleConstantMetadata) =>
(ModuleConstantMetadata -> Rep ModuleConstantMetadata)
-> (Rep ModuleConstantMetadata -> ModuleConstantMetadata)
-> Generic ModuleConstantMetadata
Rep ModuleConstantMetadata -> ModuleConstantMetadata
ModuleConstantMetadata -> Rep ModuleConstantMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: ModuleConstantMetadata -> Rep ModuleConstantMetadata
from :: ModuleConstantMetadata -> Rep ModuleConstantMetadata
$cto :: Rep ModuleConstantMetadata -> ModuleConstantMetadata
to :: Rep ModuleConstantMetadata -> ModuleConstantMetadata
Generic, (forall x. ModuleConstantMetadata -> Rep ModuleConstantMetadata x)
-> (forall x.
    Rep ModuleConstantMetadata x -> ModuleConstantMetadata)
-> Generic ModuleConstantMetadata
forall x. Rep ModuleConstantMetadata x -> ModuleConstantMetadata
forall x. ModuleConstantMetadata -> Rep ModuleConstantMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ModuleConstantMetadata -> Rep ModuleConstantMetadata x
from :: forall x. ModuleConstantMetadata -> Rep ModuleConstantMetadata x
$cto :: forall x. Rep ModuleConstantMetadata x -> ModuleConstantMetadata
to :: forall x. Rep ModuleConstantMetadata x -> ModuleConstantMetadata
GHC.Generic, Putter ModuleConstantMetadata
Putter ModuleConstantMetadata -> Encode ModuleConstantMetadata
forall a. Putter a -> Encode a
$cput :: Putter ModuleConstantMetadata
put :: Putter ModuleConstantMetadata
Encode, Get ModuleConstantMetadata
Get ModuleConstantMetadata -> Decode ModuleConstantMetadata
forall a. Get a -> Decode a
$cget :: Get ModuleConstantMetadata
get :: Get ModuleConstantMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 8 }) ''ModuleConstantMetadata)

data ErrorMetadata = ErrorMetadata
    { ErrorMetadata -> Text
errorName :: !Text
    , ErrorMetadata -> [Text]
errorDocs :: ![Text]
    } deriving (ErrorMetadata -> ErrorMetadata -> Bool
(ErrorMetadata -> ErrorMetadata -> Bool)
-> (ErrorMetadata -> ErrorMetadata -> Bool) -> Eq ErrorMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ErrorMetadata -> ErrorMetadata -> Bool
== :: ErrorMetadata -> ErrorMetadata -> Bool
$c/= :: ErrorMetadata -> ErrorMetadata -> Bool
/= :: ErrorMetadata -> ErrorMetadata -> Bool
Eq, Int -> ErrorMetadata -> ShowS
[ErrorMetadata] -> ShowS
ErrorMetadata -> String
(Int -> ErrorMetadata -> ShowS)
-> (ErrorMetadata -> String)
-> ([ErrorMetadata] -> ShowS)
-> Show ErrorMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ErrorMetadata -> ShowS
showsPrec :: Int -> ErrorMetadata -> ShowS
$cshow :: ErrorMetadata -> String
show :: ErrorMetadata -> String
$cshowList :: [ErrorMetadata] -> ShowS
showList :: [ErrorMetadata] -> ShowS
Show, All SListI (Code ErrorMetadata)
All SListI (Code ErrorMetadata) =>
(ErrorMetadata -> Rep ErrorMetadata)
-> (Rep ErrorMetadata -> ErrorMetadata) -> Generic ErrorMetadata
Rep ErrorMetadata -> ErrorMetadata
ErrorMetadata -> Rep ErrorMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: ErrorMetadata -> Rep ErrorMetadata
from :: ErrorMetadata -> Rep ErrorMetadata
$cto :: Rep ErrorMetadata -> ErrorMetadata
to :: Rep ErrorMetadata -> ErrorMetadata
Generic, (forall x. ErrorMetadata -> Rep ErrorMetadata x)
-> (forall x. Rep ErrorMetadata x -> ErrorMetadata)
-> Generic ErrorMetadata
forall x. Rep ErrorMetadata x -> ErrorMetadata
forall x. ErrorMetadata -> Rep ErrorMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ErrorMetadata -> Rep ErrorMetadata x
from :: forall x. ErrorMetadata -> Rep ErrorMetadata x
$cto :: forall x. Rep ErrorMetadata x -> ErrorMetadata
to :: forall x. Rep ErrorMetadata x -> ErrorMetadata
GHC.Generic, Putter ErrorMetadata
Putter ErrorMetadata -> Encode ErrorMetadata
forall a. Putter a -> Encode a
$cput :: Putter ErrorMetadata
put :: Putter ErrorMetadata
Encode, Get ErrorMetadata
Get ErrorMetadata -> Decode ErrorMetadata
forall a. Get a -> Decode a
$cget :: Get ErrorMetadata
get :: Get ErrorMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 5 }) ''ErrorMetadata)

data StorageHasher
    = Blake2_128
    | Blake2_256
    | Twox128
    | Twox256
    | Twox64Concat
    deriving (StorageHasher -> StorageHasher -> Bool
(StorageHasher -> StorageHasher -> Bool)
-> (StorageHasher -> StorageHasher -> Bool) -> Eq StorageHasher
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StorageHasher -> StorageHasher -> Bool
== :: StorageHasher -> StorageHasher -> Bool
$c/= :: StorageHasher -> StorageHasher -> Bool
/= :: StorageHasher -> StorageHasher -> Bool
Eq, Int -> StorageHasher -> ShowS
[StorageHasher] -> ShowS
StorageHasher -> String
(Int -> StorageHasher -> ShowS)
-> (StorageHasher -> String)
-> ([StorageHasher] -> ShowS)
-> Show StorageHasher
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StorageHasher -> ShowS
showsPrec :: Int -> StorageHasher -> ShowS
$cshow :: StorageHasher -> String
show :: StorageHasher -> String
$cshowList :: [StorageHasher] -> ShowS
showList :: [StorageHasher] -> ShowS
Show, All SListI (Code StorageHasher)
All SListI (Code StorageHasher) =>
(StorageHasher -> Rep StorageHasher)
-> (Rep StorageHasher -> StorageHasher) -> Generic StorageHasher
Rep StorageHasher -> StorageHasher
StorageHasher -> Rep StorageHasher
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: StorageHasher -> Rep StorageHasher
from :: StorageHasher -> Rep StorageHasher
$cto :: Rep StorageHasher -> StorageHasher
to :: Rep StorageHasher -> StorageHasher
Generic, (forall x. StorageHasher -> Rep StorageHasher x)
-> (forall x. Rep StorageHasher x -> StorageHasher)
-> Generic StorageHasher
forall x. Rep StorageHasher x -> StorageHasher
forall x. StorageHasher -> Rep StorageHasher x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StorageHasher -> Rep StorageHasher x
from :: forall x. StorageHasher -> Rep StorageHasher x
$cto :: forall x. Rep StorageHasher x -> StorageHasher
to :: forall x. Rep StorageHasher x -> StorageHasher
GHC.Generic, Putter StorageHasher
Putter StorageHasher -> Encode StorageHasher
forall a. Putter a -> Encode a
$cput :: Putter StorageHasher
put :: Putter StorageHasher
Encode, Get StorageHasher
Get StorageHasher -> Decode StorageHasher
forall a. Get a -> Decode a
$cget :: Get StorageHasher
get :: Get StorageHasher
Decode)

$(deriveJSON defaultOptions ''StorageHasher)

data MapType = MapType
    { MapType -> StorageHasher
mapHasher :: !StorageHasher
    , MapType -> Type
mapKey    :: !Type
    , MapType -> Type
mapValue  :: !Type
    , MapType -> Bool
mapLinked :: !Bool
    } deriving (MapType -> MapType -> Bool
(MapType -> MapType -> Bool)
-> (MapType -> MapType -> Bool) -> Eq MapType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MapType -> MapType -> Bool
== :: MapType -> MapType -> Bool
$c/= :: MapType -> MapType -> Bool
/= :: MapType -> MapType -> Bool
Eq, Int -> MapType -> ShowS
[MapType] -> ShowS
MapType -> String
(Int -> MapType -> ShowS)
-> (MapType -> String) -> ([MapType] -> ShowS) -> Show MapType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MapType -> ShowS
showsPrec :: Int -> MapType -> ShowS
$cshow :: MapType -> String
show :: MapType -> String
$cshowList :: [MapType] -> ShowS
showList :: [MapType] -> ShowS
Show, All SListI (Code MapType)
All SListI (Code MapType) =>
(MapType -> Rep MapType)
-> (Rep MapType -> MapType) -> Generic MapType
Rep MapType -> MapType
MapType -> Rep MapType
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: MapType -> Rep MapType
from :: MapType -> Rep MapType
$cto :: Rep MapType -> MapType
to :: Rep MapType -> MapType
Generic, (forall x. MapType -> Rep MapType x)
-> (forall x. Rep MapType x -> MapType) -> Generic MapType
forall x. Rep MapType x -> MapType
forall x. MapType -> Rep MapType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. MapType -> Rep MapType x
from :: forall x. MapType -> Rep MapType x
$cto :: forall x. Rep MapType x -> MapType
to :: forall x. Rep MapType x -> MapType
GHC.Generic, Putter MapType
Putter MapType -> Encode MapType
forall a. Putter a -> Encode a
$cput :: Putter MapType
put :: Putter MapType
Encode, Get MapType
Get MapType -> Decode MapType
forall a. Get a -> Decode a
$cget :: Get MapType
get :: Get MapType
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 3 }) ''MapType)

data DoubleMapType = DoubleMapType
    { DoubleMapType -> StorageHasher
doubleMapHasher     :: !StorageHasher
    , DoubleMapType -> Type
doubleMapKey1       :: !Type
    , DoubleMapType -> Type
doubleMapKey2       :: !Type
    , DoubleMapType -> Type
doubleMapValue      :: !Type
    , DoubleMapType -> StorageHasher
doubleMapKey2Hasher :: !StorageHasher
    } deriving (DoubleMapType -> DoubleMapType -> Bool
(DoubleMapType -> DoubleMapType -> Bool)
-> (DoubleMapType -> DoubleMapType -> Bool) -> Eq DoubleMapType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DoubleMapType -> DoubleMapType -> Bool
== :: DoubleMapType -> DoubleMapType -> Bool
$c/= :: DoubleMapType -> DoubleMapType -> Bool
/= :: DoubleMapType -> DoubleMapType -> Bool
Eq, Int -> DoubleMapType -> ShowS
[DoubleMapType] -> ShowS
DoubleMapType -> String
(Int -> DoubleMapType -> ShowS)
-> (DoubleMapType -> String)
-> ([DoubleMapType] -> ShowS)
-> Show DoubleMapType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DoubleMapType -> ShowS
showsPrec :: Int -> DoubleMapType -> ShowS
$cshow :: DoubleMapType -> String
show :: DoubleMapType -> String
$cshowList :: [DoubleMapType] -> ShowS
showList :: [DoubleMapType] -> ShowS
Show, All SListI (Code DoubleMapType)
All SListI (Code DoubleMapType) =>
(DoubleMapType -> Rep DoubleMapType)
-> (Rep DoubleMapType -> DoubleMapType) -> Generic DoubleMapType
Rep DoubleMapType -> DoubleMapType
DoubleMapType -> Rep DoubleMapType
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: DoubleMapType -> Rep DoubleMapType
from :: DoubleMapType -> Rep DoubleMapType
$cto :: Rep DoubleMapType -> DoubleMapType
to :: Rep DoubleMapType -> DoubleMapType
Generic, (forall x. DoubleMapType -> Rep DoubleMapType x)
-> (forall x. Rep DoubleMapType x -> DoubleMapType)
-> Generic DoubleMapType
forall x. Rep DoubleMapType x -> DoubleMapType
forall x. DoubleMapType -> Rep DoubleMapType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DoubleMapType -> Rep DoubleMapType x
from :: forall x. DoubleMapType -> Rep DoubleMapType x
$cto :: forall x. Rep DoubleMapType x -> DoubleMapType
to :: forall x. Rep DoubleMapType x -> DoubleMapType
GHC.Generic, Putter DoubleMapType
Putter DoubleMapType -> Encode DoubleMapType
forall a. Putter a -> Encode a
$cput :: Putter DoubleMapType
put :: Putter DoubleMapType
Encode, Get DoubleMapType
Get DoubleMapType -> Decode DoubleMapType
forall a. Get a -> Decode a
$cget :: Get DoubleMapType
get :: Get DoubleMapType
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 9 }) ''DoubleMapType)

data StorageEntryType
    = Plain !Type
    | Map !MapType
    | DoubleMap !DoubleMapType
    deriving (StorageEntryType -> StorageEntryType -> Bool
(StorageEntryType -> StorageEntryType -> Bool)
-> (StorageEntryType -> StorageEntryType -> Bool)
-> Eq StorageEntryType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StorageEntryType -> StorageEntryType -> Bool
== :: StorageEntryType -> StorageEntryType -> Bool
$c/= :: StorageEntryType -> StorageEntryType -> Bool
/= :: StorageEntryType -> StorageEntryType -> Bool
Eq, Int -> StorageEntryType -> ShowS
[StorageEntryType] -> ShowS
StorageEntryType -> String
(Int -> StorageEntryType -> ShowS)
-> (StorageEntryType -> String)
-> ([StorageEntryType] -> ShowS)
-> Show StorageEntryType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StorageEntryType -> ShowS
showsPrec :: Int -> StorageEntryType -> ShowS
$cshow :: StorageEntryType -> String
show :: StorageEntryType -> String
$cshowList :: [StorageEntryType] -> ShowS
showList :: [StorageEntryType] -> ShowS
Show, All SListI (Code StorageEntryType)
All SListI (Code StorageEntryType) =>
(StorageEntryType -> Rep StorageEntryType)
-> (Rep StorageEntryType -> StorageEntryType)
-> Generic StorageEntryType
Rep StorageEntryType -> StorageEntryType
StorageEntryType -> Rep StorageEntryType
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: StorageEntryType -> Rep StorageEntryType
from :: StorageEntryType -> Rep StorageEntryType
$cto :: Rep StorageEntryType -> StorageEntryType
to :: Rep StorageEntryType -> StorageEntryType
Generic, (forall x. StorageEntryType -> Rep StorageEntryType x)
-> (forall x. Rep StorageEntryType x -> StorageEntryType)
-> Generic StorageEntryType
forall x. Rep StorageEntryType x -> StorageEntryType
forall x. StorageEntryType -> Rep StorageEntryType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StorageEntryType -> Rep StorageEntryType x
from :: forall x. StorageEntryType -> Rep StorageEntryType x
$cto :: forall x. Rep StorageEntryType x -> StorageEntryType
to :: forall x. Rep StorageEntryType x -> StorageEntryType
GHC.Generic, Putter StorageEntryType
Putter StorageEntryType -> Encode StorageEntryType
forall a. Putter a -> Encode a
$cput :: Putter StorageEntryType
put :: Putter StorageEntryType
Encode, Get StorageEntryType
Get StorageEntryType -> Decode StorageEntryType
forall a. Get a -> Decode a
$cget :: Get StorageEntryType
get :: Get StorageEntryType
Decode)

$(deriveJSON (defaultOptions
    { constructorTagModifier = over _head toLower, sumEncoding = ObjectWithSingleField }) ''StorageEntryType)

data StorageEntryModifier = Optional | Default | Required
    deriving (StorageEntryModifier -> StorageEntryModifier -> Bool
(StorageEntryModifier -> StorageEntryModifier -> Bool)
-> (StorageEntryModifier -> StorageEntryModifier -> Bool)
-> Eq StorageEntryModifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StorageEntryModifier -> StorageEntryModifier -> Bool
== :: StorageEntryModifier -> StorageEntryModifier -> Bool
$c/= :: StorageEntryModifier -> StorageEntryModifier -> Bool
/= :: StorageEntryModifier -> StorageEntryModifier -> Bool
Eq, Int -> StorageEntryModifier -> ShowS
[StorageEntryModifier] -> ShowS
StorageEntryModifier -> String
(Int -> StorageEntryModifier -> ShowS)
-> (StorageEntryModifier -> String)
-> ([StorageEntryModifier] -> ShowS)
-> Show StorageEntryModifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StorageEntryModifier -> ShowS
showsPrec :: Int -> StorageEntryModifier -> ShowS
$cshow :: StorageEntryModifier -> String
show :: StorageEntryModifier -> String
$cshowList :: [StorageEntryModifier] -> ShowS
showList :: [StorageEntryModifier] -> ShowS
Show, All SListI (Code StorageEntryModifier)
All SListI (Code StorageEntryModifier) =>
(StorageEntryModifier -> Rep StorageEntryModifier)
-> (Rep StorageEntryModifier -> StorageEntryModifier)
-> Generic StorageEntryModifier
Rep StorageEntryModifier -> StorageEntryModifier
StorageEntryModifier -> Rep StorageEntryModifier
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: StorageEntryModifier -> Rep StorageEntryModifier
from :: StorageEntryModifier -> Rep StorageEntryModifier
$cto :: Rep StorageEntryModifier -> StorageEntryModifier
to :: Rep StorageEntryModifier -> StorageEntryModifier
Generic, (forall x. StorageEntryModifier -> Rep StorageEntryModifier x)
-> (forall x. Rep StorageEntryModifier x -> StorageEntryModifier)
-> Generic StorageEntryModifier
forall x. Rep StorageEntryModifier x -> StorageEntryModifier
forall x. StorageEntryModifier -> Rep StorageEntryModifier x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StorageEntryModifier -> Rep StorageEntryModifier x
from :: forall x. StorageEntryModifier -> Rep StorageEntryModifier x
$cto :: forall x. Rep StorageEntryModifier x -> StorageEntryModifier
to :: forall x. Rep StorageEntryModifier x -> StorageEntryModifier
GHC.Generic, Putter StorageEntryModifier
Putter StorageEntryModifier -> Encode StorageEntryModifier
forall a. Putter a -> Encode a
$cput :: Putter StorageEntryModifier
put :: Putter StorageEntryModifier
Encode, Get StorageEntryModifier
Get StorageEntryModifier -> Decode StorageEntryModifier
forall a. Get a -> Decode a
$cget :: Get StorageEntryModifier
get :: Get StorageEntryModifier
Decode)

$(deriveJSON defaultOptions ''StorageEntryModifier)

data StorageEntryMetadata = StorageEntryMetadata
    { StorageEntryMetadata -> Text
entryName     :: !Text
    , StorageEntryMetadata -> StorageEntryModifier
entryModifier :: !StorageEntryModifier
    , StorageEntryMetadata -> StorageEntryType
entryType     :: !StorageEntryType
    , StorageEntryMetadata -> HexString
entryFallback :: !HexString
    , StorageEntryMetadata -> [Text]
entryDocs     :: ![Text]
    } deriving (StorageEntryMetadata -> StorageEntryMetadata -> Bool
(StorageEntryMetadata -> StorageEntryMetadata -> Bool)
-> (StorageEntryMetadata -> StorageEntryMetadata -> Bool)
-> Eq StorageEntryMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StorageEntryMetadata -> StorageEntryMetadata -> Bool
== :: StorageEntryMetadata -> StorageEntryMetadata -> Bool
$c/= :: StorageEntryMetadata -> StorageEntryMetadata -> Bool
/= :: StorageEntryMetadata -> StorageEntryMetadata -> Bool
Eq, Int -> StorageEntryMetadata -> ShowS
[StorageEntryMetadata] -> ShowS
StorageEntryMetadata -> String
(Int -> StorageEntryMetadata -> ShowS)
-> (StorageEntryMetadata -> String)
-> ([StorageEntryMetadata] -> ShowS)
-> Show StorageEntryMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StorageEntryMetadata -> ShowS
showsPrec :: Int -> StorageEntryMetadata -> ShowS
$cshow :: StorageEntryMetadata -> String
show :: StorageEntryMetadata -> String
$cshowList :: [StorageEntryMetadata] -> ShowS
showList :: [StorageEntryMetadata] -> ShowS
Show, All SListI (Code StorageEntryMetadata)
All SListI (Code StorageEntryMetadata) =>
(StorageEntryMetadata -> Rep StorageEntryMetadata)
-> (Rep StorageEntryMetadata -> StorageEntryMetadata)
-> Generic StorageEntryMetadata
Rep StorageEntryMetadata -> StorageEntryMetadata
StorageEntryMetadata -> Rep StorageEntryMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: StorageEntryMetadata -> Rep StorageEntryMetadata
from :: StorageEntryMetadata -> Rep StorageEntryMetadata
$cto :: Rep StorageEntryMetadata -> StorageEntryMetadata
to :: Rep StorageEntryMetadata -> StorageEntryMetadata
Generic, (forall x. StorageEntryMetadata -> Rep StorageEntryMetadata x)
-> (forall x. Rep StorageEntryMetadata x -> StorageEntryMetadata)
-> Generic StorageEntryMetadata
forall x. Rep StorageEntryMetadata x -> StorageEntryMetadata
forall x. StorageEntryMetadata -> Rep StorageEntryMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StorageEntryMetadata -> Rep StorageEntryMetadata x
from :: forall x. StorageEntryMetadata -> Rep StorageEntryMetadata x
$cto :: forall x. Rep StorageEntryMetadata x -> StorageEntryMetadata
to :: forall x. Rep StorageEntryMetadata x -> StorageEntryMetadata
GHC.Generic, Putter StorageEntryMetadata
Putter StorageEntryMetadata -> Encode StorageEntryMetadata
forall a. Putter a -> Encode a
$cput :: Putter StorageEntryMetadata
put :: Putter StorageEntryMetadata
Encode, Get StorageEntryMetadata
Get StorageEntryMetadata -> Decode StorageEntryMetadata
forall a. Get a -> Decode a
$cget :: Get StorageEntryMetadata
get :: Get StorageEntryMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 5 }) ''StorageEntryMetadata)

data StorageMetadata = StorageMetadata
    { StorageMetadata -> Text
storagePrefix :: !Text
    , StorageMetadata -> [StorageEntryMetadata]
storageItems  :: ![StorageEntryMetadata]
    } deriving (StorageMetadata -> StorageMetadata -> Bool
(StorageMetadata -> StorageMetadata -> Bool)
-> (StorageMetadata -> StorageMetadata -> Bool)
-> Eq StorageMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: StorageMetadata -> StorageMetadata -> Bool
== :: StorageMetadata -> StorageMetadata -> Bool
$c/= :: StorageMetadata -> StorageMetadata -> Bool
/= :: StorageMetadata -> StorageMetadata -> Bool
Eq, Int -> StorageMetadata -> ShowS
[StorageMetadata] -> ShowS
StorageMetadata -> String
(Int -> StorageMetadata -> ShowS)
-> (StorageMetadata -> String)
-> ([StorageMetadata] -> ShowS)
-> Show StorageMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> StorageMetadata -> ShowS
showsPrec :: Int -> StorageMetadata -> ShowS
$cshow :: StorageMetadata -> String
show :: StorageMetadata -> String
$cshowList :: [StorageMetadata] -> ShowS
showList :: [StorageMetadata] -> ShowS
Show, All SListI (Code StorageMetadata)
All SListI (Code StorageMetadata) =>
(StorageMetadata -> Rep StorageMetadata)
-> (Rep StorageMetadata -> StorageMetadata)
-> Generic StorageMetadata
Rep StorageMetadata -> StorageMetadata
StorageMetadata -> Rep StorageMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: StorageMetadata -> Rep StorageMetadata
from :: StorageMetadata -> Rep StorageMetadata
$cto :: Rep StorageMetadata -> StorageMetadata
to :: Rep StorageMetadata -> StorageMetadata
Generic, (forall x. StorageMetadata -> Rep StorageMetadata x)
-> (forall x. Rep StorageMetadata x -> StorageMetadata)
-> Generic StorageMetadata
forall x. Rep StorageMetadata x -> StorageMetadata
forall x. StorageMetadata -> Rep StorageMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StorageMetadata -> Rep StorageMetadata x
from :: forall x. StorageMetadata -> Rep StorageMetadata x
$cto :: forall x. Rep StorageMetadata x -> StorageMetadata
to :: forall x. Rep StorageMetadata x -> StorageMetadata
GHC.Generic, Putter StorageMetadata
Putter StorageMetadata -> Encode StorageMetadata
forall a. Putter a -> Encode a
$cput :: Putter StorageMetadata
put :: Putter StorageMetadata
Encode, Get StorageMetadata
Get StorageMetadata -> Decode StorageMetadata
forall a. Get a -> Decode a
$cget :: Get StorageMetadata
get :: Get StorageMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 7 }) ''StorageMetadata)

data ModuleMetadata = ModuleMetadata
    { ModuleMetadata -> Text
moduleName      :: !Text
    , ModuleMetadata -> Maybe StorageMetadata
moduleStorage   :: !(Maybe StorageMetadata)
    , ModuleMetadata -> Maybe [FunctionMetadata]
moduleCalls     :: !(Maybe [FunctionMetadata])
    , ModuleMetadata -> Maybe [EventMetadata]
moduleEvents    :: !(Maybe [EventMetadata])
    , ModuleMetadata -> [ModuleConstantMetadata]
moduleConstants :: ![ModuleConstantMetadata]
    , ModuleMetadata -> [ErrorMetadata]
moduleErrors    :: ![ErrorMetadata]
    } deriving (ModuleMetadata -> ModuleMetadata -> Bool
(ModuleMetadata -> ModuleMetadata -> Bool)
-> (ModuleMetadata -> ModuleMetadata -> Bool) -> Eq ModuleMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ModuleMetadata -> ModuleMetadata -> Bool
== :: ModuleMetadata -> ModuleMetadata -> Bool
$c/= :: ModuleMetadata -> ModuleMetadata -> Bool
/= :: ModuleMetadata -> ModuleMetadata -> Bool
Eq, Int -> ModuleMetadata -> ShowS
[ModuleMetadata] -> ShowS
ModuleMetadata -> String
(Int -> ModuleMetadata -> ShowS)
-> (ModuleMetadata -> String)
-> ([ModuleMetadata] -> ShowS)
-> Show ModuleMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ModuleMetadata -> ShowS
showsPrec :: Int -> ModuleMetadata -> ShowS
$cshow :: ModuleMetadata -> String
show :: ModuleMetadata -> String
$cshowList :: [ModuleMetadata] -> ShowS
showList :: [ModuleMetadata] -> ShowS
Show, All SListI (Code ModuleMetadata)
All SListI (Code ModuleMetadata) =>
(ModuleMetadata -> Rep ModuleMetadata)
-> (Rep ModuleMetadata -> ModuleMetadata) -> Generic ModuleMetadata
Rep ModuleMetadata -> ModuleMetadata
ModuleMetadata -> Rep ModuleMetadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: ModuleMetadata -> Rep ModuleMetadata
from :: ModuleMetadata -> Rep ModuleMetadata
$cto :: Rep ModuleMetadata -> ModuleMetadata
to :: Rep ModuleMetadata -> ModuleMetadata
Generic, (forall x. ModuleMetadata -> Rep ModuleMetadata x)
-> (forall x. Rep ModuleMetadata x -> ModuleMetadata)
-> Generic ModuleMetadata
forall x. Rep ModuleMetadata x -> ModuleMetadata
forall x. ModuleMetadata -> Rep ModuleMetadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ModuleMetadata -> Rep ModuleMetadata x
from :: forall x. ModuleMetadata -> Rep ModuleMetadata x
$cto :: forall x. Rep ModuleMetadata x -> ModuleMetadata
to :: forall x. Rep ModuleMetadata x -> ModuleMetadata
GHC.Generic, Putter ModuleMetadata
Putter ModuleMetadata -> Encode ModuleMetadata
forall a. Putter a -> Encode a
$cput :: Putter ModuleMetadata
put :: Putter ModuleMetadata
Encode, Get ModuleMetadata
Get ModuleMetadata -> Decode ModuleMetadata
forall a. Get a -> Decode a
$cget :: Get ModuleMetadata
get :: Get ModuleMetadata
Decode)

$(deriveJSON (defaultOptions
    { fieldLabelModifier = over _head toLower . drop 6 }) ''ModuleMetadata)

data Metadata = Metadata
    { Metadata -> [ModuleMetadata]
modules :: ![ModuleMetadata]
    } deriving (Metadata -> Metadata -> Bool
(Metadata -> Metadata -> Bool)
-> (Metadata -> Metadata -> Bool) -> Eq Metadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Metadata -> Metadata -> Bool
== :: Metadata -> Metadata -> Bool
$c/= :: Metadata -> Metadata -> Bool
/= :: Metadata -> Metadata -> Bool
Eq, Int -> Metadata -> ShowS
[Metadata] -> ShowS
Metadata -> String
(Int -> Metadata -> ShowS)
-> (Metadata -> String) -> ([Metadata] -> ShowS) -> Show Metadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Metadata -> ShowS
showsPrec :: Int -> Metadata -> ShowS
$cshow :: Metadata -> String
show :: Metadata -> String
$cshowList :: [Metadata] -> ShowS
showList :: [Metadata] -> ShowS
Show, All SListI (Code Metadata)
All SListI (Code Metadata) =>
(Metadata -> Rep Metadata)
-> (Rep Metadata -> Metadata) -> Generic Metadata
Rep Metadata -> Metadata
Metadata -> Rep Metadata
forall a.
All SListI (Code a) =>
(a -> Rep a) -> (Rep a -> a) -> Generic a
$cfrom :: Metadata -> Rep Metadata
from :: Metadata -> Rep Metadata
$cto :: Rep Metadata -> Metadata
to :: Rep Metadata -> Metadata
Generic, (forall x. Metadata -> Rep Metadata x)
-> (forall x. Rep Metadata x -> Metadata) -> Generic Metadata
forall x. Rep Metadata x -> Metadata
forall x. Metadata -> Rep Metadata x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Metadata -> Rep Metadata x
from :: forall x. Metadata -> Rep Metadata x
$cto :: forall x. Rep Metadata x -> Metadata
to :: forall x. Rep Metadata x -> Metadata
GHC.Generic, Putter Metadata
Putter Metadata -> Encode Metadata
forall a. Putter a -> Encode a
$cput :: Putter Metadata
put :: Putter Metadata
Encode, Get Metadata
Get Metadata -> Decode Metadata
forall a. Get a -> Decode a
$cget :: Get Metadata
get :: Get Metadata
Decode)

$(deriveJSON defaultOptions ''Metadata)