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

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

-- |
-- Module      : Amazonka.CostExplorer.Types.ReservationPurchaseRecommendation
-- 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.CostExplorer.Types.ReservationPurchaseRecommendation where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CostExplorer.Types.AccountScope
import Amazonka.CostExplorer.Types.LookbackPeriodInDays
import Amazonka.CostExplorer.Types.PaymentOption
import Amazonka.CostExplorer.Types.ReservationPurchaseRecommendationDetail
import Amazonka.CostExplorer.Types.ReservationPurchaseRecommendationSummary
import Amazonka.CostExplorer.Types.ServiceSpecification
import Amazonka.CostExplorer.Types.TermInYears
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | A specific reservation that Amazon Web Services recommends for purchase.
--
-- /See:/ 'newReservationPurchaseRecommendation' smart constructor.
data ReservationPurchaseRecommendation = ReservationPurchaseRecommendation'
  { -- | The account scope that Amazon Web Services recommends that you purchase
    -- this instance for. For example, you can purchase this reservation for an
    -- entire organization in Amazon Web Services Organizations.
    ReservationPurchaseRecommendation -> Maybe AccountScope
accountScope :: Prelude.Maybe AccountScope,
    -- | How many days of previous usage that Amazon Web Services considers when
    -- making this recommendation.
    ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
lookbackPeriodInDays :: Prelude.Maybe LookbackPeriodInDays,
    -- | The payment option for the reservation (for example, @AllUpfront@ or
    -- @NoUpfront@).
    ReservationPurchaseRecommendation -> Maybe PaymentOption
paymentOption :: Prelude.Maybe PaymentOption,
    -- | Details about the recommended purchases.
    ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails :: Prelude.Maybe [ReservationPurchaseRecommendationDetail],
    -- | A summary about the recommended purchase.
    ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary :: Prelude.Maybe ReservationPurchaseRecommendationSummary,
    -- | Hardware specifications for the service that you want recommendations
    -- for.
    ReservationPurchaseRecommendation -> Maybe ServiceSpecification
serviceSpecification :: Prelude.Maybe ServiceSpecification,
    -- | The term of the reservation that you want recommendations for, in years.
    ReservationPurchaseRecommendation -> Maybe TermInYears
termInYears :: Prelude.Maybe TermInYears
  }
  deriving (ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
$c/= :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
== :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
$c== :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
Prelude.Eq, ReadPrec [ReservationPurchaseRecommendation]
ReadPrec ReservationPurchaseRecommendation
Int -> ReadS ReservationPurchaseRecommendation
ReadS [ReservationPurchaseRecommendation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReservationPurchaseRecommendation]
$creadListPrec :: ReadPrec [ReservationPurchaseRecommendation]
readPrec :: ReadPrec ReservationPurchaseRecommendation
$creadPrec :: ReadPrec ReservationPurchaseRecommendation
readList :: ReadS [ReservationPurchaseRecommendation]
$creadList :: ReadS [ReservationPurchaseRecommendation]
readsPrec :: Int -> ReadS ReservationPurchaseRecommendation
$creadsPrec :: Int -> ReadS ReservationPurchaseRecommendation
Prelude.Read, Int -> ReservationPurchaseRecommendation -> ShowS
[ReservationPurchaseRecommendation] -> ShowS
ReservationPurchaseRecommendation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReservationPurchaseRecommendation] -> ShowS
$cshowList :: [ReservationPurchaseRecommendation] -> ShowS
show :: ReservationPurchaseRecommendation -> String
$cshow :: ReservationPurchaseRecommendation -> String
showsPrec :: Int -> ReservationPurchaseRecommendation -> ShowS
$cshowsPrec :: Int -> ReservationPurchaseRecommendation -> ShowS
Prelude.Show, forall x.
Rep ReservationPurchaseRecommendation x
-> ReservationPurchaseRecommendation
forall x.
ReservationPurchaseRecommendation
-> Rep ReservationPurchaseRecommendation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ReservationPurchaseRecommendation x
-> ReservationPurchaseRecommendation
$cfrom :: forall x.
ReservationPurchaseRecommendation
-> Rep ReservationPurchaseRecommendation x
Prelude.Generic)

-- |
-- Create a value of 'ReservationPurchaseRecommendation' 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:
--
-- 'accountScope', 'reservationPurchaseRecommendation_accountScope' - The account scope that Amazon Web Services recommends that you purchase
-- this instance for. For example, you can purchase this reservation for an
-- entire organization in Amazon Web Services Organizations.
--
-- 'lookbackPeriodInDays', 'reservationPurchaseRecommendation_lookbackPeriodInDays' - How many days of previous usage that Amazon Web Services considers when
-- making this recommendation.
--
-- 'paymentOption', 'reservationPurchaseRecommendation_paymentOption' - The payment option for the reservation (for example, @AllUpfront@ or
-- @NoUpfront@).
--
-- 'recommendationDetails', 'reservationPurchaseRecommendation_recommendationDetails' - Details about the recommended purchases.
--
-- 'recommendationSummary', 'reservationPurchaseRecommendation_recommendationSummary' - A summary about the recommended purchase.
--
-- 'serviceSpecification', 'reservationPurchaseRecommendation_serviceSpecification' - Hardware specifications for the service that you want recommendations
-- for.
--
-- 'termInYears', 'reservationPurchaseRecommendation_termInYears' - The term of the reservation that you want recommendations for, in years.
newReservationPurchaseRecommendation ::
  ReservationPurchaseRecommendation
