{-# 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.CostAndUsageReport.Types.AWSRegion
-- 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.CostAndUsageReport.Types.AWSRegion
  ( AWSRegion
      ( ..,
        AWSRegion_Af_south_1,
        AWSRegion_Ap_east_1,
        AWSRegion_Ap_northeast_1,
        AWSRegion_Ap_northeast_2,
        AWSRegion_Ap_northeast_3,
        AWSRegion_Ap_south_1,
        AWSRegion_Ap_southeast_1,
        AWSRegion_Ap_southeast_2,
        AWSRegion_Ca_central_1,
        AWSRegion_Cn_north_1,
        AWSRegion_Cn_northwest_1,
        AWSRegion_Eu_central_1,
        AWSRegion_Eu_north_1,
        AWSRegion_Eu_south_1,
        AWSRegion_Eu_west_1,
        AWSRegion_Eu_west_2,
        AWSRegion_Eu_west_3,
        AWSRegion_Me_south_1,
        AWSRegion_Sa_east_1,
        AWSRegion_Us_east_1,
        AWSRegion_Us_east_2,
        AWSRegion_Us_west_1,
        AWSRegion_Us_west_2
      ),
  )
where

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

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

pattern AWSRegion_Af_south_1 :: AWSRegion
pattern $bAWSRegion_Af_south_1 :: AWSRegion
$mAWSRegion_Af_south_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Af_south_1 = AWSRegion' "af-south-1"

pattern AWSRegion_Ap_east_1 :: AWSRegion
pattern $bAWSRegion_Ap_east_1 :: AWSRegion
$mAWSRegion_Ap_east_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_east_1 = AWSRegion' "ap-east-1"

pattern AWSRegion_Ap_northeast_1 :: AWSRegion
pattern $bAWSRegion_Ap_northeast_1 :: AWSRegion
$mAWSRegion_Ap_northeast_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_northeast_1 = AWSRegion' "ap-northeast-1"

pattern AWSRegion_Ap_northeast_2 :: AWSRegion
pattern $bAWSRegion_Ap_northeast_2 :: AWSRegion
$mAWSRegion_Ap_northeast_2 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_northeast_2 = AWSRegion' "ap-northeast-2"

pattern AWSRegion_Ap_northeast_3 :: AWSRegion
pattern $bAWSRegion_Ap_northeast_3 :: AWSRegion
$mAWSRegion_Ap_northeast_3 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_northeast_3 = AWSRegion' "ap-northeast-3"

pattern AWSRegion_Ap_south_1 :: AWSRegion
pattern $bAWSRegion_Ap_south_1 :: AWSRegion
$mAWSRegion_Ap_south_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_south_1 = AWSRegion' "ap-south-1"

pattern AWSRegion_Ap_southeast_1 :: AWSRegion
pattern $bAWSRegion_Ap_southeast_1 :: AWSRegion
$mAWSRegion_Ap_southeast_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_southeast_1 = AWSRegion' "ap-southeast-1"

pattern AWSRegion_Ap_southeast_2 :: AWSRegion
pattern $bAWSRegion_Ap_southeast_2 :: AWSRegion
$mAWSRegion_Ap_southeast_2 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ap_southeast_2 = AWSRegion' "ap-southeast-2"

pattern AWSRegion_Ca_central_1 :: AWSRegion
pattern $bAWSRegion_Ca_central_1 :: AWSRegion
$mAWSRegion_Ca_central_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Ca_central_1 = AWSRegion' "ca-central-1"

pattern AWSRegion_Cn_north_1 :: AWSRegion
pattern $bAWSRegion_Cn_north_1 :: AWSRegion
$mAWSRegion_Cn_north_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Cn_north_1 = AWSRegion' "cn-north-1"

pattern AWSRegion_Cn_northwest_1 :: AWSRegion
pattern $bAWSRegion_Cn_northwest_1 :: AWSRegion
$mAWSRegion_Cn_northwest_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Cn_northwest_1 = AWSRegion' "cn-northwest-1"

pattern AWSRegion_Eu_central_1 :: AWSRegion
pattern $bAWSRegion_Eu_central_1 :: AWSRegion
$mAWSRegion_Eu_central_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_central_1 = AWSRegion' "eu-central-1"

pattern AWSRegion_Eu_north_1 :: AWSRegion
pattern $bAWSRegion_Eu_north_1 :: AWSRegion
$mAWSRegion_Eu_north_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_north_1 = AWSRegion' "eu-north-1"

pattern AWSRegion_Eu_south_1 :: AWSRegion
pattern $bAWSRegion_Eu_south_1 :: AWSRegion
$mAWSRegion_Eu_south_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_south_1 = AWSRegion' "eu-south-1"

pattern AWSRegion_Eu_west_1 :: AWSRegion
pattern $bAWSRegion_Eu_west_1 :: AWSRegion
$mAWSRegion_Eu_west_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_west_1 = AWSRegion' "eu-west-1"

pattern AWSRegion_Eu_west_2 :: AWSRegion
pattern $bAWSRegion_Eu_west_2 :: AWSRegion
$mAWSRegion_Eu_west_2 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_west_2 = AWSRegion' "eu-west-2"

pattern AWSRegion_Eu_west_3 :: AWSRegion
pattern $bAWSRegion_Eu_west_3 :: AWSRegion
$mAWSRegion_Eu_west_3 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Eu_west_3 = AWSRegion' "eu-west-3"

pattern AWSRegion_Me_south_1 :: AWSRegion
pattern $bAWSRegion_Me_south_1 :: AWSRegion
$mAWSRegion_Me_south_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Me_south_1 = AWSRegion' "me-south-1"

pattern AWSRegion_Sa_east_1 :: AWSRegion
pattern $bAWSRegion_Sa_east_1 :: AWSRegion
$mAWSRegion_Sa_east_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Sa_east_1 = AWSRegion' "sa-east-1"

pattern AWSRegion_Us_east_1 :: AWSRegion
pattern $bAWSRegion_Us_east_1 :: AWSRegion
$mAWSRegion_Us_east_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Us_east_1 = AWSRegion' "us-east-1"

pattern AWSRegion_Us_east_2 :: AWSRegion
pattern $bAWSRegion_Us_east_2 :: AWSRegion
$mAWSRegion_Us_east_2 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Us_east_2 = AWSRegion' "us-east-2"

pattern AWSRegion_Us_west_1 :: AWSRegion
pattern $bAWSRegion_Us_west_1 :: AWSRegion
$mAWSRegion_Us_west_1 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Us_west_1 = AWSRegion' "us-west-1"

pattern AWSRegion_Us_west_2 :: AWSRegion
pattern $bAWSRegion_Us_west_2 :: AWSRegion
$mAWSRegion_Us_west_2 :: forall r. AWSRegion -> (Void# -> r) -> (Void# -> r) -> r
AWSRegion_Us_west_2 = AWSRegion' "us-west-2"

{-# COMPLETE
  AWSRegion_Af_south_1,
  AWSRegion_Ap_east_1,
  AWSRegion_Ap_northeast_1,
  AWSRegion_Ap_northeast_2,
  AWSRegion_Ap_northeast_3,
  AWSRegion_Ap_south_1,
  AWSRegion_Ap_southeast_1,
  AWSRegion_Ap_southeast_2,
  AWSRegion_Ca_central_1,
  AWSRegion_Cn_north_1,
  AWSRegion_Cn_northwest_1,
  AWSRegion_Eu_central_1,
  AWSRegion_Eu_north_1,
  AWSRegion_Eu_south_1,
  AWSRegion_Eu_west_1,
  AWSRegion_Eu_west_2,
  AWSRegion_Eu_west_3,
  AWSRegion_Me_south_1,
  AWSRegion_Sa_east_1,
  AWSRegion_Us_east_1,
  AWSRegion_Us_east_2,
  AWSRegion_Us_west_1,
  AWSRegion_Us_west_2,
  AWSRegion'
  #-}