{-# LANGUAGE GADTs #-}
{-# LANGUAGE StandaloneDeriving #-}

module Cardano.CLI.Type.Error.NodeEraMismatchError
  ( NodeEraMismatchError (..)
  )
where

import Cardano.Api

data NodeEraMismatchError
  = forall era nodeEra.
  NodeEraMismatchError
  { ()
era :: !(CardanoEra era)
  , ()
nodeEra :: !(CardanoEra nodeEra)
  }

deriving instance Show NodeEraMismatchError

instance Error NodeEraMismatchError where
  prettyError :: forall ann. NodeEraMismatchError -> Doc ann
prettyError (NodeEraMismatchError{era :: ()
era = CardanoEra era
valueEra, nodeEra :: ()
nodeEra = CardanoEra nodeEra
e}) =
    [Doc ann] -> Doc ann
forall a. Monoid a => [a] -> a
mconcat
      [ Doc ann
"Transactions can only be produced in the same era as the node. Requested era: "
      , CardanoEra era -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. CardanoEra era -> Doc ann
pretty CardanoEra era
valueEra Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
", node era: "
      , CardanoEra nodeEra -> Doc ann
forall a ann. Pretty a => a -> Doc ann
forall ann. CardanoEra nodeEra -> Doc ann
pretty CardanoEra nodeEra
e Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> Doc ann
"."
      ]