{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.CanonicalState.Conway (
  mkCanonicalConstitution,
  CanonicalGovActionState (..),
  toGovActionState,
  fromGovActionState,
  mkGovProposalIn,
  fromGovProposalIn,
) where

import Cardano.Ledger.BaseTypes (EpochNo (..))
import Cardano.Ledger.Binary (decodeFull')
import Cardano.Ledger.CanonicalState.BasicTypes (
  CanonicalCoin (..),
  DecodeOnChain (..),
  OnChain (..),
  decodeNamespacedField,
  decodeNamespacedTag,
  fromCanonicalExUnits,
  mkCanonicalExUnits,
  mkOnChain,
 )
import Cardano.Ledger.CanonicalState.Namespace
import Cardano.Ledger.CanonicalState.Namespace.GovCommittee.V0 ()
import Cardano.Ledger.CanonicalState.Namespace.GovConstitution.V0
import Cardano.Ledger.CanonicalState.Namespace.GovPParams.V0
import Cardano.Ledger.CanonicalState.Namespace.GovProposals.V0
import Cardano.Ledger.CanonicalState.Namespace.UTxO.V0
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance
import Cardano.Ledger.Conway.PParams
import Cardano.Ledger.Credential (Credential (..))
import Cardano.SCLS.CBOR.Canonical (
  assumeCanonicalDecoder,
  assumeCanonicalEncoding,
 )
import Cardano.SCLS.CBOR.Canonical.Decoder (
  FromCanonicalCBOR (..),
  decodeMapLenCanonicalOf,
 )
import Cardano.SCLS.CBOR.Canonical.Encoder (ToCanonicalCBOR (..), encodeAsMap, mkEncodablePair)
import Cardano.SCLS.NamespaceCodec
import Cardano.SCLS.Versioned (Versioned (..))
import qualified Codec.CBOR.Decoding as D
import qualified Codec.CBOR.Encoding as E
import Data.Map (Map)
import Data.Text (Text)
import Data.Word (Word8)
import Lens.Micro

type instance NamespaceEra "blocks/v0" = ConwayEra

type instance NamespaceEra "gov/committee/v0" = ConwayEra

type instance NamespaceEra "gov/constitution/v0" = ConwayEra

type instance NamespaceEra "gov/pparams/v0" = ConwayEra

type instance NamespaceEra "gov/proposals/v0" = ConwayEra

type instance NamespaceEra "utxo/v0" = ConwayEra

instance KnownNamespace "utxo/v0" where
  type NamespaceKey "utxo/v0" = UtxoIn
  type NamespaceEntry "utxo/v0" = UtxoOut ConwayEra

mkCanonicalConstitution :: Constitution era -> CanonicalConstitution
mkCanonicalConstitution :: forall era. Constitution era -> CanonicalConstitution
mkCanonicalConstitution Constitution {StrictMaybe ScriptHash
Anchor
constitutionAnchor :: Anchor
constitutionGuardrailsScriptHash :: StrictMaybe ScriptHash
constitutionGuardrailsScriptHash :: forall era. Constitution era -> StrictMaybe ScriptHash
constitutionAnchor :: forall era. Constitution era -> Anchor
..} = CanonicalConstitution {StrictMaybe ScriptHash
Anchor
constitutionAnchor :: Anchor
constitutionGuardrailsScriptHash :: StrictMaybe ScriptHash
constitutionGuardrailsScriptHash :: StrictMaybe ScriptHash
constitutionAnchor :: Anchor
..}

instance ToCanonicalCBOR "gov/pparams/v0" (PParams ConwayEra) where
  toCanonicalCBOR :: forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> PParams ConwayEra -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v PParams ConwayEra
pp =
    [SomeEncodablePair "gov/pparams/v0"] -> CanonicalEncoding
forall (v :: Symbol) (t :: * -> *).
Traversable t =>
t (SomeEncodablePair v) -> CanonicalEncoding
encodeAsMap
      [ proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
0 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CoinPerByte -> Const CanonicalCoin CoinPerByte)
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era. EraPParams era => Lens' (PParams era) CoinPerByte
Lens' (PParams ConwayEra) CoinPerByte
ppTxFeePerByteL ((CoinPerByte -> Const CanonicalCoin CoinPerByte)
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CoinPerByte -> Const CanonicalCoin CoinPerByte)
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CoinPerByte -> CanonicalCoin)
-> SimpleGetter CoinPerByte CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to (CompactForm Coin -> CanonicalCoin
CanonicalCoin (CompactForm Coin -> CanonicalCoin)
-> (CoinPerByte -> CompactForm Coin)
-> CoinPerByte
-> CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CoinPerByte -> CompactForm Coin
unCoinPerByte))
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
1 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
EraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppTxFeeFixedCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> Word32 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
2 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word32 (PParams ConwayEra) Word32 -> Word32
forall s a. s -> Getting a s a -> a
^. Getting Word32 (PParams ConwayEra) Word32
forall era. EraPParams era => Lens' (PParams era) Word32
Lens' (PParams ConwayEra) Word32
ppMaxBBSizeL)
      , proxy "gov/pparams/v0"
-> Int -> Word32 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
3 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word32 (PParams ConwayEra) Word32 -> Word32
forall s a. s -> Getting a s a -> a
^. Getting Word32 (PParams ConwayEra) Word32
forall era. EraPParams era => Lens' (PParams era) Word32
Lens' (PParams ConwayEra) Word32
ppMaxTxSizeL)
      , proxy "gov/pparams/v0"
