{-# 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.Budgets.DescribeBudgets
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Lists the budgets that are associated with an account.
--
-- The Request Syntax section shows the @BudgetLimit@ syntax. For
-- @PlannedBudgetLimits@, see the
-- <https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_budgets_DescribeBudgets.html#API_DescribeBudgets_Examples Examples>
-- section.
--
-- This operation returns paginated results.
module Amazonka.Budgets.DescribeBudgets
  ( -- * Creating a Request
    DescribeBudgets (..),
    newDescribeBudgets,

    -- * Request Lenses
    describeBudgets_maxResults,
    describeBudgets_nextToken,
    describeBudgets_accountId,

    -- * Destructuring the Response
    DescribeBudgetsResponse (..),
    newDescribeBudgetsResponse,

    -- * Response Lenses
    describeBudgetsResponse_budgets,
    describeBudgetsResponse_nextToken,
    describeBudgetsResponse_httpStatus,
  )
where

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

-- | Request of DescribeBudgets
--
-- /See:/ 'newDescribeBudgets' smart constructor.
data DescribeBudgets = DescribeBudgets'
  { -- | An optional integer that represents how many entries a paginated
    -- response contains. The maximum is 100.
    DescribeBudgets -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The pagination token that you include in your request to indicate the
    -- next set of results that you want to retrieve.
    DescribeBudgets -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The @accountId@ that is associated with the budgets that you want
    -- descriptions of.
    DescribeBudgets -> Text
accountId :: Prelude.Text
  }
  deriving (DescribeBudgets -> DescribeBudgets -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBudgets -> DescribeBudgets -> Bool
$c/= :: DescribeBudgets -> DescribeBudgets -> Bool
== :: DescribeBudgets -> DescribeBudgets -> Bool
$c== :: DescribeBudgets -> DescribeBudgets -> Bool
Prelude.Eq, ReadPrec [DescribeBudgets]
ReadPrec DescribeBudgets
Int -> ReadS DescribeBudgets
ReadS [DescribeBudgets]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBudgets]
$creadListPrec :: ReadPrec [DescribeBudgets]
readPrec :: ReadPrec DescribeBudgets
$creadPrec :: ReadPrec DescribeBudgets
readList :: ReadS [DescribeBudgets]
$creadList :: ReadS [DescribeBudgets]
readsPrec :: Int -> ReadS DescribeBudgets
$creadsPrec :: Int -> ReadS DescribeBudgets
Prelude.Read, Int -> DescribeBudgets -> ShowS
[DescribeBudgets] -> ShowS
DescribeBudgets -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBudgets] -> ShowS
$cshowList :: [DescribeBudgets] -> ShowS
show :: DescribeBudgets -> String
$cshow :: DescribeBudgets -> String
showsPrec :: Int -> DescribeBudgets -> ShowS
$cshowsPrec :: Int -> DescribeBudgets -> ShowS
Prelude.Show, forall x. Rep DescribeBudgets x -> DescribeBudgets
forall x. DescribeBudgets -> Rep DescribeBudgets x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBudgets x -> DescribeBudgets
$cfrom :: forall x. DescribeBudgets -> Rep DescribeBudgets x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBudgets' 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', 'describeBudgets_maxResults' - An optional integer that represents how many entries a paginated
-- response contains. The maximum is 100.
--
-- 'nextToken', 'describeBudgets_nextToken' - The pagination token that you include in your request to indicate the
-- next set of results that you want to retrieve.
--
-- 'accountId', 'describeBudgets_accountId' - The @accountId@ that is associated with the budgets that you want
-- descriptions of.
newDescribeBudgets ::
  -- | 'accountId'
  Prelude.Text ->
  DescribeBudgets
newDescribeBudgets :: Text -> DescribeBudgets
newDescribeBudgets Text
pAccountId_ =
  DescribeBudgets'
    { $sel:maxResults:DescribeBudgets' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeBudgets' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:accountId:DescribeBudgets' :: Text
accountId = Text
pAccountId_
    }

