-- | Responses for Cardano governance queries

module Blockfrost.Types.Cardano.Governance
  ( DRep (..)
  , DRepInfo (..)
  , DRepDelegator (..)
  , DRepMeta (..)
  , DRepRegistrationAction (..)
  , DRepUpdate (..)
  , VotingAction (..)
  , DRepVote (..)
  , ProposalAction (..)
  , Proposal (..)
  , ProposalInfo (..)
  , ProposedProtocolParams (..)
  , ParamProposal (..)
  , WithdrawalProposal (..)
  , VoterRole (..)
  , ProposalVote (..)
  , ProposalMeta (..)
  ) where

import Blockfrost.Types.Shared
import Blockfrost.Types.Cardano.Epochs (CostModels, CostModelsRaw)
import Data.Aeson (FromJSON (..), ToJSON (..), Value (..), (.=), object, withText)
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import Deriving.Aeson
import Servant.Docs (ToSample (..), samples, singleSample)

-- | DRep index
data DRep = DRep
  { DRep -> DRepIdBech32
_dRepDrepId :: DRepIdBech32 -- ^ Bech32 encoded DRep address
  , DRep -> DRepIdHex
_dRepHex    :: DRepIdHex    -- ^ The raw bytes of the DRep
  }
  deriving stock (Int -> DRep -> ShowS
[DRep] -> ShowS
DRep -> String
(Int -> DRep -> ShowS)
-> (DRep -> String) -> ([DRep] -> ShowS) -> Show DRep
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRep -> ShowS
showsPrec :: Int -> DRep -> ShowS
$cshow :: DRep -> String
show :: DRep -> String
$cshowList :: [DRep] -> ShowS
showList :: [DRep] -> ShowS
Show, DRep -> DRep -> Bool
(DRep -> DRep -> Bool) -> (DRep -> DRep -> Bool) -> Eq DRep
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRep -> DRep -> Bool
== :: DRep -> DRep -> Bool
$c/= :: DRep -> DRep -> Bool
/= :: DRep -> DRep -> Bool
Eq, (forall x. DRep -> Rep DRep x)
-> (forall x. Rep DRep x -> DRep) -> Generic DRep
forall x. Rep DRep x -> DRep
forall x. DRep -> Rep DRep x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRep -> Rep DRep x
from :: forall x. DRep -> Rep DRep x
$cto :: forall x. Rep DRep x -> DRep
to :: forall x. Rep DRep x -> DRep
Generic)
  deriving (Maybe DRep
Value -> Parser [DRep]
Value -> Parser DRep
(Value -> Parser DRep)
-> (Value -> Parser [DRep]) -> Maybe DRep -> FromJSON DRep
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRep
parseJSON :: Value -> Parser DRep
$cparseJSONList :: Value -> Parser [DRep]
parseJSONList :: Value -> Parser [DRep]
$comittedField :: Maybe DRep
omittedField :: Maybe DRep
FromJSON, [DRep] -> Value
[DRep] -> Encoding
DRep -> Bool
DRep -> Value
DRep -> Encoding
(DRep -> Value)
-> (DRep -> Encoding)
-> ([DRep] -> Value)
-> ([DRep] -> Encoding)
-> (DRep -> Bool)
-> ToJSON DRep
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRep -> Value
toJSON :: DRep -> Value
$ctoEncoding :: DRep -> Encoding
toEncoding :: DRep -> Encoding
$ctoJSONList :: [DRep] -> Value
toJSONList :: [DRep] -> Value
$ctoEncodingList :: [DRep] -> Encoding
toEncodingList :: [DRep] -> Encoding
$comitField :: DRep -> Bool
omitField :: DRep -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRep", CamelToSnake]] DRep

instance ToSample DRep where
    toSamples :: Proxy DRep -> [(Text, DRep)]
toSamples = [(Text, DRep)] -> Proxy DRep -> [(Text, DRep)]
forall a. a -> Proxy DRep -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRep)] -> Proxy DRep -> [(Text, DRep)])
-> [(Text, DRep)] -> Proxy DRep -> [(Text, DRep)]
forall a b. (a -> b) -> a -> b
$ [DRep] -> [(Text, DRep)]
forall a. [a] -> [(Text, a)]
samples
      [ DRep
          { _dRepDrepId :: DRepIdBech32
_dRepDrepId = DRepIdBech32
"drep1mvdu8slennngja7w4un6knwezufra70887zuxpprd64jxfveahn"
          , _dRepHex :: DRepIdHex
_dRepHex    = DRepIdHex
"db1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab23"
          }
      , DRep
          { _dRepDrepId :: DRepIdBech32
_dRepDrepId = DRepIdBech32
"drep1cxayn4fgy27yaucvhamsvqj3v6835mh3tjjx6x8hdnr4"
          , _dRepHex :: DRepIdHex
_dRepHex    = DRepIdHex
"c1ba49d52822bc4ef30cbf77060251668f1a6ef15ca46d18f76cc758"
          }
      ]

-- | Information about a DRep
data DRepInfo = DRepInfo
  { DRepInfo -> DRepIdBech32
_dRepInfoDrepId          :: DRepIdBech32 -- ^ Bech32 encoded DRep address
  , DRepInfo -> DRepIdHex
_dRepInfoHex             :: DRepIdHex    -- ^ The raw bytes of the DRep
  , DRepInfo -> Lovelaces
_dRepInfoAmount          :: Lovelaces    -- ^ The total amount of voting power this DRep is delegated
  , DRepInfo -> Bool
_dRepInfoHasScript       :: Bool         -- ^ Flag which indicates if this DRep credentials are a script hash
  , DRepInfo -> Bool
_dRepInfoRetired         :: Bool         -- ^ Indicates the registration state of the DRep. Set to `True` if the DRep has been deregistered; otherwise, `False`.
  , DRepInfo -> Bool
_dRepInfoExpired         :: Bool         -- ^ Indicates whether the DRep has been inactive for a consecutive number of epochs (determined by a epoch parameter `drep_activity`)
  , DRepInfo -> Maybe Epoch
_dRepInfoLastActiveEpoch :: Maybe Epoch  -- ^ Epoch of the most recent action - registration, update, deregistration or voting
  }
  deriving stock (Int -> DRepInfo -> ShowS
[DRepInfo] -> ShowS
DRepInfo -> String
(Int -> DRepInfo -> ShowS)
-> (DRepInfo -> String) -> ([DRepInfo] -> ShowS) -> Show DRepInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepInfo -> ShowS
showsPrec :: Int -> DRepInfo -> ShowS
$cshow :: DRepInfo -> String
show :: DRepInfo -> String
$cshowList :: [DRepInfo] -> ShowS
showList :: [DRepInfo] -> ShowS
Show, DRepInfo -> DRepInfo -> Bool
(DRepInfo -> DRepInfo -> Bool)
-> (DRepInfo -> DRepInfo -> Bool) -> Eq DRepInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepInfo -> DRepInfo -> Bool
== :: DRepInfo -> DRepInfo -> Bool
$c/= :: DRepInfo -> DRepInfo -> Bool
/= :: DRepInfo -> DRepInfo -> Bool
Eq, (forall x. DRepInfo -> Rep DRepInfo x)
-> (forall x. Rep DRepInfo x -> DRepInfo) -> Generic DRepInfo
forall x. Rep DRepInfo x -> DRepInfo
forall x. DRepInfo -> Rep DRepInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepInfo -> Rep DRepInfo x
from :: forall x. DRepInfo -> Rep DRepInfo x
$cto :: forall x. Rep DRepInfo x -> DRepInfo
to :: forall x. Rep DRepInfo x -> DRepInfo
Generic)
  deriving (Maybe DRepInfo
Value -> Parser [DRepInfo]
Value -> Parser DRepInfo
(Value -> Parser DRepInfo)
-> (Value -> Parser [DRepInfo])
-> Maybe DRepInfo
-> FromJSON DRepInfo
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRepInfo
parseJSON :: Value -> Parser DRepInfo
$cparseJSONList :: Value -> Parser [DRepInfo]
parseJSONList :: Value -> Parser [DRepInfo]
$comittedField :: Maybe DRepInfo
omittedField :: Maybe DRepInfo
FromJSON, [DRepInfo] -> Value
[DRepInfo] -> Encoding
DRepInfo -> Bool
DRepInfo -> Value
DRepInfo -> Encoding
(DRepInfo -> Value)
-> (DRepInfo -> Encoding)
-> ([DRepInfo] -> Value)
-> ([DRepInfo] -> Encoding)
-> (DRepInfo -> Bool)
-> ToJSON DRepInfo
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRepInfo -> Value
toJSON :: DRepInfo -> Value
$ctoEncoding :: DRepInfo -> Encoding
toEncoding :: DRepInfo -> Encoding
$ctoJSONList :: [DRepInfo] -> Value
toJSONList :: [DRepInfo] -> Value
$ctoEncodingList :: [DRepInfo] -> Encoding
toEncodingList :: [DRepInfo] -> Encoding
$comitField :: DRepInfo -> Bool
omitField :: DRepInfo -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepInfo", CamelToSnake]] DRepInfo

instance ToSample DRepInfo where
  toSamples :: Proxy DRepInfo -> [(Text, DRepInfo)]
toSamples = [(Text, DRepInfo)] -> Proxy DRepInfo -> [(Text, DRepInfo)]
forall a. a -> Proxy DRepInfo -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRepInfo)] -> Proxy DRepInfo -> [(Text, DRepInfo)])
-> [(Text, DRepInfo)] -> Proxy DRepInfo -> [(Text, DRepInfo)]
forall a b. (a -> b) -> a -> b
$ DRepInfo -> [(Text, DRepInfo)]
forall a. a -> [(Text, a)]
singleSample (DRepInfo -> [(Text, DRepInfo)]) -> DRepInfo -> [(Text, DRepInfo)]
forall a b. (a -> b) -> a -> b
$ DRepInfo
    { _dRepInfoDrepId :: DRepIdBech32
_dRepInfoDrepId          = DRepIdBech32
"drep15cfxz9exyn5rx0807zvxfrvslrjqfchrd4d47kv9e0f46uedqtc"
    , _dRepInfoHex :: DRepIdHex
_dRepInfoHex             = DRepIdHex
"a61261172624e8333ceff098648d90f8e404e2e36d5b5f5985cbd35d"
    , _dRepInfoAmount :: Lovelaces
_dRepInfoAmount          = Discrete' "ADA" '(1000000, 1)
Lovelaces
2000000
    , _dRepInfoHasScript :: Bool
_dRepInfoHasScript       = Bool
True
    , _dRepInfoRetired :: Bool
_dRepInfoRetired         = Bool
False
    , _dRepInfoExpired :: Bool
_dRepInfoExpired         = Bool
False
    , _dRepInfoLastActiveEpoch :: Maybe Epoch
_dRepInfoLastActiveEpoch = Epoch -> Maybe Epoch
forall a. a -> Maybe a
Just Epoch
509
    }

-- | Address delegating to a DRep
data DRepDelegator = DRepDelegator
  { DRepDelegator -> Address
_dRepDelegatorAddress :: Address   -- ^ Bech32 encoded stake addresses
  , DRepDelegator -> Lovelaces
_dRepDelegatorAmount  :: Lovelaces -- ^ Currently delegated amount
  }
  deriving stock (Int -> DRepDelegator -> ShowS
[DRepDelegator] -> ShowS
DRepDelegator -> String
(Int -> DRepDelegator -> ShowS)
-> (DRepDelegator -> String)
-> ([DRepDelegator] -> ShowS)
-> Show DRepDelegator
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepDelegator -> ShowS
showsPrec :: Int -> DRepDelegator -> ShowS
$cshow :: DRepDelegator -> String
show :: DRepDelegator -> String
$cshowList :: [DRepDelegator] -> ShowS
showList :: [DRepDelegator] -> ShowS
Show, DRepDelegator -> DRepDelegator -> Bool
(DRepDelegator -> DRepDelegator -> Bool)
-> (DRepDelegator -> DRepDelegator -> Bool) -> Eq DRepDelegator
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepDelegator -> DRepDelegator -> Bool
== :: DRepDelegator -> DRepDelegator -> Bool
$c/= :: DRepDelegator -> DRepDelegator -> Bool
/= :: DRepDelegator -> DRepDelegator -> Bool
Eq, (forall x. DRepDelegator -> Rep DRepDelegator x)
-> (forall x. Rep DRepDelegator x -> DRepDelegator)
-> Generic DRepDelegator
forall x. Rep DRepDelegator x -> DRepDelegator
forall x. DRepDelegator -> Rep DRepDelegator x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepDelegator -> Rep DRepDelegator x
from :: forall x. DRepDelegator -> Rep DRepDelegator x
$cto :: forall x. Rep DRepDelegator x -> DRepDelegator
to :: forall x. Rep DRepDelegator x -> DRepDelegator
Generic)
  deriving (Maybe DRepDelegator
Value -> Parser [DRepDelegator]
Value -> Parser DRepDelegator
(Value -> Parser DRepDelegator)
-> (Value -> Parser [DRepDelegator])
-> Maybe DRepDelegator
-> FromJSON DRepDelegator
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRepDelegator
parseJSON :: Value -> Parser DRepDelegator
$cparseJSONList :: Value -> Parser [DRepDelegator]
parseJSONList :: Value -> Parser [DRepDelegator]
$comittedField :: Maybe DRepDelegator
omittedField :: Maybe DRepDelegator
FromJSON, [DRepDelegator] -> Value
[DRepDelegator] -> Encoding
DRepDelegator -> Bool
DRepDelegator -> Value
DRepDelegator -> Encoding
(DRepDelegator -> Value)
-> (DRepDelegator -> Encoding)
-> ([DRepDelegator] -> Value)
-> ([DRepDelegator] -> Encoding)
-> (DRepDelegator -> Bool)
-> ToJSON DRepDelegator
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRepDelegator -> Value
toJSON :: DRepDelegator -> Value
$ctoEncoding :: DRepDelegator -> Encoding
toEncoding :: DRepDelegator -> Encoding
$ctoJSONList :: [DRepDelegator] -> Value
toJSONList :: [DRepDelegator] -> Value
$ctoEncodingList :: [DRepDelegator] -> Encoding
toEncodingList :: [DRepDelegator] -> Encoding
$comitField :: DRepDelegator -> Bool
omitField :: DRepDelegator -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepDelegator", CamelToSnake]] DRepDelegator

instance ToSample DRepDelegator where
  toSamples :: Proxy DRepDelegator -> [(Text, DRepDelegator)]
toSamples = [(Text, DRepDelegator)]
-> Proxy DRepDelegator -> [(Text, DRepDelegator)]
forall a. a -> Proxy DRepDelegator -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRepDelegator)]
 -> Proxy DRepDelegator -> [(Text, DRepDelegator)])