-> Int -> Word16 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
4 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word16 (PParams ConwayEra) Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. Getting Word16 (PParams ConwayEra) Word16
forall era. EraPParams era => Lens' (PParams era) Word16
Lens' (PParams ConwayEra) Word16
ppMaxBHSizeL)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
5 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
EraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppKeyDepositCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
6 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
EraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppPoolDepositCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> EpochInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
7 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting EpochInterval (PParams ConwayEra) EpochInterval
-> EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting EpochInterval (PParams ConwayEra) EpochInterval
forall era. EraPParams era => Lens' (PParams era) EpochInterval
Lens' (PParams ConwayEra) EpochInterval
ppEMaxL)
      , proxy "gov/pparams/v0"
-> Int -> Word16 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
8 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word16 (PParams ConwayEra) Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. Getting Word16 (PParams ConwayEra) Word16
forall era. EraPParams era => Lens' (PParams era) Word16
Lens' (PParams ConwayEra) Word16
ppNOptL)
      , proxy "gov/pparams/v0"
-> Int -> NonNegativeInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
9 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting
     NonNegativeInterval (PParams ConwayEra) NonNegativeInterval
-> NonNegativeInterval
forall s a. s -> Getting a s a -> a
^. Getting NonNegativeInterval (PParams ConwayEra) NonNegativeInterval
forall era.
EraPParams era =>
Lens' (PParams era) NonNegativeInterval
Lens' (PParams ConwayEra) NonNegativeInterval
ppA0L)
      , proxy "gov/pparams/v0"
-> Int -> UnitInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
10 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting UnitInterval (PParams ConwayEra) UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval (PParams ConwayEra) UnitInterval
forall era. EraPParams era => Lens' (PParams era) UnitInterval
Lens' (PParams ConwayEra) UnitInterval
ppRhoL)
      , proxy "gov/pparams/v0"
-> Int -> UnitInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
11 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting UnitInterval (PParams ConwayEra) UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval (PParams ConwayEra) UnitInterval
forall era. EraPParams era => Lens' (PParams era) UnitInterval
Lens' (PParams ConwayEra) UnitInterval
ppTauL)
      , proxy "gov/pparams/v0"
-> Int -> ProtVer -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
14 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting ProtVer (PParams ConwayEra) ProtVer -> ProtVer
forall s a. s -> Getting a s a -> a
^. Getting ProtVer (PParams ConwayEra) ProtVer
forall era. EraPParams era => Lens' (PParams era) ProtVer
Lens' (PParams ConwayEra) ProtVer
ppProtocolVersionL)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
16 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
EraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppMinPoolCostCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
17 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CoinPerByte -> Const CanonicalCoin CoinPerByte)
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
BabbageEraPParams era =>
Lens' (PParams era) CoinPerByte
Lens' (PParams ConwayEra) CoinPerByte
ppCoinsPerUTxOByteL ((CoinPerByte -> Const CanonicalCoin CoinPerByte)
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CoinPerByte -> Const CanonicalCoin CoinPerByte)
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CoinPerByte -> CanonicalCoin)
-> SimpleGetter CoinPerByte CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to (CompactForm Coin -> CanonicalCoin
CanonicalCoin (CompactForm Coin -> CanonicalCoin)
-> (CoinPerByte -> CompactForm Coin)
-> CoinPerByte
-> CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CoinPerByte -> CompactForm Coin
unCoinPerByte))
      , proxy "gov/pparams/v0"
-> Int -> CostModels -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
18 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CostModels (PParams ConwayEra) CostModels -> CostModels
forall s a. s -> Getting a s a -> a
^. Getting CostModels (PParams ConwayEra) CostModels
forall era. AlonzoEraPParams era => Lens' (PParams era) CostModels
Lens' (PParams ConwayEra) CostModels
ppCostModelsL)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalPrices -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
19 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalPrices (PParams ConwayEra) CanonicalPrices
-> CanonicalPrices
forall s a. s -> Getting a s a -> a
^. (Prices -> Const CanonicalPrices Prices)
-> PParams ConwayEra -> Const CanonicalPrices (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) Prices
Lens' (PParams ConwayEra) Prices
ppPricesL ((Prices -> Const CanonicalPrices Prices)
 -> PParams ConwayEra -> Const CanonicalPrices (PParams ConwayEra))
-> ((CanonicalPrices -> Const CanonicalPrices CanonicalPrices)
    -> Prices -> Const CanonicalPrices Prices)
-> Getting CanonicalPrices (PParams ConwayEra) CanonicalPrices
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Prices -> CanonicalPrices) -> SimpleGetter Prices CanonicalPrices
forall s a. (s -> a) -> SimpleGetter s a
to Prices -> CanonicalPrices
mkCanonicalPrices)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalExUnits -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
20 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalExUnits (PParams ConwayEra) CanonicalExUnits
-> CanonicalExUnits
forall s a. s -> Getting a s a -> a
^. (ExUnits -> Const CanonicalExUnits ExUnits)
-> PParams ConwayEra -> Const CanonicalExUnits (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams ConwayEra) ExUnits
ppMaxTxExUnitsL ((ExUnits -> Const CanonicalExUnits ExUnits)
 -> PParams ConwayEra -> Const CanonicalExUnits (PParams ConwayEra))
-> ((CanonicalExUnits -> Const CanonicalExUnits CanonicalExUnits)
    -> ExUnits -> Const CanonicalExUnits ExUnits)
