{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the types generated from the schema PaymentMethodCardWalletVisaCheckout
module StripeAPI.Types.PaymentMethodCardWalletVisaCheckout where

import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.Address
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.payment_method_card_wallet_visa_checkout@ in the specification.
data PaymentMethodCardWalletVisaCheckout = PaymentMethodCardWalletVisaCheckout
  { -- | billing_address: Owner\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
    PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
paymentMethodCardWalletVisaCheckoutBillingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'),
    -- | email: Owner\'s verified email. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | name: Owner\'s verified full name. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | shipping_address: Owner\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
    PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
paymentMethodCardWalletVisaCheckoutShippingAddress :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress')
  }
  deriving
    ( Int -> PaymentMethodCardWalletVisaCheckout -> ShowS
[PaymentMethodCardWalletVisaCheckout] -> ShowS
PaymentMethodCardWalletVisaCheckout -> String
(Int -> PaymentMethodCardWalletVisaCheckout -> ShowS)
-> (PaymentMethodCardWalletVisaCheckout -> String)
-> ([PaymentMethodCardWalletVisaCheckout] -> ShowS)
-> Show PaymentMethodCardWalletVisaCheckout
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethodCardWalletVisaCheckout] -> ShowS
$cshowList :: [PaymentMethodCardWalletVisaCheckout] -> ShowS
show :: PaymentMethodCardWalletVisaCheckout -> String
$cshow :: PaymentMethodCardWalletVisaCheckout -> String
showsPrec :: Int -> PaymentMethodCardWalletVisaCheckout -> ShowS
$cshowsPrec :: Int -> PaymentMethodCardWalletVisaCheckout -> ShowS
GHC.Show.Show,
      PaymentMethodCardWalletVisaCheckout
-> PaymentMethodCardWalletVisaCheckout -> Bool
(PaymentMethodCardWalletVisaCheckout
 -> PaymentMethodCardWalletVisaCheckout -> Bool)
-> (PaymentMethodCardWalletVisaCheckout
    -> PaymentMethodCardWalletVisaCheckout -> Bool)
-> Eq PaymentMethodCardWalletVisaCheckout
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethodCardWalletVisaCheckout
-> PaymentMethodCardWalletVisaCheckout -> Bool
$c/= :: PaymentMethodCardWalletVisaCheckout
-> PaymentMethodCardWalletVisaCheckout -> Bool
== :: PaymentMethodCardWalletVisaCheckout
-> PaymentMethodCardWalletVisaCheckout -> Bool
$c== :: PaymentMethodCardWalletVisaCheckout
-> PaymentMethodCardWalletVisaCheckout -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardWalletVisaCheckout where
  toJSON :: PaymentMethodCardWalletVisaCheckout -> Value
toJSON PaymentMethodCardWalletVisaCheckout
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"billing_address" Text
-> Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
paymentMethodCardWalletVisaCheckoutBillingAddress PaymentMethodCardWalletVisaCheckout
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"email" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutEmail PaymentMethodCardWalletVisaCheckout
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutName PaymentMethodCardWalletVisaCheckout
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"shipping_address" Text
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
paymentMethodCardWalletVisaCheckoutShippingAddress PaymentMethodCardWalletVisaCheckout
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PaymentMethodCardWalletVisaCheckout -> Encoding
toEncoding PaymentMethodCardWalletVisaCheckout
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"billing_address" Text
-> Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
paymentMethodCardWalletVisaCheckoutBillingAddress PaymentMethodCardWalletVisaCheckout
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"email" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutEmail PaymentMethodCardWalletVisaCheckout
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout -> Maybe Text
paymentMethodCardWalletVisaCheckoutName PaymentMethodCardWalletVisaCheckout
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"shipping_address" Text
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckout
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
paymentMethodCardWalletVisaCheckoutShippingAddress PaymentMethodCardWalletVisaCheckout
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckout where
  parseJSON :: Value -> Parser PaymentMethodCardWalletVisaCheckout
parseJSON = String
-> (Object -> Parser PaymentMethodCardWalletVisaCheckout)
-> Value
-> Parser PaymentMethodCardWalletVisaCheckout
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PaymentMethodCardWalletVisaCheckout" (\Object
obj -> ((((Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
 -> Maybe Text
 -> Maybe Text
 -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
 -> PaymentMethodCardWalletVisaCheckout)
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
      -> Maybe Text
      -> Maybe Text
      -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
      -> PaymentMethodCardWalletVisaCheckout)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> Maybe Text
-> Maybe Text
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckout
PaymentMethodCardWalletVisaCheckout Parser
  (Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
   -> Maybe Text
   -> Maybe Text
   -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
   -> PaymentMethodCardWalletVisaCheckout)
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
      -> PaymentMethodCardWalletVisaCheckout)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"billing_address")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
   -> PaymentMethodCardWalletVisaCheckout)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
      -> PaymentMethodCardWalletVisaCheckout)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"email")) Parser
  (Maybe Text
   -> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
   -> PaymentMethodCardWalletVisaCheckout)