-> [(Text, DRepDelegator)]
-> Proxy DRepDelegator
-> [(Text, DRepDelegator)]
forall a b. (a -> b) -> a -> b
$ [DRepDelegator] -> [(Text, DRepDelegator)]
forall a. [a] -> [(Text, a)]
samples
    [ DRepDelegator
        { _dRepDelegatorAddress :: Address
_dRepDelegatorAddress = Address
"stake1ux4vspfvwuus9uwyp5p3f0ky7a30jq5j80jxse0fr7pa56sgn8kha"
        , _dRepDelegatorAmount :: Lovelaces
_dRepDelegatorAmount  = Discrete' "ADA" '(1000000, 1)
Lovelaces
1137959159981411
        }
    , DRepDelegator
        { _dRepDelegatorAddress :: Address
_dRepDelegatorAddress = Address
"stake1uylayej7esmarzd4mk4aru37zh9yz0luj3g9fsvgpfaxulq564r5u"
        , _dRepDelegatorAmount :: Lovelaces
_dRepDelegatorAmount  = Discrete' "ADA" '(1000000, 1)
Lovelaces
16958865648
        }
    , DRepDelegator
        { _dRepDelegatorAddress :: Address
_dRepDelegatorAddress = Address
"stake1u8lr2pnrgf8f7vrs9lt79hc3sxm8s2w4rwvgpncks3axx6q93d4ck"
        , _dRepDelegatorAmount :: Lovelaces
_dRepDelegatorAmount  = Discrete' "ADA" '(1000000, 1)
Lovelaces
18605647
        }
    ]

-- | DRep metadata
data DRepMeta = DRepMeta
  { DRepMeta -> DRepIdBech32
_dRepMetaDrepId          :: DRepIdBech32 -- ^ Bech32 encoded DRep address
  , DRepMeta -> DRepIdHex
_dRepMetaHex             :: DRepIdHex    -- ^ The raw bytes of the DRep
  , DRepMeta -> Text
_dRepMetaUrl             :: Text         -- ^ URL to the drep metadata
  , DRepMeta -> Text
_dRepMetaHash            :: Text         -- ^ Hash of the metadata file
  , DRepMeta -> Value
_dRepMetaJsonMetadata    :: Value        -- ^ Content of the JSON metadata (validated CIP-119)
  , DRepMeta -> Text
_dRepMetaBytes           :: Text         -- ^ Hex-encoded metadata (raw)
  }
  deriving stock (Int -> DRepMeta -> ShowS
[DRepMeta] -> ShowS
DRepMeta -> String
(Int -> DRepMeta -> ShowS)
-> (DRepMeta -> String) -> ([DRepMeta] -> ShowS) -> Show DRepMeta
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepMeta -> ShowS
showsPrec :: Int -> DRepMeta -> ShowS
$cshow :: DRepMeta -> String
show :: DRepMeta -> String
$cshowList :: [DRepMeta] -> ShowS
showList :: [DRepMeta] -> ShowS
Show, DRepMeta -> DRepMeta -> Bool
(DRepMeta -> DRepMeta -> Bool)
-> (DRepMeta -> DRepMeta -> Bool) -> Eq DRepMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepMeta -> DRepMeta -> Bool
== :: DRepMeta -> DRepMeta -> Bool
$c/= :: DRepMeta -> DRepMeta -> Bool
/= :: DRepMeta -> DRepMeta -> Bool
Eq, (forall x. DRepMeta -> Rep DRepMeta x)
-> (forall x. Rep DRepMeta x -> DRepMeta) -> Generic DRepMeta
forall x. Rep DRepMeta x -> DRepMeta
forall x. DRepMeta -> Rep DRepMeta x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepMeta -> Rep DRepMeta x
from :: forall x. DRepMeta -> Rep DRepMeta x
$cto :: forall x. Rep DRepMeta x -> DRepMeta
to :: forall x. Rep DRepMeta x -> DRepMeta
Generic)
  deriving (Maybe DRepMeta
Value -> Parser [DRepMeta]
Value -> Parser DRepMeta
(Value -> Parser DRepMeta)
-> (Value -> Parser [DRepMeta])
-> Maybe DRepMeta
-> FromJSON DRepMeta
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRepMeta
parseJSON :: Value -> Parser DRepMeta
$cparseJSONList :: Value -> Parser [DRepMeta]
parseJSONList :: Value -> Parser [DRepMeta]
$comittedField :: Maybe DRepMeta
omittedField :: Maybe DRepMeta
FromJSON, [DRepMeta] -> Value
[DRepMeta] -> Encoding
DRepMeta -> Bool
DRepMeta -> Value
DRepMeta -> Encoding
(DRepMeta -> Value)
-> (DRepMeta -> Encoding)
-> ([DRepMeta] -> Value)
-> ([DRepMeta] -> Encoding)
-> (DRepMeta -> Bool)
-> ToJSON DRepMeta
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRepMeta -> Value
toJSON :: DRepMeta -> Value
$ctoEncoding :: DRepMeta -> Encoding
toEncoding :: DRepMeta -> Encoding
$ctoJSONList :: [DRepMeta] -> Value
toJSONList :: [DRepMeta] -> Value
$ctoEncodingList :: [DRepMeta] -> Encoding
toEncodingList :: [DRepMeta] -> Encoding
$comitField :: DRepMeta -> Bool
omitField :: DRepMeta -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepMeta", CamelToSnake]] DRepMeta

instance ToSample DRepMeta where
  toSamples :: Proxy DRepMeta -> [(Text, DRepMeta)]
toSamples = [(Text, DRepMeta)] -> Proxy DRepMeta -> [(Text, DRepMeta)]
forall a. a -> Proxy DRepMeta -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRepMeta)] -> Proxy DRepMeta -> [(Text, DRepMeta)])
-> [(Text, DRepMeta)] -> Proxy DRepMeta -> [(Text, DRepMeta)]
forall a b. (a -> b) -> a -> b
$ DRepMeta -> [(Text, DRepMeta)]
forall a. a -> [(Text, a)]
singleSample (DRepMeta -> [(Text, DRepMeta)]) -> DRepMeta -> [(Text, DRepMeta)]
forall a b. (a -> b) -> a -> b
$ DRepMeta
    { _dRepMetaDrepId :: DRepIdBech32
_dRepMetaDrepId          = DRepIdBech32
"drep15cfxz9exyn5rx0807zvxfrvslrjqfchrd4d47kv9e0f46uedqtc"
    , _dRepMetaHex :: DRepIdHex
_dRepMetaHex             = DRepIdHex
"a61261172624e8333ceff098648d90f8e404e2e36d5b5f5985cbd35d"
    , _dRepMetaUrl :: Text
_dRepMetaUrl             = Text
"https://aaa.xyz/drep.json"
    , _dRepMetaHash :: Text
_dRepMetaHash            = Text
"a14a5ad4f36bddc00f92ddb39fd9ac633c0fd43f8bfa57758f9163d10ef916de"
    , _dRepMetaJsonMetadata :: Value
_dRepMetaJsonMetadata    = [Pair] -> Value
object
      [ Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
          [ Key
"CIP100" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#" :: Text)
          , Key
"CIP119" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0119/README.md#" :: Text)
          , Key
"hashAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:hashAlgorithm" :: Text)
          , Key
"body" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
            [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:body" :: Text)
            , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                [ Key
"references" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                    [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:references" :: Text)
                    , Key
"@container" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"@set" :: Text)
                    , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                        [ Key
"GovernanceMetadata" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:GovernanceMetadataReference" :: Text)
                        , Key
"Other" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:OtherReference" :: Text)
                        , Key
"label" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:reference-label" :: Text)
                        , Key
"uri" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:reference-uri" :: Text)
                        ]
                    ]
                    , Key
"paymentAddress" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:paymentAddress" :: Text)
                    , Key
"givenName" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:givenName" :: Text)
                    , Key
"image" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                        [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:image" :: Text)
                        , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                            [ Key
"ImageObject" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://schema.org/ImageObject" :: Text) ]
                        ]
                    , Key
"objectives" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:objectives" :: Text)
                    , Key
"motivations" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:motivations" :: Text)
                    , Key
"qualifications" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP119:qualifications" :: Text)
                    ]
                ]
            ]
        , Key
"hashAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"blake2b-256" :: Text)
        , Key
"body" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
            [ Key
"paymentAddress" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"addr1q86dnpkva4mm859c8ur7tjxn57zgsu6vg8pdetkdve3fsacnq7twy06u2ev5759vutpjgzfryx0ud8hzedhzerava35qwh3x34" :: Text)
            , Key
"givenName" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Ryan Williams" :: Text)
            , Key
"image" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                [ Key
"@type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"ImageObject" :: Text)
                , Key
"contentUrl" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://avatars.githubusercontent.com/u/44342099?v=4" :: Text)
                , Key
"sha256" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"2a21e4f7b20c8c72f573707b068fb8fc6d8c64d5035c4e18ecae287947fe2b2e" :: Text)
                ]
            , Key
"objectives" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Buy myself an island." :: Text)
            , Key
"motivations" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"I really would like to own an island." :: Text)
            , Key
"qualifications" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"I have my 100m swimming badge, so I would be qualified to be able to swim around island." :: Text)
            , Key
"references" Key -> [Value] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
                [ [Pair] -> Value
object
                    [ Key
"@type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Other" :: Text)
                    , Key
"label" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"A cool island for Ryan" :: Text)
                    , Key
"uri" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://www.google.com/maps/place/World's+only+5th+order+recursive+island/@62.6511465,-97.7946829,15.75z/data=!4m14!1m7!3m6!1s0x5216a167810cee39:0x11431abdfe4c7421!2sWorld's+only+5th+order+recursive+island!8m2!3d62.651114!4d-97.7872244!16s%2Fg%2F11spwk2b6n!3m5!1s0x5216a167810cee39:0x11431abdfe4c7421!8m2!3d62.651114!4d-97.7872244!16s%2Fg%2F11spwk2b6n?authuser=0&entry=ttu" :: Text)
                    ]
                , [Pair] -> Value
object
                    [ Key
"@type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Link" :: Text)
                    , Key
"label" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Ryan's Twitter" :: Text)
                    , Key
"uri" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://twitter.com/Ryun1_" :: Text)
                    ]
                ]
            ]
        ]
    , _dRepMetaBytes :: Text
_dRepMetaBytes           = Text
"\\x7b0a20202240636f6e74657874223a207b0a2020202022406c616e6775616765223a2022656e2d7573222c0a2020202022434950313030223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130302f524541444d452e6"
    }

-- | DRep registration action
data DRepRegistrationAction
  = DRepRegistrationAction_Registered
  | DRepRegistrationAction_Deregistered
  deriving stock (Int -> DRepRegistrationAction -> ShowS
[DRepRegistrationAction] -> ShowS
DRepRegistrationAction -> String
(Int -> DRepRegistrationAction -> ShowS)
-> (DRepRegistrationAction -> String)
-> ([DRepRegistrationAction] -> ShowS)
-> Show DRepRegistrationAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepRegistrationAction -> ShowS
showsPrec :: Int -> DRepRegistrationAction -> ShowS
$cshow :: DRepRegistrationAction -> String
show :: DRepRegistrationAction -> String
$cshowList :: [DRepRegistrationAction] -> ShowS
showList :: [DRepRegistrationAction] -> ShowS
Show, DRepRegistrationAction -> DRepRegistrationAction -> Bool
(DRepRegistrationAction -> DRepRegistrationAction -> Bool)
-> (DRepRegistrationAction -> DRepRegistrationAction -> Bool)
-> Eq DRepRegistrationAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepRegistrationAction -> DRepRegistrationAction -> Bool
== :: DRepRegistrationAction -> DRepRegistrationAction -> Bool
$c/= :: DRepRegistrationAction -> DRepRegistrationAction -> Bool
/= :: DRepRegistrationAction -> DRepRegistrationAction -> Bool
Eq, (forall x. DRepRegistrationAction -> Rep DRepRegistrationAction x)
-> (forall x.
    Rep DRepRegistrationAction x -> DRepRegistrationAction)
-> Generic DRepRegistrationAction
forall x. Rep DRepRegistrationAction x -> DRepRegistrationAction
forall x. DRepRegistrationAction -> Rep DRepRegistrationAction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepRegistrationAction -> Rep DRepRegistrationAction x
from :: forall x. DRepRegistrationAction -> Rep DRepRegistrationAction x
$cto :: forall x. Rep DRepRegistrationAction x -> DRepRegistrationAction
to :: forall x. Rep DRepRegistrationAction x -> DRepRegistrationAction
Generic)

instance ToJSON DRepRegistrationAction where
  toJSON :: DRepRegistrationAction -> Value
toJSON DRepRegistrationAction
DRepRegistrationAction_Registered   = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"registered"   :: Text)
  toJSON DRepRegistrationAction
DRepRegistrationAction_Deregistered = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"deregistered" :: Text)

  toEncoding :: DRepRegistrationAction -> Encoding