-- | An optional integer that represents how many entries a paginated
-- response contains. The maximum is 100.
describeBudgets_maxResults :: Lens.Lens' DescribeBudgets (Prelude.Maybe Prelude.Natural)
describeBudgets_maxResults :: Lens' DescribeBudgets (Maybe Natural)
describeBudgets_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBudgets' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeBudgets' :: DescribeBudgets -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeBudgets
s@DescribeBudgets' {} Maybe Natural
a -> DescribeBudgets
s {$sel:maxResults:DescribeBudgets' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeBudgets)

-- | The pagination token that you include in your request to indicate the
-- next set of results that you want to retrieve.
describeBudgets_nextToken :: Lens.Lens' DescribeBudgets (Prelude.Maybe Prelude.Text)
describeBudgets_nextToken :: Lens' DescribeBudgets (Maybe Text)
describeBudgets_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBudgets' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeBudgets' :: DescribeBudgets -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeBudgets
s@DescribeBudgets' {} Maybe Text
a -> DescribeBudgets
s {$sel:nextToken:DescribeBudgets' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeBudgets)

-- | The @accountId@ that is associated with the budgets that you want
-- descriptions of.
describeBudgets_accountId :: Lens.Lens' DescribeBudgets Prelude.Text
describeBudgets_accountId :: Lens' DescribeBudgets Text
describeBudgets_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBudgets' {Text
accountId :: Text
$sel:accountId:DescribeBudgets' :: DescribeBudgets -> Text
accountId} -> Text
accountId) (\s :: DescribeBudgets
s@DescribeBudgets' {} Text
a -> DescribeBudgets
s {$sel:accountId:DescribeBudgets' :: Text
accountId = Text
a} :: DescribeBudgets)

instance Core.AWSPager DescribeBudgets where
  page :: DescribeBudgets
-> AWSResponse DescribeBudgets -> Maybe DescribeBudgets
page DescribeBudgets
rq AWSResponse DescribeBudgets
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeBudgets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBudgetsResponse (Maybe Text)
describeBudgetsResponse_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 DescribeBudgets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBudgetsResponse (Maybe [Budget])
describeBudgetsResponse_budgets
            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.$ DescribeBudgets
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeBudgets (Maybe Text)
describeBudgets_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeBudgets
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBudgetsResponse (Maybe Text)
describeBudgetsResponse_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 DescribeBudgets where
  type
    AWSResponse DescribeBudgets =
      DescribeBudgetsResponse
  request :: (Service -> Service) -> DescribeBudgets -> Request DescribeBudgets
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 DescribeBudgets
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeBudgets)))
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 [Budget] -> Maybe Text -> Int -> DescribeBudgetsResponse
DescribeBudgetsResponse'
            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
"Budgets" 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.<*> (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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeBudgets where
  hashWithSalt :: Int -> DescribeBudgets -> Int
hashWithSalt Int
_salt DescribeBudgets' {Maybe Natural
Maybe Text
Text
accountId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:accountId:DescribeBudgets' :: DescribeBudgets -> Text
$sel:nextToken:DescribeBudgets' :: DescribeBudgets -> Maybe Text
$sel:maxResults:DescribeBudgets' :: DescribeBudgets -> 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
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
accountId

instance Prelude.NFData DescribeBudgets where
  rnf :: DescribeBudgets -> ()
rnf DescribeBudgets' {Maybe Natural
Maybe Text
Text
accountId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:accountId:DescribeBudgets' :: DescribeBudgets -> Text
$sel:nextToken:DescribeBudgets' :: DescribeBudgets -> Maybe Text
$sel:maxResults:DescribeBudgets' :: DescribeBudgets -> 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
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
accountId

instance Data.ToHeaders DescribeBudgets where
  toHeaders :: DescribeBudgets -> 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
"AWSBudgetServiceGateway.DescribeBudgets" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeBudgets where
  toJSON :: DescribeBudgets -> Value
toJSON DescribeBudgets' {Maybe Natural
Maybe Text
Text
accountId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
$sel:accountId:DescribeBudgets' :: DescribeBudgets -> Text
$sel:nextToken:DescribeBudgets' :: DescribeBudgets -> Maybe Text
$sel:maxResults:DescribeBudgets' :: DescribeBudgets -> 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,
            forall a. a -> Maybe a
Prelude.Just (Key
"AccountId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
accountId)
          ]
      )

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

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