newReservationPurchaseRecommendation :: ReservationPurchaseRecommendation
newReservationPurchaseRecommendation =
  ReservationPurchaseRecommendation'
    { $sel:accountScope:ReservationPurchaseRecommendation' :: Maybe AccountScope
accountScope =
        forall a. Maybe a
Prelude.Nothing,
      $sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: Maybe LookbackPeriodInDays
lookbackPeriodInDays = forall a. Maybe a
Prelude.Nothing,
      $sel:paymentOption:ReservationPurchaseRecommendation' :: Maybe PaymentOption
paymentOption = forall a. Maybe a
Prelude.Nothing,
      $sel:recommendationDetails:ReservationPurchaseRecommendation' :: Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails = forall a. Maybe a
Prelude.Nothing,
      $sel:recommendationSummary:ReservationPurchaseRecommendation' :: Maybe ReservationPurchaseRecommendationSummary
recommendationSummary = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceSpecification:ReservationPurchaseRecommendation' :: Maybe ServiceSpecification
serviceSpecification = forall a. Maybe a
Prelude.Nothing,
      $sel:termInYears:ReservationPurchaseRecommendation' :: Maybe TermInYears
termInYears = forall a. Maybe a
Prelude.Nothing
    }

-- | The account scope that Amazon Web Services recommends that you purchase
-- this instance for. For example, you can purchase this reservation for an
-- entire organization in Amazon Web Services Organizations.
reservationPurchaseRecommendation_accountScope :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe AccountScope)
reservationPurchaseRecommendation_accountScope :: Lens' ReservationPurchaseRecommendation (Maybe AccountScope)
reservationPurchaseRecommendation_accountScope = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe AccountScope
accountScope :: Maybe AccountScope
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
accountScope} -> Maybe AccountScope
accountScope) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe AccountScope
a -> ReservationPurchaseRecommendation
s {$sel:accountScope:ReservationPurchaseRecommendation' :: Maybe AccountScope
accountScope = Maybe AccountScope
a} :: ReservationPurchaseRecommendation)

-- | How many days of previous usage that Amazon Web Services considers when
-- making this recommendation.
reservationPurchaseRecommendation_lookbackPeriodInDays :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe LookbackPeriodInDays)
reservationPurchaseRecommendation_lookbackPeriodInDays :: Lens'
  ReservationPurchaseRecommendation (Maybe LookbackPeriodInDays)
reservationPurchaseRecommendation_lookbackPeriodInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe LookbackPeriodInDays
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
lookbackPeriodInDays} -> Maybe LookbackPeriodInDays
lookbackPeriodInDays) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe LookbackPeriodInDays
a -> ReservationPurchaseRecommendation
s {$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: Maybe LookbackPeriodInDays
lookbackPeriodInDays = Maybe LookbackPeriodInDays
a} :: ReservationPurchaseRecommendation)

-- | The payment option for the reservation (for example, @AllUpfront@ or
-- @NoUpfront@).
reservationPurchaseRecommendation_paymentOption :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe PaymentOption)
reservationPurchaseRecommendation_paymentOption :: Lens' ReservationPurchaseRecommendation (Maybe PaymentOption)
reservationPurchaseRecommendation_paymentOption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe PaymentOption
paymentOption :: Maybe PaymentOption
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
paymentOption} -> Maybe PaymentOption
paymentOption) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe PaymentOption
a -> ReservationPurchaseRecommendation
s {$sel:paymentOption:ReservationPurchaseRecommendation' :: Maybe PaymentOption
paymentOption = Maybe PaymentOption
a} :: ReservationPurchaseRecommendation)

-- | Details about the recommended purchases.
reservationPurchaseRecommendation_recommendationDetails :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe [ReservationPurchaseRecommendationDetail])
reservationPurchaseRecommendation_recommendationDetails :: Lens'
  ReservationPurchaseRecommendation
  (Maybe [ReservationPurchaseRecommendationDetail])
reservationPurchaseRecommendation_recommendationDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails} -> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe [ReservationPurchaseRecommendationDetail]
a -> ReservationPurchaseRecommendation
s {$sel:recommendationDetails:ReservationPurchaseRecommendation' :: Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails = Maybe [ReservationPurchaseRecommendationDetail]
a} :: ReservationPurchaseRecommendation) 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