toEncoding DRepRegistrationAction
DRepRegistrationAction_Registered   = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"registered"   :: Text)
  toEncoding DRepRegistrationAction
DRepRegistrationAction_Deregistered = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"deregistered" :: Text)

instance FromJSON DRepRegistrationAction where
  parseJSON :: Value -> Parser DRepRegistrationAction
parseJSON = String
-> (Text -> Parser DRepRegistrationAction)
-> Value
-> Parser DRepRegistrationAction
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"action" ((Text -> Parser DRepRegistrationAction)
 -> Value -> Parser DRepRegistrationAction)
-> (Text -> Parser DRepRegistrationAction)
-> Value
-> Parser DRepRegistrationAction
forall a b. (a -> b) -> a -> b
$ \case
    Text
"registered"   -> DRepRegistrationAction -> Parser DRepRegistrationAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DRepRegistrationAction
DRepRegistrationAction_Registered
    Text
"deregistered" -> DRepRegistrationAction -> Parser DRepRegistrationAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure DRepRegistrationAction
DRepRegistrationAction_Deregistered
    Text
x              -> String -> Parser DRepRegistrationAction
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
"Expected registration action got " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Text -> String
forall a. Show a => a -> String
show Text
x)

-- | DRep registration update
data DRepUpdate = DRepUpdate
  { DRepUpdate -> TxHash
_dRepUpdateTxHash    :: TxHash                 -- ^ Transaction ID
  , DRepUpdate -> Integer
_dRepUpdateCertIndex :: Integer                -- ^ Index of the certificate within the update transaction
  , DRepUpdate -> DRepRegistrationAction
_dRepUpdateAction    :: DRepRegistrationAction -- ^ DRep registration action
  }
  deriving stock (Int -> DRepUpdate -> ShowS
[DRepUpdate] -> ShowS
DRepUpdate -> String
(Int -> DRepUpdate -> ShowS)
-> (DRepUpdate -> String)
-> ([DRepUpdate] -> ShowS)
-> Show DRepUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepUpdate -> ShowS
showsPrec :: Int -> DRepUpdate -> ShowS
$cshow :: DRepUpdate -> String
show :: DRepUpdate -> String
$cshowList :: [DRepUpdate] -> ShowS
showList :: [DRepUpdate] -> ShowS
Show, DRepUpdate -> DRepUpdate -> Bool
(DRepUpdate -> DRepUpdate -> Bool)
-> (DRepUpdate -> DRepUpdate -> Bool) -> Eq DRepUpdate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepUpdate -> DRepUpdate -> Bool
== :: DRepUpdate -> DRepUpdate -> Bool
$c/= :: DRepUpdate -> DRepUpdate -> Bool
/= :: DRepUpdate -> DRepUpdate -> Bool
Eq, (forall x. DRepUpdate -> Rep DRepUpdate x)
-> (forall x. Rep DRepUpdate x -> DRepUpdate) -> Generic DRepUpdate
forall x. Rep DRepUpdate x -> DRepUpdate
forall x. DRepUpdate -> Rep DRepUpdate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepUpdate -> Rep DRepUpdate x
from :: forall x. DRepUpdate -> Rep DRepUpdate x
$cto :: forall x. Rep DRepUpdate x -> DRepUpdate
to :: forall x. Rep DRepUpdate x -> DRepUpdate
Generic)
  deriving (Maybe DRepUpdate
Value -> Parser [DRepUpdate]
Value -> Parser DRepUpdate
(Value -> Parser DRepUpdate)
-> (Value -> Parser [DRepUpdate])
-> Maybe DRepUpdate
-> FromJSON DRepUpdate
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRepUpdate
parseJSON :: Value -> Parser DRepUpdate
$cparseJSONList :: Value -> Parser [DRepUpdate]
parseJSONList :: Value -> Parser [DRepUpdate]
$comittedField :: Maybe DRepUpdate
omittedField :: Maybe DRepUpdate
FromJSON, [DRepUpdate] -> Value
[DRepUpdate] -> Encoding
DRepUpdate -> Bool
DRepUpdate -> Value
DRepUpdate -> Encoding
(DRepUpdate -> Value)
-> (DRepUpdate -> Encoding)
-> ([DRepUpdate] -> Value)
-> ([DRepUpdate] -> Encoding)
-> (DRepUpdate -> Bool)
-> ToJSON DRepUpdate
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRepUpdate -> Value
toJSON :: DRepUpdate -> Value
$ctoEncoding :: DRepUpdate -> Encoding
toEncoding :: DRepUpdate -> Encoding
$ctoJSONList :: [DRepUpdate] -> Value
toJSONList :: [DRepUpdate] -> Value
$ctoEncodingList :: [DRepUpdate] -> Encoding
toEncodingList :: [DRepUpdate] -> Encoding
$comitField :: DRepUpdate -> Bool
omitField :: DRepUpdate -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepUpdate", CamelToSnake]] DRepUpdate

instance ToSample DRepUpdate where
  toSamples :: Proxy DRepUpdate -> [(Text, DRepUpdate)]
toSamples = [(Text, DRepUpdate)] -> Proxy DRepUpdate -> [(Text, DRepUpdate)]
forall a. a -> Proxy DRepUpdate -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRepUpdate)] -> Proxy DRepUpdate -> [(Text, DRepUpdate)])
-> [(Text, DRepUpdate)] -> Proxy DRepUpdate -> [(Text, DRepUpdate)]
forall a b. (a -> b) -> a -> b
$ [DRepUpdate] -> [(Text, DRepUpdate)]
forall a. [a] -> [(Text, a)]
samples
    [ DRepUpdate
        { _dRepUpdateTxHash :: TxHash
_dRepUpdateTxHash = TxHash
"f4097fbdb87ab7c7ab44b30d4e2b81713a058488975d1ab8b05c381dd946a393"
        , _dRepUpdateCertIndex :: Integer
_dRepUpdateCertIndex = Integer
0
        , _dRepUpdateAction :: DRepRegistrationAction
_dRepUpdateAction = DRepRegistrationAction
DRepRegistrationAction_Registered
        }
    , DRepUpdate
        { _dRepUpdateTxHash :: TxHash
_dRepUpdateTxHash = TxHash
"dd3243af975be4b5bedce4e5f5b483b2386d5ad207d05e0289c1df0eb261447e"
        , _dRepUpdateCertIndex :: Integer
_dRepUpdateCertIndex = Integer
0
        , _dRepUpdateAction :: DRepRegistrationAction
_dRepUpdateAction = DRepRegistrationAction
DRepRegistrationAction_Deregistered
        }
    ]

-- | DRep voting action
data VotingAction
  = VotingAction_Yes
  | VotingAction_No
  | VotingAction_Abstain
  deriving stock (Int -> VotingAction -> ShowS
[VotingAction] -> ShowS
VotingAction -> String
(Int -> VotingAction -> ShowS)
-> (VotingAction -> String)
-> ([VotingAction] -> ShowS)
-> Show VotingAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VotingAction -> ShowS
showsPrec :: Int -> VotingAction -> ShowS
$cshow :: VotingAction -> String
show :: VotingAction -> String
$cshowList :: [VotingAction] -> ShowS
showList :: [VotingAction] -> ShowS
Show, VotingAction -> VotingAction -> Bool
(VotingAction -> VotingAction -> Bool)
-> (VotingAction -> VotingAction -> Bool) -> Eq VotingAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VotingAction -> VotingAction -> Bool
== :: VotingAction -> VotingAction -> Bool
$c/= :: VotingAction -> VotingAction -> Bool
/= :: VotingAction -> VotingAction -> Bool
Eq, (forall x. VotingAction -> Rep VotingAction x)
-> (forall x. Rep VotingAction x -> VotingAction)
-> Generic VotingAction
forall x. Rep VotingAction x -> VotingAction
forall x. VotingAction -> Rep VotingAction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VotingAction -> Rep VotingAction x
from :: forall x. VotingAction -> Rep VotingAction x
$cto :: forall x. Rep VotingAction x -> VotingAction
to :: forall x. Rep VotingAction x -> VotingAction
Generic)

instance ToJSON VotingAction where
  toJSON :: VotingAction -> Value
toJSON VotingAction
VotingAction_Yes     = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"yes"     :: Text)
  toJSON VotingAction
VotingAction_No      = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"no"      :: Text)
  toJSON VotingAction
VotingAction_Abstain = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"abstain" :: Text)

  toEncoding :: VotingAction -> Encoding
toEncoding VotingAction
VotingAction_Yes     = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"yes"     :: Text)
  toEncoding VotingAction
VotingAction_No      = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"no"      :: Text)
  toEncoding VotingAction
VotingAction_Abstain = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"abstain" :: Text)

instance FromJSON VotingAction where
  parseJSON :: Value -> Parser VotingAction
parseJSON = String
-> (Text -> Parser VotingAction) -> Value -> Parser VotingAction
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"vote" ((Text -> Parser VotingAction) -> Value -> Parser VotingAction)
-> (Text -> Parser VotingAction) -> Value -> Parser VotingAction
forall a b. (a -> b) -> a -> b
$ \case
    Text
"yes"     -> VotingAction -> Parser VotingAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VotingAction
VotingAction_Yes
    Text
"no"      -> VotingAction -> Parser VotingAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VotingAction
VotingAction_No
    Text
"abstain" -> VotingAction -> Parser VotingAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VotingAction
VotingAction_Abstain
    Text
x              -> String -> Parser VotingAction
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
"Expected DRep vote but got " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Text -> String
forall a. Show a => a -> String
show Text
x)

-- | DRep vote
data DRepVote = DRepVote
  { DRepVote -> TxHash
_dRepVoteTxHash    :: TxHash       -- ^ Transaction ID
  , DRepVote -> Integer
_dRepVoteCertIndex :: Integer      -- ^ Index of the certificate within the update transaction
  , DRepVote -> VotingAction
_dRepVoteAction    :: VotingAction -- ^ DRep voting action
  }
  deriving stock (Int -> DRepVote -> ShowS
[DRepVote] -> ShowS
DRepVote -> String
(Int -> DRepVote -> ShowS)
-> (DRepVote -> String) -> ([DRepVote] -> ShowS) -> Show DRepVote
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DRepVote -> ShowS
showsPrec :: Int -> DRepVote -> ShowS
$cshow :: DRepVote -> String
show :: DRepVote -> String
$cshowList :: [DRepVote] -> ShowS
showList :: [DRepVote] -> ShowS
Show, DRepVote -> DRepVote -> Bool
(DRepVote -> DRepVote -> Bool)
-> (DRepVote -> DRepVote -> Bool) -> Eq DRepVote
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DRepVote -> DRepVote -> Bool
== :: DRepVote -> DRepVote -> Bool
$c/= :: DRepVote -> DRepVote -> Bool
/= :: DRepVote -> DRepVote -> Bool
Eq, (forall x. DRepVote -> Rep DRepVote x)
-> (forall x. Rep DRepVote x -> DRepVote) -> Generic DRepVote
forall x. Rep DRepVote x -> DRepVote
forall x. DRepVote -> Rep DRepVote x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DRepVote -> Rep DRepVote x
from :: forall x. DRepVote -> Rep DRepVote x
$cto :: forall x. Rep DRepVote x -> DRepVote
to :: forall x. Rep DRepVote x -> DRepVote
Generic)
  deriving (Maybe DRepVote
Value -> Parser [DRepVote]
Value -> Parser DRepVote
(Value -> Parser DRepVote)
-> (Value -> Parser [DRepVote])
-> Maybe DRepVote
-> FromJSON DRepVote
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DRepVote
parseJSON :: Value -> Parser DRepVote
$cparseJSONList :: Value -> Parser [DRepVote]
parseJSONList :: Value -> Parser [DRepVote]
$comittedField :: Maybe DRepVote
omittedField :: Maybe DRepVote
FromJSON, [DRepVote] -> Value
[DRepVote] -> Encoding
DRepVote -> Bool
DRepVote -> Value
DRepVote -> Encoding
(DRepVote -> Value)
-> (DRepVote -> Encoding)
-> ([DRepVote] -> Value)
-> ([DRepVote] -> Encoding)
-> (DRepVote -> Bool)
-> ToJSON DRepVote
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DRepVote -> Value
toJSON :: DRepVote -> Value
$ctoEncoding :: DRepVote -> Encoding
toEncoding :: DRepVote -> Encoding
$ctoJSONList :: [DRepVote] -> Value
toJSONList :: [DRepVote] -> Value
$ctoEncodingList :: [DRepVote] -> Encoding
toEncodingList :: [DRepVote] -> Encoding
$comitField :: DRepVote -> Bool
omitField :: DRepVote -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepVote", CamelToSnake, Rename "action" "vote"]] DRepVote

instance ToSample DRepVote where
  toSamples :: Proxy DRepVote -> [(Text, DRepVote)]
toSamples = [(Text, DRepVote)] -> Proxy DRepVote -> [(Text, DRepVote)]
forall a. a -> Proxy DRepVote -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, DRepVote)] -> Proxy DRepVote -> [(Text, DRepVote)])
-> [(Text, DRepVote)] -> Proxy DRepVote -> [(Text, DRepVote)]
forall a b. (a -> b) -> a -> b
$ [DRepVote] -> [(Text, DRepVote)]
forall a. [a] -> [(Text, a)]
samples
    [ DRepVote
        { _dRepVoteTxHash :: TxHash
_dRepVoteTxHash    = TxHash
"b302de601defdf11a5261ed31a263804dac4a582a888c998ce24dec5"
        , _dRepVoteCertIndex :: Integer
_dRepVoteCertIndex = Integer
2
        , _dRepVoteAction :: VotingAction
_dRepVoteAction    = VotingAction
VotingAction_Yes
        }
    , DRepVote
        { _dRepVoteTxHash :: TxHash
_dRepVoteTxHash    = TxHash
"b302de601defdf11a5261ed31a263804dac4a582a888c998ce24dec5"
        , _dRepVoteCertIndex :: Integer
_dRepVoteCertIndex = Integer
3
        , _dRepVoteAction :: VotingAction
_dRepVoteAction    = VotingAction
VotingAction_Abstain
        }
    ]

