{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}

module Cardano.Ledger.Genesis (
  EraGenesis (..),
  NoGenesis (..),
) where

import Cardano.Ledger.Core.Era (Era)
import Data.Kind (Type)

class Era era => EraGenesis era where
  type Genesis era :: Type
  type Genesis era = NoGenesis era

data NoGenesis era = NoGenesis
  deriving (NoGenesis era -> NoGenesis era -> Bool
forall era. NoGenesis era -> NoGenesis era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NoGenesis era -> NoGenesis era -> Bool
$c/= :: forall era. NoGenesis era -> NoGenesis era -> Bool
== :: NoGenesis era -> NoGenesis era -> Bool
$c== :: forall era. NoGenesis era -> NoGenesis era -> Bool
Eq, Int -> NoGenesis era -> ShowS
forall era. Int -> NoGenesis era -> ShowS
forall era. [NoGenesis era] -> ShowS
forall era. NoGenesis era -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NoGenesis era] -> ShowS
$cshowList :: forall era. [NoGenesis era] -> ShowS
show :: NoGenesis era -> String
$cshow :: forall era. NoGenesis era -> String
showsPrec :: Int -> NoGenesis era -> ShowS
$cshowsPrec :: forall era. Int -> NoGenesis era -> ShowS
Show)