module Hydra.Contract.DepositError (
  errorCode,
  module Hydra.Contract.DepositError,
) where

import Hydra.Contract.Error (ToErrorCode (..), errorCode)
import Text.Show (Show)

data DepositError
  = DepositDeadlineSurpassed
  | DepositNoUpperBoundDefined
  | DepositNoLowerBoundDefined
  | DepositDeadlineNotReached
  | IncorrectDepositHash
  | WrongHeadIdInDepositDatum
  deriving stock (Int -> DepositError -> ShowS
[DepositError] -> ShowS
DepositError -> String
(Int -> DepositError -> ShowS)
-> (DepositError -> String)
-> ([DepositError] -> ShowS)
-> Show DepositError
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DepositError -> ShowS
showsPrec :: Int -> DepositError -> ShowS
$cshow :: DepositError -> String
show :: DepositError -> String
$cshowList :: [DepositError] -> ShowS
showList :: [DepositError] -> ShowS
Show)

instance ToErrorCode DepositError where
  toErrorCode :: DepositError -> Text
toErrorCode = \case
    DepositError
DepositDeadlineSurpassed -> Text
"D01"
    DepositError
DepositNoUpperBoundDefined -> Text
"D02"
    DepositError
DepositNoLowerBoundDefined -> Text
"D03"
    DepositError
DepositDeadlineNotReached -> Text
"D04"
    DepositError
IncorrectDepositHash -> Text
"D05"
    DepositError
WrongHeadIdInDepositDatum -> Text
"D06"