-- | DRep proposal action
data ProposalAction
  = ProposalAction_HardForkInitiation
  | ProposalAction_NewCommittee
  | ProposalAction_NewConstitution
  | ProposalAction_InfoAction
  | ProposalAction_NoConfidence
  | ProposalAction_ParameterChange
  | ProposalAction_TreasuryWithdrawals
  deriving stock (Int -> ProposalAction -> ShowS
[ProposalAction] -> ShowS
ProposalAction -> String
(Int -> ProposalAction -> ShowS)
-> (ProposalAction -> String)
-> ([ProposalAction] -> ShowS)
-> Show ProposalAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProposalAction -> ShowS
showsPrec :: Int -> ProposalAction -> ShowS
$cshow :: ProposalAction -> String
show :: ProposalAction -> String
$cshowList :: [ProposalAction] -> ShowS
showList :: [ProposalAction] -> ShowS
Show, ProposalAction -> ProposalAction -> Bool
(ProposalAction -> ProposalAction -> Bool)
-> (ProposalAction -> ProposalAction -> Bool) -> Eq ProposalAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProposalAction -> ProposalAction -> Bool
== :: ProposalAction -> ProposalAction -> Bool
$c/= :: ProposalAction -> ProposalAction -> Bool
/= :: ProposalAction -> ProposalAction -> Bool
Eq, (forall x. ProposalAction -> Rep ProposalAction x)
-> (forall x. Rep ProposalAction x -> ProposalAction)
-> Generic ProposalAction
forall x. Rep ProposalAction x -> ProposalAction
forall x. ProposalAction -> Rep ProposalAction x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProposalAction -> Rep ProposalAction x
from :: forall x. ProposalAction -> Rep ProposalAction x
$cto :: forall x. Rep ProposalAction x -> ProposalAction
to :: forall x. Rep ProposalAction x -> ProposalAction
Generic)

instance ToJSON ProposalAction where
  toJSON :: ProposalAction -> Value
toJSON ProposalAction
ProposalAction_HardForkInitiation  = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"hard_fork_initiation" :: Text)
  toJSON ProposalAction
ProposalAction_NewCommittee        = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"new_committee"        :: Text)
  toJSON ProposalAction
ProposalAction_NewConstitution     = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"new_constitution"     :: Text)
  toJSON ProposalAction
ProposalAction_InfoAction          = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"info_action"          :: Text)
  toJSON ProposalAction
ProposalAction_NoConfidence        = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"no_confidence"        :: Text)
  toJSON ProposalAction
ProposalAction_ParameterChange     = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"parameter_change"     :: Text)
  toJSON ProposalAction
ProposalAction_TreasuryWithdrawals = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"treasury_withdrawals" :: Text)

  toEncoding :: ProposalAction -> Encoding
toEncoding ProposalAction
ProposalAction_HardForkInitiation  = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"hard_fork_initiation" :: Text)
  toEncoding ProposalAction
ProposalAction_NewCommittee        = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"new_committee"        :: Text)
  toEncoding ProposalAction
ProposalAction_NewConstitution     = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"new_constitution"     :: Text)
  toEncoding ProposalAction
ProposalAction_InfoAction          = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"info_action"          :: Text)
  toEncoding ProposalAction
ProposalAction_NoConfidence        = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"no_confidence"        :: Text)
  toEncoding ProposalAction
ProposalAction_ParameterChange     = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"parameter_change"     :: Text)
  toEncoding ProposalAction
ProposalAction_TreasuryWithdrawals = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"treasury_withdrawals" :: Text)

instance FromJSON ProposalAction where
  parseJSON :: Value -> Parser ProposalAction
parseJSON = String
-> (Text -> Parser ProposalAction)
-> Value
-> Parser ProposalAction
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"proposal" ((Text -> Parser ProposalAction) -> Value -> Parser ProposalAction)
-> (Text -> Parser ProposalAction)
-> Value
-> Parser ProposalAction
forall a b. (a -> b) -> a -> b
$ \case
    Text
"hard_fork_initiation" -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_HardForkInitiation
    Text
"new_committee"        -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_NewCommittee
    Text
"new_constitution"     -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_NewConstitution
    Text
"info_action"          -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_InfoAction
    Text
"no_confidence"        -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_NoConfidence
    Text
"parameter_change"     -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_ParameterChange
    Text
"treasury_withdrawals" -> ProposalAction -> Parser ProposalAction
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ProposalAction
ProposalAction_TreasuryWithdrawals
    Text
x              -> String -> Parser ProposalAction
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
"Expected DRep proposal but got " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Text -> String
forall a. Show a => a -> String
show Text
x)

-- | DRep proposal
data Proposal = Proposal
  { Proposal -> TxHash
_dRepProposalTxHash    :: TxHash             -- ^ Transaction ID
  , Proposal -> Integer
_dRepProposalCertIndex :: Integer            -- ^ Index of the certificate within the update transaction
  , Proposal -> ProposalAction
_dRepProposalAction    :: ProposalAction -- ^ DRep proposal type
  }
  deriving stock (Int -> Proposal -> ShowS
[Proposal] -> ShowS
Proposal -> String
(Int -> Proposal -> ShowS)
-> (Proposal -> String) -> ([Proposal] -> ShowS) -> Show Proposal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Proposal -> ShowS
showsPrec :: Int -> Proposal -> ShowS
$cshow :: Proposal -> String
show :: Proposal -> String
$cshowList :: [Proposal] -> ShowS
showList :: [Proposal] -> ShowS
Show, Proposal -> Proposal -> Bool
(Proposal -> Proposal -> Bool)
-> (Proposal -> Proposal -> Bool) -> Eq Proposal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Proposal -> Proposal -> Bool
== :: Proposal -> Proposal -> Bool
$c/= :: Proposal -> Proposal -> Bool
/= :: Proposal -> Proposal -> Bool
Eq, (forall x. Proposal -> Rep Proposal x)
-> (forall x. Rep Proposal x -> Proposal) -> Generic Proposal
forall x. Rep Proposal x -> Proposal
forall x. Proposal -> Rep Proposal x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Proposal -> Rep Proposal x
from :: forall x. Proposal -> Rep Proposal x
$cto :: forall x. Rep Proposal x -> Proposal
to :: forall x. Rep Proposal x -> Proposal
Generic)
  deriving (Maybe Proposal
Value -> Parser [Proposal]
Value -> Parser Proposal
(Value -> Parser Proposal)
-> (Value -> Parser [Proposal])
-> Maybe Proposal
-> FromJSON Proposal
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser Proposal
parseJSON :: Value -> Parser Proposal
$cparseJSONList :: Value -> Parser [Proposal]
parseJSONList :: Value -> Parser [Proposal]
$comittedField :: Maybe Proposal
omittedField :: Maybe Proposal
FromJSON, [Proposal] -> Value
[Proposal] -> Encoding
Proposal -> Bool
Proposal -> Value
Proposal -> Encoding
(Proposal -> Value)
-> (Proposal -> Encoding)
-> ([Proposal] -> Value)
-> ([Proposal] -> Encoding)
-> (Proposal -> Bool)
-> ToJSON Proposal
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: Proposal -> Value
toJSON :: Proposal -> Value
$ctoEncoding :: Proposal -> Encoding
toEncoding :: Proposal -> Encoding
$ctoJSONList :: [Proposal] -> Value
toJSONList :: [Proposal] -> Value
$ctoEncodingList :: [Proposal] -> Encoding
toEncodingList :: [Proposal] -> Encoding
$comitField :: Proposal -> Bool
omitField :: Proposal -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_dRepProposal", CamelToSnake, Rename "action" "governance_type"]] Proposal

instance ToSample Proposal where
  toSamples :: Proxy Proposal -> [(Text, Proposal)]
toSamples = [(Text, Proposal)] -> Proxy Proposal -> [(Text, Proposal)]
forall a. a -> Proxy Proposal -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, Proposal)] -> Proxy Proposal -> [(Text, Proposal)])
-> [(Text, Proposal)] -> Proxy Proposal -> [(Text, Proposal)]
forall a b. (a -> b) -> a -> b
$ [Proposal] -> [(Text, Proposal)]
forall a. [a] -> [(Text, a)]
samples
    [ Proposal
        { _dRepProposalTxHash :: TxHash
_dRepProposalTxHash = TxHash
"2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
        , _dRepProposalCertIndex :: Integer
_dRepProposalCertIndex = Integer
1
        , _dRepProposalAction :: ProposalAction
_dRepProposalAction = ProposalAction
ProposalAction_TreasuryWithdrawals
        }
    , Proposal
        { _dRepProposalTxHash :: TxHash
_dRepProposalTxHash = TxHash
"71317e951b20aa46e9fbf45a46a6e950d5723a481225519655bf6c60"
        , _dRepProposalCertIndex :: Integer
_dRepProposalCertIndex = Integer
4
        , _dRepProposalAction :: ProposalAction
_dRepProposalAction = ProposalAction
ProposalAction_NoConfidence
        }
    ]

-- | Proposal details
data ProposalInfo = ProposalInfo
  { ProposalInfo -> TxHash
_proposalInfoTxHash                :: TxHash             -- ^ Transaction ID
  , ProposalInfo -> Integer
_proposalInfoCertIndex             :: Integer            -- ^ Index of the certificate within the proposal transaction
  , ProposalInfo -> ProposalAction
_proposalInfoGovernanceType        :: ProposalAction     -- ^ DRep proposal type
  , ProposalInfo -> Lovelaces
_proposalInfoDeposit               :: Lovelaces          -- ^ The deposit amount paid for this proposal
  , ProposalInfo -> Address
_proposalInfoReturnAddress         :: Address            -- ^ Bech32 stake address of the reward address to receive the deposit when it is repaid.
  , ProposalInfo -> Maybe Value
_proposalInfoGovernanceDescription :: Maybe Value        -- ^ An object describing the content of this GovActionProposal in a readable way.
  , ProposalInfo -> Maybe Epoch
_proposalInfoRatifiedEpoch         :: Maybe Epoch
  , ProposalInfo -> Maybe Epoch
_proposalInfoEnactedEpoch          :: Maybe Epoch
  , ProposalInfo -> Maybe Epoch
_proposalInfoDroppedEpoch          :: Maybe Epoch
  , ProposalInfo -> Maybe Epoch
_proposalInfoExpiredEpoch          :: Maybe Epoch
  , ProposalInfo -> Epoch
_proposalInfoExpiration            :: Epoch              -- ^ The epoch at which this governance action will expire.
  }
  deriving stock (Int -> ProposalInfo -> ShowS
[ProposalInfo] -> ShowS
ProposalInfo -> String
(Int -> ProposalInfo -> ShowS)
-> (ProposalInfo -> String)
-> ([ProposalInfo] -> ShowS)
-> Show ProposalInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProposalInfo -> ShowS
showsPrec :: Int -> ProposalInfo -> ShowS
$cshow :: ProposalInfo -> String
show :: ProposalInfo -> String
$cshowList :: [ProposalInfo] -> ShowS
showList :: [ProposalInfo] -> ShowS
Show, ProposalInfo -> ProposalInfo -> Bool
(ProposalInfo -> ProposalInfo -> Bool)
-> (ProposalInfo -> ProposalInfo -> Bool) -> Eq ProposalInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProposalInfo -> ProposalInfo -> Bool
== :: ProposalInfo -> ProposalInfo -> Bool
$c/= :: ProposalInfo -> ProposalInfo -> Bool
/= :: ProposalInfo -> ProposalInfo -> Bool
Eq, (forall x. ProposalInfo -> Rep ProposalInfo x)
-> (forall x. Rep ProposalInfo x -> ProposalInfo)
-> Generic ProposalInfo
forall x. Rep ProposalInfo x -> ProposalInfo
forall x. ProposalInfo -> Rep ProposalInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProposalInfo -> Rep ProposalInfo x
from :: forall x. ProposalInfo -> Rep ProposalInfo x
$cto :: forall x. Rep ProposalInfo x -> ProposalInfo
to :: forall x. Rep ProposalInfo x -> ProposalInfo
Generic)
  deriving (Maybe ProposalInfo
Value -> Parser [ProposalInfo]
Value -> Parser ProposalInfo
(Value -> Parser ProposalInfo)
-> (Value -> Parser [ProposalInfo])
-> Maybe ProposalInfo
-> FromJSON ProposalInfo
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ProposalInfo
parseJSON :: Value -> Parser ProposalInfo
$cparseJSONList :: Value -> Parser [ProposalInfo]
parseJSONList :: Value -> Parser [ProposalInfo]
$comittedField :: Maybe ProposalInfo
omittedField :: Maybe ProposalInfo
FromJSON, [ProposalInfo] -> Value
[ProposalInfo] -> Encoding
ProposalInfo -> Bool
ProposalInfo -> Value
ProposalInfo -> Encoding
(ProposalInfo -> Value)
-> (ProposalInfo -> Encoding)
-> ([ProposalInfo] -> Value)
-> ([ProposalInfo] -> Encoding)
-> (ProposalInfo -> Bool)
-> ToJSON ProposalInfo
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ProposalInfo -> Value
toJSON :: ProposalInfo -> Value
$ctoEncoding :: ProposalInfo -> Encoding
toEncoding :: ProposalInfo -> Encoding
$ctoJSONList :: [ProposalInfo] -> Value
toJSONList :: [ProposalInfo] -> Value
$ctoEncodingList :: [ProposalInfo] -> Encoding
toEncodingList :: [ProposalInfo] -> Encoding
$comitField :: ProposalInfo -> Bool
omitField :: ProposalInfo -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_proposalInfo", CamelToSnake]] ProposalInfo

instance ToSample ProposalInfo where
  toSamples :: Proxy ProposalInfo -> [(Text, ProposalInfo)]
toSamples = [(Text, ProposalInfo)]
-> Proxy ProposalInfo -> [(Text, ProposalInfo)]
forall a. a -> Proxy ProposalInfo -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, ProposalInfo)]
 -> Proxy ProposalInfo -> [(Text, ProposalInfo)])
