{-# LANGUAGE LambdaCase #-}

module Cardano.CLI.Types.Errors.CardanoAddressSigningKeyConversionError
  ( CardanoAddressSigningKeyConversionError (..)
  )
where

import           Cardano.Api

import           Data.ByteString (ByteString)

-- | An error that can occur while converting a @cardano-address@ extended
-- signing key.
data CardanoAddressSigningKeyConversionError
  = -- | There was an error in decoding the string as Bech32.
    CardanoAddressSigningKeyBech32DecodeError !Bech32DecodeError
  | -- | There was an error in converting the @cardano-address@ extended signing
    -- key.
    CardanoAddressSigningKeyDeserialisationError !ByteString
  deriving (Int -> CardanoAddressSigningKeyConversionError -> ShowS
[CardanoAddressSigningKeyConversionError] -> ShowS
CardanoAddressSigningKeyConversionError -> String
(Int -> CardanoAddressSigningKeyConversionError -> ShowS)
-> (CardanoAddressSigningKeyConversionError -> String)
-> ([CardanoAddressSigningKeyConversionError] -> ShowS)
-> Show CardanoAddressSigningKeyConversionError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CardanoAddressSigningKeyConversionError -> ShowS
showsPrec :: Int -> CardanoAddressSigningKeyConversionError -> ShowS
$cshow :: CardanoAddressSigningKeyConversionError -> String
show :: CardanoAddressSigningKeyConversionError -> String
$cshowList :: [CardanoAddressSigningKeyConversionError] -> ShowS
showList :: [CardanoAddressSigningKeyConversionError] -> ShowS
Show, CardanoAddressSigningKeyConversionError
-> CardanoAddressSigningKeyConversionError -> Bool
(CardanoAddressSigningKeyConversionError
 -> CardanoAddressSigningKeyConversionError -> Bool)
-> (CardanoAddressSigningKeyConversionError
    -> CardanoAddressSigningKeyConversionError -> Bool)
-> Eq CardanoAddressSigningKeyConversionError
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CardanoAddressSigningKeyConversionError
-> CardanoAddressSigningKeyConversionError -> Bool
== :: CardanoAddressSigningKeyConversionError
-> CardanoAddressSigningKeyConversionError -> Bool
$c/= :: CardanoAddressSigningKeyConversionError
-> CardanoAddressSigningKeyConversionError -> Bool
/= :: CardanoAddressSigningKeyConversionError
-> CardanoAddressSigningKeyConversionError -> Bool
Eq)

instance Error CardanoAddressSigningKeyConversionError where
  prettyError :: forall ann. CardanoAddressSigningKeyConversionError -> Doc ann
prettyError = \case
    CardanoAddressSigningKeyBech32DecodeError Bech32DecodeError
decErr ->
      Bech32DecodeError -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. Bech32DecodeError -> Doc ann
prettyError Bech32DecodeError
decErr
    CardanoAddressSigningKeyDeserialisationError ByteString
_bs ->
      -- Sensitive data, such as the signing key, is purposely not included in
      -- the error message.
      Doc ann
"Error deserialising cardano-address signing key."