{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Allegra.Transition (TransitionConfig (..)) where

import Cardano.Ledger.Allegra.Era
import Cardano.Ledger.Allegra.State ()
import Cardano.Ledger.Allegra.Translation ()
import Cardano.Ledger.Genesis (NoGenesis (..))
import Cardano.Ledger.Shelley
import Cardano.Ledger.Shelley.Transition
import Data.Aeson (FromJSON (..), ToJSON (..))
import Lens.Micro
import NoThunks.Class (NoThunks (..))

instance EraTransition AllegraEra where
  newtype TransitionConfig AllegraEra = AllegraTransitionConfig
    { TransitionConfig AllegraEra -> TransitionConfig ShelleyEra
atcShelleyTransitionConfig :: TransitionConfig ShelleyEra
    }
    deriving (Int -> TransitionConfig AllegraEra -> ShowS
[TransitionConfig AllegraEra] -> ShowS
TransitionConfig AllegraEra -> String
(Int -> TransitionConfig AllegraEra -> ShowS)
-> (TransitionConfig AllegraEra -> String)
-> ([TransitionConfig AllegraEra] -> ShowS)
-> Show (TransitionConfig AllegraEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TransitionConfig AllegraEra -> ShowS
showsPrec :: Int -> TransitionConfig AllegraEra -> ShowS
$cshow :: TransitionConfig AllegraEra -> String
show :: TransitionConfig AllegraEra -> String
$cshowList :: [TransitionConfig AllegraEra] -> ShowS
showList :: [TransitionConfig AllegraEra] -> ShowS
Show, TransitionConfig AllegraEra -> TransitionConfig AllegraEra -> Bool
(TransitionConfig AllegraEra
 -> TransitionConfig AllegraEra -> Bool)
-> (TransitionConfig AllegraEra
    -> TransitionConfig AllegraEra -> Bool)
-> Eq (TransitionConfig AllegraEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TransitionConfig AllegraEra -> TransitionConfig AllegraEra -> Bool
== :: TransitionConfig AllegraEra -> TransitionConfig AllegraEra -> Bool
$c/= :: TransitionConfig AllegraEra -> TransitionConfig AllegraEra -> Bool
/= :: TransitionConfig AllegraEra -> TransitionConfig AllegraEra -> Bool
Eq, Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo)
Proxy (TransitionConfig AllegraEra) -> String
(Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo))
-> (Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo))
-> (Proxy (TransitionConfig AllegraEra) -> String)
-> NoThunks (TransitionConfig AllegraEra)
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
$cnoThunks :: Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> TransitionConfig AllegraEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: Proxy (TransitionConfig AllegraEra) -> String
showTypeOf :: Proxy (TransitionConfig AllegraEra) -> String
NoThunks, [TransitionConfig AllegraEra] -> Value
[TransitionConfig AllegraEra] -> Encoding
TransitionConfig AllegraEra -> Bool
TransitionConfig AllegraEra -> Value
TransitionConfig AllegraEra -> Encoding
(TransitionConfig AllegraEra -> Value)
-> (TransitionConfig AllegraEra -> Encoding)
-> ([TransitionConfig AllegraEra] -> Value)
-> ([TransitionConfig AllegraEra] -> Encoding)
-> (TransitionConfig AllegraEra -> Bool)
-> ToJSON (TransitionConfig AllegraEra)
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: TransitionConfig AllegraEra -> Value
toJSON :: TransitionConfig AllegraEra -> Value
$ctoEncoding :: TransitionConfig AllegraEra -> Encoding
toEncoding :: TransitionConfig AllegraEra -> Encoding
$ctoJSONList :: [TransitionConfig AllegraEra] -> Value
toJSONList :: [TransitionConfig AllegraEra] -> Value
$ctoEncodingList :: [TransitionConfig AllegraEra] -> Encoding
toEncodingList :: [TransitionConfig AllegraEra] -> Encoding
$comitField :: TransitionConfig AllegraEra -> Bool
omitField :: TransitionConfig AllegraEra -> Bool
ToJSON, Maybe (TransitionConfig AllegraEra)
Value -> Parser [TransitionConfig AllegraEra]
Value -> Parser (TransitionConfig AllegraEra)
(Value -> Parser (TransitionConfig AllegraEra))
-> (Value -> Parser [TransitionConfig AllegraEra])
-> Maybe (TransitionConfig AllegraEra)
-> FromJSON (TransitionConfig AllegraEra)
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser (TransitionConfig AllegraEra)
parseJSON :: Value -> Parser (TransitionConfig AllegraEra)
$cparseJSONList :: Value -> Parser [TransitionConfig AllegraEra]
parseJSONList :: Value -> Parser [TransitionConfig AllegraEra]
$comittedField :: Maybe (TransitionConfig AllegraEra)
omittedField :: Maybe (TransitionConfig AllegraEra)
FromJSON)

  mkTransitionConfig :: TranslationContext AllegraEra