-- | Response of DescribeBudgets
--
-- /See:/ 'newDescribeBudgetsResponse' smart constructor.
data DescribeBudgetsResponse = DescribeBudgetsResponse'
  { -- | A list of budgets.
    DescribeBudgetsResponse -> Maybe [Budget]
budgets :: Prelude.Maybe [Budget],
    -- | The pagination token in the service response that indicates the next set
    -- of results that you can retrieve.
    DescribeBudgetsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeBudgetsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeBudgetsResponse -> DescribeBudgetsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBudgetsResponse -> DescribeBudgetsResponse -> Bool
$c/= :: DescribeBudgetsResponse -> DescribeBudgetsResponse -> Bool
== :: DescribeBudgetsResponse -> DescribeBudgetsResponse -> Bool
$c== :: DescribeBudgetsResponse -> DescribeBudgetsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeBudgetsResponse]
ReadPrec DescribeBudgetsResponse
Int -> ReadS DescribeBudgetsResponse
ReadS [DescribeBudgetsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBudgetsResponse]
$creadListPrec :: ReadPrec [DescribeBudgetsResponse]
readPrec :: ReadPrec DescribeBudgetsResponse
$creadPrec :: ReadPrec DescribeBudgetsResponse
readList :: ReadS [DescribeBudgetsResponse]
$creadList :: ReadS [DescribeBudgetsResponse]
readsPrec :: Int -> ReadS DescribeBudgetsResponse
$creadsPrec :: Int -> ReadS DescribeBudgetsResponse
Prelude.Read, Int -> DescribeBudgetsResponse -> ShowS
[DescribeBudgetsResponse] -> ShowS
DescribeBudgetsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBudgetsResponse] -> ShowS
$cshowList :: [DescribeBudgetsResponse] -> ShowS
show :: DescribeBudgetsResponse -> String
$cshow :: DescribeBudgetsResponse -> String
showsPrec :: Int -> DescribeBudgetsResponse -> ShowS
$cshowsPrec :: Int -> DescribeBudgetsResponse -> ShowS
Prelude.Show, forall x. Rep DescribeBudgetsResponse x -> DescribeBudgetsResponse
forall x. DescribeBudgetsResponse -> Rep DescribeBudgetsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBudgetsResponse x -> DescribeBudgetsResponse
$cfrom :: forall x. DescribeBudgetsResponse -> Rep DescribeBudgetsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBudgetsResponse' 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:
--
-- 'budgets', 'describeBudgetsResponse_budgets' - A list of budgets.
--
-- 'nextToken', 'describeBudgetsResponse_nextToken' - The pagination token in the service response that indicates the next set
-- of results that you can retrieve.
--
-- 'httpStatus', 'describeBudgetsResponse_httpStatus' - The response's http status code.
newDescribeBudgetsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeBudgetsResponse
newDescribeBudgetsResponse :: Int -> DescribeBudgetsResponse
newDescribeBudgetsResponse Int
pHttpStatus_ =
  DescribeBudgetsResponse'
    { $sel:budgets:DescribeBudgetsResponse' :: Maybe [Budget]
budgets = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeBudgetsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeBudgetsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A list of budgets.
describeBudgetsResponse_budgets :: Lens.Lens' DescribeBudgetsResponse (Prelude.Maybe [Budget])
describeBudgetsResponse_budgets :: Lens' DescribeBudgetsResponse (Maybe [Budget])
describeBudgetsResponse_budgets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBudgetsResponse' {Maybe [Budget]
budgets :: Maybe [Budget]
$sel:budgets:DescribeBudgetsResponse' :: DescribeBudgetsResponse -> Maybe [Budget]
budgets} -> Maybe [Budget]
budgets) (\s :: DescribeBudgetsResponse
s@DescribeBudgetsResponse' {} Maybe [Budget]
a -> DescribeBudgetsResponse
s {$sel:budgets:DescribeBudgetsResponse' :: Maybe [Budget]
budgets = Maybe [Budget]
a} :: DescribeBudgetsResponse) 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 pagination token in the service response that indicates the next set
-- of results that you can retrieve.
describeBudgetsResponse_nextToken :: Lens.Lens' DescribeBudgetsResponse (Prelude.Maybe Prelude.Text)
describeBudgetsResponse_nextToken :: Lens' DescribeBudgetsResponse (Maybe Text)
describeBudgetsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBudgetsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeBudgetsResponse' :: DescribeBudgetsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeBudgetsResponse
s@DescribeBudgetsResponse' {} Maybe Text
a -> DescribeBudgetsResponse
s {$sel:nextToken:DescribeBudgetsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeBudgetsResponse)

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

instance Prelude.NFData DescribeBudgetsResponse where
  rnf :: DescribeBudgetsResponse -> ()
rnf DescribeBudgetsResponse' {Int
Maybe [Budget]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
budgets :: Maybe [Budget]
$sel:httpStatus:DescribeBudgetsResponse' :: DescribeBudgetsResponse -> Int
$sel:nextToken:DescribeBudgetsResponse' :: DescribeBudgetsResponse -> Maybe Text
$sel:budgets:DescribeBudgetsResponse' :: DescribeBudgetsResponse -> Maybe [Budget]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Budget]
budgets
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Int
httpStatus