module Network.AWS.CloudHSM.Types.Sum where
import Network.AWS.Prelude
data ClientVersion
  = VD5_1
  | VD5_3
  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
instance FromText ClientVersion where
    parser = takeLowerText >>= \case
        "5.1" -> pure VD5_1
        "5.3" -> pure VD5_3
        e -> fromTextError $ "Failure parsing ClientVersion from value: '" <> e
           <> "'. Accepted values: 5.1, 5.3"
instance ToText ClientVersion where
    toText = \case
        VD5_1 -> "5.1"
        VD5_3 -> "5.3"
instance Hashable     ClientVersion
instance NFData       ClientVersion
instance ToByteString ClientVersion
instance ToQuery      ClientVersion
instance ToHeader     ClientVersion
instance ToJSON ClientVersion where
    toJSON = toJSONText
data CloudHSMObjectState
  = Degraded
  | Ready
  | Updating
  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
instance FromText CloudHSMObjectState where
    parser = takeLowerText >>= \case
        "degraded" -> pure Degraded
        "ready" -> pure Ready
        "updating" -> pure Updating
        e -> fromTextError $ "Failure parsing CloudHSMObjectState from value: '" <> e
           <> "'. Accepted values: degraded, ready, updating"
instance ToText CloudHSMObjectState where
    toText = \case
        Degraded -> "DEGRADED"
        Ready -> "READY"
        Updating -> "UPDATING"
instance Hashable     CloudHSMObjectState
instance NFData       CloudHSMObjectState
instance ToByteString CloudHSMObjectState
instance ToQuery      CloudHSMObjectState
instance ToHeader     CloudHSMObjectState
instance FromJSON CloudHSMObjectState where
    parseJSON = parseJSONText "CloudHSMObjectState"
data HSMStatus
  = HSDegraded
  | HSPending
  | HSRunning
  | HSSuspended
  | HSTerminated
  | HSTerminating
  | HSUpdating
  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
instance FromText HSMStatus where
    parser = takeLowerText >>= \case
        "degraded" -> pure HSDegraded
        "pending" -> pure HSPending
        "running" -> pure HSRunning
        "suspended" -> pure HSSuspended
        "terminated" -> pure HSTerminated
        "terminating" -> pure HSTerminating
        "updating" -> pure HSUpdating
        e -> fromTextError $ "Failure parsing HSMStatus from value: '" <> e
           <> "'. Accepted values: degraded, pending, running, suspended, terminated, terminating, updating"
instance ToText HSMStatus where
    toText = \case
        HSDegraded -> "DEGRADED"
        HSPending -> "PENDING"
        HSRunning -> "RUNNING"
        HSSuspended -> "SUSPENDED"
        HSTerminated -> "TERMINATED"
        HSTerminating -> "TERMINATING"
        HSUpdating -> "UPDATING"
instance Hashable     HSMStatus
instance NFData       HSMStatus
instance ToByteString HSMStatus
instance ToQuery      HSMStatus
instance ToHeader     HSMStatus
instance FromJSON HSMStatus where
    parseJSON = parseJSONText "HSMStatus"
data SubscriptionType =
  Production
  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
instance FromText SubscriptionType where
    parser = takeLowerText >>= \case
        "production" -> pure Production
        e -> fromTextError $ "Failure parsing SubscriptionType from value: '" <> e
           <> "'. Accepted values: production"
instance ToText SubscriptionType where
    toText = \case
        Production -> "PRODUCTION"
instance Hashable     SubscriptionType
instance NFData       SubscriptionType
instance ToByteString SubscriptionType
instance ToQuery      SubscriptionType
instance ToHeader     SubscriptionType
instance ToJSON SubscriptionType where
    toJSON = toJSONText
instance FromJSON SubscriptionType where
    parseJSON = parseJSONText "SubscriptionType"