-> [(Text, ProposalInfo)]
-> Proxy ProposalInfo
-> [(Text, ProposalInfo)]
forall a b. (a -> b) -> a -> b
$ ProposalInfo -> [(Text, ProposalInfo)]
forall a. a -> [(Text, a)]
singleSample (ProposalInfo -> [(Text, ProposalInfo)])
-> ProposalInfo -> [(Text, ProposalInfo)]
forall a b. (a -> b) -> a -> b
$ ProposalInfo
    { _proposalInfoTxHash :: TxHash
_proposalInfoTxHash                = TxHash
"2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
    , _proposalInfoCertIndex :: Integer
_proposalInfoCertIndex             = Integer
1
    , _proposalInfoGovernanceType :: ProposalAction
_proposalInfoGovernanceType        = ProposalAction
ProposalAction_TreasuryWithdrawals
    , _proposalInfoDeposit :: Lovelaces
_proposalInfoDeposit               = Discrete' "ADA" '(1000000, 1)
Lovelaces
12000
    , _proposalInfoReturnAddress :: Address
_proposalInfoReturnAddress         = Address
"stake_test1urd3hs7rlxwwdzthe6hj026dmyt3y0heuulctscyydh2kgck6nkmz"
    , _proposalInfoGovernanceDescription :: Maybe Value
_proposalInfoGovernanceDescription = Value -> Maybe Value
forall a. a -> Maybe a
Just (Value -> Maybe Value) -> Value -> Maybe Value
forall a b. (a -> b) -> a -> b
$ [Pair] -> Value
object [ Key
"tag" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"InfoAction" :: Text) ]
    , _proposalInfoRatifiedEpoch :: Maybe Epoch
_proposalInfoRatifiedEpoch         = Maybe Epoch
forall a. Maybe a
Nothing
    , _proposalInfoEnactedEpoch :: Maybe Epoch
_proposalInfoEnactedEpoch          = Epoch -> Maybe Epoch
forall a. a -> Maybe a
Just Epoch
123
    , _proposalInfoDroppedEpoch :: Maybe Epoch
_proposalInfoDroppedEpoch          = Maybe Epoch
forall a. Maybe a
Nothing
    , _proposalInfoExpiredEpoch :: Maybe Epoch
_proposalInfoExpiredEpoch          = Maybe Epoch
forall a. Maybe a
Nothing
    , _proposalInfoExpiration :: Epoch
_proposalInfoExpiration            = Epoch
120
    }

-- | Proposed protocol parameters
--
-- This type is sturcturally similar to @ProtocolParams@ but every field
-- is optional.
data ProposedProtocolParams = ProposedProtocolParams
  { ProposedProtocolParams -> Maybe Epoch
_proposedProtocolParamsEpoch                      :: Maybe Epoch -- ^ Epoch number
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMinFeeA                    :: Maybe Integer -- ^ The linear factor for the minimum fee calculation for given epoch
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMinFeeB                    :: Maybe Integer -- ^ The constant factor for the minimum fee calculation
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMaxBlockSize               :: Maybe Integer -- ^ Maximum block body size in Bytes
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMaxTxSize                  :: Maybe Integer -- ^ Maximum transaction size
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMaxBlockHeaderSize         :: Maybe Integer -- ^ Maximum block header size
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsKeyDeposit                 :: Maybe Lovelaces -- ^ The amount of a key registration deposit in Lovelaces
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsPoolDeposit                :: Maybe Lovelaces -- ^ The amount of a pool registration deposit in Lovelaces
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsEMax                       :: Maybe Integer -- ^ Epoch bound on pool retirement
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsNOpt                       :: Maybe Integer -- ^ Desired number of pools
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsA0                         :: Maybe Rational -- ^ Pool pledge influence
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsRho                        :: Maybe Rational -- ^ Monetary expansion
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsTau                        :: Maybe Rational -- ^ Treasury expansion
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDecentralisationParam      :: Maybe Rational -- ^ Percentage of blocks produced by federated nodes
  , ProposedProtocolParams -> Maybe Text
_proposedProtocolParamsExtraEntropy               :: Maybe Text -- ^ Seed for extra entropy
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsProtocolMajorVer           :: Maybe Integer -- ^ Accepted protocol major version
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsProtocolMinorVer           :: Maybe Integer -- ^ Accepted protocol minor version
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsMinUtxo                    :: Maybe Lovelaces -- ^ Minimum UTXO value
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsMinPoolCost                :: Maybe Lovelaces  -- ^ Minimum stake cost forced on the pool
  , ProposedProtocolParams -> Maybe Text
_proposedProtocolParamsNonce                      :: Maybe Text -- ^ Epoch number only used once
  , ProposedProtocolParams -> Maybe CostModels
_proposedProtocolParamsCostModels                 :: Maybe CostModels -- ^ Cost models parameters for Plutus Core scripts
  , ProposedProtocolParams -> Maybe CostModelsRaw
_proposedProtocolParamsCostModelsRaw              :: Maybe CostModelsRaw
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPriceMem                   :: Maybe Rational -- ^ The per word cost of script memory usage
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPriceStep                  :: Maybe Rational -- ^ The cost of script execution step usage
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsMaxTxExMem                 :: Maybe Quantity -- ^ The maximum number of execution memory allowed to be used in a single transaction
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsMaxTxExSteps               :: Maybe Quantity -- ^ The maximum number of execution steps allowed to be used in a single transaction
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsMaxBlockExMem              :: Maybe Quantity -- ^ The maximum number of execution memory allowed to be used in a single block
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsMaxBlockExSteps            :: Maybe Quantity -- ^ The maximum number of execution steps allowed to be used in a single block
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsMaxValSize                 :: Maybe Quantity -- ^ The maximum Val size
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsCollateralPercent          :: Maybe Integer -- ^ The percentage of the transactions fee which must be provided as collateral when including non-native scripts
  , ProposedProtocolParams -> Maybe Integer
_proposedProtocolParamsMaxCollateralInputs        :: Maybe Integer -- ^ The maximum number of collateral inputs allowed in a transaction
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsCoinsPerUtxoSize           :: Maybe Lovelaces -- ^ The cost per UTxO size. Cost per UTxO *word* for Alozno. Cost per UTxO *byte* for Babbage and later
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsCoinsPerUtxoWord           :: Maybe Lovelaces -- ^ The cost per UTxO word (DEPRECATED)
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPvtMotionNoConfidence      :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPvtCommitteeNormal         :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPvtCommitteeNoConfidence   :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPvtHardForkInitiation      :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsPvtppSecurityGroup         :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtMotionNoConfidence      :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtCommitteeNormal         :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtCommitteeNoConfidence   :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtUpdateToConstitution    :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtHardForkInitiation      :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtPPNetworkGroup          :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtPPEconomicGroup         :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtPPTechnicalGroup        :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtPPGovGroup              :: Maybe Rational
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsDvtTreasuryWithdrawal      :: Maybe Rational
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsCommitteeMinSize           :: Maybe Quantity
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsCommitteeMaxTermLength     :: Maybe Quantity
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsGovActionLifetime          :: Maybe Quantity
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsGovActionDeposit           :: Maybe Lovelaces
  , ProposedProtocolParams -> Maybe Lovelaces
_proposedProtocolParamsDrepDeposit                :: Maybe Lovelaces
  , ProposedProtocolParams -> Maybe Quantity
_proposedProtocolParamsDrepActivity               :: Maybe Quantity
  , ProposedProtocolParams -> Maybe Rational
_proposedProtocolParamsMinFeeRefScriptCostPerByte :: Maybe Rational
  }
  deriving stock (Int -> ProposedProtocolParams -> ShowS
[ProposedProtocolParams] -> ShowS
ProposedProtocolParams -> String
(Int -> ProposedProtocolParams -> ShowS)
-> (ProposedProtocolParams -> String)
-> ([ProposedProtocolParams] -> ShowS)
-> Show ProposedProtocolParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProposedProtocolParams -> ShowS
showsPrec :: Int -> ProposedProtocolParams -> ShowS
$cshow :: ProposedProtocolParams -> String
show :: ProposedProtocolParams -> String
$cshowList :: [ProposedProtocolParams] -> ShowS
showList :: [ProposedProtocolParams] -> ShowS
Show, ProposedProtocolParams -> ProposedProtocolParams -> Bool
(ProposedProtocolParams -> ProposedProtocolParams -> Bool)
-> (ProposedProtocolParams -> ProposedProtocolParams -> Bool)
-> Eq ProposedProtocolParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProposedProtocolParams -> ProposedProtocolParams -> Bool
== :: ProposedProtocolParams -> ProposedProtocolParams -> Bool
$c/= :: ProposedProtocolParams -> ProposedProtocolParams -> Bool
/= :: ProposedProtocolParams -> ProposedProtocolParams -> Bool
Eq, (forall x. ProposedProtocolParams -> Rep ProposedProtocolParams x)
-> (forall x.
    Rep ProposedProtocolParams x -> ProposedProtocolParams)
-> Generic ProposedProtocolParams
forall x. Rep ProposedProtocolParams x -> ProposedProtocolParams
forall x. ProposedProtocolParams -> Rep ProposedProtocolParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProposedProtocolParams -> Rep ProposedProtocolParams x
from :: forall x. ProposedProtocolParams -> Rep ProposedProtocolParams x
$cto :: forall x. Rep ProposedProtocolParams x -> ProposedProtocolParams
to :: forall x. Rep ProposedProtocolParams x -> ProposedProtocolParams
Generic)
  deriving (Maybe ProposedProtocolParams
Value -> Parser [ProposedProtocolParams]
Value -> Parser ProposedProtocolParams
(Value -> Parser ProposedProtocolParams)
-> (Value -> Parser [ProposedProtocolParams])
-> Maybe ProposedProtocolParams
-> FromJSON ProposedProtocolParams
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ProposedProtocolParams
parseJSON :: Value -> Parser ProposedProtocolParams
$cparseJSONList :: Value -> Parser [ProposedProtocolParams]
parseJSONList :: Value -> Parser [ProposedProtocolParams]
$comittedField :: Maybe ProposedProtocolParams
omittedField :: Maybe ProposedProtocolParams
FromJSON, [ProposedProtocolParams] -> Value
[ProposedProtocolParams] -> Encoding
ProposedProtocolParams -> Bool
ProposedProtocolParams -> Value
ProposedProtocolParams -> Encoding
(ProposedProtocolParams -> Value)
-> (ProposedProtocolParams -> Encoding)
-> ([ProposedProtocolParams] -> Value)
-> ([ProposedProtocolParams] -> Encoding)
-> (ProposedProtocolParams -> Bool)
-> ToJSON ProposedProtocolParams
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ProposedProtocolParams -> Value
toJSON :: ProposedProtocolParams -> Value
$ctoEncoding :: ProposedProtocolParams -> Encoding
toEncoding :: ProposedProtocolParams -> Encoding
$ctoJSONList :: [ProposedProtocolParams] -> Value
toJSONList :: [ProposedProtocolParams] -> Value
$ctoEncodingList :: [ProposedProtocolParams] -> Encoding
toEncodingList :: [ProposedProtocolParams] -> Encoding
$comitField :: ProposedProtocolParams -> Bool
omitField :: ProposedProtocolParams -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_proposedProtocolParams", CamelToSnake, Rename "dvt_pp_network_group" "dvt_p_p_network_group", Rename "dvt_pp_economic_group" "dvt_p_p_economic_group", Rename "dvt_pp_technical_group" "dvt_p_p_technical_group", Rename "dvt_pp_gov_group" "dvt_p_p_gov_group"]] ProposedProtocolParams

instance ToSample ProposedProtocolParams where
  toSamples :: Proxy ProposedProtocolParams -> [(Text, ProposedProtocolParams)]
toSamples = [(Text, ProposedProtocolParams)]
-> Proxy ProposedProtocolParams -> [(Text, ProposedProtocolParams)]
forall a. a -> Proxy ProposedProtocolParams -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, ProposedProtocolParams)]
 -> Proxy ProposedProtocolParams
 -> [(Text, ProposedProtocolParams)])
