{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE EmptyDataDeriving #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.Rules.SubPool ( DijkstraSUBPOOL, DijkstraSubPoolPredFailure (..), DijkstraSubPoolEvent (..), ) where import Cardano.Ledger.BaseTypes ( ShelleyBase, ) import Cardano.Ledger.Binary ( DecCBOR (..), EncCBOR (..), ) import Cardano.Ledger.Conway.Core import Cardano.Ledger.Dijkstra.Era ( DijkstraEra, DijkstraSUBPOOL, ) import Cardano.Ledger.Dijkstra.State import Cardano.Ledger.Shelley.Rules ( PoolEnv, PoolEvent (..), ShelleyPoolPredFailure, poolTransition, ) import Control.DeepSeq (NFData) import Control.State.Transition.Extended ( BaseM, Environment, Event, PredicateFailure, STS, Signal, State, transitionRules, ) import GHC.Generics (Generic) import NoThunks.Class (NoThunks (..)) newtype DijkstraSubPoolPredFailure era = DijkstraSubPoolPredFailure (ShelleyPoolPredFailure era) deriving (DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool (DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool) -> (DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool) -> Eq (DijkstraSubPoolPredFailure era) forall era. DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall era. DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool == :: DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool $c/= :: forall era. DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool /= :: DijkstraSubPoolPredFailure era -> DijkstraSubPoolPredFailure era -> Bool Eq, Int -> DijkstraSubPoolPredFailure era -> ShowS [DijkstraSubPoolPredFailure era] -> ShowS DijkstraSubPoolPredFailure era -> String (Int -> DijkstraSubPoolPredFailure era -> ShowS) -> (DijkstraSubPoolPredFailure era -> String) -> ([DijkstraSubPoolPredFailure era] -> ShowS) -> Show (DijkstraSubPoolPredFailure era) forall era. Int -> DijkstraSubPoolPredFailure era -> ShowS forall era. [DijkstraSubPoolPredFailure era] -> ShowS forall era. DijkstraSubPoolPredFailure era -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: forall era. Int -> DijkstraSubPoolPredFailure era -> ShowS showsPrec :: Int -> DijkstraSubPoolPredFailure era -> ShowS $cshow :: forall era. DijkstraSubPoolPredFailure era -> String show :: DijkstraSubPoolPredFailure era -> String $cshowList :: forall era. [DijkstraSubPoolPredFailure era] -> ShowS showList :: [DijkstraSubPoolPredFailure era] -> ShowS Show, (forall x. DijkstraSubPoolPredFailure era -> Rep (DijkstraSubPoolPredFailure era) x) -> (forall x. Rep (DijkstraSubPoolPredFailure era) x -> DijkstraSubPoolPredFailure era) -> Generic (DijkstraSubPoolPredFailure era) forall x. Rep (DijkstraSubPoolPredFailure era) x -> DijkstraSubPoolPredFailure era forall x. DijkstraSubPoolPredFailure era -> Rep (DijkstraSubPoolPredFailure era) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall era x. Rep (DijkstraSubPoolPredFailure era) x -> DijkstraSubPoolPredFailure era forall era x. DijkstraSubPoolPredFailure era -> Rep (DijkstraSubPoolPredFailure era) x $cfrom :: forall era x. DijkstraSubPoolPredFailure era -> Rep (DijkstraSubPoolPredFailure era) x from :: forall x. DijkstraSubPoolPredFailure era -> Rep (DijkstraSubPoolPredFailure era) x $cto :: forall era x. Rep (DijkstraSubPoolPredFailure era) x -> DijkstraSubPoolPredFailure era to :: forall x. Rep (DijkstraSubPoolPredFailure era) x -> DijkstraSubPoolPredFailure era Generic, Typeable (DijkstraSubPoolPredFailure era) Typeable (DijkstraSubPoolPredFailure era) => (forall s. Decoder s (DijkstraSubPoolPredFailure era)) -> (forall s. Proxy (DijkstraSubPoolPredFailure era) -> Decoder s ()) -> (Proxy (DijkstraSubPoolPredFailure era) -> Text) -> DecCBOR (DijkstraSubPoolPredFailure era) Proxy (DijkstraSubPoolPredFailure era) -> Text forall s. Decoder s (DijkstraSubPoolPredFailure era) forall a. Typeable a => (forall s. Decoder s a) -> (forall s. Proxy a -> Decoder s ()) -> (Proxy a -> Text) -> DecCBOR a forall s. Proxy (DijkstraSubPoolPredFailure era) -> Decoder s () forall era. Era era => Typeable (DijkstraSubPoolPredFailure era) forall era. Era era => Proxy (DijkstraSubPoolPredFailure era) -> Text forall era s. Era era => Decoder s (DijkstraSubPoolPredFailure era) forall era s. Era era => Proxy (DijkstraSubPoolPredFailure era) -> Decoder s () $cdecCBOR :: forall era s. Era era => Decoder s (DijkstraSubPoolPredFailure era) decCBOR :: forall s. Decoder s (DijkstraSubPoolPredFailure era) $cdropCBOR :: forall era s. Era era => Proxy (DijkstraSubPoolPredFailure era) -> Decoder s () dropCBOR :: forall s. Proxy (DijkstraSubPoolPredFailure era) -> Decoder s () $clabel :: forall era. Era era => Proxy (DijkstraSubPoolPredFailure era) -> Text label :: Proxy (DijkstraSubPoolPredFailure era) -> Text DecCBOR, DijkstraSubPoolPredFailure era -> Encoding (DijkstraSubPoolPredFailure era -> Encoding) -> EncCBOR (DijkstraSubPoolPredFailure era) forall era. Era era => DijkstraSubPoolPredFailure era -> Encoding forall a. (a -> Encoding) -> EncCBOR a $cencCBOR :: forall era. Era era => DijkstraSubPoolPredFailure era -> Encoding encCBOR :: DijkstraSubPoolPredFailure era -> Encoding EncCBOR, DijkstraSubPoolPredFailure era -> () (DijkstraSubPoolPredFailure era -> ()) -> NFData (DijkstraSubPoolPredFailure era) forall era. DijkstraSubPoolPredFailure era -> () forall a. (a -> ()) -> NFData a $crnf :: forall era. DijkstraSubPoolPredFailure era -> () rnf :: DijkstraSubPoolPredFailure era -> () NFData, Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) Proxy (DijkstraSubPoolPredFailure era) -> String (Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo)) -> (Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo)) -> (Proxy (DijkstraSubPoolPredFailure era) -> String) -> NoThunks (DijkstraSubPoolPredFailure era) forall era. Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) forall era. Proxy (DijkstraSubPoolPredFailure era) -> String forall a. (Context -> a -> IO (Maybe ThunkInfo)) -> (Context -> a -> IO (Maybe ThunkInfo)) -> (Proxy a -> String) -> NoThunks a $cnoThunks :: forall era. Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) noThunks :: Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) $cwNoThunks :: forall era. Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) wNoThunks :: Context -> DijkstraSubPoolPredFailure era -> IO (Maybe ThunkInfo) $cshowTypeOf :: forall era. Proxy (DijkstraSubPoolPredFailure era) -> String showTypeOf :: Proxy (DijkstraSubPoolPredFailure era) -> String NoThunks) type instance EraRuleFailure "SUBPOOL" DijkstraEra = DijkstraSubPoolPredFailure DijkstraEra type instance EraRuleEvent "SUBPOOL" DijkstraEra = DijkstraSubPoolEvent DijkstraEra instance InjectRuleFailure "SUBPOOL" DijkstraSubPoolPredFailure DijkstraEra instance InjectRuleFailure "SUBPOOL" ShelleyPoolPredFailure DijkstraEra where injectFailure :: ShelleyPoolPredFailure DijkstraEra -> EraRuleFailure "SUBPOOL" DijkstraEra injectFailure = ShelleyPoolPredFailure DijkstraEra -> EraRuleFailure "SUBPOOL" DijkstraEra ShelleyPoolPredFailure DijkstraEra -> DijkstraSubPoolPredFailure DijkstraEra forall era. ShelleyPoolPredFailure era -> DijkstraSubPoolPredFailure era DijkstraSubPoolPredFailure instance InjectRuleEvent "SUBPOOL" DijkstraSubPoolEvent DijkstraEra instance InjectRuleEvent "SUBPOOL" PoolEvent DijkstraEra where injectEvent :: PoolEvent DijkstraEra -> EraRuleEvent "SUBPOOL" DijkstraEra injectEvent = PoolEvent DijkstraEra -> EraRuleEvent "SUBPOOL" DijkstraEra PoolEvent DijkstraEra -> DijkstraSubPoolEvent DijkstraEra forall era. PoolEvent era -> DijkstraSubPoolEvent era DijkstraSubPoolEvent newtype DijkstraSubPoolEvent era = DijkstraSubPoolEvent (PoolEvent era) deriving ((forall x. DijkstraSubPoolEvent era -> Rep (DijkstraSubPoolEvent era) x) -> (forall x. Rep (DijkstraSubPoolEvent era) x -> DijkstraSubPoolEvent era) -> Generic (DijkstraSubPoolEvent era) forall x. Rep (DijkstraSubPoolEvent era) x -> DijkstraSubPoolEvent era forall x. DijkstraSubPoolEvent era -> Rep (DijkstraSubPoolEvent era) x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall era x. Rep (DijkstraSubPoolEvent era) x -> DijkstraSubPoolEvent era forall era x. DijkstraSubPoolEvent era -> Rep (DijkstraSubPoolEvent era) x $cfrom :: forall era x. DijkstraSubPoolEvent era -> Rep (DijkstraSubPoolEvent era) x from :: forall x. DijkstraSubPoolEvent era -> Rep (DijkstraSubPoolEvent era) x $cto :: forall era x. Rep (DijkstraSubPoolEvent era) x -> DijkstraSubPoolEvent era to :: forall x. Rep (DijkstraSubPoolEvent era) x -> DijkstraSubPoolEvent era Generic, DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool (DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool) -> (DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool) -> Eq (DijkstraSubPoolEvent era) forall era. DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: forall era. DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool == :: DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool $c/= :: forall era. DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool /= :: DijkstraSubPoolEvent era -> DijkstraSubPoolEvent era -> Bool Eq, DijkstraSubPoolEvent era -> () (DijkstraSubPoolEvent era -> ()) -> NFData (DijkstraSubPoolEvent era) forall era. DijkstraSubPoolEvent era -> () forall a. (a -> ()) -> NFData a $crnf :: forall era. DijkstraSubPoolEvent era -> () rnf :: DijkstraSubPoolEvent era -> () NFData) instance ( EraGov era , EraRule "SUBPOOL" era ~ DijkstraSUBPOOL era , InjectRuleEvent "SUBPOOL" DijkstraSubPoolEvent era , InjectRuleEvent "SUBPOOL" PoolEvent era , InjectRuleFailure "SUBPOOL" DijkstraSubPoolPredFailure era , InjectRuleFailure "SUBPOOL" ShelleyPoolPredFailure era ) => STS (DijkstraSUBPOOL era) where type State (DijkstraSUBPOOL era) = PState era type Signal (DijkstraSUBPOOL era) = PoolCert type Environment (DijkstraSUBPOOL era) = PoolEnv era type BaseM (DijkstraSUBPOOL era) = ShelleyBase type PredicateFailure (DijkstraSUBPOOL era) = DijkstraSubPoolPredFailure era type Event (DijkstraSUBPOOL era) = DijkstraSubPoolEvent era transitionRules :: [TransitionRule (DijkstraSUBPOOL era)] transitionRules = [TransitionRule (EraRule "SUBPOOL" era) TransitionRule (DijkstraSUBPOOL era) forall (rule :: Symbol) era. (EraPParams era, Signal (EraRule rule era) ~ PoolCert, Environment (EraRule rule era) ~ PoolEnv era, State (EraRule rule era) ~ PState era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, InjectRuleFailure rule ShelleyPoolPredFailure era, InjectRuleEvent rule PoolEvent era) => TransitionRule (EraRule rule era) poolTransition]