{-# 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.EC2.Types.CapacityReservationPreference
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EC2.Types.CapacityReservationPreference
  ( CapacityReservationPreference
      ( ..,
        CapacityReservationPreference_None,
        CapacityReservationPreference_Open
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import qualified Amazonka.Prelude as Prelude

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

pattern CapacityReservationPreference_None :: CapacityReservationPreference
pattern $bCapacityReservationPreference_None :: CapacityReservationPreference
$mCapacityReservationPreference_None :: forall {r}.
CapacityReservationPreference -> ((# #) -> r) -> ((# #) -> r) -> r
CapacityReservationPreference_None = CapacityReservationPreference' "none"

pattern CapacityReservationPreference_Open :: CapacityReservationPreference
pattern $bCapacityReservationPreference_Open :: CapacityReservationPreference
$mCapacityReservationPreference_Open :: forall {r}.
CapacityReservationPreference -> ((# #) -> r) -> ((# #) -> r) -> r
CapacityReservationPreference_Open = CapacityReservationPreference' "open"

{-# COMPLETE
  CapacityReservationPreference_None,
  CapacityReservationPreference_Open,
  CapacityReservationPreference'
  #-}