-> [(Text, ProposedProtocolParams)]
-> Proxy ProposedProtocolParams
-> [(Text, ProposedProtocolParams)]
forall a b. (a -> b) -> a -> b
$ ProposedProtocolParams -> [(Text, ProposedProtocolParams)]
forall a. a -> [(Text, a)]
singleSample
    ProposedProtocolParams
      { _proposedProtocolParamsEpoch :: Maybe Epoch
_proposedProtocolParamsEpoch = Epoch -> Maybe Epoch
forall a. a -> Maybe a
Just Epoch
225
      , _proposedProtocolParamsMinFeeA :: Maybe Integer
_proposedProtocolParamsMinFeeA = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
44
      , _proposedProtocolParamsMinFeeB :: Maybe Integer
_proposedProtocolParamsMinFeeB = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
155381
      , _proposedProtocolParamsMaxBlockSize :: Maybe Integer
_proposedProtocolParamsMaxBlockSize = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
65536
      , _proposedProtocolParamsMaxTxSize :: Maybe Integer
_proposedProtocolParamsMaxTxSize = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
16384
      , _proposedProtocolParamsMaxBlockHeaderSize :: Maybe Integer
_proposedProtocolParamsMaxBlockHeaderSize = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
1100
      , _proposedProtocolParamsKeyDeposit :: Maybe Lovelaces
_proposedProtocolParamsKeyDeposit = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
2000000
      , _proposedProtocolParamsPoolDeposit :: Maybe Lovelaces
_proposedProtocolParamsPoolDeposit = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
500000000
      , _proposedProtocolParamsEMax :: Maybe Integer
_proposedProtocolParamsEMax = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
18
      , _proposedProtocolParamsNOpt :: Maybe Integer
_proposedProtocolParamsNOpt = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
150
      , _proposedProtocolParamsA0 :: Maybe Rational
_proposedProtocolParamsA0 = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.3
      , _proposedProtocolParamsRho :: Maybe Rational
_proposedProtocolParamsRho = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.003
      , _proposedProtocolParamsTau :: Maybe Rational
_proposedProtocolParamsTau = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.2
      , _proposedProtocolParamsDecentralisationParam :: Maybe Rational
_proposedProtocolParamsDecentralisationParam = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.5
      , _proposedProtocolParamsExtraEntropy :: Maybe Text
_proposedProtocolParamsExtraEntropy = Maybe Text
forall a. Maybe a
Nothing
      , _proposedProtocolParamsProtocolMajorVer :: Maybe Integer
_proposedProtocolParamsProtocolMajorVer = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
2
      , _proposedProtocolParamsProtocolMinorVer :: Maybe Integer
_proposedProtocolParamsProtocolMinorVer = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
0
      , _proposedProtocolParamsMinUtxo :: Maybe Lovelaces
_proposedProtocolParamsMinUtxo = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
1000000
      , _proposedProtocolParamsMinPoolCost :: Maybe Lovelaces
_proposedProtocolParamsMinPoolCost = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
340000000
      , _proposedProtocolParamsNonce :: Maybe Text
_proposedProtocolParamsNonce = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"1a3be38bcbb7911969283716ad7aa550250226b76a61fc51cc9a9a35d9276d81"
      , _proposedProtocolParamsCostModels :: Maybe CostModels
_proposedProtocolParamsCostModels =
          case Proxy CostModels -> [(Text, CostModels)]
forall a. ToSample a => Proxy a -> [(Text, a)]
toSamples (Proxy CostModels
forall {k} (t :: k). Proxy t
Proxy :: Proxy CostModels) of
            [(Text
_, CostModels
pp)] -> CostModels -> Maybe CostModels
forall a. a -> Maybe a
Just CostModels
pp
            [(Text, CostModels)]
_ -> String -> Maybe CostModels
forall a. HasCallStack => String -> a
error String
"Absurd"
      , _proposedProtocolParamsCostModelsRaw :: Maybe CostModelsRaw
_proposedProtocolParamsCostModelsRaw =
          case Proxy CostModelsRaw -> [(Text, CostModelsRaw)]
forall a. ToSample a => Proxy a -> [(Text, a)]
toSamples (Proxy CostModelsRaw
forall {k} (t :: k). Proxy t
Proxy :: Proxy CostModelsRaw) of
            [(Text
_, CostModelsRaw
pp)] -> CostModelsRaw -> Maybe CostModelsRaw
forall a. a -> Maybe a
Just CostModelsRaw
pp
            [(Text, CostModelsRaw)]
_ -> String -> Maybe CostModelsRaw
forall a. HasCallStack => String -> a
error String
"Absurd"
      , _proposedProtocolParamsPriceMem :: Maybe Rational
_proposedProtocolParamsPriceMem = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.0577
      , _proposedProtocolParamsPriceStep :: Maybe Rational
_proposedProtocolParamsPriceStep = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.0000721
      , _proposedProtocolParamsMaxTxExMem :: Maybe Quantity
_proposedProtocolParamsMaxTxExMem = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
10000000
      , _proposedProtocolParamsMaxTxExSteps :: Maybe Quantity
_proposedProtocolParamsMaxTxExSteps = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
10000000000
      , _proposedProtocolParamsMaxBlockExMem :: Maybe Quantity
_proposedProtocolParamsMaxBlockExMem = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
50000000
      , _proposedProtocolParamsMaxBlockExSteps :: Maybe Quantity
_proposedProtocolParamsMaxBlockExSteps = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
40000000000
      , _proposedProtocolParamsMaxValSize :: Maybe Quantity
_proposedProtocolParamsMaxValSize = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
5000
      , _proposedProtocolParamsCollateralPercent :: Maybe Integer
_proposedProtocolParamsCollateralPercent = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
150
      , _proposedProtocolParamsMaxCollateralInputs :: Maybe Integer
_proposedProtocolParamsMaxCollateralInputs = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
3
      , _proposedProtocolParamsCoinsPerUtxoSize :: Maybe Lovelaces
_proposedProtocolParamsCoinsPerUtxoSize = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
34482
      , _proposedProtocolParamsCoinsPerUtxoWord :: Maybe Lovelaces
_proposedProtocolParamsCoinsPerUtxoWord = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
34482
      , _proposedProtocolParamsPvtMotionNoConfidence :: Maybe Rational
_proposedProtocolParamsPvtMotionNoConfidence = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.51
      , _proposedProtocolParamsPvtCommitteeNormal :: Maybe Rational
_proposedProtocolParamsPvtCommitteeNormal = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.51
      , _proposedProtocolParamsPvtCommitteeNoConfidence :: Maybe Rational
_proposedProtocolParamsPvtCommitteeNoConfidence = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.51
      , _proposedProtocolParamsPvtHardForkInitiation :: Maybe Rational
_proposedProtocolParamsPvtHardForkInitiation = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.51
      , _proposedProtocolParamsPvtppSecurityGroup :: Maybe Rational
_proposedProtocolParamsPvtppSecurityGroup = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.51
      , _proposedProtocolParamsDvtMotionNoConfidence :: Maybe Rational
_proposedProtocolParamsDvtMotionNoConfidence = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsDvtCommitteeNormal :: Maybe Rational
_proposedProtocolParamsDvtCommitteeNormal = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsDvtCommitteeNoConfidence :: Maybe Rational
_proposedProtocolParamsDvtCommitteeNoConfidence = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.6
      , _proposedProtocolParamsDvtUpdateToConstitution :: Maybe Rational
_proposedProtocolParamsDvtUpdateToConstitution = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.75
      , _proposedProtocolParamsDvtHardForkInitiation :: Maybe Rational
_proposedProtocolParamsDvtHardForkInitiation = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.6
      , _proposedProtocolParamsDvtPPNetworkGroup :: Maybe Rational
_proposedProtocolParamsDvtPPNetworkGroup = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsDvtPPEconomicGroup :: Maybe Rational
_proposedProtocolParamsDvtPPEconomicGroup = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsDvtPPTechnicalGroup :: Maybe Rational
_proposedProtocolParamsDvtPPTechnicalGroup = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsDvtPPGovGroup :: Maybe Rational
_proposedProtocolParamsDvtPPGovGroup = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.75
      , _proposedProtocolParamsDvtTreasuryWithdrawal :: Maybe Rational
_proposedProtocolParamsDvtTreasuryWithdrawal = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
0.67
      , _proposedProtocolParamsCommitteeMinSize :: Maybe Quantity
_proposedProtocolParamsCommitteeMinSize = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
7
      , _proposedProtocolParamsCommitteeMaxTermLength :: Maybe Quantity
_proposedProtocolParamsCommitteeMaxTermLength = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
146
      , _proposedProtocolParamsGovActionLifetime :: Maybe Quantity
_proposedProtocolParamsGovActionLifetime = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
6
      , _proposedProtocolParamsGovActionDeposit :: Maybe Lovelaces
_proposedProtocolParamsGovActionDeposit = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
100000000000
      , _proposedProtocolParamsDrepDeposit :: Maybe Lovelaces
_proposedProtocolParamsDrepDeposit = Discrete' "ADA" '(1000000, 1)
-> Maybe (Discrete' "ADA" '(1000000, 1))
forall a. a -> Maybe a
Just Discrete' "ADA" '(1000000, 1)
500000000
      , _proposedProtocolParamsDrepActivity :: Maybe Quantity
_proposedProtocolParamsDrepActivity = Quantity -> Maybe Quantity
forall a. a -> Maybe a
Just Quantity
20
      , _proposedProtocolParamsMinFeeRefScriptCostPerByte :: Maybe Rational
_proposedProtocolParamsMinFeeRefScriptCostPerByte = Rational -> Maybe Rational
forall a. a -> Maybe a
Just Rational
15
      }

-- | Parameter proposal details
data ParamProposal = ParamProposal
  { ParamProposal -> TxHash
_paramProposalTxHash     :: TxHash                 -- ^ Transaction ID
  , ParamProposal -> Integer
_paramProposalCertIndex  :: Integer                -- ^ Index of the certificate within the proposal transaction
  , ParamProposal -> ProposedProtocolParams
_paramProposalParameters :: ProposedProtocolParams -- ^ Proposed parameters
  }
  deriving stock (Int -> ParamProposal -> ShowS
[ParamProposal] -> ShowS
ParamProposal -> String
(Int -> ParamProposal -> ShowS)
-> (ParamProposal -> String)
-> ([ParamProposal] -> ShowS)
-> Show ParamProposal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ParamProposal -> ShowS
showsPrec :: Int -> ParamProposal -> ShowS
$cshow :: ParamProposal -> String
show :: ParamProposal -> String
$cshowList :: [ParamProposal] -> ShowS
showList :: [ParamProposal] -> ShowS
Show, ParamProposal -> ParamProposal -> Bool
(ParamProposal -> ParamProposal -> Bool)
-> (ParamProposal -> ParamProposal -> Bool) -> Eq ParamProposal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ParamProposal -> ParamProposal -> Bool
== :: ParamProposal -> ParamProposal -> Bool
$c/= :: ParamProposal -> ParamProposal -> Bool
/= :: ParamProposal -> ParamProposal -> Bool
Eq, (forall x. ParamProposal -> Rep ParamProposal x)
-> (forall x. Rep ParamProposal x -> ParamProposal)
-> Generic ParamProposal
forall x. Rep ParamProposal x -> ParamProposal
forall x. ParamProposal -> Rep ParamProposal x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ParamProposal -> Rep ParamProposal x
from :: forall x. ParamProposal -> Rep ParamProposal x
$cto :: forall x. Rep ParamProposal x -> ParamProposal
to :: forall x. Rep ParamProposal x -> ParamProposal
Generic)
  deriving (Maybe ParamProposal
Value -> Parser [ParamProposal]
Value -> Parser ParamProposal
(Value -> Parser ParamProposal)
-> (Value -> Parser [ParamProposal])
-> Maybe ParamProposal
-> FromJSON ParamProposal
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ParamProposal
parseJSON :: Value -> Parser ParamProposal
$cparseJSONList :: Value -> Parser [ParamProposal]
parseJSONList :: Value -> Parser [ParamProposal]
$comittedField :: Maybe ParamProposal
omittedField :: Maybe ParamProposal
FromJSON, [ParamProposal] -> Value
[ParamProposal] -> Encoding
ParamProposal -> Bool
ParamProposal -> Value
ParamProposal -> Encoding
(ParamProposal -> Value)
-> (ParamProposal -> Encoding)
-> ([ParamProposal] -> Value)
-> ([ParamProposal] -> Encoding)
-> (ParamProposal -> Bool)
-> ToJSON ParamProposal
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ParamProposal -> Value
toJSON :: ParamProposal -> Value
$ctoEncoding :: ParamProposal -> Encoding
toEncoding :: ParamProposal -> Encoding
$ctoJSONList :: [ParamProposal] -> Value
toJSONList :: [ParamProposal] -> Value
$ctoEncodingList :: [ParamProposal] -> Encoding
toEncodingList :: [ParamProposal] -> Encoding
$comitField :: ParamProposal -> Bool
omitField :: ParamProposal -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_paramProposal", CamelToSnake]] ParamProposal

instance ToSample ParamProposal where
  toSamples :: Proxy ParamProposal -> [(Text, ParamProposal)]
toSamples = [(Text, ParamProposal)]
-> Proxy ParamProposal -> [(Text, ParamProposal)]
forall a. a -> Proxy ParamProposal -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, ParamProposal)]
 -> Proxy ParamProposal -> [(Text, ParamProposal)])
-> [(Text, ParamProposal)]
-> Proxy ParamProposal
-> [(Text, ParamProposal)]
forall a b. (a -> b) -> a -> b
$ ParamProposal -> [(Text, ParamProposal)]
forall a. a -> [(Text, a)]
singleSample (ParamProposal -> [(Text, ParamProposal)])
-> ParamProposal -> [(Text, ParamProposal)]
forall a b. (a -> b) -> a -> b
$ ParamProposal
    { _paramProposalTxHash :: TxHash
_paramProposalTxHash     = TxHash
"2dd15e0ef6e6a17841cb9541c27724072ce4d4b79b91e58432fbaa32d9572531"
    , _paramProposalCertIndex :: Integer
_paramProposalCertIndex  = Integer
2
    , _paramProposalParameters :: ProposedProtocolParams
_paramProposalParameters =
        case Proxy ProposedProtocolParams -> [(Text, ProposedProtocolParams)]
forall a. ToSample a => Proxy a -> [(Text, a)]
toSamples (Proxy ProposedProtocolParams
forall {k} (t :: k). Proxy t
Proxy :: Proxy ProposedProtocolParams) of
          [(Text
_, ProposedProtocolParams
pp)] -> ProposedProtocolParams
pp
          [(Text, ProposedProtocolParams)]
_ -> String -> ProposedProtocolParams
forall a. HasCallStack => String -> a
error String
"Absurd"
    }

