{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE EmptyDataDeriving #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Dijkstra.Rules.Gov (
  DijkstraGOV,
  DijkstraGovPredFailure (..),
  conwayToDijkstraGovPredFailure,
) where

import Cardano.Ledger.Address (RewardAccount)
import Cardano.Ledger.BaseTypes (
  EpochNo (..),
  Mismatch (..),
  Network,
  ProtVer,
  Relation (..),
  ShelleyBase,
  StrictMaybe,
 )
import Cardano.Ledger.Binary (
  DecCBOR (..),
  EncCBOR (..),
  FromCBOR (..),
  ToCBOR (..),
 )
import Cardano.Ledger.Binary.Coders (
  Decode (..),
  Encode (..),
  decode,
  encode,
  (!>),
  (<!),
 )
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Conway.Governance (
  ConwayEraGov,
  GovAction (..),
  GovActionId (..),
  GovActionPurpose (..),
  GovPurposeId (..),
  ProposalProcedure (..),
  Proposals,
  Voter (..),
 )
import Cardano.Ledger.Conway.Rules (
  ConwayGovEvent,
  ConwayGovPredFailure,
  GovEnv,
  GovSignal,
  conwayGovTransition,
 )
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Conway.State
import Cardano.Ledger.Credential (Credential)
import Cardano.Ledger.Dijkstra.Core
import Cardano.Ledger.Dijkstra.Era (DijkstraEra, DijkstraGOV)
import Control.DeepSeq (NFData)
import Control.State.Transition.Extended (
  STS (..),
 )
import Data.List.NonEmpty (NonEmpty (..))
import qualified Data.Map.Strict as Map
import qualified Data.Set as Set
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks (..))

