{-# 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.Lightsail.Types.ContainerServicePowerName
-- 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.Lightsail.Types.ContainerServicePowerName
  ( ContainerServicePowerName
      ( ..,
        ContainerServicePowerName_Large,
        ContainerServicePowerName_Medium,
        ContainerServicePowerName_Micro,
        ContainerServicePowerName_Nano,
        ContainerServicePowerName_Small,
        ContainerServicePowerName_Xlarge
      ),
  )
where

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

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

pattern ContainerServicePowerName_Large :: ContainerServicePowerName
pattern $bContainerServicePowerName_Large :: ContainerServicePowerName
$mContainerServicePowerName_Large :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Large = ContainerServicePowerName' "large"

pattern ContainerServicePowerName_Medium :: ContainerServicePowerName
pattern $bContainerServicePowerName_Medium :: ContainerServicePowerName
$mContainerServicePowerName_Medium :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Medium = ContainerServicePowerName' "medium"

pattern ContainerServicePowerName_Micro :: ContainerServicePowerName
pattern $bContainerServicePowerName_Micro :: ContainerServicePowerName
$mContainerServicePowerName_Micro :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Micro = ContainerServicePowerName' "micro"

pattern ContainerServicePowerName_Nano :: ContainerServicePowerName
pattern $bContainerServicePowerName_Nano :: ContainerServicePowerName
$mContainerServicePowerName_Nano :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Nano = ContainerServicePowerName' "nano"

pattern ContainerServicePowerName_Small :: ContainerServicePowerName
pattern $bContainerServicePowerName_Small :: ContainerServicePowerName
$mContainerServicePowerName_Small :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Small = ContainerServicePowerName' "small"

pattern ContainerServicePowerName_Xlarge :: ContainerServicePowerName
pattern $bContainerServicePowerName_Xlarge :: ContainerServicePowerName
$mContainerServicePowerName_Xlarge :: forall r.
ContainerServicePowerName -> (Void# -> r) -> (Void# -> r) -> r
ContainerServicePowerName_Xlarge = ContainerServicePowerName' "xlarge"

{-# COMPLETE
  ContainerServicePowerName_Large,
  ContainerServicePowerName_Medium,
  ContainerServicePowerName_Micro,
  ContainerServicePowerName_Nano,
  ContainerServicePowerName_Small,
  ContainerServicePowerName_Xlarge,
  ContainerServicePowerName'
  #-}