-- | Withdrawal proposal details
data WithdrawalProposal = WithdrawalProposal
  { WithdrawalProposal -> Address
_withdrawalProposalStakeAddress :: Address    -- ^ Bech32 stake address
  , WithdrawalProposal -> Lovelaces
_withdrawalProposalAmount       :: Lovelaces -- ^ Proposed withdrawal amount
  }
  deriving stock (Int -> WithdrawalProposal -> ShowS
[WithdrawalProposal] -> ShowS
WithdrawalProposal -> String
(Int -> WithdrawalProposal -> ShowS)
-> (WithdrawalProposal -> String)
-> ([WithdrawalProposal] -> ShowS)
-> Show WithdrawalProposal
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> WithdrawalProposal -> ShowS
showsPrec :: Int -> WithdrawalProposal -> ShowS
$cshow :: WithdrawalProposal -> String
show :: WithdrawalProposal -> String
$cshowList :: [WithdrawalProposal] -> ShowS
showList :: [WithdrawalProposal] -> ShowS
Show, WithdrawalProposal -> WithdrawalProposal -> Bool
(WithdrawalProposal -> WithdrawalProposal -> Bool)
-> (WithdrawalProposal -> WithdrawalProposal -> Bool)
-> Eq WithdrawalProposal
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: WithdrawalProposal -> WithdrawalProposal -> Bool
== :: WithdrawalProposal -> WithdrawalProposal -> Bool
$c/= :: WithdrawalProposal -> WithdrawalProposal -> Bool
/= :: WithdrawalProposal -> WithdrawalProposal -> Bool
Eq, (forall x. WithdrawalProposal -> Rep WithdrawalProposal x)
-> (forall x. Rep WithdrawalProposal x -> WithdrawalProposal)
-> Generic WithdrawalProposal
forall x. Rep WithdrawalProposal x -> WithdrawalProposal
forall x. WithdrawalProposal -> Rep WithdrawalProposal x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. WithdrawalProposal -> Rep WithdrawalProposal x
from :: forall x. WithdrawalProposal -> Rep WithdrawalProposal x
$cto :: forall x. Rep WithdrawalProposal x -> WithdrawalProposal
to :: forall x. Rep WithdrawalProposal x -> WithdrawalProposal
Generic)
  deriving (Maybe WithdrawalProposal
Value -> Parser [WithdrawalProposal]
Value -> Parser WithdrawalProposal
(Value -> Parser WithdrawalProposal)
-> (Value -> Parser [WithdrawalProposal])
-> Maybe WithdrawalProposal
-> FromJSON WithdrawalProposal
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser WithdrawalProposal
parseJSON :: Value -> Parser WithdrawalProposal
$cparseJSONList :: Value -> Parser [WithdrawalProposal]
parseJSONList :: Value -> Parser [WithdrawalProposal]
$comittedField :: Maybe WithdrawalProposal
omittedField :: Maybe WithdrawalProposal
FromJSON, [WithdrawalProposal] -> Value
[WithdrawalProposal] -> Encoding
WithdrawalProposal -> Bool
WithdrawalProposal -> Value
WithdrawalProposal -> Encoding
(WithdrawalProposal -> Value)
-> (WithdrawalProposal -> Encoding)
-> ([WithdrawalProposal] -> Value)
-> ([WithdrawalProposal] -> Encoding)
-> (WithdrawalProposal -> Bool)
-> ToJSON WithdrawalProposal
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: WithdrawalProposal -> Value
toJSON :: WithdrawalProposal -> Value
$ctoEncoding :: WithdrawalProposal -> Encoding
toEncoding :: WithdrawalProposal -> Encoding
$ctoJSONList :: [WithdrawalProposal] -> Value
toJSONList :: [WithdrawalProposal] -> Value
$ctoEncodingList :: [WithdrawalProposal] -> Encoding
toEncodingList :: [WithdrawalProposal] -> Encoding
$comitField :: WithdrawalProposal -> Bool
omitField :: WithdrawalProposal -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_withdrawalProposal", CamelToSnake]] WithdrawalProposal

instance ToSample WithdrawalProposal where
  toSamples :: Proxy WithdrawalProposal -> [(Text, WithdrawalProposal)]
toSamples = [(Text, WithdrawalProposal)]
-> Proxy WithdrawalProposal -> [(Text, WithdrawalProposal)]
forall a. a -> Proxy WithdrawalProposal -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, WithdrawalProposal)]
 -> Proxy WithdrawalProposal -> [(Text, WithdrawalProposal)])
-> [(Text, WithdrawalProposal)]
-> Proxy WithdrawalProposal
-> [(Text, WithdrawalProposal)]
forall a b. (a -> b) -> a -> b
$ [WithdrawalProposal] -> [(Text, WithdrawalProposal)]
forall a. [a] -> [(Text, a)]
samples
    [ WithdrawalProposal
        { _withdrawalProposalStakeAddress :: Address
_withdrawalProposalStakeAddress = Address
"stake1ux3g2c9dx2nhhehyrezyxpkstartcqmu9hk63qgfkccw5rqttygt7"
        , _withdrawalProposalAmount :: Lovelaces
_withdrawalProposalAmount       = Discrete' "ADA" '(1000000, 1)
Lovelaces
454541212442
        }
    , WithdrawalProposal
        { _withdrawalProposalStakeAddress :: Address
_withdrawalProposalStakeAddress = Address
"stake1xx2g2c9dx2nhhehyrezyxpkstoppcqmu9hk63qgfkccw5rqttygt2"
        , _withdrawalProposalAmount :: Lovelaces
_withdrawalProposalAmount       = Discrete' "ADA" '(1000000, 1)
Lovelaces
97846969
        }
    ]

data VoterRole
  = VoterRole_ConstitutionalCommittee
  | VoterRole_DRep
  | VoterRole_SPO
  deriving stock (Int -> VoterRole -> ShowS
[VoterRole] -> ShowS
VoterRole -> String
(Int -> VoterRole -> ShowS)
-> (VoterRole -> String)
-> ([VoterRole] -> ShowS)
-> Show VoterRole
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VoterRole -> ShowS
showsPrec :: Int -> VoterRole -> ShowS
$cshow :: VoterRole -> String
show :: VoterRole -> String
$cshowList :: [VoterRole] -> ShowS
showList :: [VoterRole] -> ShowS
Show, VoterRole -> VoterRole -> Bool
(VoterRole -> VoterRole -> Bool)
-> (VoterRole -> VoterRole -> Bool) -> Eq VoterRole
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VoterRole -> VoterRole -> Bool
== :: VoterRole -> VoterRole -> Bool
$c/= :: VoterRole -> VoterRole -> Bool
/= :: VoterRole -> VoterRole -> Bool
Eq, (forall x. VoterRole -> Rep VoterRole x)
-> (forall x. Rep VoterRole x -> VoterRole) -> Generic VoterRole
forall x. Rep VoterRole x -> VoterRole
forall x. VoterRole -> Rep VoterRole x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VoterRole -> Rep VoterRole x
from :: forall x. VoterRole -> Rep VoterRole x
$cto :: forall x. Rep VoterRole x -> VoterRole
to :: forall x. Rep VoterRole x -> VoterRole
Generic)

instance ToJSON VoterRole where
  toJSON :: VoterRole -> Value
toJSON VoterRole
VoterRole_ConstitutionalCommittee = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"constitutional_committee" :: Text)
  toJSON VoterRole
VoterRole_DRep                    = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"drep"                     :: Text)
  toJSON VoterRole
VoterRole_SPO                     = Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text
"spo"                      :: Text)

  toEncoding :: VoterRole -> Encoding
toEncoding VoterRole
VoterRole_ConstitutionalCommittee = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"constitutional_committee" :: Text)
  toEncoding VoterRole
VoterRole_DRep                    = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"drep"                     :: Text)
  toEncoding VoterRole
VoterRole_SPO                     = Text -> Encoding
forall a. ToJSON a => a -> Encoding
toEncoding (Text
"spo"                      :: Text)

instance FromJSON VoterRole where
  parseJSON :: Value -> Parser VoterRole
parseJSON = String -> (Text -> Parser VoterRole) -> Value -> Parser VoterRole
forall a. String -> (Text -> Parser a) -> Value -> Parser a
withText String
"voterRole" ((Text -> Parser VoterRole) -> Value -> Parser VoterRole)
-> (Text -> Parser VoterRole) -> Value -> Parser VoterRole
forall a b. (a -> b) -> a -> b
$ \case
    Text
"constitutional_committee" -> VoterRole -> Parser VoterRole
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VoterRole
VoterRole_ConstitutionalCommittee
    Text
"drep"                     -> VoterRole -> Parser VoterRole
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VoterRole
VoterRole_DRep
    Text
"spo"                      -> VoterRole -> Parser VoterRole
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure VoterRole
VoterRole_SPO
    Text
x              -> String -> Parser VoterRole
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String
"Expected DRep vote but got " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Text -> String
forall a. Show a => a -> String
show Text
x)

-- | Proposal vote
data ProposalVote = ProposalVote
  { ProposalVote -> TxHash
_proposalVoteTxHash    :: TxHash       -- ^ Transaction ID
  , ProposalVote -> Integer
_proposalVoteCertIndex :: Integer      -- ^ Index of the certificate within the proposal transaction
  , ProposalVote -> VoterRole
_proposalVoteVoterRole :: VoterRole    -- ^ The role of the voter
  , ProposalVote -> DRepId
_proposalVoteVoter     :: DRepId       -- ^ The actual voter
  , ProposalVote -> VotingAction
_proposalVoteAction    :: VotingAction -- ^ Actual voting action
  }
  deriving stock (Int -> ProposalVote -> ShowS
[ProposalVote] -> ShowS
ProposalVote -> String
(Int -> ProposalVote -> ShowS)
-> (ProposalVote -> String)
-> ([ProposalVote] -> ShowS)
-> Show ProposalVote
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProposalVote -> ShowS
showsPrec :: Int -> ProposalVote -> ShowS
$cshow :: ProposalVote -> String
show :: ProposalVote -> String
$cshowList :: [ProposalVote] -> ShowS
showList :: [ProposalVote] -> ShowS
Show, ProposalVote -> ProposalVote -> Bool
(ProposalVote -> ProposalVote -> Bool)
-> (ProposalVote -> ProposalVote -> Bool) -> Eq ProposalVote
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProposalVote -> ProposalVote -> Bool
== :: ProposalVote -> ProposalVote -> Bool
$c/= :: ProposalVote -> ProposalVote -> Bool
/= :: ProposalVote -> ProposalVote -> Bool
Eq, (forall x. ProposalVote -> Rep ProposalVote x)
-> (forall x. Rep ProposalVote x -> ProposalVote)
-> Generic ProposalVote
forall x. Rep ProposalVote x -> ProposalVote
forall x. ProposalVote -> Rep ProposalVote x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProposalVote -> Rep ProposalVote x
from :: forall x. ProposalVote -> Rep ProposalVote x
$cto :: forall x. Rep ProposalVote x -> ProposalVote
to :: forall x. Rep ProposalVote x -> ProposalVote
Generic)
  deriving (Maybe ProposalVote
Value -> Parser [ProposalVote]
Value -> Parser ProposalVote
(Value -> Parser ProposalVote)
-> (Value -> Parser [ProposalVote])
-> Maybe ProposalVote
-> FromJSON ProposalVote
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ProposalVote
parseJSON :: Value -> Parser ProposalVote
$cparseJSONList :: Value -> Parser [ProposalVote]
parseJSONList :: Value -> Parser [ProposalVote]
$comittedField :: Maybe ProposalVote
omittedField :: Maybe ProposalVote
FromJSON, [ProposalVote] -> Value
[ProposalVote] -> Encoding
ProposalVote -> Bool
ProposalVote -> Value
ProposalVote -> Encoding
(ProposalVote -> Value)
-> (ProposalVote -> Encoding)
-> ([ProposalVote] -> Value)
-> ([ProposalVote] -> Encoding)
-> (ProposalVote -> Bool)
-> ToJSON ProposalVote
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ProposalVote -> Value
toJSON :: ProposalVote -> Value
$ctoEncoding :: ProposalVote -> Encoding
toEncoding :: ProposalVote -> Encoding
$ctoJSONList :: [ProposalVote] -> Value
toJSONList :: [ProposalVote] -> Value
$ctoEncodingList :: [ProposalVote] -> Encoding
toEncodingList :: [ProposalVote] -> Encoding
$comitField :: ProposalVote -> Bool
omitField :: ProposalVote -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_proposalVote", CamelToSnake, Rename "action" "vote"]] ProposalVote

instance ToSample ProposalVote where
  toSamples :: Proxy ProposalVote -> [(Text, ProposalVote)]
toSamples = [(Text, ProposalVote)]
-> Proxy ProposalVote -> [(Text, ProposalVote)]
forall a. a -> Proxy ProposalVote -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, ProposalVote)]
 -> Proxy ProposalVote -> [(Text, ProposalVote)])
-> [(Text, ProposalVote)]
-> Proxy ProposalVote
-> [(Text, ProposalVote)]
forall a b. (a -> b) -> a -> b
$ [ProposalVote] -> [(Text, ProposalVote)]
forall a. [a] -> [(Text, a)]
samples
    [ ProposalVote
        { _proposalVoteTxHash :: TxHash
_proposalVoteTxHash    = TxHash
"b302de601defdf11a5261ed31a263804dac4a582a888c998ce24dec5"
        , _proposalVoteCertIndex :: Integer
_proposalVoteCertIndex = Integer
2
        , _proposalVoteVoterRole :: VoterRole
_proposalVoteVoterRole = VoterRole
VoterRole_DRep
        , _proposalVoteVoter :: DRepId
_proposalVoteVoter     = DRepIdBech32 -> DRepId
DRepId_Bech32 DRepIdBech32
"drep1mvdu8slennngja7w4un6knwezufra70887zuxpprd64jxfveahn"
        , _proposalVoteAction :: VotingAction
_proposalVoteAction    = VotingAction
VotingAction_Yes
        }
    , ProposalVote
        { _proposalVoteTxHash :: TxHash
_proposalVoteTxHash    = TxHash
"b302de601defdf11a5261ed31a263804dac4a582a888c998ce24dec5"
        , _proposalVoteCertIndex :: Integer
_proposalVoteCertIndex = Integer
3
        , _proposalVoteVoterRole :: VoterRole
_proposalVoteVoterRole = VoterRole
VoterRole_ConstitutionalCommittee
        , _proposalVoteVoter :: DRepId
_proposalVoteVoter     = DRepIdHex -> DRepId
DRepId_Hex DRepIdHex
"53a42debdc7ffd90085ab7fd9800b63e6d1c9ac481ba6eb7b6a844e4"
        , _proposalVoteAction :: VotingAction
_proposalVoteAction    = VotingAction
VotingAction_Abstain
        }
    ]