data DijkstraGovPredFailure era
  = GovActionsDoNotExist (NonEmpty GovActionId)
  | MalformedProposal (GovAction era)
  | ProposalProcedureNetworkIdMismatch RewardAccount Network
  | TreasuryWithdrawalsNetworkIdMismatch (Set.Set RewardAccount) Network
  | ProposalDepositIncorrect (Mismatch RelEQ Coin)
  | -- | Some governance actions are not allowed to be voted on by certain types of
    -- Voters. This failure lists all governance action ids with their respective voters
    -- that are not allowed to vote on those governance actions.
    DisallowedVoters (NonEmpty (Voter, GovActionId))
  | ConflictingCommitteeUpdate
      -- | Credentials that are mentioned as members to be both removed and added
      (Set.Set (Credential ColdCommitteeRole))
  | ExpirationEpochTooSmall
      -- | Members for which the expiration epoch has already been reached
      (Map.Map (Credential ColdCommitteeRole) EpochNo)
  | InvalidPrevGovActionId (ProposalProcedure era)
  | VotingOnExpiredGovAction (NonEmpty (Voter, GovActionId))
  | ProposalCantFollow
      -- | The PrevGovActionId of the HardForkInitiation that fails
      (StrictMaybe (GovPurposeId 'HardForkPurpose))
      -- | Its protocol version and the protocal version of the previous gov-action pointed to by the proposal
      (Mismatch RelGT ProtVer)
  | InvalidPolicyHash
      -- | The policy script hash in the proposal
      (StrictMaybe ScriptHash)
      -- | The policy script hash of the current constitution
      (StrictMaybe ScriptHash)
  | DisallowedProposalDuringBootstrap (ProposalProcedure era)
  | DisallowedVotesDuringBootstrap
      (NonEmpty (Voter, GovActionId))
  | -- | Predicate failure for votes by entities that are not present in the ledger state
    VotersDoNotExist (NonEmpty Voter)
  | -- | Treasury withdrawals that sum up to zero are not allowed
    ZeroTreasuryWithdrawals (GovAction era)
  | -- | Proposals that have an invalid reward account for returns of the deposit
    ProposalReturnAccountDoesNotExist RewardAccount
  | -- | Treasury withdrawal proposals to an invalid reward account
    TreasuryWithdrawalReturnAccountsDoNotExist (NonEmpty RewardAccount)
  | -- | Disallow votes by unelected committee members
    UnelectedCommitteeVoters (NonEmpty (Credential HotCommitteeRole))
  deriving (DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
(DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool)
-> (DijkstraGovPredFailure era
    -> DijkstraGovPredFailure era -> Bool)
-> Eq (DijkstraGovPredFailure era)
forall era.
EraPParams era =>
DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
EraPParams era =>
DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
== :: DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
$c/= :: forall era.
EraPParams era =>
DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
/= :: DijkstraGovPredFailure era -> DijkstraGovPredFailure era -> Bool
Eq, Int -> DijkstraGovPredFailure era -> ShowS
[DijkstraGovPredFailure era] -> ShowS
DijkstraGovPredFailure era -> String
(Int -> DijkstraGovPredFailure era -> ShowS)
-> (DijkstraGovPredFailure era -> String)
-> ([DijkstraGovPredFailure era] -> ShowS)
-> Show (DijkstraGovPredFailure era)
forall era.
EraPParams era =>
Int -> DijkstraGovPredFailure era -> ShowS
forall era. EraPParams era => [DijkstraGovPredFailure era] -> ShowS
forall era. EraPParams era => DijkstraGovPredFailure era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall era.
EraPParams era =>
Int -> DijkstraGovPredFailure era -> ShowS
showsPrec :: Int -> DijkstraGovPredFailure era -> ShowS
$cshow :: forall era. EraPParams era => DijkstraGovPredFailure era -> String
show :: DijkstraGovPredFailure era -> String
$cshowList :: forall era. EraPParams era => [DijkstraGovPredFailure era] -> ShowS
showList :: [DijkstraGovPredFailure era] -> ShowS
Show, (forall x.
 DijkstraGovPredFailure era -> Rep (DijkstraGovPredFailure era) x)
-> (forall x.
    Rep (DijkstraGovPredFailure era) x -> DijkstraGovPredFailure era)
-> Generic (DijkstraGovPredFailure era)
forall x.
Rep (DijkstraGovPredFailure era) x -> DijkstraGovPredFailure era
forall x.
DijkstraGovPredFailure era -> Rep (DijkstraGovPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraGovPredFailure era) x -> DijkstraGovPredFailure era
forall era x.
DijkstraGovPredFailure era -> Rep (DijkstraGovPredFailure era) x
$cfrom :: forall era x.
DijkstraGovPredFailure era -> Rep (DijkstraGovPredFailure era) x
from :: forall x.
DijkstraGovPredFailure era -> Rep (DijkstraGovPredFailure era) x
$cto :: forall era x.
Rep (DijkstraGovPredFailure era) x -> DijkstraGovPredFailure era
to :: forall x.
Rep (DijkstraGovPredFailure era) x -> DijkstraGovPredFailure era
Generic)

type instance EraRuleFailure "GOV" DijkstraEra = DijkstraGovPredFailure DijkstraEra

type instance EraRuleEvent "GOV" DijkstraEra = ConwayGovEvent DijkstraEra

instance InjectRuleFailure "GOV" DijkstraGovPredFailure DijkstraEra

instance InjectRuleFailure "GOV" ConwayGovPredFailure DijkstraEra where
  injectFailure :: ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "GOV" DijkstraEra
injectFailure = ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "GOV" DijkstraEra
ConwayGovPredFailure DijkstraEra
-> DijkstraGovPredFailure DijkstraEra
forall era. ConwayGovPredFailure era -> DijkstraGovPredFailure era
conwayToDijkstraGovPredFailure

instance EraPParams era => NFData (DijkstraGovPredFailure era)

instance EraPParams era => NoThunks (DijkstraGovPredFailure era)

instance EraPParams era => DecCBOR (DijkstraGovPredFailure era) where
  decCBOR :: forall s. Decoder s (DijkstraGovPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraGovPredFailure era)
-> Decoder s (DijkstraGovPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraGovPredFailure era)
 -> Decoder s (DijkstraGovPredFailure era))
-> Decode (Closed Dense) (DijkstraGovPredFailure era)
-> Decoder s (DijkstraGovPredFailure era)
forall a b. (a -> b) -> a -> b
$ Text
-> (Word -> Decode Open (DijkstraGovPredFailure era))
-> Decode (Closed Dense) (DijkstraGovPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraGovPredFailure" ((Word -> Decode Open (DijkstraGovPredFailure era))
 -> Decode (Closed Dense) (DijkstraGovPredFailure era))
-> (Word -> Decode Open (DijkstraGovPredFailure era))
-> Decode (Closed Dense) (DijkstraGovPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
    Word
0 -> (NonEmpty GovActionId -> DijkstraGovPredFailure era)
-> Decode Open (NonEmpty GovActionId -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty GovActionId -> DijkstraGovPredFailure era
forall era. NonEmpty GovActionId -> DijkstraGovPredFailure era
GovActionsDoNotExist Decode Open (NonEmpty GovActionId -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 0)) (NonEmpty GovActionId)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 0)) (NonEmpty GovActionId)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
1 -> (GovAction era -> DijkstraGovPredFailure era)
-> Decode Open (GovAction era -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
MalformedProposal Decode Open (GovAction era -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 1)) (GovAction era)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 1)) (GovAction era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
2 -> (RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Decode
     Open (RewardAccount -> Network -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD RewardAccount -> Network -> DijkstraGovPredFailure era
forall era. RewardAccount -> Network -> DijkstraGovPredFailure era
ProposalProcedureNetworkIdMismatch Decode
  Open (RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 3)) RewardAccount
-> Decode Open (Network -> DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 3)) RewardAccount
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Network -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 2)) Network
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 2)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
3 -> (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Decode
     Open (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD Set RewardAccount -> Network -> DijkstraGovPredFailure era
forall era.
Set RewardAccount -> Network -> DijkstraGovPredFailure era
TreasuryWithdrawalsNetworkIdMismatch Decode
  Open (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 5)) (Set RewardAccount)
-> Decode Open (Network -> DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 5)) (Set RewardAccount)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Network -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 4)) Network
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 4)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
4 -> (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
-> Decode Open (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ Coin -> DijkstraGovPredFailure era
forall era. Mismatch RelEQ Coin -> DijkstraGovPredFailure era
ProposalDepositIncorrect Decode Open (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 6)) (Mismatch RelEQ Coin)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 6)) (Mismatch RelEQ Coin)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
5 -> (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVoters Decode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 7)) (NonEmpty (Voter, GovActionId))
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 7)) (NonEmpty (Voter, GovActionId))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
6 -> (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
-> Decode
     Open
     (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
forall era.
Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
ConflictingCommitteeUpdate Decode
  Open
  (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 8)) (Set (Credential ColdCommitteeRole))
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 8)) (Set (Credential ColdCommitteeRole))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
7 -> (Map (Credential ColdCommitteeRole) EpochNo
 -> DijkstraGovPredFailure era)
