{-# 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.SecurityLake.Types.Dimension
-- 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.SecurityLake.Types.Dimension
  ( Dimension
      ( ..,
        Dimension_MEMBER,
        Dimension_REGION,
        Dimension_SOURCE_TYPE
      ),
  )
where

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

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

pattern Dimension_MEMBER :: Dimension
pattern $bDimension_MEMBER :: Dimension
$mDimension_MEMBER :: forall {r}. Dimension -> ((# #) -> r) -> ((# #) -> r) -> r
Dimension_MEMBER = Dimension' "MEMBER"

pattern Dimension_REGION :: Dimension
pattern $bDimension_REGION :: Dimension
$mDimension_REGION :: forall {r}. Dimension -> ((# #) -> r) -> ((# #) -> r) -> r
Dimension_REGION = Dimension' "REGION"

pattern Dimension_SOURCE_TYPE :: Dimension
pattern $bDimension_SOURCE_TYPE :: Dimension
$mDimension_SOURCE_TYPE :: forall {r}. Dimension -> ((# #) -> r) -> ((# #) -> r) -> r
Dimension_SOURCE_TYPE = Dimension' "SOURCE_TYPE"

{-# COMPLETE
  Dimension_MEMBER,
  Dimension_REGION,
  Dimension_SOURCE_TYPE,
  Dimension'
  #-}