{-# 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.OfferingTransactionType
-- 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.OfferingTransactionType
  ( OfferingTransactionType
      ( ..,
        OfferingTransactionType_PURCHASE,
        OfferingTransactionType_RENEW,
        OfferingTransactionType_SYSTEM
      ),
  )
where

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

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

pattern OfferingTransactionType_PURCHASE :: OfferingTransactionType
pattern $bOfferingTransactionType_PURCHASE :: OfferingTransactionType
$mOfferingTransactionType_PURCHASE :: forall r.
OfferingTransactionType -> (Void# -> r) -> (Void# -> r) -> r
OfferingTransactionType_PURCHASE = OfferingTransactionType' "PURCHASE"

pattern OfferingTransactionType_RENEW :: OfferingTransactionType
pattern $bOfferingTransactionType_RENEW :: OfferingTransactionType
$mOfferingTransactionType_RENEW :: forall r.
OfferingTransactionType -> (Void# -> r) -> (Void# -> r) -> r
OfferingTransactionType_RENEW = OfferingTransactionType' "RENEW"

pattern OfferingTransactionType_SYSTEM :: OfferingTransactionType
pattern $bOfferingTransactionType_SYSTEM :: OfferingTransactionType
$mOfferingTransactionType_SYSTEM :: forall r.
OfferingTransactionType -> (Void# -> r) -> (Void# -> r) -> r
OfferingTransactionType_SYSTEM = OfferingTransactionType' "SYSTEM"

{-# COMPLETE
  OfferingTransactionType_PURCHASE,
  OfferingTransactionType_RENEW,
  OfferingTransactionType_SYSTEM,
  OfferingTransactionType'
  #-}