{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.DeviceFarm.Types.DeviceAvailability
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DeviceFarm.Types.DeviceAvailability
  ( DeviceAvailability
      ( ..,
        DeviceAvailability_AVAILABLE,
        DeviceAvailability_BUSY,
        DeviceAvailability_HIGHLY_AVAILABLE,
        DeviceAvailability_TEMPORARY_NOT_AVAILABLE
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype DeviceAvailability = DeviceAvailability'
  { DeviceAvailability -> Text
fromDeviceAvailability ::
      Core.Text
  }
  deriving stock
    ( Int -> DeviceAvailability -> ShowS
[DeviceAvailability] -> ShowS
DeviceAvailability -> String
(Int -> DeviceAvailability -> ShowS)
-> (DeviceAvailability -> String)
-> ([DeviceAvailability] -> ShowS)
-> Show DeviceAvailability
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeviceAvailability] -> ShowS
$cshowList :: [DeviceAvailability] -> ShowS
show :: DeviceAvailability -> String
$cshow :: DeviceAvailability -> String
showsPrec :: Int -> DeviceAvailability -> ShowS
$cshowsPrec :: Int -> DeviceAvailability -> ShowS
Prelude.Show,
      ReadPrec [DeviceAvailability]
ReadPrec DeviceAvailability
Int -> ReadS DeviceAvailability
ReadS [DeviceAvailability]
(Int -> ReadS DeviceAvailability)
-> ReadS [DeviceAvailability]
-> ReadPrec DeviceAvailability
-> ReadPrec [DeviceAvailability]
-> Read DeviceAvailability
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeviceAvailability]
$creadListPrec :: ReadPrec [DeviceAvailability]
readPrec :: ReadPrec DeviceAvailability
$creadPrec :: ReadPrec DeviceAvailability
readList :: ReadS [DeviceAvailability]
$creadList :: ReadS [DeviceAvailability]
readsPrec :: Int -> ReadS DeviceAvailability
$creadsPrec :: Int -> ReadS DeviceAvailability
Prelude.Read,
      DeviceAvailability -> DeviceAvailability -> Bool
(DeviceAvailability -> DeviceAvailability -> Bool)
-> (DeviceAvailability -> DeviceAvailability -> Bool)
-> Eq DeviceAvailability
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeviceAvailability -> DeviceAvailability -> Bool
$c/= :: DeviceAvailability -> DeviceAvailability -> Bool
== :: DeviceAvailability -> DeviceAvailability -> Bool
$c== :: DeviceAvailability -> DeviceAvailability -> Bool
Prelude.Eq,
      Eq DeviceAvailability
Eq DeviceAvailability
-> (DeviceAvailability -> DeviceAvailability -> Ordering)
-> (DeviceAvailability -> DeviceAvailability -> Bool)
-> (DeviceAvailability -> DeviceAvailability -> Bool)
-> (DeviceAvailability -> DeviceAvailability -> Bool)
-> (DeviceAvailability -> DeviceAvailability -> Bool)
-> (DeviceAvailability -> DeviceAvailability -> DeviceAvailability)
-> (DeviceAvailability -> DeviceAvailability -> DeviceAvailability)
-> Ord DeviceAvailability
DeviceAvailability -> DeviceAvailability -> Bool
DeviceAvailability -> DeviceAvailability -> Ordering
DeviceAvailability -> DeviceAvailability -> DeviceAvailability
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: DeviceAvailability -> DeviceAvailability -> DeviceAvailability
$cmin :: DeviceAvailability -> DeviceAvailability -> DeviceAvailability
max :: DeviceAvailability -> DeviceAvailability -> DeviceAvailability
$cmax :: DeviceAvailability -> DeviceAvailability -> DeviceAvailability
>= :: DeviceAvailability -> DeviceAvailability -> Bool
$c>= :: DeviceAvailability -> DeviceAvailability -> Bool
> :: DeviceAvailability -> DeviceAvailability -> Bool
$c> :: DeviceAvailability -> DeviceAvailability -> Bool
<= :: DeviceAvailability -> DeviceAvailability -> Bool
$c<= :: DeviceAvailability -> DeviceAvailability -> Bool
< :: DeviceAvailability -> DeviceAvailability -> Bool
$c< :: DeviceAvailability -> DeviceAvailability -> Bool
compare :: DeviceAvailability -> DeviceAvailability -> Ordering
$ccompare :: DeviceAvailability -> DeviceAvailability -> Ordering
$cp1Ord :: Eq DeviceAvailability
Prelude.Ord,
      (forall x. DeviceAvailability -> Rep DeviceAvailability x)
-> (forall x. Rep DeviceAvailability x -> DeviceAvailability)
-> Generic DeviceAvailability
forall x. Rep DeviceAvailability x -> DeviceAvailability
forall x. DeviceAvailability -> Rep DeviceAvailability x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeviceAvailability x -> DeviceAvailability
$cfrom :: forall x. DeviceAvailability -> Rep DeviceAvailability x
Prelude.Generic
    )
  deriving newtype
    ( Int -> DeviceAvailability -> Int
DeviceAvailability -> Int
(Int -> DeviceAvailability -> Int)
-> (DeviceAvailability -> Int) -> Hashable DeviceAvailability
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: DeviceAvailability -> Int
$chash :: DeviceAvailability -> Int
hashWithSalt :: Int -> DeviceAvailability -> Int
$chashWithSalt :: Int -> DeviceAvailability -> Int
Prelude.Hashable,
      DeviceAvailability -> ()
(DeviceAvailability -> ()) -> NFData DeviceAvailability
forall a. (a -> ()) -> NFData a
rnf :: DeviceAvailability -> ()
$crnf :: DeviceAvailability -> ()
Prelude.NFData,
      Text -> Either String DeviceAvailability
(Text -> Either String DeviceAvailability)
-> FromText DeviceAvailability
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String DeviceAvailability
$cfromText :: Text -> Either String DeviceAvailability
Core.FromText,
      DeviceAvailability -> Text
(DeviceAvailability -> Text) -> ToText DeviceAvailability
forall a. (a -> Text) -> ToText a
toText :: DeviceAvailability -> Text
$ctoText :: DeviceAvailability -> Text
Core.ToText,
      DeviceAvailability -> ByteString
(DeviceAvailability -> ByteString)
-> ToByteString DeviceAvailability
forall a. (a -> ByteString) -> ToByteString a
toBS :: DeviceAvailability -> ByteString
$ctoBS :: DeviceAvailability -> ByteString
Core.ToByteString,
      DeviceAvailability -> ByteStringBuilder
(DeviceAvailability -> ByteStringBuilder)
-> ToLog DeviceAvailability
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: DeviceAvailability -> ByteStringBuilder
$cbuild :: DeviceAvailability -> ByteStringBuilder
Core.ToLog,
      HeaderName -> DeviceAvailability -> [Header]
(HeaderName -> DeviceAvailability -> [Header])
-> ToHeader DeviceAvailability
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> DeviceAvailability -> [Header]
$ctoHeader :: HeaderName -> DeviceAvailability -> [Header]
Core.ToHeader,
      DeviceAvailability -> QueryString
(DeviceAvailability -> QueryString) -> ToQuery DeviceAvailability
forall a. (a -> QueryString) -> ToQuery a
toQuery :: DeviceAvailability -> QueryString
$ctoQuery :: DeviceAvailability -> QueryString
Core.ToQuery,
      Value -> Parser [DeviceAvailability]
Value -> Parser DeviceAvailability
(Value -> Parser DeviceAvailability)
-> (Value -> Parser [DeviceAvailability])
-> FromJSON DeviceAvailability
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [DeviceAvailability]
$cparseJSONList :: Value -> Parser [DeviceAvailability]
parseJSON :: Value -> Parser DeviceAvailability
$cparseJSON :: Value -> Parser DeviceAvailability
Core.FromJSON,
      FromJSONKeyFunction [DeviceAvailability]
FromJSONKeyFunction DeviceAvailability
FromJSONKeyFunction DeviceAvailability
-> FromJSONKeyFunction [DeviceAvailability]
-> FromJSONKey DeviceAvailability
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [DeviceAvailability]
$cfromJSONKeyList :: FromJSONKeyFunction [DeviceAvailability]
fromJSONKey :: FromJSONKeyFunction DeviceAvailability
$cfromJSONKey :: FromJSONKeyFunction DeviceAvailability
Core.FromJSONKey,
      [DeviceAvailability] -> Encoding
[DeviceAvailability] -> Value
DeviceAvailability -> Encoding
DeviceAvailability -> Value
(DeviceAvailability -> Value)
-> (DeviceAvailability -> Encoding)
-> ([DeviceAvailability] -> Value)
-> ([DeviceAvailability] -> Encoding)
-> ToJSON DeviceAvailability
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [DeviceAvailability] -> Encoding
$ctoEncodingList :: [DeviceAvailability] -> Encoding
toJSONList :: [DeviceAvailability] -> Value
$ctoJSONList :: [DeviceAvailability] -> Value
toEncoding :: DeviceAvailability -> Encoding
$ctoEncoding :: DeviceAvailability -> Encoding
toJSON :: DeviceAvailability -> Value
$ctoJSON :: DeviceAvailability -> Value
Core.ToJSON,
      ToJSONKeyFunction [DeviceAvailability]
ToJSONKeyFunction DeviceAvailability
ToJSONKeyFunction DeviceAvailability
-> ToJSONKeyFunction [DeviceAvailability]
-> ToJSONKey DeviceAvailability
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [DeviceAvailability]
$ctoJSONKeyList :: ToJSONKeyFunction [DeviceAvailability]
toJSONKey :: ToJSONKeyFunction DeviceAvailability
$ctoJSONKey :: ToJSONKeyFunction DeviceAvailability
Core.ToJSONKey,
      [Node] -> Either String DeviceAvailability
([Node] -> Either String DeviceAvailability)
-> FromXML DeviceAvailability
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String DeviceAvailability
$cparseXML :: [Node] -> Either String DeviceAvailability
Core.FromXML,
      DeviceAvailability -> XML
(DeviceAvailability -> XML) -> ToXML DeviceAvailability
forall a. (a -> XML) -> ToXML a
toXML :: DeviceAvailability -> XML
$ctoXML :: DeviceAvailability -> XML
Core.ToXML
    )

pattern DeviceAvailability_AVAILABLE :: DeviceAvailability
pattern $bDeviceAvailability_AVAILABLE :: DeviceAvailability
$mDeviceAvailability_AVAILABLE :: forall r. DeviceAvailability -> (Void# -> r) -> (Void# -> r) -> r
DeviceAvailability_AVAILABLE = DeviceAvailability' "AVAILABLE"

pattern DeviceAvailability_BUSY :: DeviceAvailability
pattern $bDeviceAvailability_BUSY :: DeviceAvailability
$mDeviceAvailability_BUSY :: forall r. DeviceAvailability -> (Void# -> r) -> (Void# -> r) -> r
DeviceAvailability_BUSY = DeviceAvailability' "BUSY"

pattern DeviceAvailability_HIGHLY_AVAILABLE :: DeviceAvailability
pattern $bDeviceAvailability_HIGHLY_AVAILABLE :: DeviceAvailability
$mDeviceAvailability_HIGHLY_AVAILABLE :: forall r. DeviceAvailability -> (Void# -> r) -> (Void# -> r) -> r
DeviceAvailability_HIGHLY_AVAILABLE = DeviceAvailability' "HIGHLY_AVAILABLE"

pattern DeviceAvailability_TEMPORARY_NOT_AVAILABLE :: DeviceAvailability
pattern $bDeviceAvailability_TEMPORARY_NOT_AVAILABLE :: DeviceAvailability
$mDeviceAvailability_TEMPORARY_NOT_AVAILABLE :: forall r. DeviceAvailability -> (Void# -> r) -> (Void# -> r) -> r
DeviceAvailability_TEMPORARY_NOT_AVAILABLE = DeviceAvailability' "TEMPORARY_NOT_AVAILABLE"

{-# COMPLETE
  DeviceAvailability_AVAILABLE,
  DeviceAvailability_BUSY,
  DeviceAvailability_HIGHLY_AVAILABLE,
  DeviceAvailability_TEMPORARY_NOT_AVAILABLE,
  DeviceAvailability'
  #-}