{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.Rules.SubCert ( DijkstraSUBCERT, DijkstraSubCertPredFailure (..), ) where import Cardano.Ledger.BaseTypes ( ShelleyBase, ) import Cardano.Ledger.Binary ( DecCBOR (..), EncCBOR (..), ) import Cardano.Ledger.Binary.Coders import Cardano.Ledger.Conway.Core import Cardano.Ledger.Conway.Governance (ConwayEraGov) import Cardano.Ledger.Conway.Rules ( CertEnv (..), ConwayDelegEnv (..), ConwayGovCertEnv (..), ) import Cardano.Ledger.Conway.State import Cardano.Ledger.Dijkstra.Era ( DijkstraEra, DijkstraSUBCERT, DijkstraSUBDELEG, DijkstraSUBGOVCERT, DijkstraSUBPOOL, ) import Cardano.Ledger.Dijkstra.Rules.SubDeleg (DijkstraSubDelegPredFailure) import Cardano.Ledger.Dijkstra.Rules.SubGovCert (DijkstraSubGovCertPredFailure) import Cardano.Ledger.Dijkstra.Rules.SubPool (DijkstraSubPoolPredFailure) import Cardano.Ledger.Dijkstra.TxCert import Cardano.Ledger.Shelley.Rules (PoolEnv (..)) import Control.DeepSeq (NFData) import Control.State.Transition.Extended import Data.Void (Void, absurd) import GHC.Generics (Generic) import Lens.Micro import NoThunks.Class (NoThunks (..)) data DijkstraSubCertPredFailure era = SubDelegFailure (PredicateFailure (EraRule "SUBDELEG" era)) | SubPoolFailure (PredicateFailure (EraRule "SUBPOOL" era)) | SubGovCertFailure (PredicateFailure (EraRule "SUBGOVCERT" era)) deriving ((forall x. DijkstraSubCertPredFailure era -> Rep (DijkstraSubCertPredFailure era) x) -> (forall x. Rep (DijkstraSubCertPredFailure era) x -> DijkstraSubCertPredFailure era) -> Generic (DijkstraSubCertPredFailure era) forall x. Rep (DijkstraSubCertPredFailure era) x -> DijkstraSubCertPredFailure era forall x. DijkstraSubCertPredFailure era -> Rep (DijkstraSubCertPredFailure era) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall era x. Rep (DijkstraSubCertPredFailure era) x -> DijkstraSubCertPredFailure era forall era x. DijkstraSubCertPredFailure era -> Rep (DijkstraSubCertPredFailure era) x $cfrom :: forall era x. DijkstraSubCertPredFailure era -> Rep (DijkstraSubCertPredFailure era) x from :: forall x. DijkstraSubCertPredFailure era -> Rep (DijkstraSubCertPredFailure era) x $cto :: forall era x. Rep (DijkstraSubCertPredFailure era) x -> DijkstraSubCertPredFailure era to :: forall x. Rep (DijkstraSubCertPredFailure era) x -> DijkstraSubCertPredFailure era Generic) deriving stock instance ( Eq (PredicateFailure (EraRule "SUBDELEG" era)) , Eq (PredicateFailure (EraRule "SUBPOOL" era)) , Eq (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => Eq (DijkstraSubCertPredFailure era) deriving stock instance ( Show (PredicateFailure (EraRule "SUBDELEG" era)) , Show (PredicateFailure (EraRule "SUBPOOL" era)) , Show (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => Show (DijkstraSubCertPredFailure era) instance ( NoThunks (PredicateFailure (EraRule "SUBDELEG" era)) , NoThunks (PredicateFailure (EraRule "SUBPOOL" era)) , NoThunks (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => NoThunks (DijkstraSubCertPredFailure era) instance ( NFData (PredicateFailure (EraRule "SUBDELEG" era)) , NFData (PredicateFailure (EraRule "SUBPOOL" era)) , NFData (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => NFData (DijkstraSubCertPredFailure era) instance ( Era era , EncCBOR (PredicateFailure (EraRule "SUBDELEG" era)) , EncCBOR (PredicateFailure (EraRule "SUBPOOL" era)) , EncCBOR (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => EncCBOR (DijkstraSubCertPredFailure era) where encCBOR :: DijkstraSubCertPredFailure era -> Encoding encCBOR = Encode Open (DijkstraSubCertPredFailure era) -> Encoding forall (w :: Wrapped) t. Encode w t -> Encoding encode (Encode Open (DijkstraSubCertPredFailure era) -> Encoding) -> (DijkstraSubCertPredFailure era -> Encode Open (DijkstraSubCertPredFailure era)) -> DijkstraSubCertPredFailure era -> Encoding forall b c a. (b -> c) -> (a -> b) -> a -> c . \case SubDelegFailure PredicateFailure (EraRule "SUBDELEG" era) x -> (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) -> Word -> Encode Open (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) forall t. t -> Word -> Encode Open t Sum (forall era. PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era SubDelegFailure @era) Word 1 Encode Open (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBDELEG" era)) -> Encode Open (DijkstraSubCertPredFailure era) forall (w :: Wrapped) a t (r :: Density). Encode w (a -> t) -> Encode (Closed r) a -> Encode w t !> PredicateFailure (EraRule "SUBDELEG" era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBDELEG" era)) forall t. EncCBOR t => t -> Encode (Closed Dense) t To PredicateFailure (EraRule "SUBDELEG" era) x SubPoolFailure PredicateFailure (EraRule "SUBPOOL" era) x -> (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) -> Word -> Encode Open (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) forall t. t -> Word -> Encode Open t Sum (forall era. PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era SubPoolFailure @era) Word 2 Encode Open (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBPOOL" era)) -> Encode Open (DijkstraSubCertPredFailure era) forall (w :: Wrapped) a t (r :: Density). Encode w (a -> t) -> Encode (Closed r) a -> Encode w t !> PredicateFailure (EraRule "SUBPOOL" era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBPOOL" era)) forall t. EncCBOR t => t -> Encode (Closed Dense) t To PredicateFailure (EraRule "SUBPOOL" era) x SubGovCertFailure PredicateFailure (EraRule "SUBGOVCERT" era) x -> (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) -> Word -> Encode Open (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) forall t. t -> Word -> Encode Open t Sum (forall era. PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era SubGovCertFailure @era) Word 3 Encode Open (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBGOVCERT" era)) -> Encode Open (DijkstraSubCertPredFailure era) forall (w :: Wrapped) a t (r :: Density). Encode w (a -> t) -> Encode (Closed r) a -> Encode w t !> PredicateFailure (EraRule "SUBGOVCERT" era) -> Encode (Closed Dense) (PredicateFailure (EraRule "SUBGOVCERT" era)) forall t. EncCBOR t => t -> Encode (Closed Dense) t To PredicateFailure (EraRule "SUBGOVCERT" era) x instance ( Era era , DecCBOR (PredicateFailure (EraRule "SUBDELEG" era)) , DecCBOR (PredicateFailure (EraRule "SUBPOOL" era)) , DecCBOR (PredicateFailure (EraRule "SUBGOVCERT" era)) ) => DecCBOR (DijkstraSubCertPredFailure era) where decCBOR :: forall s. Decoder s (DijkstraSubCertPredFailure era) decCBOR = Decode (Closed Dense) (DijkstraSubCertPredFailure era) -> Decoder s (DijkstraSubCertPredFailure era) forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t decode (Decode (Closed Dense) (DijkstraSubCertPredFailure era) -> Decoder s (DijkstraSubCertPredFailure era)) -> Decode (Closed Dense) (DijkstraSubCertPredFailure era) -> Decoder s (DijkstraSubCertPredFailure era) forall a b. (a -> b) -> a -> b $ Text -> (Word -> Decode Open (DijkstraSubCertPredFailure era)) -> Decode (Closed Dense) (DijkstraSubCertPredFailure era) forall t. Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t Summands Text "DijkstraSubCertPredFailure" ((Word -> Decode Open (DijkstraSubCertPredFailure era)) -> Decode (Closed Dense) (DijkstraSubCertPredFailure era)) -> (Word -> Decode Open (DijkstraSubCertPredFailure era)) -> Decode (Closed Dense) (DijkstraSubCertPredFailure era) forall a b. (a -> b) -> a -> b $ \case Word 1 -> (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) -> Decode Open (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) forall t. t -> Decode Open t SumD PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era forall era. PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era SubDelegFailure Decode Open (PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era) -> Decode (Closed (ZonkAny 0)) (PredicateFailure (EraRule "SUBDELEG" era)) -> Decode Open (DijkstraSubCertPredFailure 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)) (PredicateFailure (EraRule "SUBDELEG" era)) forall t (w :: Wrapped). DecCBOR t => Decode w t From Word 2 -> (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) -> Decode Open (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) forall t. t -> Decode Open t SumD PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era forall era. PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era SubPoolFailure Decode Open (PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era) -> Decode (Closed (ZonkAny 1)) (PredicateFailure (EraRule "SUBPOOL" era)) -> Decode Open (DijkstraSubCertPredFailure 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)) (PredicateFailure (EraRule "SUBPOOL" era)) forall t (w :: Wrapped). DecCBOR t => Decode w t From Word 3 -> (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) -> Decode Open (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) forall t. t -> Decode Open t SumD PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era forall era. PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era SubGovCertFailure Decode Open (PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era) -> Decode (Closed (ZonkAny 2)) (PredicateFailure (EraRule "SUBGOVCERT" era)) -> Decode Open (DijkstraSubCertPredFailure 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)) (PredicateFailure (EraRule "SUBGOVCERT" era)) forall t (w :: Wrapped). DecCBOR t => Decode w t From Word n -> Word -> Decode Open (DijkstraSubCertPredFailure era) forall (w :: Wrapped) t. Word -> Decode w t Invalid Word n type instance EraRuleFailure "SUBCERT" DijkstraEra = DijkstraSubCertPredFailure DijkstraEra type instance EraRuleEvent "SUBCERT" DijkstraEra = VoidEraRule "SUBCERT" DijkstraEra instance InjectRuleFailure "SUBCERT" DijkstraSubCertPredFailure DijkstraEra instance InjectRuleFailure "SUBCERT" DijkstraSubDelegPredFailure DijkstraEra where injectFailure :: DijkstraSubDelegPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra injectFailure = PredicateFailure (EraRule "SUBDELEG" DijkstraEra) -> DijkstraSubCertPredFailure DijkstraEra DijkstraSubDelegPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra forall era. PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era SubDelegFailure instance InjectRuleFailure "SUBCERT" DijkstraSubPoolPredFailure DijkstraEra where injectFailure :: DijkstraSubPoolPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra injectFailure = PredicateFailure (EraRule "SUBPOOL" DijkstraEra) -> DijkstraSubCertPredFailure DijkstraEra DijkstraSubPoolPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra forall era. PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era SubPoolFailure instance InjectRuleFailure "SUBCERT" DijkstraSubGovCertPredFailure DijkstraEra where injectFailure :: DijkstraSubGovCertPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra injectFailure = PredicateFailure (EraRule "SUBGOVCERT" DijkstraEra) -> DijkstraSubCertPredFailure DijkstraEra DijkstraSubGovCertPredFailure DijkstraEra -> EraRuleFailure "SUBCERT" DijkstraEra forall era. PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era SubGovCertFailure instance ( ConwayEraGov era , ConwayEraCertState era , EraRule "SUBCERT" era ~ DijkstraSUBCERT era , EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era , EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era , EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era , Embed (EraRule "SUBDELEG" era) (DijkstraSUBCERT era) , Embed (EraRule "SUBPOOL" era) (DijkstraSUBCERT era) , Embed (EraRule "SUBGOVCERT" era) (DijkstraSUBCERT era) , TxCert era ~ DijkstraTxCert era ) => STS (DijkstraSUBCERT era) where type State (DijkstraSUBCERT era) = CertState era type Signal (DijkstraSUBCERT era) = TxCert era type Environment (DijkstraSUBCERT era) = CertEnv era type BaseM (DijkstraSUBCERT era) = ShelleyBase type PredicateFailure (DijkstraSUBCERT era) = DijkstraSubCertPredFailure era type Event (DijkstraSUBCERT era) = Void transitionRules :: [TransitionRule (DijkstraSUBCERT era)] transitionRules = [forall era. (ConwayEraCertState era, EraRule "SUBCERT" era ~ DijkstraSUBCERT era, EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era, EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era, EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era, Embed (EraRule "SUBDELEG" era) (DijkstraSUBCERT era), Embed (EraRule "SUBPOOL" era) (DijkstraSUBCERT era), Embed (EraRule "SUBGOVCERT" era) (DijkstraSUBCERT era), TxCert era ~ DijkstraTxCert era) => TransitionRule (EraRule "SUBCERT" era) dijkstraSubCertTransition @era] dijkstraSubCertTransition :: forall era. ( ConwayEraCertState era , EraRule "SUBCERT" era ~ DijkstraSUBCERT era , EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era , EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era , EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era , Embed (EraRule "SUBDELEG" era) (DijkstraSUBCERT era) , Embed (EraRule "SUBPOOL" era) (DijkstraSUBCERT era) , Embed (EraRule "SUBGOVCERT" era) (DijkstraSUBCERT era) , TxCert era ~ DijkstraTxCert era ) => TransitionRule (EraRule "SUBCERT" era) dijkstraSubCertTransition :: forall era. (ConwayEraCertState era, EraRule "SUBCERT" era ~ DijkstraSUBCERT era, EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era, EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era, EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era, Embed (EraRule "SUBDELEG" era) (DijkstraSUBCERT era), Embed (EraRule "SUBPOOL" era) (DijkstraSUBCERT era), Embed (EraRule "SUBGOVCERT" era) (DijkstraSUBCERT era), TxCert era ~ DijkstraTxCert era) => TransitionRule (EraRule "SUBCERT" era) dijkstraSubCertTransition = do TRC (CertEnv pp currentEpoch committee committeeProposals, certState, c) <- Rule (DijkstraSUBCERT era) 'Transition (RuleContext 'Transition (DijkstraSUBCERT era)) F (Clause (DijkstraSUBCERT era) 'Transition) (TRC (DijkstraSUBCERT era)) forall sts (rtype :: RuleType). Rule sts rtype (RuleContext rtype sts) judgmentContext let certPState = CertState era State (DijkstraSUBCERT era) certState CertState era -> Getting (PState era) (CertState era) (PState era) -> PState era forall s a. s -> Getting a s a -> a ^. Getting (PState era) (CertState era) (PState era) forall era. EraCertState era => Lens' (CertState era) (PState era) Lens' (CertState era) (PState era) certPStateL pools = PState era -> Map (KeyHash StakePool) StakePoolState forall era. PState era -> Map (KeyHash StakePool) StakePoolState psStakePools PState era certPState case c of DijkstraTxCertDeleg DijkstraDelegCert delegCert -> forall sub super (rtype :: RuleType). Embed sub super => RuleContext rtype sub -> Rule super rtype (State sub) trans @(EraRule "SUBDELEG" era) (RuleContext 'Transition (EraRule "SUBDELEG" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBDELEG" era))) -> RuleContext 'Transition (EraRule "SUBDELEG" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBDELEG" era)) forall a b. (a -> b) -> a -> b $ (Environment (DijkstraSUBDELEG era), State (DijkstraSUBDELEG era), Signal (DijkstraSUBDELEG era)) -> TRC (DijkstraSUBDELEG era) forall sts. (Environment sts, State sts, Signal sts) -> TRC sts TRC (PParams era -> Map (KeyHash StakePool) StakePoolState -> ConwayDelegEnv era forall era. PParams era -> Map (KeyHash StakePool) StakePoolState -> ConwayDelegEnv era ConwayDelegEnv PParams era pp Map (KeyHash StakePool) StakePoolState pools, State (DijkstraSUBDELEG era) State (DijkstraSUBCERT era) certState, Signal (DijkstraSUBDELEG era) DijkstraDelegCert delegCert) DijkstraTxCertPool PoolCert poolCert -> do newPState <- forall sub super (rtype :: RuleType). Embed sub super => RuleContext rtype sub -> Rule super rtype (State sub) trans @(EraRule "SUBPOOL" era) (RuleContext 'Transition (EraRule "SUBPOOL" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBPOOL" era))) -> RuleContext 'Transition (EraRule "SUBPOOL" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBPOOL" era)) forall a b. (a -> b) -> a -> b $ (Environment (DijkstraSUBPOOL era), State (DijkstraSUBPOOL era), Signal (DijkstraSUBPOOL era)) -> TRC (DijkstraSUBPOOL era) forall sts. (Environment sts, State sts, Signal sts) -> TRC sts TRC (EpochNo -> PParams era -> PoolEnv era forall era. EpochNo -> PParams era -> PoolEnv era PoolEnv EpochNo currentEpoch PParams era pp, PState era State (DijkstraSUBPOOL era) certPState, PoolCert Signal (DijkstraSUBPOOL era) poolCert) pure $ certState & certPStateL .~ newPState DijkstraTxCertGov ConwayGovCert govCert -> do forall sub super (rtype :: RuleType). Embed sub super => RuleContext rtype sub -> Rule super rtype (State sub) trans @(EraRule "SUBGOVCERT" era) (RuleContext 'Transition (EraRule "SUBGOVCERT" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBGOVCERT" era))) -> RuleContext 'Transition (EraRule "SUBGOVCERT" era) -> Rule (DijkstraSUBCERT era) 'Transition (State (EraRule "SUBGOVCERT" era)) forall a b. (a -> b) -> a -> b $ (Environment (DijkstraSUBGOVCERT era), State (DijkstraSUBGOVCERT era), Signal (DijkstraSUBGOVCERT era)) -> TRC (DijkstraSUBGOVCERT era) forall sts. (Environment sts, State sts, Signal sts) -> TRC sts TRC (PParams era -> EpochNo -> StrictMaybe (Committee era) -> Map (GovPurposeId 'CommitteePurpose) (GovActionState era) -> ConwayGovCertEnv era forall era. PParams era -> EpochNo -> StrictMaybe (Committee era) -> Map (GovPurposeId 'CommitteePurpose) (GovActionState era) -> ConwayGovCertEnv era ConwayGovCertEnv PParams era pp EpochNo currentEpoch StrictMaybe (Committee era) committee Map (GovPurposeId 'CommitteePurpose) (GovActionState era) committeeProposals, State (DijkstraSUBGOVCERT era) State (DijkstraSUBCERT era) certState, ConwayGovCert Signal (DijkstraSUBGOVCERT era) govCert) instance ( ConwayEraGov era , ConwayEraCertState era , EraRule "SUBCERT" era ~ DijkstraSUBCERT era , EraRule "SUBDELEG" era ~ DijkstraSUBDELEG era ) => Embed (DijkstraSUBDELEG era) (DijkstraSUBCERT era) where wrapFailed :: PredicateFailure (DijkstraSUBDELEG era) -> PredicateFailure (DijkstraSUBCERT era) wrapFailed = PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era PredicateFailure (DijkstraSUBDELEG era) -> PredicateFailure (DijkstraSUBCERT era) forall era. PredicateFailure (EraRule "SUBDELEG" era) -> DijkstraSubCertPredFailure era SubDelegFailure wrapEvent :: Event (DijkstraSUBDELEG era) -> Event (DijkstraSUBCERT era) wrapEvent = Void -> Void Event (DijkstraSUBDELEG era) -> Event (DijkstraSUBCERT era) forall a. Void -> a absurd instance ( ConwayEraGov era , EraRule "SUBCERT" era ~ DijkstraSUBCERT era , EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era ) => Embed (DijkstraSUBPOOL era) (DijkstraSUBCERT era) where wrapFailed :: PredicateFailure (DijkstraSUBPOOL era) -> PredicateFailure (DijkstraSUBCERT era) wrapFailed = PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era PredicateFailure (DijkstraSUBPOOL era) -> PredicateFailure (DijkstraSUBCERT era) forall era. PredicateFailure (EraRule "SUBPOOL" era) -> DijkstraSubCertPredFailure era SubPoolFailure wrapEvent :: Event (DijkstraSUBPOOL era) -> Event (DijkstraSUBCERT era) wrapEvent = Void -> Void Event (DijkstraSUBPOOL era) -> Event (DijkstraSUBCERT era) forall a. Void -> a absurd instance ( ConwayEraGov era , ConwayEraCertState era , EraRule "SUBCERT" era ~ DijkstraSUBCERT era , EraRule "SUBGOVCERT" era ~ DijkstraSUBGOVCERT era ) => Embed (DijkstraSUBGOVCERT era) (DijkstraSUBCERT era) where wrapFailed :: PredicateFailure (DijkstraSUBGOVCERT era) -> PredicateFailure (DijkstraSUBCERT era) wrapFailed = PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era PredicateFailure (DijkstraSUBGOVCERT era) -> PredicateFailure (DijkstraSUBCERT era) forall era. PredicateFailure (EraRule "SUBGOVCERT" era) -> DijkstraSubCertPredFailure era SubGovCertFailure wrapEvent :: Event (DijkstraSUBGOVCERT era) -> Event (DijkstraSUBCERT era) wrapEvent = Void -> Void Event (DijkstraSUBGOVCERT era) -> Event (DijkstraSUBCERT era) forall a. Void -> a absurd