{-# 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.CodeGuruProfiler.Types.AggregationPeriod
-- 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.CodeGuruProfiler.Types.AggregationPeriod
  ( AggregationPeriod
      ( ..,
        AggregationPeriod_P1D,
        AggregationPeriod_PT1H,
        AggregationPeriod_PT5M
      ),
  )
where

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

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

pattern AggregationPeriod_P1D :: AggregationPeriod
pattern $bAggregationPeriod_P1D :: AggregationPeriod
$mAggregationPeriod_P1D :: forall r. AggregationPeriod -> (Void# -> r) -> (Void# -> r) -> r
AggregationPeriod_P1D = AggregationPeriod' "P1D"

pattern AggregationPeriod_PT1H :: AggregationPeriod
pattern $bAggregationPeriod_PT1H :: AggregationPeriod
$mAggregationPeriod_PT1H :: forall r. AggregationPeriod -> (Void# -> r) -> (Void# -> r) -> r
AggregationPeriod_PT1H = AggregationPeriod' "PT1H"

pattern AggregationPeriod_PT5M :: AggregationPeriod
pattern $bAggregationPeriod_PT5M :: AggregationPeriod
$mAggregationPeriod_PT5M :: forall r. AggregationPeriod -> (Void# -> r) -> (Void# -> r) -> r
AggregationPeriod_PT5M = AggregationPeriod' "PT5M"

{-# COMPLETE
  AggregationPeriod_P1D,
  AggregationPeriod_PT1H,
  AggregationPeriod_PT5M,
  AggregationPeriod'
  #-}