{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.Rules.Certs () where import Cardano.Ledger.BaseTypes import Cardano.Ledger.Conway.Rules ( ConwayCERTS, ConwayCertEvent (..), ConwayCertPredFailure (..), ConwayCertsEvent (..), ConwayCertsPredFailure (..), ConwayDELEG, ConwayDelegPredFailure, ConwayGOVCERT, ConwayGovCertPredFailure, ) import Cardano.Ledger.Dijkstra.Core import Cardano.Ledger.Dijkstra.Era import Cardano.Ledger.Dijkstra.Rules.Cert () import Cardano.Ledger.Shelley.Rules (PoolEvent, ShelleyPOOL, ShelleyPoolPredFailure) import Control.State.Transition.Extended import GHC.Base (absurd) type instance EraRuleFailure "CERTS" DijkstraEra = ConwayCertsPredFailure DijkstraEra type instance EraRuleEvent "CERTS" DijkstraEra = ConwayCertsEvent DijkstraEra instance InjectRuleFailure "CERTS" ConwayCertsPredFailure DijkstraEra instance InjectRuleFailure "CERTS" ConwayCertPredFailure DijkstraEra where injectFailure :: ConwayCertPredFailure DijkstraEra -> EraRuleFailure "CERTS" DijkstraEra injectFailure = PredicateFailure (EraRule "CERT" DijkstraEra) -> ConwayCertsPredFailure DijkstraEra ConwayCertPredFailure DijkstraEra -> EraRuleFailure "CERTS" DijkstraEra forall era. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era CertFailure instance InjectRuleFailure "CERTS" ConwayDelegPredFailure DijkstraEra where injectFailure :: ConwayDelegPredFailure DijkstraEra -> EraRuleFailure "CERTS" DijkstraEra injectFailure = PredicateFailure (EraRule "CERT" DijkstraEra) -> ConwayCertsPredFailure DijkstraEra ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall era. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era CertFailure (ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra) -> (ConwayDelegPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra) -> ConwayDelegPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall b c a. (b -> c) -> (a -> b) -> a -> c . ConwayDelegPredFailure DijkstraEra -> EraRuleFailure "CERT" DijkstraEra ConwayDelegPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra forall (rule :: Symbol) (t :: * -> *) era. InjectRuleFailure rule t era => t era -> EraRuleFailure rule era injectFailure instance InjectRuleFailure "CERTS" ShelleyPoolPredFailure DijkstraEra where injectFailure :: ShelleyPoolPredFailure DijkstraEra -> EraRuleFailure "CERTS" DijkstraEra injectFailure = PredicateFailure (EraRule "CERT" DijkstraEra) -> ConwayCertsPredFailure DijkstraEra ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall era. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era CertFailure (ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra) -> (ShelleyPoolPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra) -> ShelleyPoolPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall b c a. (b -> c) -> (a -> b) -> a -> c . ShelleyPoolPredFailure DijkstraEra -> EraRuleFailure "CERT" DijkstraEra ShelleyPoolPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra forall (rule :: Symbol) (t :: * -> *) era. InjectRuleFailure rule t era => t era -> EraRuleFailure rule era injectFailure instance InjectRuleFailure "CERTS" ConwayGovCertPredFailure DijkstraEra where injectFailure :: ConwayGovCertPredFailure DijkstraEra -> EraRuleFailure "CERTS" DijkstraEra injectFailure = PredicateFailure (EraRule "CERT" DijkstraEra) -> ConwayCertsPredFailure DijkstraEra ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall era. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era CertFailure (ConwayCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra) -> (ConwayGovCertPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra) -> ConwayGovCertPredFailure DijkstraEra -> ConwayCertsPredFailure DijkstraEra forall b c a. (b -> c) -> (a -> b) -> a -> c . ConwayGovCertPredFailure DijkstraEra -> EraRuleFailure "CERT" DijkstraEra ConwayGovCertPredFailure DijkstraEra -> ConwayCertPredFailure DijkstraEra forall (rule :: Symbol) (t :: * -> *) era. InjectRuleFailure rule t era => t era -> EraRuleFailure rule era injectFailure instance ( Era era , STS (DijkstraCERT era) , BaseM (EraRule "CERT" era) ~ ShelleyBase , Event (EraRule "CERT" era) ~ ConwayCertEvent era , PredicateFailure (EraRule "CERT" era) ~ ConwayCertPredFailure era ) => Embed (DijkstraCERT era) (ConwayCERTS era) where wrapFailed :: PredicateFailure (DijkstraCERT era) -> PredicateFailure (ConwayCERTS era) wrapFailed = PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era PredicateFailure (DijkstraCERT era) -> PredicateFailure (ConwayCERTS era) forall era. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era CertFailure wrapEvent :: Event (DijkstraCERT era) -> Event (ConwayCERTS era) wrapEvent = Event (EraRule "CERT" era) -> ConwayCertsEvent era Event (DijkstraCERT era) -> Event (ConwayCERTS era) forall era. Event (EraRule "CERT" era) -> ConwayCertsEvent era CertEvent instance ( Era era , STS (ConwayDELEG era) , PredicateFailure (EraRule "DELEG" era) ~ ConwayDelegPredFailure era ) => Embed (ConwayDELEG era) (DijkstraCERT era) where wrapFailed :: PredicateFailure (ConwayDELEG era) -> PredicateFailure (DijkstraCERT era) wrapFailed = PredicateFailure (EraRule "DELEG" era) -> ConwayCertPredFailure era PredicateFailure (ConwayDELEG era) -> PredicateFailure (DijkstraCERT era) forall era. PredicateFailure (EraRule "DELEG" era) -> ConwayCertPredFailure era DelegFailure wrapEvent :: Event (ConwayDELEG era) -> Event (DijkstraCERT era) wrapEvent = Void -> ConwayCertEvent era Event (ConwayDELEG era) -> Event (DijkstraCERT era) forall a. Void -> a absurd instance ( Era era , STS (ShelleyPOOL era) , Event (EraRule "POOL" era) ~ PoolEvent era , PredicateFailure (EraRule "POOL" era) ~ ShelleyPoolPredFailure era , PredicateFailure (ShelleyPOOL era) ~ ShelleyPoolPredFailure era , BaseM (ShelleyPOOL era) ~ ShelleyBase ) => Embed (ShelleyPOOL era) (DijkstraCERT era) where wrapFailed :: PredicateFailure (ShelleyPOOL era) -> PredicateFailure (DijkstraCERT era) wrapFailed = PredicateFailure (EraRule "POOL" era) -> ConwayCertPredFailure era PredicateFailure (ShelleyPOOL era) -> PredicateFailure (DijkstraCERT era) forall era. PredicateFailure (EraRule "POOL" era) -> ConwayCertPredFailure era PoolFailure wrapEvent :: Event (ShelleyPOOL era) -> Event (DijkstraCERT era) wrapEvent = Event (EraRule "POOL" era) -> ConwayCertEvent era Event (ShelleyPOOL era) -> Event (DijkstraCERT era) forall era. Event (EraRule "POOL" era) -> ConwayCertEvent era PoolEvent instance ( Era era , STS (ConwayGOVCERT era) , PredicateFailure (EraRule "GOVCERT" era) ~ ConwayGovCertPredFailure era ) => Embed (ConwayGOVCERT era) (DijkstraCERT era) where wrapFailed :: PredicateFailure (ConwayGOVCERT era) -> PredicateFailure (DijkstraCERT era) wrapFailed = PredicateFailure (EraRule "GOVCERT" era) -> ConwayCertPredFailure era PredicateFailure (ConwayGOVCERT era) -> PredicateFailure (DijkstraCERT era) forall era. PredicateFailure (EraRule "GOVCERT" era) -> ConwayCertPredFailure era GovCertFailure wrapEvent :: Event (ConwayGOVCERT era) -> Event (DijkstraCERT era) wrapEvent = Void -> ConwayCertEvent era Event (ConwayGOVCERT era) -> Event (DijkstraCERT era) forall a. Void -> a absurd