-> Getting CanonicalExUnits (PParams ConwayEra) CanonicalExUnits
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ExUnits -> CanonicalExUnits)
-> SimpleGetter ExUnits CanonicalExUnits
forall s a. (s -> a) -> SimpleGetter s a
to ExUnits -> CanonicalExUnits
mkCanonicalExUnits)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalExUnits -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
21 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalExUnits (PParams ConwayEra) CanonicalExUnits
-> CanonicalExUnits
forall s a. s -> Getting a s a -> a
^. (ExUnits -> Const CanonicalExUnits ExUnits)
-> PParams ConwayEra -> Const CanonicalExUnits (PParams ConwayEra)
forall era. AlonzoEraPParams era => Lens' (PParams era) ExUnits
Lens' (PParams ConwayEra) ExUnits
ppMaxBlockExUnitsL ((ExUnits -> Const CanonicalExUnits ExUnits)
 -> PParams ConwayEra -> Const CanonicalExUnits (PParams ConwayEra))
-> ((CanonicalExUnits -> Const CanonicalExUnits CanonicalExUnits)
    -> ExUnits -> Const CanonicalExUnits ExUnits)
-> Getting CanonicalExUnits (PParams ConwayEra) CanonicalExUnits
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ExUnits -> CanonicalExUnits)
-> SimpleGetter ExUnits CanonicalExUnits
forall s a. (s -> a) -> SimpleGetter s a
to ExUnits -> CanonicalExUnits
mkCanonicalExUnits)
      , proxy "gov/pparams/v0"
-> Int -> Word32 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
22 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word32 (PParams ConwayEra) Word32 -> Word32
forall s a. s -> Getting a s a -> a
^. Getting Word32 (PParams ConwayEra) Word32
forall era. AlonzoEraPParams era => Lens' (PParams era) Word32
Lens' (PParams ConwayEra) Word32
ppMaxValSizeL)
      , proxy "gov/pparams/v0"
-> Int -> Word16 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
23 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word16 (PParams ConwayEra) Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. Getting Word16 (PParams ConwayEra) Word16
forall era. AlonzoEraPParams era => Lens' (PParams era) Word16
Lens' (PParams ConwayEra) Word16
ppCollateralPercentageL)
      , proxy "gov/pparams/v0"
-> Int -> Word16 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
24 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word16 (PParams ConwayEra) Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. Getting Word16 (PParams ConwayEra) Word16
forall era. AlonzoEraPParams era => Lens' (PParams era) Word16
Lens' (PParams ConwayEra) Word16
ppMaxCollateralInputsL)
      , proxy "gov/pparams/v0"
-> Int
-> PoolVotingThresholds
-> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
25 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting
     PoolVotingThresholds (PParams ConwayEra) PoolVotingThresholds
-> PoolVotingThresholds
forall s a. s -> Getting a s a -> a
^. Getting
  PoolVotingThresholds (PParams ConwayEra) PoolVotingThresholds
forall era.
ConwayEraPParams era =>
Lens' (PParams era) PoolVotingThresholds
Lens' (PParams ConwayEra) PoolVotingThresholds
ppPoolVotingThresholdsL)
      , proxy "gov/pparams/v0"
-> Int
-> DRepVotingThresholds
-> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
26 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting
     DRepVotingThresholds (PParams ConwayEra) DRepVotingThresholds
-> DRepVotingThresholds
forall s a. s -> Getting a s a -> a
^. Getting
  DRepVotingThresholds (PParams ConwayEra) DRepVotingThresholds
forall era.
ConwayEraPParams era =>
Lens' (PParams era) DRepVotingThresholds
Lens' (PParams ConwayEra) DRepVotingThresholds
ppDRepVotingThresholdsL)
      , proxy "gov/pparams/v0"
-> Int -> Word16 -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
27 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting Word16 (PParams ConwayEra) Word16 -> Word16
forall s a. s -> Getting a s a -> a
^. Getting Word16 (PParams ConwayEra) Word16
forall era. ConwayEraPParams era => Lens' (PParams era) Word16
Lens' (PParams ConwayEra) Word16
ppCommitteeMinSizeL)
      , proxy "gov/pparams/v0"
-> Int -> EpochInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
28 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting EpochInterval (PParams ConwayEra) EpochInterval
-> EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting EpochInterval (PParams ConwayEra) EpochInterval
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams ConwayEra) EpochInterval
ppCommitteeMaxTermLengthL)
      , proxy "gov/pparams/v0"
-> Int -> EpochInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
29 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting EpochInterval (PParams ConwayEra) EpochInterval
-> EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting EpochInterval (PParams ConwayEra) EpochInterval
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams ConwayEra) EpochInterval
ppGovActionLifetimeL)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
30 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppGovActionDepositCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> CanonicalCoin -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
31 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
-> CanonicalCoin
forall s a. s -> Getting a s a -> a
^. (CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra)
forall era.
ConwayEraPParams era =>
Lens' (PParams era) (CompactForm Coin)
Lens' (PParams ConwayEra) (CompactForm Coin)
ppDRepDepositCompactL ((CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
 -> PParams ConwayEra -> Const CanonicalCoin (PParams ConwayEra))
-> ((CanonicalCoin -> Const CanonicalCoin CanonicalCoin)
    -> CompactForm Coin -> Const CanonicalCoin (CompactForm Coin))
-> Getting CanonicalCoin (PParams ConwayEra) CanonicalCoin
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (CompactForm Coin -> CanonicalCoin)
-> SimpleGetter (CompactForm Coin) CanonicalCoin
forall s a. (s -> a) -> SimpleGetter s a
to CompactForm Coin -> CanonicalCoin
CanonicalCoin)
      , proxy "gov/pparams/v0"
-> Int -> EpochInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
32 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting EpochInterval (PParams ConwayEra) EpochInterval
-> EpochInterval
forall s a. s -> Getting a s a -> a
^. Getting EpochInterval (PParams ConwayEra) EpochInterval
forall era.
ConwayEraPParams era =>
Lens' (PParams era) EpochInterval
Lens' (PParams ConwayEra) EpochInterval
ppDRepActivityL)
      , proxy "gov/pparams/v0"
-> Int -> NonNegativeInterval -> SomeEncodablePair "gov/pparams/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/pparams/v0"
v (Int
33 :: Int) (PParams ConwayEra
pp PParams ConwayEra
-> Getting
     NonNegativeInterval (PParams ConwayEra) NonNegativeInterval
-> NonNegativeInterval
forall s a. s -> Getting a s a -> a
^. Getting NonNegativeInterval (PParams ConwayEra) NonNegativeInterval
forall era.
ConwayEraPParams era =>
Lens' (PParams era) NonNegativeInterval
Lens' (PParams ConwayEra) NonNegativeInterval
ppMinFeeRefScriptCostPerByteL)
      ]

instance FromCanonicalCBOR "gov/pparams/v0" (PParams ConwayEra) where
  fromCanonicalCBOR :: forall s.
CanonicalDecoder s (Versioned "gov/pparams/v0" (PParams ConwayEra))
fromCanonicalCBOR = do
    Int -> CanonicalDecoder s ()
forall s. Int -> CanonicalDecoder s ()
decodeMapLenCanonicalOf Int
31
    txFeePerByte <- forall (v :: Symbol) a s.
FromCanonicalCBOR v a =>
Word -> CanonicalDecoder s a
decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin Word
0
    txFeeFixedCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 1
    maxBBSize <- decodeNamespacedTag @"gov/pparams/v0" 2
    maxTxSize <- decodeNamespacedTag @"gov/pparams/v0" 3
    maxBHSize <- decodeNamespacedTag @"gov/pparams/v0" 4
    keyDepositCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 5
    poolDepositCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 6
    eMax <- decodeNamespacedTag @"gov/pparams/v0" 7
    nOpt <- decodeNamespacedTag @"gov/pparams/v0" 8
    a0 <- decodeNamespacedTag @"gov/pparams/v0" 9
    rho <- decodeNamespacedTag @"gov/pparams/v0" 10
    tau <- decodeNamespacedTag @"gov/pparams/v0" 11
    protVer <- decodeNamespacedTag @"gov/pparams/v0" 14
    minPoolCostCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 16
    coinsPerUTxOByte <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 17
    costModels <- decodeNamespacedTag @"gov/pparams/v0" 18
    prices <- decodeNamespacedTag @"gov/pparams/v0" 19
    maxTxExUnits <- decodeNamespacedTag @"gov/pparams/v0" 20
    maxBlockExUnits <- decodeNamespacedTag @"gov/pparams/v0" 21
    maxValSize <- decodeNamespacedTag @"gov/pparams/v0" 22
    collateralPercentage <- decodeNamespacedTag @"gov/pparams/v0" 23
    maxCollateralInputs <- decodeNamespacedTag @"gov/pparams/v0" 24
    poolVotingThresholds <- decodeNamespacedTag @"gov/pparams/v0" 25
    dRepVotingThresholds <- decodeNamespacedTag @"gov/pparams/v0" 26
    committeeMinSize <- decodeNamespacedTag @"gov/pparams/v0" 27
    committeeMaxTermLength <- decodeNamespacedTag @"gov/pparams/v0" 28
    govActionLifetime <- decodeNamespacedTag @"gov/pparams/v0" 29
    govActionDepositCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 30
    dRepDepositCompact <- decodeNamespacedTag @"gov/pparams/v0" @CanonicalCoin 31
    dRepActivity <- decodeNamespacedTag @"gov/pparams/v0" 32
    minFeeRefScriptCostPerByte <- decodeNamespacedTag @"gov/pparams/v0" 33

    return $
      Versioned $
        emptyPParams @ConwayEra
          & ppTxFeePerByteL .~ CoinPerByte (unCoin txFeePerByte)
          & ppTxFeeFixedCompactL .~ unCoin txFeeFixedCompact
          & ppMaxBBSizeL .~ maxBBSize
          & ppMaxTxSizeL .~ maxTxSize
          & ppMaxBHSizeL .~ maxBHSize
          & ppKeyDepositCompactL .~ unCoin keyDepositCompact
          & ppPoolDepositCompactL .~ unCoin poolDepositCompact
          & ppEMaxL .~ eMax
          & ppNOptL .~ nOpt
          & ppA0L .~ a0
          & ppRhoL .~ rho
          & ppTauL .~ tau
          & ppMinPoolCostCompactL .~ unCoin minPoolCostCompact
          & ppCoinsPerUTxOByteL .~ CoinPerByte (unCoin coinsPerUTxOByte)
          & ppCostModelsL .~ costModels
          & ppPricesL .~ fromCanonicalPrices prices
          & ppMaxTxExUnitsL .~ fromCanonicalExUnits maxTxExUnits
          & ppMaxBlockExUnitsL .~ fromCanonicalExUnits maxBlockExUnits
          & ppMaxValSizeL .~ maxValSize
          & ppCollateralPercentageL .~ collateralPercentage
          & ppMaxCollateralInputsL .~ maxCollateralInputs
          & ppPoolVotingThresholdsL .~ poolVotingThresholds
          & ppDRepVotingThresholdsL .~ dRepVotingThresholds
          & ppCommitteeMinSizeL .~ committeeMinSize
          & ppCommitteeMaxTermLengthL .~ committeeMaxTermLength
          & ppGovActionLifetimeL .~ govActionLifetime
          & ppGovActionDepositCompactL .~ unCoin govActionDepositCompact
          & ppDRepDepositCompactL .~ unCoin dRepDepositCompact
          & ppDRepActivityL .~ dRepActivity
          & ppMinFeeRefScriptCostPerByteL .~ minFeeRefScriptCostPerByte
          & ppProtocolVersionL .~ protVer
    where

instance ToCanonicalCBOR "gov/pparams/v0" DRepVotingThresholds where
  toCanonicalCBOR :: forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> DRepVotingThresholds -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v DRepVotingThresholds
dvt =
    Encoding -> CanonicalEncoding
assumeCanonicalEncoding (Word -> Encoding
E.encodeListLen Word
10)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtMotionNoConfidenceL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtCommitteeNormalL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtCommitteeNoConfidenceL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtUpdateToConstitutionL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtHardForkInitiationL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtPPNetworkGroupL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtPPEconomicGroupL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtPPTechnicalGroupL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtPPGovGroupL)
      CanonicalEncoding -> CanonicalEncoding -> CanonicalEncoding
forall a. Semigroup a => a -> a -> a
<> proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> UnitInterval -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v (DRepVotingThresholds
dvt DRepVotingThresholds
-> Getting UnitInterval DRepVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval DRepVotingThresholds UnitInterval
Lens' DRepVotingThresholds UnitInterval
dvtTreasuryWithdrawalL)

instance FromCanonicalCBOR "gov/pparams/v0" DRepVotingThresholds where
  fromCanonicalCBOR :: forall s.
CanonicalDecoder
  s (Versioned "gov/pparams/v0" DRepVotingThresholds)
fromCanonicalCBOR = do
    Decoder s () -> CanonicalDecoder s ()
forall s a. Decoder s a -> CanonicalDecoder s a
assumeCanonicalDecoder (Decoder s () -> CanonicalDecoder s ())
-> Decoder s () -> CanonicalDecoder s ()
forall a b. (a -> b) -> a -> b
$ Int -> Decoder s ()
forall s. Int -> Decoder s ()
D.decodeListLenCanonicalOf Int
10
    Versioned dvtMotionNoConfidence <- forall (v :: Symbol) a s.
FromCanonicalCBOR v a =>
CanonicalDecoder s (Versioned v a)
fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtCommitteeNormal <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtCommitteeNoConfidence <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtUpdateToConstitution <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtHardForkInitiation <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtPPNetworkGroup <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtPPEconomicGroup <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtPPTechnicalGroup <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtPPGovGroup <- fromCanonicalCBOR @"gov/pparams/v0"
    Versioned dvtTreasuryWithdrawal <- fromCanonicalCBOR @"gov/pparams/v0"
    return $ Versioned DRepVotingThresholds {..}

instance ToCanonicalCBOR "gov/pparams/v0" PoolVotingThresholds where
  toCanonicalCBOR :: forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0" -> PoolVotingThresholds -> CanonicalEncoding
toCanonicalCBOR proxy "gov/pparams/v0"
v PoolVotingThresholds
pvt =
    proxy "gov/pparams/v0"
-> (UnitInterval, UnitInterval, UnitInterval, UnitInterval,
    UnitInterval)
-> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy "gov/pparams/v0"
-> (UnitInterval, UnitInterval, UnitInterval, UnitInterval,
    UnitInterval)
-> CanonicalEncoding
toCanonicalCBOR
      proxy "gov/pparams/v0"
v
      ( PoolVotingThresholds
pvt PoolVotingThresholds
-> Getting UnitInterval PoolVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval PoolVotingThresholds UnitInterval
Lens' PoolVotingThresholds UnitInterval
pvtMotionNoConfidenceL
      , PoolVotingThresholds
pvt PoolVotingThresholds
-> Getting UnitInterval PoolVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval PoolVotingThresholds UnitInterval
Lens' PoolVotingThresholds UnitInterval
pvtCommitteeNormalL
      , PoolVotingThresholds
pvt PoolVotingThresholds
-> Getting UnitInterval PoolVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval PoolVotingThresholds UnitInterval
Lens' PoolVotingThresholds UnitInterval
pvtCommitteeNoConfidenceL
      , PoolVotingThresholds
pvt PoolVotingThresholds
-> Getting UnitInterval PoolVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval PoolVotingThresholds UnitInterval
Lens' PoolVotingThresholds UnitInterval
pvtHardForkInitiationL
      , PoolVotingThresholds
pvt PoolVotingThresholds
-> Getting UnitInterval PoolVotingThresholds UnitInterval
-> UnitInterval
forall s a. s -> Getting a s a -> a
^. Getting UnitInterval PoolVotingThresholds UnitInterval
Lens' PoolVotingThresholds UnitInterval
pvtPPSecurityGroupL
      )

instance FromCanonicalCBOR "gov/pparams/v0" PoolVotingThresholds where
  fromCanonicalCBOR :: forall s.
CanonicalDecoder
  s (Versioned "gov/pparams/v0" PoolVotingThresholds)
fromCanonicalCBOR = do
    Versioned
      ( pvtMotionNoConfidence
        , pvtCommitteeNormal
        , pvtCommitteeNoConfidence
        , pvtHardForkInitiation
        , pvtPPSecurityGroup
        ) <-
      forall (v :: Symbol) a s.
FromCanonicalCBOR v a =>
CanonicalDecoder s (Versioned v a)
fromCanonicalCBOR @"gov/pparams/v0"
    return $ Versioned PoolVotingThresholds {..}

instance KnownNamespace "gov/proposals/v0" where
  type NamespaceKey "gov/proposals/v0" = GovProposalIn
  type NamespaceEntry "gov/proposals/v0" = GovProposalOut CanonicalGovActionState

fromGovActionState ::
  GovActionState ConwayEra -> (GovProposalIn, GovProposalOut CanonicalGovActionState)
fromGovActionState :: GovActionState ConwayEra
-> (GovProposalIn, GovProposalOut CanonicalGovActionState)
fromGovActionState GovActionState {Map (KeyHash StakePool) Vote
Map (Credential DRepRole) Vote
Map (Credential HotCommitteeRole) Vote
ProposalProcedure ConwayEra
GovActionId
EpochNo
gasId :: GovActionId
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasProposalProcedure :: ProposalProcedure ConwayEra
gasProposedIn :: EpochNo
gasExpiresAfter :: EpochNo
gasExpiresAfter :: forall era. GovActionState era -> EpochNo
gasProposedIn :: forall era. GovActionState era -> EpochNo
gasProposalProcedure :: forall era. GovActionState era -> ProposalProcedure era
gasStakePoolVotes :: forall era. GovActionState era -> Map (KeyHash StakePool) Vote
gasDRepVotes :: forall era. GovActionState era -> Map (Credential DRepRole) Vote
gasCommitteeVotes :: forall era.
GovActionState era -> Map (Credential HotCommitteeRole) Vote
gasId :: forall era. GovActionState era -> GovActionId
..} =
  ( GovActionId -> GovProposalIn
mkGovProposalIn GovActionId
gasId
  , CanonicalGovActionState -> GovProposalOut CanonicalGovActionState
forall v. v -> GovProposalOut v
GovProposalOut (CanonicalGovActionState -> GovProposalOut CanonicalGovActionState)
-> CanonicalGovActionState
-> GovProposalOut CanonicalGovActionState
forall a b. (a -> b) -> a -> b
$
      CanonicalGovActionState
        { gasProposalProcedure :: OnChain (ProposalProcedure ConwayEra)
gasProposalProcedure = forall era a. (Era era, EncCBOR a) => a -> OnChain a
mkOnChain @ConwayEra ProposalProcedure ConwayEra
gasProposalProcedure
        , Map (KeyHash StakePool) Vote
Map (Credential DRepRole) Vote
Map (Credential HotCommitteeRole) Vote
EpochNo
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasProposedIn :: EpochNo
gasExpiresAfter :: EpochNo
gasExpiresAfter :: EpochNo
gasProposedIn :: EpochNo
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
..
        }
  )

toGovActionState ::
  (GovProposalIn, GovProposalOut CanonicalGovActionState) -> GovActionState ConwayEra
toGovActionState :: (GovProposalIn, GovProposalOut CanonicalGovActionState)
-> GovActionState ConwayEra
toGovActionState (GovProposalIn
govIn, GovProposalOut CanonicalGovActionState {Map (KeyHash StakePool) Vote
Map (Credential DRepRole) Vote
Map (Credential HotCommitteeRole) Vote
OnChain (ProposalProcedure ConwayEra)
EpochNo
gasProposalProcedure :: CanonicalGovActionState -> OnChain (ProposalProcedure ConwayEra)
gasExpiresAfter :: CanonicalGovActionState -> EpochNo
gasProposedIn :: CanonicalGovActionState -> EpochNo
gasStakePoolVotes :: CanonicalGovActionState -> Map (KeyHash StakePool) Vote
gasDRepVotes :: CanonicalGovActionState -> Map (Credential DRepRole) Vote
gasCommitteeVotes :: CanonicalGovActionState -> Map (Credential HotCommitteeRole) Vote
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasProposalProcedure :: OnChain (ProposalProcedure ConwayEra)
gasProposedIn :: EpochNo
gasExpiresAfter :: EpochNo
..}) =
  GovActionState
    { gasProposalProcedure :: ProposalProcedure ConwayEra
gasProposalProcedure = OnChain (ProposalProcedure ConwayEra)
-> ProposalProcedure ConwayEra
forall a. OnChain a -> a
getValue OnChain (ProposalProcedure ConwayEra)
gasProposalProcedure
    , gasId :: GovActionId
gasId = GovProposalIn -> GovActionId
fromGovProposalIn GovProposalIn
govIn
    , Map (KeyHash StakePool) Vote
Map (Credential DRepRole) Vote
Map (Credential HotCommitteeRole) Vote
EpochNo
gasExpiresAfter :: EpochNo
gasProposedIn :: EpochNo
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasProposedIn :: EpochNo
gasExpiresAfter :: EpochNo
..
    }

mkGovProposalIn :: GovActionId -> GovProposalIn
mkGovProposalIn :: GovActionId -> GovProposalIn
mkGovProposalIn GovActionId {gaidGovActionIx :: GovActionId -> GovActionIx
gaidGovActionIx = GovActionIx Word16
idx, TxId
gaidTxId :: TxId
gaidTxId :: GovActionId -> TxId
gaidTxId} =
  CanonicalGovActionId -> GovProposalIn
GovProposalIn (CanonicalGovActionId -> GovProposalIn)
-> CanonicalGovActionId -> GovProposalIn
forall a b. (a -> b) -> a -> b
$
    CanonicalGovActionId
      { gaidTxId :: TxId
gaidTxId = TxId
gaidTxId
      , gaidGovActionIx :: CanonicalGovActionIx
gaidGovActionIx = Word16 -> CanonicalGovActionIx
CanonicalGovActionIx Word16
idx
      }

fromGovProposalIn :: GovProposalIn -> GovActionId
fromGovProposalIn :: GovProposalIn -> GovActionId
fromGovProposalIn (GovProposalIn CanonicalGovActionId {gaidGovActionIx :: CanonicalGovActionId -> CanonicalGovActionIx
gaidGovActionIx = CanonicalGovActionIx Word16
aix, TxId
gaidTxId :: CanonicalGovActionId -> TxId
gaidTxId :: TxId
gaidTxId}) =
  GovActionId
    { gaidTxId :: TxId
gaidTxId = TxId
gaidTxId
    , gaidGovActionIx :: GovActionIx
gaidGovActionIx = Word16 -> GovActionIx
GovActionIx Word16
aix
    }

-- | This is the same structure as GovActionState but without the id.
--
-- This unfortunate code duplication is needed because otherwise we would have to
-- create dummy keys.
data CanonicalGovActionState = CanonicalGovActionState
  { CanonicalGovActionState -> Map (Credential HotCommitteeRole) Vote
gasCommitteeVotes :: !(Map (Credential HotCommitteeRole) Vote)
  , CanonicalGovActionState -> Map (Credential DRepRole) Vote
gasDRepVotes :: !(Map (Credential DRepRole) Vote)
  , CanonicalGovActionState -> Map (KeyHash StakePool) Vote
gasStakePoolVotes :: !(Map (KeyHash StakePool) Vote)
  , CanonicalGovActionState -> OnChain (ProposalProcedure ConwayEra)
gasProposalProcedure :: !(OnChain (ProposalProcedure ConwayEra))
  , CanonicalGovActionState -> EpochNo
gasProposedIn :: !EpochNo
  , CanonicalGovActionState -> EpochNo
gasExpiresAfter :: !EpochNo
  }
  deriving (CanonicalGovActionState -> CanonicalGovActionState -> Bool
(CanonicalGovActionState -> CanonicalGovActionState -> Bool)
-> (CanonicalGovActionState -> CanonicalGovActionState -> Bool)
-> Eq CanonicalGovActionState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CanonicalGovActionState -> CanonicalGovActionState -> Bool
== :: CanonicalGovActionState -> CanonicalGovActionState -> Bool
$c/= :: CanonicalGovActionState -> CanonicalGovActionState -> Bool
/= :: CanonicalGovActionState -> CanonicalGovActionState -> Bool
Eq, Int -> CanonicalGovActionState -> ShowS
[CanonicalGovActionState] -> ShowS
CanonicalGovActionState -> String
(Int -> CanonicalGovActionState -> ShowS)
-> (CanonicalGovActionState -> String)
-> ([CanonicalGovActionState] -> ShowS)
-> Show CanonicalGovActionState
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CanonicalGovActionState -> ShowS
showsPrec :: Int -> CanonicalGovActionState -> ShowS
$cshow :: CanonicalGovActionState -> String
show :: CanonicalGovActionState -> String
$cshowList :: [CanonicalGovActionState] -> ShowS
showList :: [CanonicalGovActionState] -> ShowS
Show)

instance (Era era, EraPParams era) => DecodeOnChain "gov/proposals/v0" (ProposalProcedure era) where
  decodeOnChain :: forall s. ByteString -> CanonicalDecoder s (ProposalProcedure era)
decodeOnChain = (DecoderError -> CanonicalDecoder s (ProposalProcedure era))
-> (ProposalProcedure era
    -> CanonicalDecoder s (ProposalProcedure era))
-> Either DecoderError (ProposalProcedure era)
-> CanonicalDecoder s (ProposalProcedure era)
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (String -> CanonicalDecoder s (ProposalProcedure era)
forall a. String -> CanonicalDecoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> CanonicalDecoder s (ProposalProcedure era))
-> (DecoderError -> String)
-> DecoderError
-> CanonicalDecoder s (ProposalProcedure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DecoderError -> String
forall a. Show a => a -> String
show) ProposalProcedure era -> CanonicalDecoder s (ProposalProcedure era)
forall a. a -> CanonicalDecoder s a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Either DecoderError (ProposalProcedure era)
 -> CanonicalDecoder s (ProposalProcedure era))
-> (ByteString -> Either DecoderError (ProposalProcedure era))
-> ByteString
-> CanonicalDecoder s (ProposalProcedure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version
-> ByteString -> Either DecoderError (ProposalProcedure era)
forall a.
DecCBOR a =>
Version -> ByteString -> Either DecoderError a
decodeFull' (forall era. Era era => Version
eraProtVerLow @era)

instance ToCanonicalCBOR "gov/proposals/v0" (CanonicalGovActionState) where
  toCanonicalCBOR :: forall (proxy :: Symbol -> *).
proxy "gov/proposals/v0"
-> CanonicalGovActionState -> CanonicalEncoding
toCanonicalCBOR proxy "gov/proposals/v0"
v CanonicalGovActionState {Map (KeyHash StakePool) Vote
Map (Credential DRepRole) Vote
Map (Credential HotCommitteeRole) Vote
OnChain (ProposalProcedure ConwayEra)
EpochNo
gasProposalProcedure :: CanonicalGovActionState -> OnChain (ProposalProcedure ConwayEra)
gasExpiresAfter :: CanonicalGovActionState -> EpochNo
gasProposedIn :: CanonicalGovActionState -> EpochNo
gasStakePoolVotes :: CanonicalGovActionState -> Map (KeyHash StakePool) Vote
gasDRepVotes :: CanonicalGovActionState -> Map (Credential DRepRole) Vote
gasCommitteeVotes :: CanonicalGovActionState -> Map (Credential HotCommitteeRole) Vote
gasCommitteeVotes :: Map (Credential HotCommitteeRole) Vote
gasDRepVotes :: Map (Credential DRepRole) Vote
gasStakePoolVotes :: Map (KeyHash StakePool) Vote
gasProposalProcedure :: OnChain (ProposalProcedure ConwayEra)
gasProposedIn :: EpochNo
gasExpiresAfter :: EpochNo
..} =
    [SomeEncodablePair "gov/proposals/v0"] -> CanonicalEncoding