-- | Prposal metadata
data ProposalMeta = ProposalMeta
  { ProposalMeta -> TxHash
_proposalMetaTxHash       :: TxHash  -- ^ Transaction ID
  , ProposalMeta -> Integer
_proposalMetaCertIndex    :: Integer -- ^ Index of the certificate within the proposal transaction
  , ProposalMeta -> Text
_proposalMetaUrl          :: Text    -- ^ URL to the proposal metadata
  , ProposalMeta -> Text
_proposalMetaHash         :: Text    -- ^ Hash of the metadata file
  , ProposalMeta -> Value
_proposalMetaJsonMetadata :: Value   -- ^ Content of the JSON metadata (validated CIP-108)
  , ProposalMeta -> Text
_proposalMetaBytes        :: Text    -- ^ Hex-encoded metadata (raw)
  }
  deriving stock (Int -> ProposalMeta -> ShowS
[ProposalMeta] -> ShowS
ProposalMeta -> String
(Int -> ProposalMeta -> ShowS)
-> (ProposalMeta -> String)
-> ([ProposalMeta] -> ShowS)
-> Show ProposalMeta
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProposalMeta -> ShowS
showsPrec :: Int -> ProposalMeta -> ShowS
$cshow :: ProposalMeta -> String
show :: ProposalMeta -> String
$cshowList :: [ProposalMeta] -> ShowS
showList :: [ProposalMeta] -> ShowS
Show, ProposalMeta -> ProposalMeta -> Bool
(ProposalMeta -> ProposalMeta -> Bool)
-> (ProposalMeta -> ProposalMeta -> Bool) -> Eq ProposalMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProposalMeta -> ProposalMeta -> Bool
== :: ProposalMeta -> ProposalMeta -> Bool
$c/= :: ProposalMeta -> ProposalMeta -> Bool
/= :: ProposalMeta -> ProposalMeta -> Bool
Eq, (forall x. ProposalMeta -> Rep ProposalMeta x)
-> (forall x. Rep ProposalMeta x -> ProposalMeta)
-> Generic ProposalMeta
forall x. Rep ProposalMeta x -> ProposalMeta
forall x. ProposalMeta -> Rep ProposalMeta x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProposalMeta -> Rep ProposalMeta x
from :: forall x. ProposalMeta -> Rep ProposalMeta x
$cto :: forall x. Rep ProposalMeta x -> ProposalMeta
to :: forall x. Rep ProposalMeta x -> ProposalMeta
Generic)
  deriving (Maybe ProposalMeta
Value -> Parser [ProposalMeta]
Value -> Parser ProposalMeta
(Value -> Parser ProposalMeta)
-> (Value -> Parser [ProposalMeta])
-> Maybe ProposalMeta
-> FromJSON ProposalMeta
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser ProposalMeta
parseJSON :: Value -> Parser ProposalMeta
$cparseJSONList :: Value -> Parser [ProposalMeta]
parseJSONList :: Value -> Parser [ProposalMeta]
$comittedField :: Maybe ProposalMeta
omittedField :: Maybe ProposalMeta
FromJSON, [ProposalMeta] -> Value
[ProposalMeta] -> Encoding
ProposalMeta -> Bool
ProposalMeta -> Value
ProposalMeta -> Encoding
(ProposalMeta -> Value)
-> (ProposalMeta -> Encoding)
-> ([ProposalMeta] -> Value)
-> ([ProposalMeta] -> Encoding)
-> (ProposalMeta -> Bool)
-> ToJSON ProposalMeta
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: ProposalMeta -> Value
toJSON :: ProposalMeta -> Value
$ctoEncoding :: ProposalMeta -> Encoding
toEncoding :: ProposalMeta -> Encoding
$ctoJSONList :: [ProposalMeta] -> Value
toJSONList :: [ProposalMeta] -> Value
$ctoEncodingList :: [ProposalMeta] -> Encoding
toEncodingList :: [ProposalMeta] -> Encoding
$comitField :: ProposalMeta -> Bool
omitField :: ProposalMeta -> Bool
ToJSON)
  via CustomJSON '[FieldLabelModifier '[StripPrefix "_proposalMeta", CamelToSnake]] ProposalMeta

instance ToSample ProposalMeta where
  toSamples :: Proxy ProposalMeta -> [(Text, ProposalMeta)]
toSamples = [(Text, ProposalMeta)]
-> Proxy ProposalMeta -> [(Text, ProposalMeta)]
forall a. a -> Proxy ProposalMeta -> a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ([(Text, ProposalMeta)]
 -> Proxy ProposalMeta -> [(Text, ProposalMeta)])
-> [(Text, ProposalMeta)]
-> Proxy ProposalMeta
-> [(Text, ProposalMeta)]
forall a b. (a -> b) -> a -> b
$ ProposalMeta -> [(Text, ProposalMeta)]
forall a. a -> [(Text, a)]
singleSample (ProposalMeta -> [(Text, ProposalMeta)])
-> ProposalMeta -> [(Text, ProposalMeta)]
forall a b. (a -> b) -> a -> b
$ ProposalMeta
    { _proposalMetaTxHash :: TxHash
_proposalMetaTxHash       = TxHash
"257d75c8ddb0434e9b63e29ebb6241add2b835a307aa33aedba2effe09ed4ec8"
    , _proposalMetaCertIndex :: Integer
_proposalMetaCertIndex    = Integer
2
    , _proposalMetaUrl :: Text
_proposalMetaUrl          = Text
"https://raw.githubusercontent.com/carloslodelar/proposals/main/pv10.json"
    , _proposalMetaHash :: Text
_proposalMetaHash         = Text
"ffa226f3863aca006172d559cf46bb8b883a47233962ae2fc94c158d7de6fa81"
    , _proposalMetaJsonMetadata :: Value
_proposalMetaJsonMetadata = [Pair] -> Value
object
        [ Key
"body" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
            [ Key
"title" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Hardfork to Protocol version 10" :: Text)
            , Key
"abstract" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Let's have sanchoNet in full governance as soon as possible" :: Text)
            , Key
"rationale" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Let's keep testing stuff" :: Text)
            , Key
"motivation" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"PV9 is not as fun as PV10" :: Text)
            , Key
"references" Key -> [Value] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
                [ [Pair] -> Value
object
                    [ Key
"@type" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Other" :: Text)
                    , Key
"label" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Hardfork to PV10" :: Text)
                    , Key
"uri"   Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"" :: Text)
                    ]
                ]
            ]
        , Key
"authors" Key -> [Value] -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.=
            [ [Pair] -> Value
object
                [ Key
"name" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"Carlos" :: Text)
                , Key
"witness" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                    [ Key
"publicKey" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"7ea09a34aebb13c9841c71397b1cabfec5ddf950405293dee496cac2f437480a" :: Text)
                    , Key
"signature" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"a476985b4cc0d457f247797611799a6f6a80fc8cb7ec9dcb5a8223888d0618e30de165f3d869c4a0d9107d8a5b612ad7c5e42441907f5b91796f0d7187d64a01" :: Text)
                    , Key
"witnessAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"ed25519" :: Text)
                    ]
                ]
            ]
        , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
            [ Key
"CIP100" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#" :: Text)
            , Key
"CIP108" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0108/README.md#" :: Text)
            , Key
"hashAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:hashAlgorithm" :: Text)
            , Key
"@language" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"en-us" :: Text)
            , Key
"body" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:body" :: Text)
                , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                    [ Key
"title" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:title" :: Text)
                    , Key
"abstract" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:abstract" :: Text)
                    , Key
"rationale" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:rationale" :: Text)
                    , Key
"motivation" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:motivation" :: Text)
                    , Key
"references" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                        [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:references" :: Text)
                        , Key
"@container" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"@set" :: Text)
                        , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                            [ Key
"uri" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:reference-uri" :: Text)
                            , Key
"Other" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:OtherReference" :: Text)
                            , Key
"label" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:reference-label" :: Text)
                            , Key
"GovernanceMetadata" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:GovernanceMetadataReference" :: Text)
                            , Key
"referenceHash" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                                [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:referenceHash" :: Text)
                                , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                                    [ Key
"hashDigest" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP108:hashDigest" :: Text)
                                    , Key
"hashAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:hashAlgorithm" :: Text)
                                    ]
                                ]
                            ]
                        ]
                    ]
                ]
            , Key
"authors" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:authors" :: Text)
                , Key
"@container" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"@set" :: Text)
                , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                    [ Key
"name" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"http://xmlns.com/foaf/0.1/name" :: Text)
                    , Key
"witness" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                        [ Key
"@id" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:witness" :: Text)
                        , Key
"@context" Key -> Value -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= [Pair] -> Value
object
                            [ Key
"publicKey" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:publicKey" :: Text)
                            , Key
"signature" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:signature" :: Text)
                            , Key
"witnessAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"CIP100:witnessAlgorithm" :: Text)
                            ]
                        ]
                    ]
                ]
            ]
        , Key
"hashAlgorithm" Key -> Text -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= (Text
"blake2b-256" :: Text)
        ]
    , _proposalMetaBytes :: Text
_proposalMetaBytes        = Text
"\\x7b0a20202240636f6e74657874223a207b0a2020202022406c616e6775616765223a2022656e2d7573222c0a2020202022434950313030223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130302f524541444d452e6d6423222c0a2020202022434950313038223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130382f524541444d452e6d6423222c0a202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d222c0a2020202022626f6479223a207b0a20202020202022406964223a20224349503130383a626f6479222c0a2020202020202240636f6e74657874223a207b0a2020202020202020227265666572656e636573223a207b0a2020202020202020202022406964223a20224349503130383a7265666572656e636573222c0a202020202020202020202240636f6e7461696e6572223a202240736574222c0a202020202020202020202240636f6e74657874223a207b0a20202020202020202020202022476f7665726e616e63654d65746164617461223a20224349503130303a476f7665726e616e63654d657461646174615265666572656e6365222c0a202020202020202020202020224f74686572223a20224349503130303a4f746865725265666572656e6365222c0a202020202020202020202020226c6162656c223a20224349503130303a7265666572656e63652d6c6162656c222c0a20202020202020202020202022757269223a20224349503130303a7265666572656e63652d757269222c0a202020202020202020202020227265666572656e636548617368223a207b0a202020202020202020202020202022406964223a20224349503130383a7265666572656e636548617368222c0a20202020202020202020202020202240636f6e74657874223a207b0a202020202020202020202020202020202268617368446967657374223a20224349503130383a68617368446967657374222c0a202020202020202020202020202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d220a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2c0a2020202020202020227469746c65223a20224349503130383a7469746c65222c0a2020202020202020226162737472616374223a20224349503130383a6162737472616374222c0a2020202020202020226d6f7469766174696f6e223a20224349503130383a6d6f7469766174696f6e222c0a202020202020202022726174696f6e616c65223a20224349503130383a726174696f6e616c65220a2020202020207d0a202020207d2c0a2020202022617574686f7273223a207b0a20202020202022406964223a20224349503130303a617574686f7273222c0a2020202020202240636f6e7461696e6572223a202240736574222c0a2020202020202240636f6e74657874223a207b0a2020202020202020226e616d65223a2022687474703a2f2f786d6c6e732e636f6d2f666f61662f302e312f6e616d65222c0a2020202020202020227769746e657373223a207b0a2020202020202020202022406964223a20224349503130303a7769746e657373222c0a202020202020202020202240636f6e74657874223a207b0a202020202020202020202020227769746e657373416c676f726974686d223a20224349503130303a7769746e657373416c676f726974686d222c0a202020202020202020202020227075626c69634b6579223a20224349503130303a7075626c69634b6579222c0a202020202020202020202020227369676e6174757265223a20224349503130303a7369676e6174757265220a202020202020202020207d0a20202020202020207d0a2020202020207d0a202020207d0a20207d2c0a20202268617368416c676f726974686d223a2022626c616b6532622d323536222c0a202022626f6479223a207b0a20202020227469746c65223a202248617264666f726b20746f2050726f746f636f6c2076657273696f6e203130222c0a20202020226162737472616374223a20224c6574277320686176652073616e63686f4e657420696e2066756c6c20676f7665726e616e636520617320736f6f6e20617320706f737369626c65222c0a20202020226d6f7469766174696f6e223a2022505639206973206e6f742061732066756e2061732050563130222c0a2020202022726174696f6e616c65223a20224c65742773206b6565702074657374696e67207374756666222c0a20202020227265666572656e636573223a205b0a2020202020207b0a2020202020202020224074797065223a20224f74686572222c0a2020202020202020226c6162656c223a202248617264666f726b20746f2050563130222c0a202020202020202022757269223a2022220a2020202020207d0a202020205d0a20207d2c0a202022617574686f7273223a205b0a202020207b0a202020202020226e616d65223a20224361726c6f73222c0a202020202020227769746e657373223a207b0a2020202020202020227769746e657373416c676f726974686d223a202265643235353139222c0a2020202020202020227075626c69634b6579223a202237656130396133346165626231336339383431633731333937623163616266656335646466393530343035323933646565343936636163326634333734383061222c0a2020202020202020227369676e6174757265223a20226134373639383562346363306434353766323437373937363131373939613666366138306663386362376563396463623561383232333838386430363138653330646531363566336438363963346130643931303764386135623631326164376335653432343431393037663562393137393666306437313837643634613031220a2020202020207d0a202020207d0a20205d0a7d"
    }