-> Decode
     Open
     (Map (Credential ColdCommitteeRole) EpochNo
      -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
forall era.
Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
ExpirationEpochTooSmall Decode
  Open
  (Map (Credential ColdCommitteeRole) EpochNo
   -> DijkstraGovPredFailure era)
-> Decode
     (Closed (ZonkAny 9)) (Map (Credential ColdCommitteeRole) EpochNo)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 9)) (Map (Credential ColdCommitteeRole) EpochNo)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
8 -> (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Decode
     Open (ProposalProcedure era -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
InvalidPrevGovActionId Decode Open (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 10)) (ProposalProcedure era)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 10)) (ProposalProcedure era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
9 -> (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
VotingOnExpiredGovAction Decode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 11)) (NonEmpty (Voter, GovActionId))
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 11)) (NonEmpty (Voter, GovActionId))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
10 -> (StrictMaybe (GovPurposeId 'HardForkPurpose)
 -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Decode
     Open
     (StrictMaybe (GovPurposeId 'HardForkPurpose)
      -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
ProposalCantFollow Decode
  Open
  (StrictMaybe (GovPurposeId 'HardForkPurpose)
   -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Decode
     (Closed (ZonkAny 13)) (StrictMaybe (GovPurposeId 'HardForkPurpose))
-> Decode
     Open (Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 13)) (StrictMaybe (GovPurposeId 'HardForkPurpose))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 12)) (Mismatch RelGT ProtVer)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 12)) (Mismatch RelGT ProtVer)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
11 -> (StrictMaybe ScriptHash
 -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Decode
     Open
     (StrictMaybe ScriptHash
      -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
forall era.
StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
InvalidPolicyHash Decode
  Open
  (StrictMaybe ScriptHash
   -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 15)) (StrictMaybe ScriptHash)
-> Decode
     Open (StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 15)) (StrictMaybe ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 14)) (StrictMaybe ScriptHash)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 14)) (StrictMaybe ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
12 -> (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Decode
     Open (ProposalProcedure era -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
DisallowedProposalDuringBootstrap Decode Open (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 16)) (ProposalProcedure era)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 16)) (ProposalProcedure era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
13 -> (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVotesDuringBootstrap Decode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 17)) (NonEmpty (Voter, GovActionId))
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 17)) (NonEmpty (Voter, GovActionId))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
14 -> (NonEmpty Voter -> DijkstraGovPredFailure era)
-> Decode Open (NonEmpty Voter -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty Voter -> DijkstraGovPredFailure era
forall era. NonEmpty Voter -> DijkstraGovPredFailure era
VotersDoNotExist Decode Open (NonEmpty Voter -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 18)) (NonEmpty Voter)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 18)) (NonEmpty Voter)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
15 -> (GovAction era -> DijkstraGovPredFailure era)
-> Decode Open (GovAction era -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
ZeroTreasuryWithdrawals Decode Open (GovAction era -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 19)) (GovAction era)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 19)) (GovAction era)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
16 -> (RewardAccount -> DijkstraGovPredFailure era)
-> Decode Open (RewardAccount -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD RewardAccount -> DijkstraGovPredFailure era
forall era. RewardAccount -> DijkstraGovPredFailure era
ProposalReturnAccountDoesNotExist Decode Open (RewardAccount -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 20)) RewardAccount
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 20)) RewardAccount
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
17 -> (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
-> Decode
     Open (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty RewardAccount -> DijkstraGovPredFailure era
forall era. NonEmpty RewardAccount -> DijkstraGovPredFailure era
TreasuryWithdrawalReturnAccountsDoNotExist Decode Open (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
-> Decode (Closed (ZonkAny 21)) (NonEmpty RewardAccount)
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 21)) (NonEmpty RewardAccount)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
18 -> (NonEmpty (Credential HotCommitteeRole)
 -> DijkstraGovPredFailure era)
-> Decode
     Open
     (NonEmpty (Credential HotCommitteeRole)
      -> DijkstraGovPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
forall era.
NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
UnelectedCommitteeVoters Decode
  Open
  (NonEmpty (Credential HotCommitteeRole)
   -> DijkstraGovPredFailure era)
-> Decode
     (Closed (ZonkAny 22)) (NonEmpty (Credential HotCommitteeRole))
-> Decode Open (DijkstraGovPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 22)) (NonEmpty (Credential HotCommitteeRole))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
k -> Word -> Decode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
k

instance EraPParams era => EncCBOR (DijkstraGovPredFailure era) where
  encCBOR :: DijkstraGovPredFailure era -> Encoding
encCBOR =
    Encode Open (DijkstraGovPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraGovPredFailure era) -> Encoding)
-> (DijkstraGovPredFailure era
    -> Encode Open (DijkstraGovPredFailure era))
-> DijkstraGovPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
      GovActionsDoNotExist NonEmpty GovActionId
gid ->
        (NonEmpty GovActionId -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (NonEmpty GovActionId -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty GovActionId -> DijkstraGovPredFailure era
forall era. NonEmpty GovActionId -> DijkstraGovPredFailure era
GovActionsDoNotExist Word
0 Encode Open (NonEmpty GovActionId -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty GovActionId)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty GovActionId
-> Encode (Closed Dense) (NonEmpty GovActionId)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty GovActionId
gid
      MalformedProposal GovAction era
ga ->
        (GovAction era -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (GovAction era -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
MalformedProposal Word
1 Encode Open (GovAction era -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (GovAction era)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> GovAction era -> Encode (Closed Dense) (GovAction era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To GovAction era
ga
      ProposalProcedureNetworkIdMismatch RewardAccount
acnt Network
nid ->
        (RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (RewardAccount -> Network -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum RewardAccount -> Network -> DijkstraGovPredFailure era
forall era. RewardAccount -> Network -> DijkstraGovPredFailure era
ProposalProcedureNetworkIdMismatch Word
2 Encode
  Open (RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) RewardAccount
-> Encode Open (Network -> DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> RewardAccount -> Encode (Closed Dense) RewardAccount
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To RewardAccount
acnt Encode Open (Network -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) Network
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
nid
      TreasuryWithdrawalsNetworkIdMismatch Set RewardAccount
acnts Network
nid ->
        (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set RewardAccount -> Network -> DijkstraGovPredFailure era
forall era.
Set RewardAccount -> Network -> DijkstraGovPredFailure era
TreasuryWithdrawalsNetworkIdMismatch Word
3 Encode
  Open (Set RewardAccount -> Network -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (Set RewardAccount)
-> Encode Open (Network -> DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set RewardAccount -> Encode (Closed Dense) (Set RewardAccount)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set RewardAccount
acnts Encode Open (Network -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) Network
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
nid
      ProposalDepositIncorrect Mismatch RelEQ Coin
mm ->
        (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ Coin -> DijkstraGovPredFailure era
forall era. Mismatch RelEQ Coin -> DijkstraGovPredFailure era
ProposalDepositIncorrect Word
4 Encode Open (Mismatch RelEQ Coin -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ Coin)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ Coin -> Encode (Closed Dense) (Mismatch RelEQ Coin)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ Coin
mm
      DisallowedVoters NonEmpty (Voter, GovActionId)
votes ->
        (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVoters Word
5 Encode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Voter, GovActionId)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Voter, GovActionId)
votes
      ConflictingCommitteeUpdate Set (Credential ColdCommitteeRole)
members ->
        (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open
     (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
forall era.
Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
ConflictingCommitteeUpdate Word
6 Encode
  Open
  (Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (Set (Credential ColdCommitteeRole))
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set (Credential ColdCommitteeRole)
-> Encode (Closed Dense) (Set (Credential ColdCommitteeRole))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set (Credential ColdCommitteeRole)
members
      ExpirationEpochTooSmall Map (Credential ColdCommitteeRole) EpochNo
members ->
        (Map (Credential ColdCommitteeRole) EpochNo
 -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open
     (Map (Credential ColdCommitteeRole) EpochNo
      -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
forall era.
Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
ExpirationEpochTooSmall Word
7 Encode
  Open
  (Map (Credential ColdCommitteeRole) EpochNo
   -> DijkstraGovPredFailure era)
-> Encode
     (Closed Dense) (Map (Credential ColdCommitteeRole) EpochNo)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Map (Credential ColdCommitteeRole) EpochNo
-> Encode
     (Closed Dense) (Map (Credential ColdCommitteeRole) EpochNo)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Map (Credential ColdCommitteeRole) EpochNo
members
      InvalidPrevGovActionId ProposalProcedure era
proposal ->
        (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (ProposalProcedure era -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
InvalidPrevGovActionId Word
8 Encode Open (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (ProposalProcedure era)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> ProposalProcedure era
-> Encode (Closed Dense) (ProposalProcedure era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To ProposalProcedure era
proposal
      VotingOnExpiredGovAction NonEmpty (Voter, GovActionId)
ga ->
        (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
VotingOnExpiredGovAction Word
9 Encode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Voter, GovActionId)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Voter, GovActionId)
ga
      ProposalCantFollow StrictMaybe (GovPurposeId 'HardForkPurpose)
prevgaid Mismatch RelGT ProtVer
mm ->
        (StrictMaybe (GovPurposeId 'HardForkPurpose)
 -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open
     (StrictMaybe (GovPurposeId 'HardForkPurpose)
      -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
ProposalCantFollow Word
10 Encode
  Open
  (StrictMaybe (GovPurposeId 'HardForkPurpose)
   -> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Encode
     (Closed Dense) (StrictMaybe (GovPurposeId 'HardForkPurpose))
-> Encode
     Open (Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Encode
     (Closed Dense) (StrictMaybe (GovPurposeId 'HardForkPurpose))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictMaybe (GovPurposeId 'HardForkPurpose)
prevgaid Encode Open (Mismatch RelGT ProtVer -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (Mismatch RelGT ProtVer)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelGT ProtVer
-> Encode (Closed Dense) (Mismatch RelGT ProtVer)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelGT ProtVer
mm
      InvalidPolicyHash StrictMaybe ScriptHash
got StrictMaybe ScriptHash
expected ->
        (StrictMaybe ScriptHash
 -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open
     (StrictMaybe ScriptHash
      -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
forall era.
StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
InvalidPolicyHash Word
11 Encode
  Open
  (StrictMaybe ScriptHash
   -> StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
-> Encode
     Open (StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> StrictMaybe ScriptHash
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictMaybe ScriptHash
got Encode Open (StrictMaybe ScriptHash -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> StrictMaybe ScriptHash
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictMaybe ScriptHash
expected
      DisallowedProposalDuringBootstrap ProposalProcedure era
proposal ->
        (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (ProposalProcedure era -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
DisallowedProposalDuringBootstrap Word
12 Encode Open (ProposalProcedure era -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (ProposalProcedure era)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> ProposalProcedure era
-> Encode (Closed Dense) (ProposalProcedure era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To ProposalProcedure era
proposal
      DisallowedVotesDuringBootstrap NonEmpty (Voter, GovActionId)
votes ->
        (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVotesDuringBootstrap Word
13 Encode
  Open (NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Voter, GovActionId)
-> Encode (Closed Dense) (NonEmpty (Voter, GovActionId))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Voter, GovActionId)
votes
      VotersDoNotExist NonEmpty Voter
voters ->
        (NonEmpty Voter -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (NonEmpty Voter -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty Voter -> DijkstraGovPredFailure era
forall era. NonEmpty Voter -> DijkstraGovPredFailure era
VotersDoNotExist Word
14 Encode Open (NonEmpty Voter -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty Voter)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty Voter -> Encode (Closed Dense) (NonEmpty Voter)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty Voter
voters
      ZeroTreasuryWithdrawals GovAction era
ga ->
        (GovAction era -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (GovAction era -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
ZeroTreasuryWithdrawals Word
15 Encode Open (GovAction era -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (GovAction era)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> GovAction era -> Encode (Closed Dense) (GovAction era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To GovAction era
ga
      ProposalReturnAccountDoesNotExist RewardAccount
returnAccount ->
        (RewardAccount -> DijkstraGovPredFailure era)
-> Word
-> Encode Open (RewardAccount -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum RewardAccount -> DijkstraGovPredFailure era
forall era. RewardAccount -> DijkstraGovPredFailure era
ProposalReturnAccountDoesNotExist Word
16 Encode Open (RewardAccount -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) RewardAccount
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> RewardAccount -> Encode (Closed Dense) RewardAccount
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To RewardAccount
returnAccount
      TreasuryWithdrawalReturnAccountsDoNotExist NonEmpty RewardAccount
accounts ->
        (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty RewardAccount -> DijkstraGovPredFailure era
forall era. NonEmpty RewardAccount -> DijkstraGovPredFailure era
TreasuryWithdrawalReturnAccountsDoNotExist Word
17 Encode Open (NonEmpty RewardAccount -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty RewardAccount)
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty RewardAccount
-> Encode (Closed Dense) (NonEmpty RewardAccount)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty RewardAccount
accounts
      UnelectedCommitteeVoters NonEmpty (Credential HotCommitteeRole)
committee ->
        (NonEmpty (Credential HotCommitteeRole)
 -> DijkstraGovPredFailure era)
-> Word
-> Encode
     Open
     (NonEmpty (Credential HotCommitteeRole)
      -> DijkstraGovPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
forall era.
NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
UnelectedCommitteeVoters Word
18 Encode
  Open
  (NonEmpty (Credential HotCommitteeRole)
   -> DijkstraGovPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Credential HotCommitteeRole))
-> Encode Open (DijkstraGovPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Credential HotCommitteeRole)
-> Encode (Closed Dense) (NonEmpty (Credential HotCommitteeRole))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Credential HotCommitteeRole)
committee

instance EraPParams era => ToCBOR (DijkstraGovPredFailure era) where
  toCBOR :: DijkstraGovPredFailure era -> Encoding
toCBOR = forall era t. (Era era, EncCBOR t) => t -> Encoding
toEraCBOR @era

instance EraPParams era => FromCBOR (DijkstraGovPredFailure era) where
  fromCBOR :: forall s. Decoder s (DijkstraGovPredFailure era)
fromCBOR = forall era t s. (Era era, DecCBOR t) => Decoder s t
fromEraCBOR @era

instance
  ( ConwayEraTxCert era
  , ConwayEraPParams era
  , ConwayEraGov era
  , EraRule "GOV" era ~ DijkstraGOV era
  , InjectRuleFailure "GOV" ConwayGovPredFailure era
  , EraCertState era
  , ConwayEraCertState era
  ) =>
  STS (DijkstraGOV era)
  where
  type State (DijkstraGOV era) = Proposals era
  type Signal (DijkstraGOV era) = GovSignal era
  type Environment (DijkstraGOV era) = GovEnv era
  type BaseM (DijkstraGOV era) = ShelleyBase
  type PredicateFailure (DijkstraGOV era) = DijkstraGovPredFailure era
  type Event (DijkstraGOV era) = ConwayGovEvent era

  initialRules :: [InitialRule (DijkstraGOV era)]
initialRules = []

  transitionRules :: [TransitionRule (DijkstraGOV era)]
transitionRules = [forall era.
(ConwayEraTxCert era, ConwayEraPParams era, ConwayEraGov era,
 STS (EraRule "GOV" era),
 Event (EraRule "GOV" era) ~ ConwayGovEvent era,
 Signal (EraRule "GOV" era) ~ GovSignal era,
 BaseM (EraRule "GOV" era) ~ ShelleyBase,
 Environment (EraRule "GOV" era) ~ GovEnv era,
 State (EraRule "GOV" era) ~ Proposals era,
 InjectRuleFailure "GOV" ConwayGovPredFailure era,
 ConwayEraCertState era) =>
TransitionRule (EraRule "GOV" era)
conwayGovTransition @era]

conwayToDijkstraGovPredFailure :: forall era. ConwayGovPredFailure era -> DijkstraGovPredFailure era
conwayToDijkstraGovPredFailure :: forall era. ConwayGovPredFailure era -> DijkstraGovPredFailure era
conwayToDijkstraGovPredFailure = \case
  Conway.GovActionsDoNotExist NonEmpty GovActionId
gaId -> NonEmpty GovActionId -> DijkstraGovPredFailure era
forall era. NonEmpty GovActionId -> DijkstraGovPredFailure era
GovActionsDoNotExist NonEmpty GovActionId
gaId
  Conway.MalformedProposal GovAction era
ga -> GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
MalformedProposal GovAction era
ga
  Conway.ProposalProcedureNetworkIdMismatch RewardAccount
ras Network
n -> RewardAccount -> Network -> DijkstraGovPredFailure era
forall era. RewardAccount -> Network -> DijkstraGovPredFailure era
ProposalProcedureNetworkIdMismatch RewardAccount
ras Network
n
  Conway.TreasuryWithdrawalsNetworkIdMismatch Set RewardAccount
ras Network
n -> Set RewardAccount -> Network -> DijkstraGovPredFailure era
forall era.
Set RewardAccount -> Network -> DijkstraGovPredFailure era
TreasuryWithdrawalsNetworkIdMismatch Set RewardAccount
ras Network
n
  Conway.ProposalDepositIncorrect Mismatch RelEQ Coin
mm -> Mismatch RelEQ Coin -> DijkstraGovPredFailure era
forall era. Mismatch RelEQ Coin -> DijkstraGovPredFailure era
ProposalDepositIncorrect Mismatch RelEQ Coin
mm
  Conway.DisallowedVoters NonEmpty (Voter, GovActionId)
vs -> NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVoters NonEmpty (Voter, GovActionId)
vs
  Conway.ConflictingCommitteeUpdate Set (Credential ColdCommitteeRole)
ccrs -> Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
forall era.
Set (Credential ColdCommitteeRole) -> DijkstraGovPredFailure era
ConflictingCommitteeUpdate Set (Credential ColdCommitteeRole)
ccrs
  Conway.ExpirationEpochTooSmall Map (Credential ColdCommitteeRole) EpochNo
ccrs -> Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
forall era.
Map (Credential ColdCommitteeRole) EpochNo
-> DijkstraGovPredFailure era
ExpirationEpochTooSmall Map (Credential ColdCommitteeRole) EpochNo
ccrs
  Conway.InvalidPrevGovActionId ProposalProcedure era
pp -> ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
InvalidPrevGovActionId ProposalProcedure era
pp
  Conway.VotingOnExpiredGovAction NonEmpty (Voter, GovActionId)
ga -> NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
VotingOnExpiredGovAction NonEmpty (Voter, GovActionId)
ga
  Conway.ProposalCantFollow StrictMaybe (GovPurposeId 'HardForkPurpose)
gpId Mismatch RelGT ProtVer
mm -> StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> Mismatch RelGT ProtVer -> DijkstraGovPredFailure era
ProposalCantFollow StrictMaybe (GovPurposeId 'HardForkPurpose)
gpId Mismatch RelGT ProtVer
mm
  Conway.InvalidPolicyHash StrictMaybe ScriptHash
sh1 StrictMaybe ScriptHash
sh2 -> StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
forall era.
StrictMaybe ScriptHash
-> StrictMaybe ScriptHash -> DijkstraGovPredFailure era
InvalidPolicyHash StrictMaybe ScriptHash
sh1 StrictMaybe ScriptHash
sh2
  Conway.DisallowedProposalDuringBootstrap ProposalProcedure era
pp -> ProposalProcedure era -> DijkstraGovPredFailure era
forall era. ProposalProcedure era -> DijkstraGovPredFailure era
DisallowedProposalDuringBootstrap ProposalProcedure era
pp
  Conway.DisallowedVotesDuringBootstrap NonEmpty (Voter, GovActionId)
vs -> NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
forall era.
NonEmpty (Voter, GovActionId) -> DijkstraGovPredFailure era
DisallowedVotesDuringBootstrap NonEmpty (Voter, GovActionId)
vs
  Conway.VotersDoNotExist NonEmpty Voter
vs -> NonEmpty Voter -> DijkstraGovPredFailure era
forall era. NonEmpty Voter -> DijkstraGovPredFailure era
VotersDoNotExist NonEmpty Voter
vs
  Conway.ZeroTreasuryWithdrawals GovAction era
ga -> GovAction era -> DijkstraGovPredFailure era
forall era. GovAction era -> DijkstraGovPredFailure era
ZeroTreasuryWithdrawals GovAction era
ga
  Conway.ProposalReturnAccountDoesNotExist RewardAccount
ra -> RewardAccount -> DijkstraGovPredFailure era
forall era. RewardAccount -> DijkstraGovPredFailure era
ProposalReturnAccountDoesNotExist RewardAccount
ra
  Conway.TreasuryWithdrawalReturnAccountsDoNotExist NonEmpty RewardAccount
ra -> NonEmpty RewardAccount -> DijkstraGovPredFailure era
forall era. NonEmpty RewardAccount -> DijkstraGovPredFailure era
TreasuryWithdrawalReturnAccountsDoNotExist NonEmpty RewardAccount
ra
  Conway.UnelectedCommitteeVoters NonEmpty (Credential HotCommitteeRole)
vs -> NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
forall era.
NonEmpty (Credential HotCommitteeRole)
-> DijkstraGovPredFailure era
UnelectedCommitteeVoters NonEmpty (Credential HotCommitteeRole)
vs