forall (v :: Symbol) (t :: * -> *).
Traversable t =>
t (SomeEncodablePair v) -> CanonicalEncoding
encodeAsMap
      [ proxy "gov/proposals/v0"
-> Text
-> Map (Credential DRepRole) Vote
-> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"drep_votes" :: Text) Map (Credential DRepRole) Vote
gasDRepVotes
      , proxy "gov/proposals/v0"
-> Text -> EpochNo -> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"proposed_in" :: Text) EpochNo
gasProposedIn
      , proxy "gov/proposals/v0"
-> Text -> EpochNo -> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"expires_after" :: Text) EpochNo
gasExpiresAfter
      , proxy "gov/proposals/v0"
-> Text
-> Map (Credential HotCommitteeRole) Vote
-> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"committee_votes" :: Text) Map (Credential HotCommitteeRole) Vote
gasCommitteeVotes
      , proxy "gov/proposals/v0"
-> Text
-> Map (KeyHash StakePool) Vote
-> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"stake_pool_votes" :: Text) Map (KeyHash StakePool) Vote
gasStakePoolVotes
      , proxy "gov/proposals/v0"
-> Text
-> OnChain (ProposalProcedure ConwayEra)
-> SomeEncodablePair "gov/proposals/v0"
forall (v :: Symbol) k val (proxy :: Symbol -> *).
(ToCanonicalCBOR v k, ToCanonicalCBOR v val) =>
proxy v -> k -> val -> SomeEncodablePair v
mkEncodablePair proxy "gov/proposals/v0"
v (Text
"proposal_procedure" :: Text) OnChain (ProposalProcedure ConwayEra)
gasProposalProcedure
      ]

instance FromCanonicalCBOR "gov/proposals/v0" (CanonicalGovActionState) where
  fromCanonicalCBOR :: forall s.
CanonicalDecoder
  s (Versioned "gov/proposals/v0" CanonicalGovActionState)
fromCanonicalCBOR = do
    Int -> CanonicalDecoder s ()
forall s. Int -> CanonicalDecoder s ()
decodeMapLenCanonicalOf Int
6
    Versioned gasDRepVotes <- forall (v :: Symbol) s a.
FromCanonicalCBOR v a =>
Text -> CanonicalDecoder s (Versioned v a)
decodeNamespacedField @"gov/proposals/v0" Text
"drep_votes"
    Versioned gasProposedIn <- decodeNamespacedField @"gov/proposals/v0" "proposed_in"
    Versioned gasExpiresAfter <- decodeNamespacedField @"gov/proposals/v0" "expires_after"
    Versioned gasCommitteeVotes <- decodeNamespacedField @"gov/proposals/v0" "committee_votes"
    Versioned gasStakePoolVotes <- decodeNamespacedField @"gov/proposals/v0" "stake_pool_votes"
    Versioned gasProposalProcedure <- decodeNamespacedField @"gov/proposals/v0" "proposal_procedure"
    pure $ Versioned CanonicalGovActionState {..}

instance ToCanonicalCBOR v Vote where
  toCanonicalCBOR :: forall (proxy :: Symbol -> *). proxy v -> Vote -> CanonicalEncoding
toCanonicalCBOR proxy v
v Vote
VoteNo = proxy v -> Word8 -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy v -> Word8 -> CanonicalEncoding
toCanonicalCBOR proxy v
v (Word8
0 :: Word8)
  toCanonicalCBOR proxy v
v Vote
VoteYes = proxy v -> Word8 -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy v -> Word8 -> CanonicalEncoding
toCanonicalCBOR proxy v
v (Word8
1 :: Word8)
  toCanonicalCBOR proxy v
v Vote
Abstain = proxy v -> Word8 -> CanonicalEncoding
forall (v :: Symbol) a (proxy :: Symbol -> *).
ToCanonicalCBOR v a =>
proxy v -> a -> CanonicalEncoding
forall (proxy :: Symbol -> *).
proxy v -> Word8 -> CanonicalEncoding
toCanonicalCBOR proxy v
v (Word8
2 :: Word8)

instance FromCanonicalCBOR v Vote where
  fromCanonicalCBOR :: forall s. CanonicalDecoder s (Versioned v Vote)
fromCanonicalCBOR = do
    Versioned (w :: Word8) <- CanonicalDecoder s (Versioned (ZonkAny 0) Word8)
forall s. CanonicalDecoder s (Versioned (ZonkAny 0) Word8)
forall (v :: Symbol) a s.
FromCanonicalCBOR v a =>
CanonicalDecoder s (Versioned v a)
fromCanonicalCBOR
    case w of
      Word8
0 -> Versioned v Vote -> CanonicalDecoder s (Versioned v Vote)
forall a. a -> CanonicalDecoder s a
forall (m :: * -> *) a. Monad m => a -> m a
return (Vote -> Versioned v Vote
forall (ns :: Symbol) a. a -> Versioned ns a
Versioned Vote
VoteNo)
      Word8
1 -> Versioned v Vote -> CanonicalDecoder s (Versioned v Vote)
forall a. a -> CanonicalDecoder s a
forall (m :: * -> *) a. Monad m => a -> m a
return (Vote -> Versioned v Vote
forall (ns :: Symbol) a. a -> Versioned ns a
Versioned Vote
VoteYes)
      Word8
2 -> Versioned v Vote -> CanonicalDecoder s (Versioned v Vote)
forall a. a -> CanonicalDecoder s a
forall (m :: * -> *) a. Monad m => a -> m a
return (Vote -> Versioned v Vote
forall (ns :: Symbol) a. a -> Versioned ns a
Versioned Vote
Abstain)
      Word8
_ -> String -> CanonicalDecoder s (Versioned v Vote)
forall a. String -> CanonicalDecoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Invalid CanonicalVote"