-> Parser (Maybe Text)
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
      -> PaymentMethodCardWalletVisaCheckout)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"name")) Parser
  (Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
   -> PaymentMethodCardWalletVisaCheckout)
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser PaymentMethodCardWalletVisaCheckout
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"shipping_address"))

-- | Create a new 'PaymentMethodCardWalletVisaCheckout' with all required fields.
mkPaymentMethodCardWalletVisaCheckout :: PaymentMethodCardWalletVisaCheckout
mkPaymentMethodCardWalletVisaCheckout :: PaymentMethodCardWalletVisaCheckout
mkPaymentMethodCardWalletVisaCheckout =
  PaymentMethodCardWalletVisaCheckout :: Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> Maybe Text
-> Maybe Text
-> Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckout
PaymentMethodCardWalletVisaCheckout
    { paymentMethodCardWalletVisaCheckoutBillingAddress :: Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
paymentMethodCardWalletVisaCheckoutBillingAddress = Maybe PaymentMethodCardWalletVisaCheckoutBillingAddress'
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutEmail :: Maybe Text
paymentMethodCardWalletVisaCheckoutEmail = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutName :: Maybe Text
paymentMethodCardWalletVisaCheckoutName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress :: Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
paymentMethodCardWalletVisaCheckoutShippingAddress = Maybe PaymentMethodCardWalletVisaCheckoutShippingAddress'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.payment_method_card_wallet_visa_checkout.properties.billing_address.anyOf@ in the specification.
--
-- Owner\\\'s verified billing address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletVisaCheckoutBillingAddress' = PaymentMethodCardWalletVisaCheckoutBillingAddress'
  { -- | city: City, district, suburb, town, or village.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line1: Address line 1 (e.g., street, PO Box, or company name).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | postal_code: ZIP or postal code.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | state: State, county, province, or region.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> ShowS
[PaymentMethodCardWalletVisaCheckoutBillingAddress'] -> ShowS
PaymentMethodCardWalletVisaCheckoutBillingAddress' -> String
(Int
 -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> ShowS)
-> (PaymentMethodCardWalletVisaCheckoutBillingAddress' -> String)
-> ([PaymentMethodCardWalletVisaCheckoutBillingAddress'] -> ShowS)
-> Show PaymentMethodCardWalletVisaCheckoutBillingAddress'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethodCardWalletVisaCheckoutBillingAddress'] -> ShowS
$cshowList :: [PaymentMethodCardWalletVisaCheckoutBillingAddress'] -> ShowS
show :: PaymentMethodCardWalletVisaCheckoutBillingAddress' -> String
$cshow :: PaymentMethodCardWalletVisaCheckoutBillingAddress' -> String
showsPrec :: Int -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> ShowS
$cshowsPrec :: Int -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> ShowS
GHC.Show.Show,
      PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool
(PaymentMethodCardWalletVisaCheckoutBillingAddress'
 -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool)
-> (PaymentMethodCardWalletVisaCheckoutBillingAddress'
    -> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool)
-> Eq PaymentMethodCardWalletVisaCheckoutBillingAddress'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool
$c/= :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool
== :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool
$c== :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
-> PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardWalletVisaCheckoutBillingAddress' where
  toJSON :: PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Value
toJSON PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"city" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'City PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"country" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Country PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line1" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line2" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"postal_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"state" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'State PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Encoding
toEncoding PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"city" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'City PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"country" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Country PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line1" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line2" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"postal_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"state" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutBillingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'State PaymentMethodCardWalletVisaCheckoutBillingAddress'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckoutBillingAddress' where
  parseJSON :: Value -> Parser PaymentMethodCardWalletVisaCheckoutBillingAddress'
parseJSON = String
-> (Object
    -> Parser PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Value
-> Parser PaymentMethodCardWalletVisaCheckoutBillingAddress'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PaymentMethodCardWalletVisaCheckoutBillingAddress'" (\Object
obj -> ((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> PaymentMethodCardWalletVisaCheckoutBillingAddress'
PaymentMethodCardWalletVisaCheckoutBillingAddress' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"city")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"country")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"line1")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"line2")) Parser
  (Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"postal_code")) Parser
  (Maybe Text -> PaymentMethodCardWalletVisaCheckoutBillingAddress')
-> Parser (Maybe Text)
-> Parser PaymentMethodCardWalletVisaCheckoutBillingAddress'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"state"))

-- | Create a new 'PaymentMethodCardWalletVisaCheckoutBillingAddress'' with all required fields.
mkPaymentMethodCardWalletVisaCheckoutBillingAddress' :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
mkPaymentMethodCardWalletVisaCheckoutBillingAddress' :: PaymentMethodCardWalletVisaCheckoutBillingAddress'
mkPaymentMethodCardWalletVisaCheckoutBillingAddress' =
  PaymentMethodCardWalletVisaCheckoutBillingAddress' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> PaymentMethodCardWalletVisaCheckoutBillingAddress'
PaymentMethodCardWalletVisaCheckoutBillingAddress'
    { paymentMethodCardWalletVisaCheckoutBillingAddress'City :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'City = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutBillingAddress'Country :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Country = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'Line2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'PostalCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutBillingAddress'State :: Maybe Text
paymentMethodCardWalletVisaCheckoutBillingAddress'State = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.payment_method_card_wallet_visa_checkout.properties.shipping_address.anyOf@ in the specification.
--
-- Owner\\\'s verified shipping address. Values are verified or provided by the wallet directly (if supported) at the time of authorization or settlement. They cannot be set or mutated.
data PaymentMethodCardWalletVisaCheckoutShippingAddress' = PaymentMethodCardWalletVisaCheckoutShippingAddress'
  { -- | city: City, district, suburb, town, or village.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line1: Address line 1 (e.g., street, PO Box, or company name).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | postal_code: ZIP or postal code.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | state: State, county, province, or region.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> ShowS
[PaymentMethodCardWalletVisaCheckoutShippingAddress'] -> ShowS
PaymentMethodCardWalletVisaCheckoutShippingAddress' -> String
(Int
 -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> ShowS)
-> (PaymentMethodCardWalletVisaCheckoutShippingAddress' -> String)
-> ([PaymentMethodCardWalletVisaCheckoutShippingAddress'] -> ShowS)
-> Show PaymentMethodCardWalletVisaCheckoutShippingAddress'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PaymentMethodCardWalletVisaCheckoutShippingAddress'] -> ShowS
$cshowList :: [PaymentMethodCardWalletVisaCheckoutShippingAddress'] -> ShowS
show :: PaymentMethodCardWalletVisaCheckoutShippingAddress' -> String
$cshow :: PaymentMethodCardWalletVisaCheckoutShippingAddress' -> String
showsPrec :: Int -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> ShowS
$cshowsPrec :: Int -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> ShowS
GHC.Show.Show,
      PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool
(PaymentMethodCardWalletVisaCheckoutShippingAddress'
 -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool)
-> (PaymentMethodCardWalletVisaCheckoutShippingAddress'
    -> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool)
-> Eq PaymentMethodCardWalletVisaCheckoutShippingAddress'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool
$c/= :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool
== :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool
$c== :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
-> PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardWalletVisaCheckoutShippingAddress' where
  toJSON :: PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Value
toJSON PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"city" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'City PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"country" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Country PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line1" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line2" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"postal_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"state" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'State PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Encoding
toEncoding PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"city" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'City PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"country" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Country PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line1" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line2" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"postal_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"state" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PaymentMethodCardWalletVisaCheckoutShippingAddress' -> Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'State PaymentMethodCardWalletVisaCheckoutShippingAddress'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWalletVisaCheckoutShippingAddress' where
  parseJSON :: Value -> Parser PaymentMethodCardWalletVisaCheckoutShippingAddress'
parseJSON = String
-> (Object
    -> Parser PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Value
-> Parser PaymentMethodCardWalletVisaCheckoutShippingAddress'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PaymentMethodCardWalletVisaCheckoutShippingAddress'" (\Object
obj -> ((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> PaymentMethodCardWalletVisaCheckoutShippingAddress'
PaymentMethodCardWalletVisaCheckoutShippingAddress' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"city")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"country")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"line1")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"line2")) Parser
  (Maybe Text
   -> Maybe Text
   -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"postal_code")) Parser
  (Maybe Text -> PaymentMethodCardWalletVisaCheckoutShippingAddress')
-> Parser (Maybe Text)
-> Parser PaymentMethodCardWalletVisaCheckoutShippingAddress'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"state"))

-- | Create a new 'PaymentMethodCardWalletVisaCheckoutShippingAddress'' with all required fields.
mkPaymentMethodCardWalletVisaCheckoutShippingAddress' :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
mkPaymentMethodCardWalletVisaCheckoutShippingAddress' :: PaymentMethodCardWalletVisaCheckoutShippingAddress'
mkPaymentMethodCardWalletVisaCheckoutShippingAddress' =
  PaymentMethodCardWalletVisaCheckoutShippingAddress' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> PaymentMethodCardWalletVisaCheckoutShippingAddress'
PaymentMethodCardWalletVisaCheckoutShippingAddress'
    { paymentMethodCardWalletVisaCheckoutShippingAddress'City :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'City = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress'Country :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Country = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'Line2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'PostalCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      paymentMethodCardWalletVisaCheckoutShippingAddress'State :: Maybe Text
paymentMethodCardWalletVisaCheckoutShippingAddress'State = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }