{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Dijkstra.Genesis (
  DijkstraGenesis (..),
  toDijkstraGenesisPairs,
) where

import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Genesis (EraGenesis (..))
import Data.Aeson (FromJSON, ToJSON)
import GHC.Generics
import NoThunks.Class (NoThunks)

-- TODO: Currently it is just a placeholder for all the new protocol parameters that will be added
-- in the Dijkstra era
data DijkstraGenesis = DijkstraGenesis
  deriving (DijkstraGenesis -> DijkstraGenesis -> Bool
(DijkstraGenesis -> DijkstraGenesis -> Bool)
-> (DijkstraGenesis -> DijkstraGenesis -> Bool)
-> Eq DijkstraGenesis
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DijkstraGenesis -> DijkstraGenesis -> Bool
== :: DijkstraGenesis -> DijkstraGenesis -> Bool
$c/= :: DijkstraGenesis -> DijkstraGenesis -> Bool
/= :: DijkstraGenesis -> DijkstraGenesis -> Bool
Eq, Int -> DijkstraGenesis -> ShowS
[DijkstraGenesis] -> ShowS
DijkstraGenesis -> String
(Int -> DijkstraGenesis -> ShowS)
-> (DijkstraGenesis -> String)
-> ([DijkstraGenesis] -> ShowS)
-> Show DijkstraGenesis
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DijkstraGenesis -> ShowS
showsPrec :: Int -> DijkstraGenesis -> ShowS
$cshow :: DijkstraGenesis -> String
show :: DijkstraGenesis -> String
$cshowList :: [DijkstraGenesis] -> ShowS
showList :: [DijkstraGenesis] -> ShowS
Show, (forall x. DijkstraGenesis -> Rep DijkstraGenesis x)
-> (forall x. Rep DijkstraGenesis x -> DijkstraGenesis)
-> Generic DijkstraGenesis
forall x. Rep DijkstraGenesis x -> DijkstraGenesis
forall x. DijkstraGenesis -> Rep DijkstraGenesis x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DijkstraGenesis -> Rep DijkstraGenesis x
from :: forall x. DijkstraGenesis -> Rep DijkstraGenesis x
$cto :: forall x. Rep DijkstraGenesis x -> DijkstraGenesis
to :: forall x. Rep DijkstraGenesis x -> DijkstraGenesis
Generic)

instance ToJSON DijkstraGenesis

instance FromJSON DijkstraGenesis

instance NoThunks DijkstraGenesis

instance EraGenesis DijkstraEra where
  type Genesis DijkstraEra = DijkstraGenesis

-- TODO: Implement this and use for ToJSON instance
toDijkstraGenesisPairs :: DijkstraGenesis -> [a]
toDijkstraGenesisPairs :: forall a. DijkstraGenesis -> [a]
toDijkstraGenesisPairs DijkstraGenesis
_ = []