Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add BabbageEraOnly #304

Merged
merged 1 commit into from
Oct 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ library internal
Cardano.Api.Eon.AllegraEraOnwards
Cardano.Api.Eon.AlonzoEraOnly
Cardano.Api.Eon.AlonzoEraOnwards
Cardano.Api.Eon.BabbageEraOnly
Cardano.Api.Eon.BabbageEraOnwards
Cardano.Api.Eon.ByronAndAllegraEraOnwards
Cardano.Api.Eon.ByronEraOnly
Expand Down
55 changes: 55 additions & 0 deletions cardano-api/internal/Cardano/Api/Eon/BabbageEraOnly.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeFamilies #-}

module Cardano.Api.Eon.BabbageEraOnly
( BabbageEraOnly(..)
, babbageEraOnlyConstraints
, babbageEraOnlyToCardanoEra

, BabbageEraOnlyConstraints
) where

import Cardano.Api.Eras.Core

import Data.Typeable (Typeable)

data BabbageEraOnly era where
BabbageEraOnlyBabbage :: BabbageEraOnly BabbageEra

deriving instance Show (BabbageEraOnly era)
deriving instance Eq (BabbageEraOnly era)

instance Eon BabbageEraOnly where
inEonForEra no yes = \case
ByronEra -> no
ShelleyEra -> no
AllegraEra -> no
MaryEra -> no
AlonzoEra -> no
BabbageEra -> yes BabbageEraOnlyBabbage
ConwayEra -> no

instance ToCardanoEra BabbageEraOnly where
toCardanoEra = \case
BabbageEraOnlyBabbage -> BabbageEra

type BabbageEraOnlyConstraints era =
( IsCardanoEra era
, Typeable era
)

babbageEraOnlyConstraints :: ()
=> BabbageEraOnly era
-> (BabbageEraOnlyConstraints era => a)
-> a
babbageEraOnlyConstraints = \case
BabbageEraOnlyBabbage -> id

babbageEraOnlyToCardanoEra :: BabbageEraOnly era -> CardanoEra era
babbageEraOnlyToCardanoEra = \case
BabbageEraOnlyBabbage -> BabbageEra