{-# 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.QuickSight.DescribeTemplate
-- 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 a template\'s metadata.
module Amazonka.QuickSight.DescribeTemplate
  ( -- * Creating a Request
    DescribeTemplate (..),
    newDescribeTemplate,

    -- * Request Lenses
    describeTemplate_aliasName,
    describeTemplate_versionNumber,
    describeTemplate_awsAccountId,
    describeTemplate_templateId,

    -- * Destructuring the Response
    DescribeTemplateResponse (..),
    newDescribeTemplateResponse,

    -- * Response Lenses
    describeTemplateResponse_requestId,
    describeTemplateResponse_template,
    describeTemplateResponse_status,
  )
where

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 Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeTemplate' smart constructor.
data DescribeTemplate = DescribeTemplate'
  { -- | The alias of the template that you want to describe. If you name a
    -- specific alias, you describe the version that the alias points to. You
    -- can specify the latest version of the template by providing the keyword
    -- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
    -- doesn\'t apply to templates.
    DescribeTemplate -> Maybe Text
aliasName :: Prelude.Maybe Prelude.Text,
    -- | (Optional) The number for the version to describe. If a @VersionNumber@
    -- parameter value isn\'t provided, the latest version of the template is
    -- described.
    DescribeTemplate -> Maybe Natural
versionNumber :: Prelude.Maybe Prelude.Natural,
    -- | The ID of the Amazon Web Services account that contains the template
    -- that you\'re describing.
    DescribeTemplate -> Text
awsAccountId :: Prelude.Text,
    -- | The ID for the template.
    DescribeTemplate -> Text
templateId :: Prelude.Text
  }
  deriving (DescribeTemplate -> DescribeTemplate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTemplate -> DescribeTemplate -> Bool
$c/= :: DescribeTemplate -> DescribeTemplate -> Bool
== :: DescribeTemplate -> DescribeTemplate -> Bool
$c== :: DescribeTemplate -> DescribeTemplate -> Bool
Prelude.Eq, ReadPrec [DescribeTemplate]
ReadPrec DescribeTemplate
Int -> ReadS DescribeTemplate
ReadS [DescribeTemplate]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTemplate]
$creadListPrec :: ReadPrec [DescribeTemplate]
readPrec :: ReadPrec DescribeTemplate
$creadPrec :: ReadPrec DescribeTemplate
readList :: ReadS [DescribeTemplate]
$creadList :: ReadS [DescribeTemplate]
readsPrec :: Int -> ReadS DescribeTemplate
$creadsPrec :: Int -> ReadS DescribeTemplate
Prelude.Read, Int -> DescribeTemplate -> ShowS
[DescribeTemplate] -> ShowS
DescribeTemplate -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTemplate] -> ShowS
$cshowList :: [DescribeTemplate] -> ShowS
show :: DescribeTemplate -> String
$cshow :: DescribeTemplate -> String
showsPrec :: Int -> DescribeTemplate -> ShowS
$cshowsPrec :: Int -> DescribeTemplate -> ShowS
Prelude.Show, forall x. Rep DescribeTemplate x -> DescribeTemplate
forall x. DescribeTemplate -> Rep DescribeTemplate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeTemplate x -> DescribeTemplate
$cfrom :: forall x. DescribeTemplate -> Rep DescribeTemplate x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTemplate' 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:
--
-- 'aliasName', 'describeTemplate_aliasName' - The alias of the template that you want to describe. If you name a
-- specific alias, you describe the version that the alias points to. You
-- can specify the latest version of the template by providing the keyword
-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
-- doesn\'t apply to templates.
--
-- 'versionNumber', 'describeTemplate_versionNumber' - (Optional) The number for the version to describe. If a @VersionNumber@
-- parameter value isn\'t provided, the latest version of the template is
-- described.
--
-- 'awsAccountId', 'describeTemplate_awsAccountId' - The ID of the Amazon Web Services account that contains the template
-- that you\'re describing.
--
-- 'templateId', 'describeTemplate_templateId' - The ID for the template.
newDescribeTemplate ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'templateId'
  Prelude.Text ->
  DescribeTemplate
newDescribeTemplate :: Text -> Text -> DescribeTemplate
newDescribeTemplate Text
pAwsAccountId_ Text
pTemplateId_ =
  DescribeTemplate'
    { $sel:aliasName:DescribeTemplate' :: Maybe Text
aliasName = forall a. Maybe a
Prelude.Nothing,
      $sel:versionNumber:DescribeTemplate' :: Maybe Natural
versionNumber = forall a. Maybe a
Prelude.Nothing,
      $sel:awsAccountId:DescribeTemplate' :: Text
awsAccountId = Text
pAwsAccountId_,
      $sel:templateId:DescribeTemplate' :: Text
templateId = Text
pTemplateId_
    }

-- | The alias of the template that you want to describe. If you name a
-- specific alias, you describe the version that the alias points to. You
-- can specify the latest version of the template by providing the keyword
-- @$LATEST@ in the @AliasName@ parameter. The keyword @$PUBLISHED@
-- doesn\'t apply to templates.
describeTemplate_aliasName :: Lens.Lens' DescribeTemplate (Prelude.Maybe Prelude.Text)
describeTemplate_aliasName :: Lens' DescribeTemplate (Maybe Text)
describeTemplate_aliasName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplate' {Maybe Text
aliasName :: Maybe Text
$sel:aliasName:DescribeTemplate' :: DescribeTemplate -> Maybe Text
aliasName} -> Maybe Text
aliasName) (\s :: DescribeTemplate
s@DescribeTemplate' {} Maybe Text
a -> DescribeTemplate
s {$sel:aliasName:DescribeTemplate' :: Maybe Text
aliasName = Maybe Text
a} :: DescribeTemplate)

-- | (Optional) The number for the version to describe. If a @VersionNumber@
-- parameter value isn\'t provided, the latest version of the template is
-- described.
describeTemplate_versionNumber :: Lens.Lens' DescribeTemplate (Prelude.Maybe Prelude.Natural)
describeTemplate_versionNumber :: Lens' DescribeTemplate (Maybe Natural)
describeTemplate_versionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplate' {Maybe Natural
versionNumber :: Maybe Natural
$sel:versionNumber:DescribeTemplate' :: DescribeTemplate -> Maybe Natural
versionNumber} -> Maybe Natural
versionNumber) (\s :: DescribeTemplate
s@DescribeTemplate' {} Maybe Natural
a -> DescribeTemplate
s {$sel:versionNumber:DescribeTemplate' :: Maybe Natural
versionNumber = Maybe Natural
a} :: DescribeTemplate)

-- | The ID of the Amazon Web Services account that contains the template
-- that you\'re describing.
describeTemplate_awsAccountId :: Lens.Lens' DescribeTemplate Prelude.Text
describeTemplate_awsAccountId :: Lens' DescribeTemplate Text
describeTemplate_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplate' {Text
awsAccountId :: Text
$sel:awsAccountId:DescribeTemplate' :: DescribeTemplate -> Text
awsAccountId} -> Text
awsAccountId) (\s :: DescribeTemplate
s@DescribeTemplate' {} Text
a -> DescribeTemplate
s {$sel:awsAccountId:DescribeTemplate' :: Text
awsAccountId = Text
a} :: DescribeTemplate)

-- | The ID for the template.
describeTemplate_templateId :: Lens.Lens' DescribeTemplate Prelude.Text
describeTemplate_templateId :: Lens' DescribeTemplate Text
describeTemplate_templateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplate' {Text
templateId :: Text
$sel:templateId:DescribeTemplate' :: DescribeTemplate -> Text
templateId} -> Text
templateId) (\s :: DescribeTemplate
s@DescribeTemplate' {} Text
a -> DescribeTemplate
s {$sel:templateId:DescribeTemplate' :: Text
templateId = Text
a} :: DescribeTemplate)

instance Core.AWSRequest DescribeTemplate where
  type
    AWSResponse DescribeTemplate =
      DescribeTemplateResponse
  request :: (Service -> Service)
-> DescribeTemplate -> Request DescribeTemplate
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeTemplate
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeTemplate)))
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 Template -> Int -> DescribeTemplateResponse
DescribeTemplateResponse'
            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
"RequestId")
            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
"Template")
            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 DescribeTemplate where
  hashWithSalt :: Int -> DescribeTemplate -> Int
hashWithSalt Int
_salt DescribeTemplate' {Maybe Natural
Maybe Text
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
aliasName :: Maybe Text
$sel:templateId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:awsAccountId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:versionNumber:DescribeTemplate' :: DescribeTemplate -> Maybe Natural
$sel:aliasName:DescribeTemplate' :: DescribeTemplate -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
aliasName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
versionNumber
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
templateId

instance Prelude.NFData DescribeTemplate where
  rnf :: DescribeTemplate -> ()
rnf DescribeTemplate' {Maybe Natural
Maybe Text
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
aliasName :: Maybe Text
$sel:templateId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:awsAccountId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:versionNumber:DescribeTemplate' :: DescribeTemplate -> Maybe Natural
$sel:aliasName:DescribeTemplate' :: DescribeTemplate -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
aliasName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
versionNumber
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
templateId

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

instance Data.ToPath DescribeTemplate where
  toPath :: DescribeTemplate -> ByteString
toPath DescribeTemplate' {Maybe Natural
Maybe Text
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
aliasName :: Maybe Text
$sel:templateId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:awsAccountId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:versionNumber:DescribeTemplate' :: DescribeTemplate -> Maybe Natural
$sel:aliasName:DescribeTemplate' :: DescribeTemplate -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
awsAccountId,
        ByteString
"/templates/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
templateId
      ]

instance Data.ToQuery DescribeTemplate where
  toQuery :: DescribeTemplate -> QueryString
toQuery DescribeTemplate' {Maybe Natural
Maybe Text
Text
templateId :: Text
awsAccountId :: Text
versionNumber :: Maybe Natural
aliasName :: Maybe Text
$sel:templateId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:awsAccountId:DescribeTemplate' :: DescribeTemplate -> Text
$sel:versionNumber:DescribeTemplate' :: DescribeTemplate -> Maybe Natural
$sel:aliasName:DescribeTemplate' :: DescribeTemplate -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"alias-name" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
aliasName,
        ByteString
"version-number" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
versionNumber
      ]

-- | /See:/ 'newDescribeTemplateResponse' smart constructor.
data DescribeTemplateResponse = DescribeTemplateResponse'
  { -- | The Amazon Web Services request ID for this operation.
    DescribeTemplateResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | The template structure for the object you want to describe.
    DescribeTemplateResponse -> Maybe Template
template :: Prelude.Maybe Template,
    -- | The HTTP status of the request.
    DescribeTemplateResponse -> Int
status :: Prelude.Int
  }
  deriving (DescribeTemplateResponse -> DescribeTemplateResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeTemplateResponse -> DescribeTemplateResponse -> Bool
$c/= :: DescribeTemplateResponse -> DescribeTemplateResponse -> Bool
== :: DescribeTemplateResponse -> DescribeTemplateResponse -> Bool
$c== :: DescribeTemplateResponse -> DescribeTemplateResponse -> Bool
Prelude.Eq, ReadPrec [DescribeTemplateResponse]
ReadPrec DescribeTemplateResponse
Int -> ReadS DescribeTemplateResponse
ReadS [DescribeTemplateResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeTemplateResponse]
$creadListPrec :: ReadPrec [DescribeTemplateResponse]
readPrec :: ReadPrec DescribeTemplateResponse
$creadPrec :: ReadPrec DescribeTemplateResponse
readList :: ReadS [DescribeTemplateResponse]
$creadList :: ReadS [DescribeTemplateResponse]
readsPrec :: Int -> ReadS DescribeTemplateResponse
$creadsPrec :: Int -> ReadS DescribeTemplateResponse
Prelude.Read, Int -> DescribeTemplateResponse -> ShowS
[DescribeTemplateResponse] -> ShowS
DescribeTemplateResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeTemplateResponse] -> ShowS
$cshowList :: [DescribeTemplateResponse] -> ShowS
show :: DescribeTemplateResponse -> String
$cshow :: DescribeTemplateResponse -> String
showsPrec :: Int -> DescribeTemplateResponse -> ShowS
$cshowsPrec :: Int -> DescribeTemplateResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeTemplateResponse x -> DescribeTemplateResponse
forall x.
DescribeTemplateResponse -> Rep DescribeTemplateResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeTemplateResponse x -> DescribeTemplateResponse
$cfrom :: forall x.
DescribeTemplateResponse -> Rep DescribeTemplateResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeTemplateResponse' 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:
--
-- 'requestId', 'describeTemplateResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'template', 'describeTemplateResponse_template' - The template structure for the object you want to describe.
--
-- 'status', 'describeTemplateResponse_status' - The HTTP status of the request.
newDescribeTemplateResponse ::
  -- | 'status'
  Prelude.Int ->
  DescribeTemplateResponse
newDescribeTemplateResponse :: Int -> DescribeTemplateResponse
newDescribeTemplateResponse Int
pStatus_ =
  DescribeTemplateResponse'
    { $sel:requestId:DescribeTemplateResponse' :: Maybe Text
requestId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:template:DescribeTemplateResponse' :: Maybe Template
template = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeTemplateResponse' :: Int
status = Int
pStatus_
    }

-- | The Amazon Web Services request ID for this operation.
describeTemplateResponse_requestId :: Lens.Lens' DescribeTemplateResponse (Prelude.Maybe Prelude.Text)
describeTemplateResponse_requestId :: Lens' DescribeTemplateResponse (Maybe Text)
describeTemplateResponse_requestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplateResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:DescribeTemplateResponse' :: DescribeTemplateResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: DescribeTemplateResponse
s@DescribeTemplateResponse' {} Maybe Text
a -> DescribeTemplateResponse
s {$sel:requestId:DescribeTemplateResponse' :: Maybe Text
requestId = Maybe Text
a} :: DescribeTemplateResponse)

-- | The template structure for the object you want to describe.
describeTemplateResponse_template :: Lens.Lens' DescribeTemplateResponse (Prelude.Maybe Template)
describeTemplateResponse_template :: Lens' DescribeTemplateResponse (Maybe Template)
describeTemplateResponse_template = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplateResponse' {Maybe Template
template :: Maybe Template
$sel:template:DescribeTemplateResponse' :: DescribeTemplateResponse -> Maybe Template
template} -> Maybe Template
template) (\s :: DescribeTemplateResponse
s@DescribeTemplateResponse' {} Maybe Template
a -> DescribeTemplateResponse
s {$sel:template:DescribeTemplateResponse' :: Maybe Template
template = Maybe Template
a} :: DescribeTemplateResponse)

-- | The HTTP status of the request.
describeTemplateResponse_status :: Lens.Lens' DescribeTemplateResponse Prelude.Int
describeTemplateResponse_status :: Lens' DescribeTemplateResponse Int
describeTemplateResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeTemplateResponse' {Int
status :: Int
$sel:status:DescribeTemplateResponse' :: DescribeTemplateResponse -> Int
status} -> Int
status) (\s :: DescribeTemplateResponse
s@DescribeTemplateResponse' {} Int
a -> DescribeTemplateResponse
s {$sel:status:DescribeTemplateResponse' :: Int
status = Int
a} :: DescribeTemplateResponse)

instance Prelude.NFData DescribeTemplateResponse where
  rnf :: DescribeTemplateResponse -> ()
rnf DescribeTemplateResponse' {Int
Maybe Text
Maybe Template
status :: Int
template :: Maybe Template
requestId :: Maybe Text
$sel:status:DescribeTemplateResponse' :: DescribeTemplateResponse -> Int
$sel:template:DescribeTemplateResponse' :: DescribeTemplateResponse -> Maybe Template
$sel:requestId:DescribeTemplateResponse' :: DescribeTemplateResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Template
template
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
status