-> TransitionConfig (PreviousEra AllegraEra)
-> TransitionConfig AllegraEra
mkTransitionConfig NoGenesis AllegraEra
TranslationContext AllegraEra
NoGenesis = TransitionConfig (PreviousEra AllegraEra)
-> TransitionConfig AllegraEra
TransitionConfig ShelleyEra -> TransitionConfig AllegraEra
AllegraTransitionConfig

  injectIntoTestState :: TransitionConfig AllegraEra
-> NewEpochState AllegraEra -> NewEpochState AllegraEra
injectIntoTestState = TransitionConfig AllegraEra
-> NewEpochState AllegraEra -> NewEpochState AllegraEra
forall era.
EraTransition era =>
TransitionConfig era -> NewEpochState era -> NewEpochState era
registerInitialFundsThenStaking

  tcPreviousEraConfigL :: EraTransition (PreviousEra AllegraEra) =>
Lens'
  (TransitionConfig AllegraEra)
  (TransitionConfig (PreviousEra AllegraEra))
tcPreviousEraConfigL =
    (TransitionConfig AllegraEra -> TransitionConfig ShelleyEra)
-> (TransitionConfig AllegraEra
    -> TransitionConfig ShelleyEra -> TransitionConfig AllegraEra)
-> Lens
     (TransitionConfig AllegraEra)
     (TransitionConfig AllegraEra)
     (TransitionConfig ShelleyEra)
     (TransitionConfig ShelleyEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens TransitionConfig AllegraEra -> TransitionConfig ShelleyEra
atcShelleyTransitionConfig (\TransitionConfig AllegraEra
atc TransitionConfig ShelleyEra
pc -> TransitionConfig AllegraEra
atc {atcShelleyTransitionConfig = pc})

  tcTranslationContextL :: Lens' (TransitionConfig AllegraEra) (TranslationContext AllegraEra)
tcTranslationContextL = (TransitionConfig AllegraEra -> NoGenesis AllegraEra)
-> (TransitionConfig AllegraEra
    -> NoGenesis AllegraEra -> TransitionConfig AllegraEra)
-> Lens
     (TransitionConfig AllegraEra)
     (TransitionConfig AllegraEra)
     (NoGenesis AllegraEra)
     (NoGenesis AllegraEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (NoGenesis AllegraEra
-> TransitionConfig AllegraEra -> NoGenesis AllegraEra
forall a b. a -> b -> a
const NoGenesis AllegraEra
forall era. NoGenesis era
NoGenesis) (TransitionConfig AllegraEra
-> NoGenesis AllegraEra -> TransitionConfig AllegraEra
forall a b. a -> b -> a
const (TransitionConfig AllegraEra
 -> NoGenesis AllegraEra -> TransitionConfig AllegraEra)
-> (TransitionConfig AllegraEra -> TransitionConfig AllegraEra)
-> TransitionConfig AllegraEra
-> NoGenesis AllegraEra
-> TransitionConfig AllegraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TransitionConfig AllegraEra -> TransitionConfig AllegraEra
forall a. a -> a
id)