-- | A summary about the recommended purchase.
reservationPurchaseRecommendation_recommendationSummary :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe ReservationPurchaseRecommendationSummary)
reservationPurchaseRecommendation_recommendationSummary :: Lens'
  ReservationPurchaseRecommendation
  (Maybe ReservationPurchaseRecommendationSummary)
reservationPurchaseRecommendation_recommendationSummary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe ReservationPurchaseRecommendationSummary
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary} -> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe ReservationPurchaseRecommendationSummary
a -> ReservationPurchaseRecommendation
s {$sel:recommendationSummary:ReservationPurchaseRecommendation' :: Maybe ReservationPurchaseRecommendationSummary
recommendationSummary = Maybe ReservationPurchaseRecommendationSummary
a} :: ReservationPurchaseRecommendation)

-- | Hardware specifications for the service that you want recommendations
-- for.
reservationPurchaseRecommendation_serviceSpecification :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe ServiceSpecification)
reservationPurchaseRecommendation_serviceSpecification :: Lens'
  ReservationPurchaseRecommendation (Maybe ServiceSpecification)
reservationPurchaseRecommendation_serviceSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe ServiceSpecification
serviceSpecification :: Maybe ServiceSpecification
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
serviceSpecification} -> Maybe ServiceSpecification
serviceSpecification) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe ServiceSpecification
a -> ReservationPurchaseRecommendation
s {$sel:serviceSpecification:ReservationPurchaseRecommendation' :: Maybe ServiceSpecification
serviceSpecification = Maybe ServiceSpecification
a} :: ReservationPurchaseRecommendation)

-- | The term of the reservation that you want recommendations for, in years.
reservationPurchaseRecommendation_termInYears :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe TermInYears)
reservationPurchaseRecommendation_termInYears :: Lens' ReservationPurchaseRecommendation (Maybe TermInYears)
reservationPurchaseRecommendation_termInYears = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe TermInYears
termInYears :: Maybe TermInYears
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
termInYears} -> Maybe TermInYears
termInYears) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe TermInYears
a -> ReservationPurchaseRecommendation
s {$sel:termInYears:ReservationPurchaseRecommendation' :: Maybe TermInYears
termInYears = Maybe TermInYears
a} :: ReservationPurchaseRecommendation)

instance
  Data.FromJSON
    ReservationPurchaseRecommendation
  where
  parseJSON :: Value -> Parser ReservationPurchaseRecommendation
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ReservationPurchaseRecommendation"
      ( \Object
x ->
          Maybe AccountScope
-> Maybe LookbackPeriodInDays
-> Maybe PaymentOption
-> Maybe [ReservationPurchaseRecommendationDetail]
-> Maybe ReservationPurchaseRecommendationSummary
-> Maybe ServiceSpecification
-> Maybe TermInYears
-> ReservationPurchaseRecommendation
ReservationPurchaseRecommendation'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AccountScope")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LookbackPeriodInDays")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"PaymentOption")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RecommendationDetails"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"RecommendationSummary")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ServiceSpecification")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TermInYears")
      )

instance
  Prelude.Hashable
    ReservationPurchaseRecommendation
  where
  hashWithSalt :: Int -> ReservationPurchaseRecommendation -> Int
hashWithSalt
    Int
_salt
    ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
Maybe AccountScope
Maybe LookbackPeriodInDays
Maybe PaymentOption
Maybe ReservationPurchaseRecommendationSummary
Maybe ServiceSpecification
Maybe TermInYears
termInYears :: Maybe TermInYears
serviceSpecification :: Maybe ServiceSpecification
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
paymentOption :: Maybe PaymentOption
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
accountScope :: Maybe AccountScope
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccountScope
accountScope
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LookbackPeriodInDays
lookbackPeriodInDays
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PaymentOption
paymentOption
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReservationPurchaseRecommendationSummary
recommendationSummary
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServiceSpecification
serviceSpecification
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TermInYears
termInYears

instance
  Prelude.NFData
    ReservationPurchaseRecommendation
  where
  rnf :: ReservationPurchaseRecommendation -> ()
rnf ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
Maybe AccountScope
Maybe LookbackPeriodInDays
Maybe PaymentOption
Maybe ReservationPurchaseRecommendationSummary
Maybe ServiceSpecification
Maybe TermInYears
termInYears :: Maybe TermInYears
serviceSpecification :: Maybe ServiceSpecification
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
paymentOption :: Maybe PaymentOption
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
accountScope :: Maybe AccountScope
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccountScope
accountScope
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LookbackPeriodInDays
lookbackPeriodInDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PaymentOption
paymentOption
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservationPurchaseRecommendationSummary
recommendationSummary
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServiceSpecification
serviceSpecification
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TermInYears
termInYears