{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.PinpointSmsVoiceV2.DescribeSpendLimits
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the current Amazon Pinpoint monthly spend limits for sending
-- voice and text messages.
--
-- When you establish an Amazon Web Services account, the account has
-- initial monthly spend limit in a given Region. For more information on
-- increasing your monthly spend limit, see
-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-awssupport-spend-threshold.html Requesting increases to your monthly SMS spending quota for Amazon Pinpoint>
-- in the /Amazon Pinpoint User Guide/.
--
-- This operation returns paginated results.
module Amazonka.PinpointSmsVoiceV2.DescribeSpendLimits
  ( -- * Creating a Request
    DescribeSpendLimits (..),
    newDescribeSpendLimits,

    -- * Request Lenses
    describeSpendLimits_maxResults,
    describeSpendLimits_nextToken,

    -- * Destructuring the Response
    DescribeSpendLimitsResponse (..),
    newDescribeSpendLimitsResponse,

    -- * Response Lenses
    describeSpendLimitsResponse_nextToken,
    describeSpendLimitsResponse_spendLimits,
    describeSpendLimitsResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.PinpointSmsVoiceV2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeSpendLimits' smart constructor.
data DescribeSpendLimits = DescribeSpendLimits'
  { -- | The maximum number of results to return per each request.
    DescribeSpendLimits -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token to be used for the next set of paginated results. You don\'t
    -- need to supply a value for this field in the initial request.
    DescribeSpendLimits -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeSpendLimits -> DescribeSpendLimits -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSpendLimits -> DescribeSpendLimits -> Bool
$c/= :: DescribeSpendLimits -> DescribeSpendLimits -> Bool
== :: DescribeSpendLimits -> DescribeSpendLimits -> Bool
$c== :: DescribeSpendLimits -> DescribeSpendLimits -> Bool
Prelude.Eq, ReadPrec [DescribeSpendLimits]
ReadPrec DescribeSpendLimits
Int -> ReadS DescribeSpendLimits
ReadS [DescribeSpendLimits]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSpendLimits]
$creadListPrec :: ReadPrec [DescribeSpendLimits]
readPrec :: ReadPrec DescribeSpendLimits
$creadPrec :: ReadPrec DescribeSpendLimits
readList :: ReadS [DescribeSpendLimits]
$creadList :: ReadS [DescribeSpendLimits]
readsPrec :: Int -> ReadS DescribeSpendLimits
$creadsPrec :: Int -> ReadS DescribeSpendLimits
Prelude.Read, Int -> DescribeSpendLimits -> ShowS
[DescribeSpendLimits] -> ShowS
DescribeSpendLimits -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSpendLimits] -> ShowS
$cshowList :: [DescribeSpendLimits] -> ShowS
show :: DescribeSpendLimits -> String
$cshow :: DescribeSpendLimits -> String
showsPrec :: Int -> DescribeSpendLimits -> ShowS
$cshowsPrec :: Int -> DescribeSpendLimits -> ShowS
Prelude.Show, forall x. Rep DescribeSpendLimits x -> DescribeSpendLimits
forall x. DescribeSpendLimits -> Rep DescribeSpendLimits x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeSpendLimits x -> DescribeSpendLimits
$cfrom :: forall x. DescribeSpendLimits -> Rep DescribeSpendLimits x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSpendLimits' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'maxResults', 'describeSpendLimits_maxResults' - The maximum number of results to return per each request.
--
-- 'nextToken', 'describeSpendLimits_nextToken' - The token to be used for the next set of paginated results. You don\'t
-- need to supply a value for this field in the initial request.
newDescribeSpendLimits ::
  DescribeSpendLimits
newDescribeSpendLimits :: DescribeSpendLimits
newDescribeSpendLimits =
  DescribeSpendLimits'
    { $sel:maxResults:DescribeSpendLimits' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeSpendLimits' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The maximum number of results to return per each request.
describeSpendLimits_maxResults :: Lens.Lens' DescribeSpendLimits (Prelude.Maybe Prelude.Natural)
describeSpendLimits_maxResults :: Lens' DescribeSpendLimits (Maybe Natural)
describeSpendLimits_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpendLimits' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeSpendLimits
s@DescribeSpendLimits' {} Maybe Natural
a -> DescribeSpendLimits
s {$sel:maxResults:DescribeSpendLimits' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeSpendLimits)

-- | The token to be used for the next set of paginated results. You don\'t
-- need to supply a value for this field in the initial request.
describeSpendLimits_nextToken :: Lens.Lens' DescribeSpendLimits (Prelude.Maybe Prelude.Text)
describeSpendLimits_nextToken :: Lens' DescribeSpendLimits (Maybe Text)
describeSpendLimits_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpendLimits' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSpendLimits
s@DescribeSpendLimits' {} Maybe Text
a -> DescribeSpendLimits
s {$sel:nextToken:DescribeSpendLimits' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSpendLimits)

instance Core.AWSPager DescribeSpendLimits where
  page :: DescribeSpendLimits
-> AWSResponse DescribeSpendLimits -> Maybe DescribeSpendLimits
page DescribeSpendLimits
rq AWSResponse DescribeSpendLimits
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeSpendLimits
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSpendLimitsResponse (Maybe Text)
describeSpendLimitsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeSpendLimits
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSpendLimitsResponse (Maybe [SpendLimit])
describeSpendLimitsResponse_spendLimits
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeSpendLimits
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeSpendLimits (Maybe Text)
describeSpendLimits_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeSpendLimits
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeSpendLimitsResponse (Maybe Text)
describeSpendLimitsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeSpendLimits where
  type
    AWSResponse DescribeSpendLimits =
      DescribeSpendLimitsResponse
  request :: (Service -> Service)
-> DescribeSpendLimits -> Request DescribeSpendLimits
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSpendLimits
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeSpendLimits)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe [SpendLimit] -> Int -> DescribeSpendLimitsResponse
DescribeSpendLimitsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"NextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SpendLimits" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeSpendLimits where
  hashWithSalt :: Int -> DescribeSpendLimits -> Int
hashWithSalt Int
_salt DescribeSpendLimits' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Text
$sel:maxResults:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken

instance Prelude.NFData DescribeSpendLimits where
  rnf :: DescribeSpendLimits -> ()
rnf DescribeSpendLimits' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Text
$sel:maxResults:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken

instance Data.ToHeaders DescribeSpendLimits where
  toHeaders :: DescribeSpendLimits -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"PinpointSMSVoiceV2.DescribeSpendLimits" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeSpendLimits where
  toJSON :: DescribeSpendLimits -> Value
toJSON DescribeSpendLimits' {Maybe Natural
Maybe Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:nextToken:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Text
$sel:maxResults:DescribeSpendLimits' :: DescribeSpendLimits -> Maybe Natural
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"MaxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
maxResults,
            (Key
"NextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken
          ]
      )

instance Data.ToPath DescribeSpendLimits where
  toPath :: DescribeSpendLimits -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeSpendLimits where
  toQuery :: DescribeSpendLimits -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeSpendLimitsResponse' smart constructor.
data DescribeSpendLimitsResponse = DescribeSpendLimitsResponse'
  { -- | The token to be used for the next set of paginated results. If this
    -- field is empty then there are no more results.
    DescribeSpendLimitsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | An array of SpendLimit objects that contain the details for the
    -- requested spend limits.
    DescribeSpendLimitsResponse -> Maybe [SpendLimit]
spendLimits :: Prelude.Maybe [SpendLimit],
    -- | The response's http status code.
    DescribeSpendLimitsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSpendLimitsResponse -> DescribeSpendLimitsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSpendLimitsResponse -> DescribeSpendLimitsResponse -> Bool
$c/= :: DescribeSpendLimitsResponse -> DescribeSpendLimitsResponse -> Bool
== :: DescribeSpendLimitsResponse -> DescribeSpendLimitsResponse -> Bool
$c== :: DescribeSpendLimitsResponse -> DescribeSpendLimitsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSpendLimitsResponse]
ReadPrec DescribeSpendLimitsResponse
Int -> ReadS DescribeSpendLimitsResponse
ReadS [DescribeSpendLimitsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSpendLimitsResponse]
$creadListPrec :: ReadPrec [DescribeSpendLimitsResponse]
readPrec :: ReadPrec DescribeSpendLimitsResponse
$creadPrec :: ReadPrec DescribeSpendLimitsResponse
readList :: ReadS [DescribeSpendLimitsResponse]
$creadList :: ReadS [DescribeSpendLimitsResponse]
readsPrec :: Int -> ReadS DescribeSpendLimitsResponse
$creadsPrec :: Int -> ReadS DescribeSpendLimitsResponse
Prelude.Read, Int -> DescribeSpendLimitsResponse -> ShowS
[DescribeSpendLimitsResponse] -> ShowS
DescribeSpendLimitsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSpendLimitsResponse] -> ShowS
$cshowList :: [DescribeSpendLimitsResponse] -> ShowS
show :: DescribeSpendLimitsResponse -> String
$cshow :: DescribeSpendLimitsResponse -> String
showsPrec :: Int -> DescribeSpendLimitsResponse -> ShowS
$cshowsPrec :: Int -> DescribeSpendLimitsResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSpendLimitsResponse x -> DescribeSpendLimitsResponse
forall x.
DescribeSpendLimitsResponse -> Rep DescribeSpendLimitsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSpendLimitsResponse x -> DescribeSpendLimitsResponse
$cfrom :: forall x.
DescribeSpendLimitsResponse -> Rep DescribeSpendLimitsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSpendLimitsResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'nextToken', 'describeSpendLimitsResponse_nextToken' - The token to be used for the next set of paginated results. If this
-- field is empty then there are no more results.
--
-- 'spendLimits', 'describeSpendLimitsResponse_spendLimits' - An array of SpendLimit objects that contain the details for the
-- requested spend limits.
--
-- 'httpStatus', 'describeSpendLimitsResponse_httpStatus' - The response's http status code.
newDescribeSpendLimitsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSpendLimitsResponse
newDescribeSpendLimitsResponse :: Int -> DescribeSpendLimitsResponse
newDescribeSpendLimitsResponse Int
pHttpStatus_ =
  DescribeSpendLimitsResponse'
    { $sel:nextToken:DescribeSpendLimitsResponse' :: Maybe Text
nextToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:spendLimits:DescribeSpendLimitsResponse' :: Maybe [SpendLimit]
spendLimits = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeSpendLimitsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The token to be used for the next set of paginated results. If this
-- field is empty then there are no more results.
describeSpendLimitsResponse_nextToken :: Lens.Lens' DescribeSpendLimitsResponse (Prelude.Maybe Prelude.Text)
describeSpendLimitsResponse_nextToken :: Lens' DescribeSpendLimitsResponse (Maybe Text)
describeSpendLimitsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpendLimitsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSpendLimitsResponse
s@DescribeSpendLimitsResponse' {} Maybe Text
a -> DescribeSpendLimitsResponse
s {$sel:nextToken:DescribeSpendLimitsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSpendLimitsResponse)

-- | An array of SpendLimit objects that contain the details for the
-- requested spend limits.
describeSpendLimitsResponse_spendLimits :: Lens.Lens' DescribeSpendLimitsResponse (Prelude.Maybe [SpendLimit])
describeSpendLimitsResponse_spendLimits :: Lens' DescribeSpendLimitsResponse (Maybe [SpendLimit])
describeSpendLimitsResponse_spendLimits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpendLimitsResponse' {Maybe [SpendLimit]
spendLimits :: Maybe [SpendLimit]
$sel:spendLimits:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Maybe [SpendLimit]
spendLimits} -> Maybe [SpendLimit]
spendLimits) (\s :: DescribeSpendLimitsResponse
s@DescribeSpendLimitsResponse' {} Maybe [SpendLimit]
a -> DescribeSpendLimitsResponse
s {$sel:spendLimits:DescribeSpendLimitsResponse' :: Maybe [SpendLimit]
spendLimits = Maybe [SpendLimit]
a} :: DescribeSpendLimitsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
describeSpendLimitsResponse_httpStatus :: Lens.Lens' DescribeSpendLimitsResponse Prelude.Int
describeSpendLimitsResponse_httpStatus :: Lens' DescribeSpendLimitsResponse Int
describeSpendLimitsResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpendLimitsResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSpendLimitsResponse
s@DescribeSpendLimitsResponse' {} Int
a -> DescribeSpendLimitsResponse
s {$sel:httpStatus:DescribeSpendLimitsResponse' :: Int
httpStatus = Int
a} :: DescribeSpendLimitsResponse)

instance Prelude.NFData DescribeSpendLimitsResponse where
  rnf :: DescribeSpendLimitsResponse -> ()
rnf DescribeSpendLimitsResponse' {Int
Maybe [SpendLimit]
Maybe Text
httpStatus :: Int
spendLimits :: Maybe [SpendLimit]
nextToken :: Maybe Text
$sel:httpStatus:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Int
$sel:spendLimits:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Maybe [SpendLimit]
$sel:nextToken:DescribeSpendLimitsResponse' :: DescribeSpendLimitsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SpendLimit]
spendLimits
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus