{-# 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 Charge
module StripeAPI.Types.Charge 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.Account
import {-# SOURCE #-} StripeAPI.Types.Address
import {-# SOURCE #-} StripeAPI.Types.Application
import {-# SOURCE #-} StripeAPI.Types.ApplicationFee
import {-# SOURCE #-} StripeAPI.Types.BalanceTransaction
import {-# SOURCE #-} StripeAPI.Types.BillingDetails
import {-# SOURCE #-} StripeAPI.Types.ChargeFraudDetails
import {-# SOURCE #-} StripeAPI.Types.ChargeOutcome
import {-# SOURCE #-} StripeAPI.Types.ChargeTransferData
import {-# SOURCE #-} StripeAPI.Types.Customer
import {-# SOURCE #-} StripeAPI.Types.DeletedCustomer
import {-# SOURCE #-} StripeAPI.Types.Invoice
import {-# SOURCE #-} StripeAPI.Types.Order
import {-# SOURCE #-} StripeAPI.Types.PaymentFlowsPrivatePaymentMethodsAlipayDetails
import {-# SOURCE #-} StripeAPI.Types.PaymentIntent
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetails
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsAchCreditTransfer
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsAchDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsAcssDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsAfterpayClearpay
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsAuBecsDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsBacsDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsBancontact
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsBoleto
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsCard
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsCardPresent
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsEps
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsFpx
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsGiropay
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsGrabpay
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsIdeal
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsInteracPresent
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsMultibanco
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsOxxo
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsP24
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsSepaDebit
import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsSofort
import {-# SOURCE #-} StripeAPI.Types.Refund
import {-# SOURCE #-} StripeAPI.Types.Review
import {-# SOURCE #-} StripeAPI.Types.Rule
import {-# SOURCE #-} StripeAPI.Types.Shipping
import {-# SOURCE #-} StripeAPI.Types.Transfer
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.charge@ in the specification.
--
-- To charge a credit or a debit card, you create a \`Charge\` object. You can
-- retrieve and refund individual charges as well as list all charges. Charges
-- are identified by a unique, random ID.
--
-- Related guide: [Accept a payment with the Charges API](https:\/\/stripe.com\/docs\/payments\/accept-a-payment-charges).
data Charge = Charge
  { -- | amount: Amount intended to be collected by this payment. A positive integer representing how much to charge in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal) (e.g., 100 cents to charge \$1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is \$0.50 US or [equivalent in charge currency](https:\/\/stripe.com\/docs\/currencies\#minimum-and-maximum-charge-amounts). The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of \$999,999.99).
    Charge -> Int
chargeAmount :: GHC.Types.Int,
    -- | amount_captured: Amount in %s captured (can be less than the amount attribute on the charge if a partial capture was made).
    Charge -> Int
chargeAmountCaptured :: GHC.Types.Int,
    -- | amount_refunded: Amount in %s refunded (can be less than the amount attribute on the charge if a partial refund was issued).
    Charge -> Int
chargeAmountRefunded :: GHC.Types.Int,
    -- | application: ID of the Connect application that created the charge.
    Charge -> Maybe ChargeApplication'Variants
chargeApplication :: (GHC.Maybe.Maybe ChargeApplication'Variants),
    -- | application_fee: The application fee (if any) for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
    Charge -> Maybe ChargeApplicationFee'Variants
chargeApplicationFee :: (GHC.Maybe.Maybe ChargeApplicationFee'Variants),
    -- | application_fee_amount: The amount of the application fee (if any) requested for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
    Charge -> Maybe Int
chargeApplicationFeeAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | balance_transaction: ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).
    Charge -> Maybe ChargeBalanceTransaction'Variants
chargeBalanceTransaction :: (GHC.Maybe.Maybe ChargeBalanceTransaction'Variants),
    -- | billing_details:
    Charge -> BillingDetails
chargeBillingDetails :: BillingDetails,
    -- | calculated_statement_descriptor: The full statement descriptor that is passed to card networks, and that is displayed on your customers\' credit card and bank statements. Allows you to see what the statement descriptor looks like after the static and dynamic portions are combined.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeCalculatedStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | captured: If the charge was created without capturing, this Boolean represents whether it is still uncaptured or has since been captured.
    Charge -> Bool
chargeCaptured :: GHC.Types.Bool,
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Charge -> Int
chargeCreated :: GHC.Types.Int,
    -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
    Charge -> Text
chargeCurrency :: Data.Text.Internal.Text,
    -- | customer: ID of the customer this charge is for if one exists.
    Charge -> Maybe ChargeCustomer'Variants
chargeCustomer :: (GHC.Maybe.Maybe ChargeCustomer'Variants),
    -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
    --
    -- Constraints:
    --
    -- * Maximum length of 40000
    Charge -> Maybe Text
chargeDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | disputed: Whether the charge has been disputed.
    Charge -> Bool
chargeDisputed :: GHC.Types.Bool,
    -- | failure_code: Error code explaining reason for charge failure if available (see [the errors section](https:\/\/stripe.com\/docs\/api\#errors) for a list of codes).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeFailureCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | failure_message: Message to user further explaining reason for charge failure if available.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeFailureMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | fraud_details: Information on fraud assessments for the charge.
    Charge -> Maybe ChargeFraudDetails'
chargeFraudDetails :: (GHC.Maybe.Maybe ChargeFraudDetails'),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Text
chargeId :: Data.Text.Internal.Text,
    -- | invoice: ID of the invoice this charge is for if one exists.
    Charge -> Maybe ChargeInvoice'Variants
chargeInvoice :: (GHC.Maybe.Maybe ChargeInvoice'Variants),
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    Charge -> Bool
chargeLivemode :: GHC.Types.Bool,
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
    Charge -> Object
chargeMetadata :: Data.Aeson.Types.Internal.Object,
    -- | on_behalf_of: The account (if any) the charge was made on behalf of without triggering an automatic transfer. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers) for details.
    Charge -> Maybe ChargeOnBehalfOf'Variants
chargeOnBehalfOf :: (GHC.Maybe.Maybe ChargeOnBehalfOf'Variants),
    -- | order: ID of the order this charge is for if one exists.
    Charge -> Maybe ChargeOrder'Variants
chargeOrder :: (GHC.Maybe.Maybe ChargeOrder'Variants),
    -- | outcome: Details about whether the payment was accepted, and why. See [understanding declines](https:\/\/stripe.com\/docs\/declines) for details.
    Charge -> Maybe ChargeOutcome'
chargeOutcome :: (GHC.Maybe.Maybe ChargeOutcome'),
    -- | paid: \`true\` if the charge succeeded, or was successfully authorized for later capture.
    Charge -> Bool
chargePaid :: GHC.Types.Bool,
    -- | payment_intent: ID of the PaymentIntent associated with this charge, if one exists.
    Charge -> Maybe ChargePaymentIntent'Variants
chargePaymentIntent :: (GHC.Maybe.Maybe ChargePaymentIntent'Variants),
    -- | payment_method: ID of the payment method used in this charge.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargePaymentMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | payment_method_details: Details about the payment method at the time of the transaction.
    Charge -> Maybe ChargePaymentMethodDetails'
chargePaymentMethodDetails :: (GHC.Maybe.Maybe ChargePaymentMethodDetails'),
    -- | receipt_email: This is the email address that the receipt for this charge was sent to.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeReceiptEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | receipt_number: This is the transaction number that appears on email receipts sent for this charge. This attribute will be \`null\` until a receipt has been sent.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeReceiptNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | receipt_url: This is the URL to view the receipt for this charge. The receipt is kept up-to-date to the latest state of the charge, including any refunds. If the charge is for an Invoice, the receipt will be stylized as an Invoice receipt.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeReceiptUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | refunded: Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute will still be false.
    Charge -> Bool
chargeRefunded :: GHC.Types.Bool,
    -- | refunds: A list of refunds that have been applied to the charge.
    Charge -> ChargeRefunds'
chargeRefunds :: ChargeRefunds',
    -- | review: ID of the review associated with this charge if one exists.
    Charge -> Maybe ChargeReview'Variants
chargeReview :: (GHC.Maybe.Maybe ChargeReview'Variants),
    -- | shipping: Shipping information for the charge.
    Charge -> Maybe ChargeShipping'
chargeShipping :: (GHC.Maybe.Maybe ChargeShipping'),
    -- | source_transfer: The transfer ID which created this charge. Only present if the charge came from another Stripe account. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
    Charge -> Maybe ChargeSourceTransfer'Variants
chargeSourceTransfer :: (GHC.Maybe.Maybe ChargeSourceTransfer'Variants),
    -- | statement_descriptor: For card charges, use \`statement_descriptor_suffix\` instead. Otherwise, you can use this value as the complete description of a charge on your customers’ statements. Must contain at least one letter, maximum 22 characters.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeStatementDescriptor :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | statement_descriptor_suffix: Provides information about the charge that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeStatementDescriptorSuffix :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | status: The status of the payment is either \`succeeded\`, \`pending\`, or \`failed\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Text
chargeStatus :: Data.Text.Internal.Text,
    -- | transfer: ID of the transfer to the \`destination\` account (only applicable if the charge was created using the \`destination\` parameter).
    Charge -> Maybe ChargeTransfer'Variants
chargeTransfer :: (GHC.Maybe.Maybe ChargeTransfer'Variants),
    -- | transfer_data: An optional dictionary including the account to automatically transfer to as part of a destination charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
    Charge -> Maybe ChargeTransferData'
chargeTransferData :: (GHC.Maybe.Maybe ChargeTransferData'),
    -- | transfer_group: A string that identifies this transaction as part of a group. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#transfer-options) for details.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Charge -> Maybe Text
chargeTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Charge -> ShowS
[Charge] -> ShowS
Charge -> String
(Int -> Charge -> ShowS)
-> (Charge -> String) -> ([Charge] -> ShowS) -> Show Charge
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Charge] -> ShowS
$cshowList :: [Charge] -> ShowS
show :: Charge -> String
$cshow :: Charge -> String
showsPrec :: Int -> Charge -> ShowS
$cshowsPrec :: Int -> Charge -> ShowS
GHC.Show.Show,
      Charge -> Charge -> Bool
(Charge -> Charge -> Bool)
-> (Charge -> Charge -> Bool) -> Eq Charge
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Charge -> Charge -> Bool
$c/= :: Charge -> Charge -> Bool
== :: Charge -> Charge -> Bool
$c== :: Charge -> Charge -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Charge where
  toJSON :: Charge -> Value
toJSON Charge
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmount Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_captured" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmountCaptured Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_refunded" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmountRefunded Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application" Text -> Maybe ChargeApplication'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeApplication'Variants
chargeApplication Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application_fee" Text -> Maybe ChargeApplicationFee'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeApplicationFee'Variants
chargeApplicationFee Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application_fee_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Int
chargeApplicationFeeAmount Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"balance_transaction" Text -> Maybe ChargeBalanceTransaction'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeBalanceTransaction'Variants
chargeBalanceTransaction Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_details" Text -> BillingDetails -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> BillingDetails
chargeBillingDetails Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"calculated_statement_descriptor" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeCalculatedStatementDescriptor Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"captured" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeCaptured Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeCreated Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeCurrency Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Maybe ChargeCustomer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeCustomer'Variants
chargeCustomer Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"description" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeDescription Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"disputed" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeDisputed Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"failure_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeFailureCode Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"failure_message" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeFailureMessage Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fraud_details" Text -> Maybe ChargeFraudDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeFraudDetails'
chargeFraudDetails Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeId Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"invoice" Text -> Maybe ChargeInvoice'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeInvoice'Variants
chargeInvoice Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeLivemode Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Object
chargeMetadata Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"on_behalf_of" Text -> Maybe ChargeOnBehalfOf'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOnBehalfOf'Variants
chargeOnBehalfOf Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"order" Text -> Maybe ChargeOrder'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOrder'Variants
chargeOrder Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"outcome" Text -> Maybe ChargeOutcome' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOutcome'
chargeOutcome Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"paid" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargePaid Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_intent" Text -> Maybe ChargePaymentIntent'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargePaymentIntent'Variants
chargePaymentIntent Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargePaymentMethod Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method_details" Text -> Maybe ChargePaymentMethodDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargePaymentMethodDetails'
chargePaymentMethodDetails Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"receipt_email" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptEmail Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"receipt_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptNumber Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"receipt_url" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptUrl Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"refunded" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeRefunded Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"refunds" Text -> ChargeRefunds' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> ChargeRefunds'
chargeRefunds Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"review" Text -> Maybe ChargeReview'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeReview'Variants
chargeReview Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"shipping" Text -> Maybe ChargeShipping' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeShipping'
chargeShipping Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"source_transfer" Text -> Maybe ChargeSourceTransfer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeSourceTransfer'Variants
chargeSourceTransfer Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"statement_descriptor" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeStatementDescriptor Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"statement_descriptor_suffix" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeStatementDescriptorSuffix Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeStatus Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transfer" Text -> Maybe ChargeTransfer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeTransfer'Variants
chargeTransfer Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transfer_data" Text -> Maybe ChargeTransferData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeTransferData'
chargeTransferData Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transfer_group" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeTransferGroup Charge
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"charge" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Charge -> Encoding
toEncoding Charge
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmount Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_captured" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmountCaptured Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_refunded" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeAmountRefunded Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application" Text -> Maybe ChargeApplication'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeApplication'Variants
chargeApplication Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application_fee" Text -> Maybe ChargeApplicationFee'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeApplicationFee'Variants
chargeApplicationFee Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application_fee_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Int
chargeApplicationFeeAmount Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"balance_transaction" Text -> Maybe ChargeBalanceTransaction'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeBalanceTransaction'Variants
chargeBalanceTransaction Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_details" Text -> BillingDetails -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> BillingDetails
chargeBillingDetails Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"calculated_statement_descriptor" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeCalculatedStatementDescriptor Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"captured" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeCaptured Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Int
chargeCreated Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeCurrency Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Maybe ChargeCustomer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeCustomer'Variants
chargeCustomer Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"description" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeDescription Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"disputed" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeDisputed Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"failure_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeFailureCode Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"failure_message" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeFailureMessage Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fraud_details" Text -> Maybe ChargeFraudDetails' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeFraudDetails'
chargeFraudDetails Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeId Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"invoice" Text -> Maybe ChargeInvoice'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeInvoice'Variants
chargeInvoice Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeLivemode Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Object
chargeMetadata Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"on_behalf_of" Text -> Maybe ChargeOnBehalfOf'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOnBehalfOf'Variants
chargeOnBehalfOf Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"order" Text -> Maybe ChargeOrder'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOrder'Variants
chargeOrder Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"outcome" Text -> Maybe ChargeOutcome' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeOutcome'
chargeOutcome Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"paid" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargePaid Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_intent" Text -> Maybe ChargePaymentIntent'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargePaymentIntent'Variants
chargePaymentIntent Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargePaymentMethod Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method_details" Text -> Maybe ChargePaymentMethodDetails' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargePaymentMethodDetails'
chargePaymentMethodDetails Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"receipt_email" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptEmail Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"receipt_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptNumber Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"receipt_url" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeReceiptUrl Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"refunded" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Bool
chargeRefunded Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"refunds" Text -> ChargeRefunds' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> ChargeRefunds'
chargeRefunds Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"review" Text -> Maybe ChargeReview'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeReview'Variants
chargeReview Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"shipping" Text -> Maybe ChargeShipping' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeShipping'
chargeShipping Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"source_transfer" Text -> Maybe ChargeSourceTransfer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeSourceTransfer'Variants
chargeSourceTransfer Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"statement_descriptor" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeStatementDescriptor Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"statement_descriptor_suffix" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeStatementDescriptorSuffix Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Text
chargeStatus Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transfer" Text -> Maybe ChargeTransfer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeTransfer'Variants
chargeTransfer Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transfer_data" Text -> Maybe ChargeTransferData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe ChargeTransferData'
chargeTransferData Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transfer_group" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Charge -> Maybe Text
chargeTransferGroup Charge
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"charge"))))))))))))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Charge where
  parseJSON :: Value -> Parser Charge
parseJSON = String -> (Object -> Parser Charge) -> Value -> Parser Charge
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Charge" (\Object
obj -> (((((((((((((((((((((((((((((((((((((((((((Int
 -> Int
 -> Int
 -> Maybe ChargeApplication'Variants
 -> Maybe ChargeApplicationFee'Variants
 -> Maybe Int
 -> Maybe ChargeBalanceTransaction'Variants
 -> BillingDetails
 -> Maybe Text
 -> Bool
 -> Int
 -> Text
 -> Maybe ChargeCustomer'Variants
 -> Maybe Text
 -> Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe ChargeFraudDetails'
 -> Text
 -> Maybe ChargeInvoice'Variants
 -> Bool
 -> Object
 -> Maybe ChargeOnBehalfOf'Variants
 -> Maybe ChargeOrder'Variants
 -> Maybe ChargeOutcome'
 -> Bool
 -> Maybe ChargePaymentIntent'Variants
 -> Maybe Text
 -> Maybe ChargePaymentMethodDetails'
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Bool
 -> ChargeRefunds'
 -> Maybe ChargeReview'Variants
 -> Maybe ChargeShipping'
 -> Maybe ChargeSourceTransfer'Variants
 -> Maybe Text
 -> Maybe Text
 -> Text
 -> Maybe ChargeTransfer'Variants
 -> Maybe ChargeTransferData'
 -> Maybe Text
 -> Charge)
-> Parser
     (Int
      -> Int
      -> Int
      -> Maybe ChargeApplication'Variants
      -> Maybe ChargeApplicationFee'Variants
      -> Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int
-> Int
-> Int
-> Maybe ChargeApplication'Variants
-> Maybe ChargeApplicationFee'Variants
-> Maybe Int
-> Maybe ChargeBalanceTransaction'Variants
-> BillingDetails
-> Maybe Text
-> Bool
-> Int
-> Text
-> Maybe ChargeCustomer'Variants
-> Maybe Text
-> Bool
-> Maybe Text
-> Maybe Text
-> Maybe ChargeFraudDetails'
-> Text
-> Maybe ChargeInvoice'Variants
-> Bool
-> Object
-> Maybe ChargeOnBehalfOf'Variants
-> Maybe ChargeOrder'Variants
-> Maybe ChargeOutcome'
-> Bool
-> Maybe ChargePaymentIntent'Variants
-> Maybe Text
-> Maybe ChargePaymentMethodDetails'
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> ChargeRefunds'
-> Maybe ChargeReview'Variants
-> Maybe ChargeShipping'
-> Maybe ChargeSourceTransfer'Variants
-> Maybe Text
-> Maybe Text
-> Text
-> Maybe ChargeTransfer'Variants
-> Maybe ChargeTransferData'
-> Maybe Text
-> Charge
Charge Parser
  (Int
   -> Int
   -> Int
   -> Maybe ChargeApplication'Variants
   -> Maybe ChargeApplicationFee'Variants
   -> Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Int
-> Parser
     (Int
      -> Int
      -> Maybe ChargeApplication'Variants
      -> Maybe ChargeApplicationFee'Variants
      -> Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"amount")) Parser
  (Int
   -> Int
   -> Maybe ChargeApplication'Variants
   -> Maybe ChargeApplicationFee'Variants
   -> Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Int
-> Parser
     (Int
      -> Maybe ChargeApplication'Variants
      -> Maybe ChargeApplicationFee'Variants
      -> Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"amount_captured")) Parser
  (Int
   -> Maybe ChargeApplication'Variants
   -> Maybe ChargeApplicationFee'Variants
   -> Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Int
-> Parser
     (Maybe ChargeApplication'Variants
      -> Maybe ChargeApplicationFee'Variants
      -> Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"amount_refunded")) Parser
  (Maybe ChargeApplication'Variants
   -> Maybe ChargeApplicationFee'Variants
   -> Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeApplication'Variants)
-> Parser
     (Maybe ChargeApplicationFee'Variants
      -> Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeApplication'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"application")) Parser
  (Maybe ChargeApplicationFee'Variants
   -> Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeApplicationFee'Variants)
-> Parser
     (Maybe Int
      -> Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeApplicationFee'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"application_fee")) Parser
  (Maybe Int
   -> Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Int)
-> Parser
     (Maybe ChargeBalanceTransaction'Variants
      -> BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"application_fee_amount")) Parser
  (Maybe ChargeBalanceTransaction'Variants
   -> BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeBalanceTransaction'Variants)
-> Parser
     (BillingDetails
      -> Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeBalanceTransaction'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"balance_transaction")) Parser
  (BillingDetails
   -> Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser BillingDetails
-> Parser
     (Maybe Text
      -> Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser BillingDetails
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"billing_details")) Parser
  (Maybe Text
   -> Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"calculated_statement_descriptor")) Parser
  (Bool
   -> Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Bool
-> Parser
     (Int
      -> Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"captured")) Parser
  (Int
   -> Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Int
-> Parser
     (Text
      -> Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"created")) Parser
  (Text
   -> Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Text
-> Parser
     (Maybe ChargeCustomer'Variants
      -> Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"currency")) Parser
  (Maybe ChargeCustomer'Variants
   -> Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeCustomer'Variants)
-> Parser
     (Maybe Text
      -> Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeCustomer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"customer")) Parser
  (Maybe Text
   -> Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"description")) Parser
  (Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Bool
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"disputed")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"failure_code")) Parser
  (Maybe Text
   -> Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe ChargeFraudDetails'
      -> Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"failure_message")) Parser
  (Maybe ChargeFraudDetails'
   -> Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeFraudDetails')
-> Parser
     (Text
      -> Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeFraudDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fraud_details")) Parser
  (Text
   -> Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Text
-> Parser
     (Maybe ChargeInvoice'Variants
      -> Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"id")) Parser
  (Maybe ChargeInvoice'Variants
   -> Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeInvoice'Variants)
-> Parser
     (Bool
      -> Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeInvoice'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"invoice")) Parser
  (Bool
   -> Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Bool
-> Parser
     (Object
      -> Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"livemode")) Parser
  (Object
   -> Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Object
-> Parser
     (Maybe ChargeOnBehalfOf'Variants
      -> Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"metadata")) Parser
  (Maybe ChargeOnBehalfOf'Variants
   -> Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeOnBehalfOf'Variants)
-> Parser
     (Maybe ChargeOrder'Variants
      -> Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeOnBehalfOf'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"on_behalf_of")) Parser
  (Maybe ChargeOrder'Variants
   -> Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeOrder'Variants)
-> Parser
     (Maybe ChargeOutcome'
      -> Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeOrder'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"order")) Parser
  (Maybe ChargeOutcome'
   -> Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeOutcome')
-> Parser
     (Bool
      -> Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeOutcome')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"outcome")) Parser
  (Bool
   -> Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Bool
-> Parser
     (Maybe ChargePaymentIntent'Variants
      -> Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"paid")) Parser
  (Maybe ChargePaymentIntent'Variants
   -> Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargePaymentIntent'Variants)
-> Parser
     (Maybe Text
      -> Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargePaymentIntent'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_intent")) Parser
  (Maybe Text
   -> Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe ChargePaymentMethodDetails'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"payment_method")) Parser
  (Maybe ChargePaymentMethodDetails'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargePaymentMethodDetails')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargePaymentMethodDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_method_details")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"receipt_email")) Parser
  (Maybe Text
   -> Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"receipt_number")) Parser
  (Maybe Text
   -> Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Bool
      -> ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"receipt_url")) Parser
  (Bool
   -> ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Bool
-> Parser
     (ChargeRefunds'
      -> Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"refunded")) Parser
  (ChargeRefunds'
   -> Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser ChargeRefunds'
-> Parser
     (Maybe ChargeReview'Variants
      -> Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser ChargeRefunds'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"refunds")) Parser
  (Maybe ChargeReview'Variants
   -> Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeReview'Variants)
-> Parser
     (Maybe ChargeShipping'
      -> Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeReview'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"review")) Parser
  (Maybe ChargeShipping'
   -> Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeShipping')
-> Parser
     (Maybe ChargeSourceTransfer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeShipping')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"shipping")) Parser
  (Maybe ChargeSourceTransfer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe ChargeSourceTransfer'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeSourceTransfer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"source_transfer")) Parser
  (Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"statement_descriptor")) Parser
  (Maybe Text
   -> Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData'
      -> Maybe Text
      -> Charge)
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
"statement_descriptor_suffix")) Parser
  (Text
   -> Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData'
   -> Maybe Text
   -> Charge)
-> Parser Text
-> Parser
     (Maybe ChargeTransfer'Variants
      -> Maybe ChargeTransferData' -> Maybe Text -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status")) Parser
  (Maybe ChargeTransfer'Variants
   -> Maybe ChargeTransferData' -> Maybe Text -> Charge)
-> Parser (Maybe ChargeTransfer'Variants)
-> Parser (Maybe ChargeTransferData' -> Maybe Text -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeTransfer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"transfer")) Parser (Maybe ChargeTransferData' -> Maybe Text -> Charge)
-> Parser (Maybe ChargeTransferData')
-> Parser (Maybe Text -> Charge)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeTransferData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"transfer_data")) Parser (Maybe Text -> Charge)
-> Parser (Maybe Text) -> Parser Charge
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
"transfer_group"))

-- | Create a new 'Charge' with all required fields.
mkCharge ::
  -- | 'chargeAmount'
  GHC.Types.Int ->
  -- | 'chargeAmountCaptured'
  GHC.Types.Int ->
  -- | 'chargeAmountRefunded'
  GHC.Types.Int ->
  -- | 'chargeBillingDetails'
  BillingDetails ->
  -- | 'chargeCaptured'
  GHC.Types.Bool ->
  -- | 'chargeCreated'
  GHC.Types.Int ->
  -- | 'chargeCurrency'
  Data.Text.Internal.Text ->
  -- | 'chargeDisputed'
  GHC.Types.Bool ->
  -- | 'chargeId'
  Data.Text.Internal.Text ->
  -- | 'chargeLivemode'
  GHC.Types.Bool ->
  -- | 'chargeMetadata'
  Data.Aeson.Types.Internal.Object ->
  -- | 'chargePaid'
  GHC.Types.Bool ->
  -- | 'chargeRefunded'
  GHC.Types.Bool ->
  -- | 'chargeRefunds'
  ChargeRefunds' ->
  -- | 'chargeStatus'
  Data.Text.Internal.Text ->
  Charge
mkCharge :: Int
-> Int
-> Int
-> BillingDetails
-> Bool
-> Int
-> Text
-> Bool
-> Text
-> Bool
-> Object
-> Bool
-> Bool
-> ChargeRefunds'
-> Text
-> Charge
mkCharge Int
chargeAmount Int
chargeAmountCaptured Int
chargeAmountRefunded BillingDetails
chargeBillingDetails Bool
chargeCaptured Int
chargeCreated Text
chargeCurrency Bool
chargeDisputed Text
chargeId Bool
chargeLivemode Object
chargeMetadata Bool
chargePaid Bool
chargeRefunded ChargeRefunds'
chargeRefunds Text
chargeStatus =
  Charge :: Int
-> Int
-> Int
-> Maybe ChargeApplication'Variants
-> Maybe ChargeApplicationFee'Variants
-> Maybe Int
-> Maybe ChargeBalanceTransaction'Variants
-> BillingDetails
-> Maybe Text
-> Bool
-> Int
-> Text
-> Maybe ChargeCustomer'Variants
-> Maybe Text
-> Bool
-> Maybe Text
-> Maybe Text
-> Maybe ChargeFraudDetails'
-> Text
-> Maybe ChargeInvoice'Variants
-> Bool
-> Object
-> Maybe ChargeOnBehalfOf'Variants
-> Maybe ChargeOrder'Variants
-> Maybe ChargeOutcome'
-> Bool
-> Maybe ChargePaymentIntent'Variants
-> Maybe Text
-> Maybe ChargePaymentMethodDetails'
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> ChargeRefunds'
-> Maybe ChargeReview'Variants
-> Maybe ChargeShipping'
-> Maybe ChargeSourceTransfer'Variants
-> Maybe Text
-> Maybe Text
-> Text
-> Maybe ChargeTransfer'Variants
-> Maybe ChargeTransferData'
-> Maybe Text
-> Charge
Charge
    { chargeAmount :: Int
chargeAmount = Int
chargeAmount,
      chargeAmountCaptured :: Int
chargeAmountCaptured = Int
chargeAmountCaptured,
      chargeAmountRefunded :: Int
chargeAmountRefunded = Int
chargeAmountRefunded,
      chargeApplication :: Maybe ChargeApplication'Variants
chargeApplication = Maybe ChargeApplication'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeApplicationFee :: Maybe ChargeApplicationFee'Variants
chargeApplicationFee = Maybe ChargeApplicationFee'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeApplicationFeeAmount :: Maybe Int
chargeApplicationFeeAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeBalanceTransaction :: Maybe ChargeBalanceTransaction'Variants
chargeBalanceTransaction = Maybe ChargeBalanceTransaction'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeBillingDetails :: BillingDetails
chargeBillingDetails = BillingDetails
chargeBillingDetails,
      chargeCalculatedStatementDescriptor :: Maybe Text
chargeCalculatedStatementDescriptor = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeCaptured :: Bool
chargeCaptured = Bool
chargeCaptured,
      chargeCreated :: Int
chargeCreated = Int
chargeCreated,
      chargeCurrency :: Text
chargeCurrency = Text
chargeCurrency,
      chargeCustomer :: Maybe ChargeCustomer'Variants
chargeCustomer = Maybe ChargeCustomer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeDescription :: Maybe Text
chargeDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeDisputed :: Bool
chargeDisputed = Bool
chargeDisputed,
      chargeFailureCode :: Maybe Text
chargeFailureCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeFailureMessage :: Maybe Text
chargeFailureMessage = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeFraudDetails :: Maybe ChargeFraudDetails'
chargeFraudDetails = Maybe ChargeFraudDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeId :: Text
chargeId = Text
chargeId,
      chargeInvoice :: Maybe ChargeInvoice'Variants
chargeInvoice = Maybe ChargeInvoice'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeLivemode :: Bool
chargeLivemode = Bool
chargeLivemode,
      chargeMetadata :: Object
chargeMetadata = Object
chargeMetadata,
      chargeOnBehalfOf :: Maybe ChargeOnBehalfOf'Variants
chargeOnBehalfOf = Maybe ChargeOnBehalfOf'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOrder :: Maybe ChargeOrder'Variants
chargeOrder = Maybe ChargeOrder'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome :: Maybe ChargeOutcome'
chargeOutcome = Maybe ChargeOutcome'
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaid :: Bool
chargePaid = Bool
chargePaid,
      chargePaymentIntent :: Maybe ChargePaymentIntent'Variants
chargePaymentIntent = Maybe ChargePaymentIntent'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethod :: Maybe Text
chargePaymentMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails :: Maybe ChargePaymentMethodDetails'
chargePaymentMethodDetails = Maybe ChargePaymentMethodDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeReceiptEmail :: Maybe Text
chargeReceiptEmail = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeReceiptNumber :: Maybe Text
chargeReceiptNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeReceiptUrl :: Maybe Text
chargeReceiptUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeRefunded :: Bool
chargeRefunded = Bool
chargeRefunded,
      chargeRefunds :: ChargeRefunds'
chargeRefunds = ChargeRefunds'
chargeRefunds,
      chargeReview :: Maybe ChargeReview'Variants
chargeReview = Maybe ChargeReview'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeShipping :: Maybe ChargeShipping'
chargeShipping = Maybe ChargeShipping'
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeSourceTransfer :: Maybe ChargeSourceTransfer'Variants
chargeSourceTransfer = Maybe ChargeSourceTransfer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeStatementDescriptor :: Maybe Text
chargeStatementDescriptor = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeStatementDescriptorSuffix :: Maybe Text
chargeStatementDescriptorSuffix = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeStatus :: Text
chargeStatus = Text
chargeStatus,
      chargeTransfer :: Maybe ChargeTransfer'Variants
chargeTransfer = Maybe ChargeTransfer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeTransferData :: Maybe ChargeTransferData'
chargeTransferData = Maybe ChargeTransferData'
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeTransferGroup :: Maybe Text
chargeTransferGroup = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.application.anyOf@ in the specification.
--
-- ID of the Connect application that created the charge.
data ChargeApplication'Variants
  = ChargeApplication'Text Data.Text.Internal.Text
  | ChargeApplication'Application Application
  deriving (Int -> ChargeApplication'Variants -> ShowS
[ChargeApplication'Variants] -> ShowS
ChargeApplication'Variants -> String
(Int -> ChargeApplication'Variants -> ShowS)
-> (ChargeApplication'Variants -> String)
-> ([ChargeApplication'Variants] -> ShowS)
-> Show ChargeApplication'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeApplication'Variants] -> ShowS
$cshowList :: [ChargeApplication'Variants] -> ShowS
show :: ChargeApplication'Variants -> String
$cshow :: ChargeApplication'Variants -> String
showsPrec :: Int -> ChargeApplication'Variants -> ShowS
$cshowsPrec :: Int -> ChargeApplication'Variants -> ShowS
GHC.Show.Show, ChargeApplication'Variants -> ChargeApplication'Variants -> Bool
(ChargeApplication'Variants -> ChargeApplication'Variants -> Bool)
-> (ChargeApplication'Variants
    -> ChargeApplication'Variants -> Bool)
-> Eq ChargeApplication'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeApplication'Variants -> ChargeApplication'Variants -> Bool
$c/= :: ChargeApplication'Variants -> ChargeApplication'Variants -> Bool
== :: ChargeApplication'Variants -> ChargeApplication'Variants -> Bool
$c== :: ChargeApplication'Variants -> ChargeApplication'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeApplication'Variants where
  toJSON :: ChargeApplication'Variants -> Value
toJSON (ChargeApplication'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeApplication'Application Application
a) = Application -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Application
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeApplication'Variants where
  parseJSON :: Value -> Parser ChargeApplication'Variants
parseJSON Value
val = case (Text -> ChargeApplication'Variants
ChargeApplication'Text (Text -> ChargeApplication'Variants)
-> Result Text -> Result ChargeApplication'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeApplication'Variants
-> Result ChargeApplication'Variants
-> Result ChargeApplication'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Application -> ChargeApplication'Variants
ChargeApplication'Application (Application -> ChargeApplication'Variants)
-> Result Application -> Result ChargeApplication'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Application
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeApplication'Variants
-> Result ChargeApplication'Variants
-> Result ChargeApplication'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeApplication'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeApplication'Variants
a -> ChargeApplication'Variants -> Parser ChargeApplication'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeApplication'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeApplication'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.application_fee.anyOf@ in the specification.
--
-- The application fee (if any) for the charge. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/direct-charges\#collecting-fees) for details.
data ChargeApplicationFee'Variants
  = ChargeApplicationFee'Text Data.Text.Internal.Text
  | ChargeApplicationFee'ApplicationFee ApplicationFee
  deriving (Int -> ChargeApplicationFee'Variants -> ShowS
[ChargeApplicationFee'Variants] -> ShowS
ChargeApplicationFee'Variants -> String
(Int -> ChargeApplicationFee'Variants -> ShowS)
-> (ChargeApplicationFee'Variants -> String)
-> ([ChargeApplicationFee'Variants] -> ShowS)
-> Show ChargeApplicationFee'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeApplicationFee'Variants] -> ShowS
$cshowList :: [ChargeApplicationFee'Variants] -> ShowS
show :: ChargeApplicationFee'Variants -> String
$cshow :: ChargeApplicationFee'Variants -> String
showsPrec :: Int -> ChargeApplicationFee'Variants -> ShowS
$cshowsPrec :: Int -> ChargeApplicationFee'Variants -> ShowS
GHC.Show.Show, ChargeApplicationFee'Variants
-> ChargeApplicationFee'Variants -> Bool
(ChargeApplicationFee'Variants
 -> ChargeApplicationFee'Variants -> Bool)
-> (ChargeApplicationFee'Variants
    -> ChargeApplicationFee'Variants -> Bool)
-> Eq ChargeApplicationFee'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeApplicationFee'Variants
-> ChargeApplicationFee'Variants -> Bool
$c/= :: ChargeApplicationFee'Variants
-> ChargeApplicationFee'Variants -> Bool
== :: ChargeApplicationFee'Variants
-> ChargeApplicationFee'Variants -> Bool
$c== :: ChargeApplicationFee'Variants
-> ChargeApplicationFee'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeApplicationFee'Variants where
  toJSON :: ChargeApplicationFee'Variants -> Value
toJSON (ChargeApplicationFee'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeApplicationFee'ApplicationFee ApplicationFee
a) = ApplicationFee -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON ApplicationFee
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeApplicationFee'Variants where
  parseJSON :: Value -> Parser ChargeApplicationFee'Variants
parseJSON Value
val = case (Text -> ChargeApplicationFee'Variants
ChargeApplicationFee'Text (Text -> ChargeApplicationFee'Variants)
-> Result Text -> Result ChargeApplicationFee'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeApplicationFee'Variants
-> Result ChargeApplicationFee'Variants
-> Result ChargeApplicationFee'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((ApplicationFee -> ChargeApplicationFee'Variants
ChargeApplicationFee'ApplicationFee (ApplicationFee -> ChargeApplicationFee'Variants)
-> Result ApplicationFee -> Result ChargeApplicationFee'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result ApplicationFee
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeApplicationFee'Variants
-> Result ChargeApplicationFee'Variants
-> Result ChargeApplicationFee'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeApplicationFee'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeApplicationFee'Variants
a -> ChargeApplicationFee'Variants
-> Parser ChargeApplicationFee'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeApplicationFee'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeApplicationFee'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.balance_transaction.anyOf@ in the specification.
--
-- ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes).
data ChargeBalanceTransaction'Variants
  = ChargeBalanceTransaction'Text Data.Text.Internal.Text
  | ChargeBalanceTransaction'BalanceTransaction BalanceTransaction
  deriving (Int -> ChargeBalanceTransaction'Variants -> ShowS
[ChargeBalanceTransaction'Variants] -> ShowS
ChargeBalanceTransaction'Variants -> String
(Int -> ChargeBalanceTransaction'Variants -> ShowS)
-> (ChargeBalanceTransaction'Variants -> String)
-> ([ChargeBalanceTransaction'Variants] -> ShowS)
-> Show ChargeBalanceTransaction'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeBalanceTransaction'Variants] -> ShowS
$cshowList :: [ChargeBalanceTransaction'Variants] -> ShowS
show :: ChargeBalanceTransaction'Variants -> String
$cshow :: ChargeBalanceTransaction'Variants -> String
showsPrec :: Int -> ChargeBalanceTransaction'Variants -> ShowS
$cshowsPrec :: Int -> ChargeBalanceTransaction'Variants -> ShowS
GHC.Show.Show, ChargeBalanceTransaction'Variants
-> ChargeBalanceTransaction'Variants -> Bool
(ChargeBalanceTransaction'Variants
 -> ChargeBalanceTransaction'Variants -> Bool)
-> (ChargeBalanceTransaction'Variants
    -> ChargeBalanceTransaction'Variants -> Bool)
-> Eq ChargeBalanceTransaction'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeBalanceTransaction'Variants
-> ChargeBalanceTransaction'Variants -> Bool
$c/= :: ChargeBalanceTransaction'Variants
-> ChargeBalanceTransaction'Variants -> Bool
== :: ChargeBalanceTransaction'Variants
-> ChargeBalanceTransaction'Variants -> Bool
$c== :: ChargeBalanceTransaction'Variants
-> ChargeBalanceTransaction'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeBalanceTransaction'Variants where
  toJSON :: ChargeBalanceTransaction'Variants -> Value
toJSON (ChargeBalanceTransaction'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeBalanceTransaction'BalanceTransaction BalanceTransaction
a) = BalanceTransaction -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON BalanceTransaction
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeBalanceTransaction'Variants where
  parseJSON :: Value -> Parser ChargeBalanceTransaction'Variants
parseJSON Value
val = case (Text -> ChargeBalanceTransaction'Variants
ChargeBalanceTransaction'Text (Text -> ChargeBalanceTransaction'Variants)
-> Result Text -> Result ChargeBalanceTransaction'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeBalanceTransaction'Variants
-> Result ChargeBalanceTransaction'Variants
-> Result ChargeBalanceTransaction'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((BalanceTransaction -> ChargeBalanceTransaction'Variants
ChargeBalanceTransaction'BalanceTransaction (BalanceTransaction -> ChargeBalanceTransaction'Variants)
-> Result BalanceTransaction
-> Result ChargeBalanceTransaction'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result BalanceTransaction
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeBalanceTransaction'Variants
-> Result ChargeBalanceTransaction'Variants
-> Result ChargeBalanceTransaction'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeBalanceTransaction'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeBalanceTransaction'Variants
a -> ChargeBalanceTransaction'Variants
-> Parser ChargeBalanceTransaction'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeBalanceTransaction'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeBalanceTransaction'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.customer.anyOf@ in the specification.
--
-- ID of the customer this charge is for if one exists.
data ChargeCustomer'Variants
  = ChargeCustomer'Text Data.Text.Internal.Text
  | ChargeCustomer'Customer Customer
  | ChargeCustomer'DeletedCustomer DeletedCustomer
  deriving (Int -> ChargeCustomer'Variants -> ShowS
[ChargeCustomer'Variants] -> ShowS
ChargeCustomer'Variants -> String
(Int -> ChargeCustomer'Variants -> ShowS)
-> (ChargeCustomer'Variants -> String)
-> ([ChargeCustomer'Variants] -> ShowS)
-> Show ChargeCustomer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeCustomer'Variants] -> ShowS
$cshowList :: [ChargeCustomer'Variants] -> ShowS
show :: ChargeCustomer'Variants -> String
$cshow :: ChargeCustomer'Variants -> String
showsPrec :: Int -> ChargeCustomer'Variants -> ShowS
$cshowsPrec :: Int -> ChargeCustomer'Variants -> ShowS
GHC.Show.Show, ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool
(ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool)
-> (ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool)
-> Eq ChargeCustomer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool
$c/= :: ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool
== :: ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool
$c== :: ChargeCustomer'Variants -> ChargeCustomer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeCustomer'Variants where
  toJSON :: ChargeCustomer'Variants -> Value
toJSON (ChargeCustomer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeCustomer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a
  toJSON (ChargeCustomer'DeletedCustomer DeletedCustomer
a) = DeletedCustomer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON DeletedCustomer
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeCustomer'Variants where
  parseJSON :: Value -> Parser ChargeCustomer'Variants
parseJSON Value
val = case (Text -> ChargeCustomer'Variants
ChargeCustomer'Text (Text -> ChargeCustomer'Variants)
-> Result Text -> Result ChargeCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeCustomer'Variants
-> Result ChargeCustomer'Variants -> Result ChargeCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Customer -> ChargeCustomer'Variants
ChargeCustomer'Customer (Customer -> ChargeCustomer'Variants)
-> Result Customer -> Result ChargeCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Customer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeCustomer'Variants
-> Result ChargeCustomer'Variants -> Result ChargeCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((DeletedCustomer -> ChargeCustomer'Variants
ChargeCustomer'DeletedCustomer (DeletedCustomer -> ChargeCustomer'Variants)
-> Result DeletedCustomer -> Result ChargeCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result DeletedCustomer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeCustomer'Variants
-> Result ChargeCustomer'Variants -> Result ChargeCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeCustomer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched")) of
    Data.Aeson.Types.Internal.Success ChargeCustomer'Variants
a -> ChargeCustomer'Variants -> Parser ChargeCustomer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeCustomer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeCustomer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.charge.properties.fraud_details.anyOf@ in the specification.
--
-- Information on fraud assessments for the charge.
data ChargeFraudDetails' = ChargeFraudDetails'
  { -- | stripe_report: Assessments from Stripe. If set, the value is \`fraudulent\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'StripeReport :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | user_report: Assessments reported by you. If set, possible values of are \`safe\` and \`fraudulent\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'UserReport :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> ChargeFraudDetails' -> ShowS
[ChargeFraudDetails'] -> ShowS
ChargeFraudDetails' -> String
(Int -> ChargeFraudDetails' -> ShowS)
-> (ChargeFraudDetails' -> String)
-> ([ChargeFraudDetails'] -> ShowS)
-> Show ChargeFraudDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeFraudDetails'] -> ShowS
$cshowList :: [ChargeFraudDetails'] -> ShowS
show :: ChargeFraudDetails' -> String
$cshow :: ChargeFraudDetails' -> String
showsPrec :: Int -> ChargeFraudDetails' -> ShowS
$cshowsPrec :: Int -> ChargeFraudDetails' -> ShowS
GHC.Show.Show,
      ChargeFraudDetails' -> ChargeFraudDetails' -> Bool
(ChargeFraudDetails' -> ChargeFraudDetails' -> Bool)
-> (ChargeFraudDetails' -> ChargeFraudDetails' -> Bool)
-> Eq ChargeFraudDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeFraudDetails' -> ChargeFraudDetails' -> Bool
$c/= :: ChargeFraudDetails' -> ChargeFraudDetails' -> Bool
== :: ChargeFraudDetails' -> ChargeFraudDetails' -> Bool
$c== :: ChargeFraudDetails' -> ChargeFraudDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargeFraudDetails' where
  toJSON :: ChargeFraudDetails' -> Value
toJSON ChargeFraudDetails'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"stripe_report" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'StripeReport ChargeFraudDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"user_report" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'UserReport ChargeFraudDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargeFraudDetails' -> Encoding
toEncoding ChargeFraudDetails'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"stripe_report" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'StripeReport ChargeFraudDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"user_report" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeFraudDetails' -> Maybe Text
chargeFraudDetails'UserReport ChargeFraudDetails'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeFraudDetails' where
  parseJSON :: Value -> Parser ChargeFraudDetails'
parseJSON = String
-> (Object -> Parser ChargeFraudDetails')
-> Value
-> Parser ChargeFraudDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargeFraudDetails'" (\Object
obj -> ((Maybe Text -> Maybe Text -> ChargeFraudDetails')
-> Parser (Maybe Text -> Maybe Text -> ChargeFraudDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text -> Maybe Text -> ChargeFraudDetails'
ChargeFraudDetails' Parser (Maybe Text -> Maybe Text -> ChargeFraudDetails')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> ChargeFraudDetails')
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
"stripe_report")) Parser (Maybe Text -> ChargeFraudDetails')
-> Parser (Maybe Text) -> Parser ChargeFraudDetails'
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
"user_report"))

-- | Create a new 'ChargeFraudDetails'' with all required fields.
mkChargeFraudDetails' :: ChargeFraudDetails'
mkChargeFraudDetails' :: ChargeFraudDetails'
mkChargeFraudDetails' =
  ChargeFraudDetails' :: Maybe Text -> Maybe Text -> ChargeFraudDetails'
ChargeFraudDetails'
    { chargeFraudDetails'StripeReport :: Maybe Text
chargeFraudDetails'StripeReport = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeFraudDetails'UserReport :: Maybe Text
chargeFraudDetails'UserReport = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.invoice.anyOf@ in the specification.
--
-- ID of the invoice this charge is for if one exists.
data ChargeInvoice'Variants
  = ChargeInvoice'Text Data.Text.Internal.Text
  | ChargeInvoice'Invoice Invoice
  deriving (Int -> ChargeInvoice'Variants -> ShowS
[ChargeInvoice'Variants] -> ShowS
ChargeInvoice'Variants -> String
(Int -> ChargeInvoice'Variants -> ShowS)
-> (ChargeInvoice'Variants -> String)
-> ([ChargeInvoice'Variants] -> ShowS)
-> Show ChargeInvoice'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeInvoice'Variants] -> ShowS
$cshowList :: [ChargeInvoice'Variants] -> ShowS
show :: ChargeInvoice'Variants -> String
$cshow :: ChargeInvoice'Variants -> String
showsPrec :: Int -> ChargeInvoice'Variants -> ShowS
$cshowsPrec :: Int -> ChargeInvoice'Variants -> ShowS
GHC.Show.Show, ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool
(ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool)
-> (ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool)
-> Eq ChargeInvoice'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool
$c/= :: ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool
== :: ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool
$c== :: ChargeInvoice'Variants -> ChargeInvoice'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeInvoice'Variants where
  toJSON :: ChargeInvoice'Variants -> Value
toJSON (ChargeInvoice'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeInvoice'Invoice Invoice
a) = Invoice -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Invoice
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeInvoice'Variants where
  parseJSON :: Value -> Parser ChargeInvoice'Variants
parseJSON Value
val = case (Text -> ChargeInvoice'Variants
ChargeInvoice'Text (Text -> ChargeInvoice'Variants)
-> Result Text -> Result ChargeInvoice'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeInvoice'Variants
-> Result ChargeInvoice'Variants -> Result ChargeInvoice'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Invoice -> ChargeInvoice'Variants
ChargeInvoice'Invoice (Invoice -> ChargeInvoice'Variants)
-> Result Invoice -> Result ChargeInvoice'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Invoice
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeInvoice'Variants
-> Result ChargeInvoice'Variants -> Result ChargeInvoice'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeInvoice'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeInvoice'Variants
a -> ChargeInvoice'Variants -> Parser ChargeInvoice'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeInvoice'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeInvoice'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.on_behalf_of.anyOf@ in the specification.
--
-- The account (if any) the charge was made on behalf of without triggering an automatic transfer. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers) for details.
data ChargeOnBehalfOf'Variants
  = ChargeOnBehalfOf'Text Data.Text.Internal.Text
  | ChargeOnBehalfOf'Account Account
  deriving (Int -> ChargeOnBehalfOf'Variants -> ShowS
[ChargeOnBehalfOf'Variants] -> ShowS
ChargeOnBehalfOf'Variants -> String
(Int -> ChargeOnBehalfOf'Variants -> ShowS)
-> (ChargeOnBehalfOf'Variants -> String)
-> ([ChargeOnBehalfOf'Variants] -> ShowS)
-> Show ChargeOnBehalfOf'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeOnBehalfOf'Variants] -> ShowS
$cshowList :: [ChargeOnBehalfOf'Variants] -> ShowS
show :: ChargeOnBehalfOf'Variants -> String
$cshow :: ChargeOnBehalfOf'Variants -> String
showsPrec :: Int -> ChargeOnBehalfOf'Variants -> ShowS
$cshowsPrec :: Int -> ChargeOnBehalfOf'Variants -> ShowS
GHC.Show.Show, ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool
(ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool)
-> (ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool)
-> Eq ChargeOnBehalfOf'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool
$c/= :: ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool
== :: ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool
$c== :: ChargeOnBehalfOf'Variants -> ChargeOnBehalfOf'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeOnBehalfOf'Variants where
  toJSON :: ChargeOnBehalfOf'Variants -> Value
toJSON (ChargeOnBehalfOf'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeOnBehalfOf'Account Account
a) = Account -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Account
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeOnBehalfOf'Variants where
  parseJSON :: Value -> Parser ChargeOnBehalfOf'Variants
parseJSON Value
val = case (Text -> ChargeOnBehalfOf'Variants
ChargeOnBehalfOf'Text (Text -> ChargeOnBehalfOf'Variants)
-> Result Text -> Result ChargeOnBehalfOf'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOnBehalfOf'Variants
-> Result ChargeOnBehalfOf'Variants
-> Result ChargeOnBehalfOf'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Account -> ChargeOnBehalfOf'Variants
ChargeOnBehalfOf'Account (Account -> ChargeOnBehalfOf'Variants)
-> Result Account -> Result ChargeOnBehalfOf'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Account
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOnBehalfOf'Variants
-> Result ChargeOnBehalfOf'Variants
-> Result ChargeOnBehalfOf'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeOnBehalfOf'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeOnBehalfOf'Variants
a -> ChargeOnBehalfOf'Variants -> Parser ChargeOnBehalfOf'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeOnBehalfOf'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeOnBehalfOf'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.order.anyOf@ in the specification.
--
-- ID of the order this charge is for if one exists.
data ChargeOrder'Variants
  = ChargeOrder'Text Data.Text.Internal.Text
  | ChargeOrder'Order Order
  deriving (Int -> ChargeOrder'Variants -> ShowS
[ChargeOrder'Variants] -> ShowS
ChargeOrder'Variants -> String
(Int -> ChargeOrder'Variants -> ShowS)
-> (ChargeOrder'Variants -> String)
-> ([ChargeOrder'Variants] -> ShowS)
-> Show ChargeOrder'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeOrder'Variants] -> ShowS
$cshowList :: [ChargeOrder'Variants] -> ShowS
show :: ChargeOrder'Variants -> String
$cshow :: ChargeOrder'Variants -> String
showsPrec :: Int -> ChargeOrder'Variants -> ShowS
$cshowsPrec :: Int -> ChargeOrder'Variants -> ShowS
GHC.Show.Show, ChargeOrder'Variants -> ChargeOrder'Variants -> Bool
(ChargeOrder'Variants -> ChargeOrder'Variants -> Bool)
-> (ChargeOrder'Variants -> ChargeOrder'Variants -> Bool)
-> Eq ChargeOrder'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeOrder'Variants -> ChargeOrder'Variants -> Bool
$c/= :: ChargeOrder'Variants -> ChargeOrder'Variants -> Bool
== :: ChargeOrder'Variants -> ChargeOrder'Variants -> Bool
$c== :: ChargeOrder'Variants -> ChargeOrder'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeOrder'Variants where
  toJSON :: ChargeOrder'Variants -> Value
toJSON (ChargeOrder'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeOrder'Order Order
a) = Order -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Order
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeOrder'Variants where
  parseJSON :: Value -> Parser ChargeOrder'Variants
parseJSON Value
val = case (Text -> ChargeOrder'Variants
ChargeOrder'Text (Text -> ChargeOrder'Variants)
-> Result Text -> Result ChargeOrder'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOrder'Variants
-> Result ChargeOrder'Variants -> Result ChargeOrder'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Order -> ChargeOrder'Variants
ChargeOrder'Order (Order -> ChargeOrder'Variants)
-> Result Order -> Result ChargeOrder'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Order
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOrder'Variants
-> Result ChargeOrder'Variants -> Result ChargeOrder'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeOrder'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeOrder'Variants
a -> ChargeOrder'Variants -> Parser ChargeOrder'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeOrder'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeOrder'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.charge.properties.outcome.anyOf@ in the specification.
--
-- Details about whether the payment was accepted, and why. See [understanding declines](https:\\\/\\\/stripe.com\\\/docs\\\/declines) for details.
data ChargeOutcome' = ChargeOutcome'
  { -- | network_status: Possible values are \`approved_by_network\`, \`declined_by_network\`, \`not_sent_to_network\`, and \`reversed_after_approval\`. The value \`reversed_after_approval\` indicates the payment was [blocked by Stripe](https:\/\/stripe.com\/docs\/declines\#blocked-payments) after bank authorization, and may temporarily appear as \"pending\" on a cardholder\'s statement.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeOutcome' -> Maybe Text
chargeOutcome'NetworkStatus :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | reason: An enumerated value providing a more detailed explanation of the outcome\'s \`type\`. Charges blocked by Radar\'s default block rule have the value \`highest_risk_level\`. Charges placed in review by Radar\'s default review rule have the value \`elevated_risk_level\`. Charges authorized, blocked, or placed in review by custom rules have the value \`rule\`. See [understanding declines](https:\/\/stripe.com\/docs\/declines) for more details.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeOutcome' -> Maybe Text
chargeOutcome'Reason :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | risk_level: Stripe Radar\'s evaluation of the riskiness of the payment. Possible values for evaluated payments are \`normal\`, \`elevated\`, \`highest\`. For non-card payments, and card-based payments predating the public assignment of risk levels, this field will have the value \`not_assessed\`. In the event of an error in the evaluation, this field will have the value \`unknown\`. This field is only available with Radar.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeOutcome' -> Maybe Text
chargeOutcome'RiskLevel :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | risk_score: Stripe Radar\'s evaluation of the riskiness of the payment. Possible values for evaluated payments are between 0 and 100. For non-card payments, card-based payments predating the public assignment of risk scores, or in the event of an error during evaluation, this field will not be present. This field is only available with Radar for Fraud Teams.
    ChargeOutcome' -> Maybe Int
chargeOutcome'RiskScore :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | rule: The ID of the Radar rule that matched the payment, if applicable.
    ChargeOutcome' -> Maybe ChargeOutcome'Rule'Variants
chargeOutcome'Rule :: (GHC.Maybe.Maybe ChargeOutcome'Rule'Variants),
    -- | seller_message: A human-readable description of the outcome type and reason, designed for you (the recipient of the payment), not your customer.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeOutcome' -> Maybe Text
chargeOutcome'SellerMessage :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | type: Possible values are \`authorized\`, \`manual_review\`, \`issuer_declined\`, \`blocked\`, and \`invalid\`. See [understanding declines](https:\/\/stripe.com\/docs\/declines) and [Radar reviews](https:\/\/stripe.com\/docs\/radar\/reviews) for details.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeOutcome' -> Maybe Text
chargeOutcome'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> ChargeOutcome' -> ShowS
[ChargeOutcome'] -> ShowS
ChargeOutcome' -> String
(Int -> ChargeOutcome' -> ShowS)
-> (ChargeOutcome' -> String)
-> ([ChargeOutcome'] -> ShowS)
-> Show ChargeOutcome'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeOutcome'] -> ShowS
$cshowList :: [ChargeOutcome'] -> ShowS
show :: ChargeOutcome' -> String
$cshow :: ChargeOutcome' -> String
showsPrec :: Int -> ChargeOutcome' -> ShowS
$cshowsPrec :: Int -> ChargeOutcome' -> ShowS
GHC.Show.Show,
      ChargeOutcome' -> ChargeOutcome' -> Bool
(ChargeOutcome' -> ChargeOutcome' -> Bool)
-> (ChargeOutcome' -> ChargeOutcome' -> Bool) -> Eq ChargeOutcome'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeOutcome' -> ChargeOutcome' -> Bool
$c/= :: ChargeOutcome' -> ChargeOutcome' -> Bool
== :: ChargeOutcome' -> ChargeOutcome' -> Bool
$c== :: ChargeOutcome' -> ChargeOutcome' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargeOutcome' where
  toJSON :: ChargeOutcome' -> Value
toJSON ChargeOutcome'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"network_status" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'NetworkStatus ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reason" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'Reason ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"risk_level" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'RiskLevel ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"risk_score" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Int
chargeOutcome'RiskScore ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"rule" Text -> Maybe ChargeOutcome'Rule'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe ChargeOutcome'Rule'Variants
chargeOutcome'Rule ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"seller_message" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'SellerMessage ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'Type ChargeOutcome'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargeOutcome' -> Encoding
toEncoding ChargeOutcome'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"network_status" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'NetworkStatus ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"reason" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'Reason ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"risk_level" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'RiskLevel ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"risk_score" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Int
chargeOutcome'RiskScore ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"rule" Text -> Maybe ChargeOutcome'Rule'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe ChargeOutcome'Rule'Variants
chargeOutcome'Rule ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"seller_message" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'SellerMessage ChargeOutcome'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"type" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeOutcome' -> Maybe Text
chargeOutcome'Type ChargeOutcome'
obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeOutcome' where
  parseJSON :: Value -> Parser ChargeOutcome'
parseJSON = String
-> (Object -> Parser ChargeOutcome')
-> Value
-> Parser ChargeOutcome'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargeOutcome'" (\Object
obj -> (((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe ChargeOutcome'Rule'Variants
 -> Maybe Text
 -> Maybe Text
 -> ChargeOutcome')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe ChargeOutcome'Rule'Variants
      -> Maybe Text
      -> Maybe Text
      -> ChargeOutcome')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe ChargeOutcome'Rule'Variants
-> Maybe Text
-> Maybe Text
-> ChargeOutcome'
ChargeOutcome' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe ChargeOutcome'Rule'Variants
   -> Maybe Text
   -> Maybe Text
   -> ChargeOutcome')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe ChargeOutcome'Rule'Variants
      -> Maybe Text
      -> Maybe Text
      -> ChargeOutcome')
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
"network_status")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe ChargeOutcome'Rule'Variants
   -> Maybe Text
   -> Maybe Text
   -> ChargeOutcome')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe ChargeOutcome'Rule'Variants
      -> Maybe Text
      -> Maybe Text
      -> ChargeOutcome')
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
"reason")) Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe ChargeOutcome'Rule'Variants
   -> Maybe Text
   -> Maybe Text
   -> ChargeOutcome')
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe ChargeOutcome'Rule'Variants
      -> Maybe Text
      -> Maybe Text
      -> ChargeOutcome')
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
"risk_level")) Parser
  (Maybe Int
   -> Maybe ChargeOutcome'Rule'Variants
   -> Maybe Text
   -> Maybe Text
   -> ChargeOutcome')
-> Parser (Maybe Int)
-> Parser
     (Maybe ChargeOutcome'Rule'Variants
      -> Maybe Text -> Maybe Text -> ChargeOutcome')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"risk_score")) Parser
  (Maybe ChargeOutcome'Rule'Variants
   -> Maybe Text -> Maybe Text -> ChargeOutcome')
-> Parser (Maybe ChargeOutcome'Rule'Variants)
-> Parser (Maybe Text -> Maybe Text -> ChargeOutcome')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe ChargeOutcome'Rule'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"rule")) Parser (Maybe Text -> Maybe Text -> ChargeOutcome')
-> Parser (Maybe Text) -> Parser (Maybe Text -> ChargeOutcome')
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
"seller_message")) Parser (Maybe Text -> ChargeOutcome')
-> Parser (Maybe Text) -> Parser ChargeOutcome'
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
"type"))

-- | Create a new 'ChargeOutcome'' with all required fields.
mkChargeOutcome' :: ChargeOutcome'
mkChargeOutcome' :: ChargeOutcome'
mkChargeOutcome' =
  ChargeOutcome' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe ChargeOutcome'Rule'Variants
-> Maybe Text
-> Maybe Text
-> ChargeOutcome'
ChargeOutcome'
    { chargeOutcome'NetworkStatus :: Maybe Text
chargeOutcome'NetworkStatus = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'Reason :: Maybe Text
chargeOutcome'Reason = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'RiskLevel :: Maybe Text
chargeOutcome'RiskLevel = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'RiskScore :: Maybe Int
chargeOutcome'RiskScore = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'Rule :: Maybe ChargeOutcome'Rule'Variants
chargeOutcome'Rule = Maybe ChargeOutcome'Rule'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'SellerMessage :: Maybe Text
chargeOutcome'SellerMessage = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeOutcome'Type :: Maybe Text
chargeOutcome'Type = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.outcome.anyOf.properties.rule.anyOf@ in the specification.
--
-- The ID of the Radar rule that matched the payment, if applicable.
data ChargeOutcome'Rule'Variants
  = ChargeOutcome'Rule'Text Data.Text.Internal.Text
  | ChargeOutcome'Rule'Rule Rule
  deriving (Int -> ChargeOutcome'Rule'Variants -> ShowS
[ChargeOutcome'Rule'Variants] -> ShowS
ChargeOutcome'Rule'Variants -> String
(Int -> ChargeOutcome'Rule'Variants -> ShowS)
-> (ChargeOutcome'Rule'Variants -> String)
-> ([ChargeOutcome'Rule'Variants] -> ShowS)
-> Show ChargeOutcome'Rule'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeOutcome'Rule'Variants] -> ShowS
$cshowList :: [ChargeOutcome'Rule'Variants] -> ShowS
show :: ChargeOutcome'Rule'Variants -> String
$cshow :: ChargeOutcome'Rule'Variants -> String
showsPrec :: Int -> ChargeOutcome'Rule'Variants -> ShowS
$cshowsPrec :: Int -> ChargeOutcome'Rule'Variants -> ShowS
GHC.Show.Show, ChargeOutcome'Rule'Variants -> ChargeOutcome'Rule'Variants -> Bool
(ChargeOutcome'Rule'Variants
 -> ChargeOutcome'Rule'Variants -> Bool)
-> (ChargeOutcome'Rule'Variants
    -> ChargeOutcome'Rule'Variants -> Bool)
-> Eq ChargeOutcome'Rule'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeOutcome'Rule'Variants -> ChargeOutcome'Rule'Variants -> Bool
$c/= :: ChargeOutcome'Rule'Variants -> ChargeOutcome'Rule'Variants -> Bool
== :: ChargeOutcome'Rule'Variants -> ChargeOutcome'Rule'Variants -> Bool
$c== :: ChargeOutcome'Rule'Variants -> ChargeOutcome'Rule'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeOutcome'Rule'Variants where
  toJSON :: ChargeOutcome'Rule'Variants -> Value
toJSON (ChargeOutcome'Rule'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeOutcome'Rule'Rule Rule
a) = Rule -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Rule
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeOutcome'Rule'Variants where
  parseJSON :: Value -> Parser ChargeOutcome'Rule'Variants
parseJSON Value
val = case (Text -> ChargeOutcome'Rule'Variants
ChargeOutcome'Rule'Text (Text -> ChargeOutcome'Rule'Variants)
-> Result Text -> Result ChargeOutcome'Rule'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOutcome'Rule'Variants
-> Result ChargeOutcome'Rule'Variants
-> Result ChargeOutcome'Rule'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Rule -> ChargeOutcome'Rule'Variants
ChargeOutcome'Rule'Rule (Rule -> ChargeOutcome'Rule'Variants)
-> Result Rule -> Result ChargeOutcome'Rule'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Rule
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeOutcome'Rule'Variants
-> Result ChargeOutcome'Rule'Variants
-> Result ChargeOutcome'Rule'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeOutcome'Rule'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeOutcome'Rule'Variants
a -> ChargeOutcome'Rule'Variants -> Parser ChargeOutcome'Rule'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeOutcome'Rule'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeOutcome'Rule'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.payment_intent.anyOf@ in the specification.
--
-- ID of the PaymentIntent associated with this charge, if one exists.
data ChargePaymentIntent'Variants
  = ChargePaymentIntent'Text Data.Text.Internal.Text
  | ChargePaymentIntent'PaymentIntent PaymentIntent
  deriving (Int -> ChargePaymentIntent'Variants -> ShowS
[ChargePaymentIntent'Variants] -> ShowS
ChargePaymentIntent'Variants -> String
(Int -> ChargePaymentIntent'Variants -> ShowS)
-> (ChargePaymentIntent'Variants -> String)
-> ([ChargePaymentIntent'Variants] -> ShowS)
-> Show ChargePaymentIntent'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargePaymentIntent'Variants] -> ShowS
$cshowList :: [ChargePaymentIntent'Variants] -> ShowS
show :: ChargePaymentIntent'Variants -> String
$cshow :: ChargePaymentIntent'Variants -> String
showsPrec :: Int -> ChargePaymentIntent'Variants -> ShowS
$cshowsPrec :: Int -> ChargePaymentIntent'Variants -> ShowS
GHC.Show.Show, ChargePaymentIntent'Variants
-> ChargePaymentIntent'Variants -> Bool
(ChargePaymentIntent'Variants
 -> ChargePaymentIntent'Variants -> Bool)
-> (ChargePaymentIntent'Variants
    -> ChargePaymentIntent'Variants -> Bool)
-> Eq ChargePaymentIntent'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargePaymentIntent'Variants
-> ChargePaymentIntent'Variants -> Bool
$c/= :: ChargePaymentIntent'Variants
-> ChargePaymentIntent'Variants -> Bool
== :: ChargePaymentIntent'Variants
-> ChargePaymentIntent'Variants -> Bool
$c== :: ChargePaymentIntent'Variants
-> ChargePaymentIntent'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargePaymentIntent'Variants where
  toJSON :: ChargePaymentIntent'Variants -> Value
toJSON (ChargePaymentIntent'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargePaymentIntent'PaymentIntent PaymentIntent
a) = PaymentIntent -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PaymentIntent
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargePaymentIntent'Variants where
  parseJSON :: Value -> Parser ChargePaymentIntent'Variants
parseJSON Value
val = case (Text -> ChargePaymentIntent'Variants
ChargePaymentIntent'Text (Text -> ChargePaymentIntent'Variants)
-> Result Text -> Result ChargePaymentIntent'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargePaymentIntent'Variants
-> Result ChargePaymentIntent'Variants
-> Result ChargePaymentIntent'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((PaymentIntent -> ChargePaymentIntent'Variants
ChargePaymentIntent'PaymentIntent (PaymentIntent -> ChargePaymentIntent'Variants)
-> Result PaymentIntent -> Result ChargePaymentIntent'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result PaymentIntent
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargePaymentIntent'Variants
-> Result ChargePaymentIntent'Variants
-> Result ChargePaymentIntent'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargePaymentIntent'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargePaymentIntent'Variants
a -> ChargePaymentIntent'Variants -> Parser ChargePaymentIntent'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargePaymentIntent'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargePaymentIntent'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.charge.properties.payment_method_details.anyOf@ in the specification.
--
-- Details about the payment method at the time of the transaction.
data ChargePaymentMethodDetails' = ChargePaymentMethodDetails'
  { -- | ach_credit_transfer:
    ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAchCreditTransfer
chargePaymentMethodDetails'AchCreditTransfer :: (GHC.Maybe.Maybe PaymentMethodDetailsAchCreditTransfer),
    -- | ach_debit:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAchDebit
chargePaymentMethodDetails'AchDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAchDebit),
    -- | acss_debit:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAcssDebit
chargePaymentMethodDetails'AcssDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAcssDebit),
    -- | afterpay_clearpay:
    ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAfterpayClearpay
chargePaymentMethodDetails'AfterpayClearpay :: (GHC.Maybe.Maybe PaymentMethodDetailsAfterpayClearpay),
    -- | alipay:
    ChargePaymentMethodDetails'
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
chargePaymentMethodDetails'Alipay :: (GHC.Maybe.Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails),
    -- | au_becs_debit:
    ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAuBecsDebit
chargePaymentMethodDetails'AuBecsDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsAuBecsDebit),
    -- | bacs_debit:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBacsDebit
chargePaymentMethodDetails'BacsDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsBacsDebit),
    -- | bancontact:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBancontact
chargePaymentMethodDetails'Bancontact :: (GHC.Maybe.Maybe PaymentMethodDetailsBancontact),
    -- | boleto:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBoleto
chargePaymentMethodDetails'Boleto :: (GHC.Maybe.Maybe PaymentMethodDetailsBoleto),
    -- | card:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsCard
chargePaymentMethodDetails'Card :: (GHC.Maybe.Maybe PaymentMethodDetailsCard),
    -- | card_present:
    ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsCardPresent
chargePaymentMethodDetails'CardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent),
    -- | eps:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsEps
chargePaymentMethodDetails'Eps :: (GHC.Maybe.Maybe PaymentMethodDetailsEps),
    -- | fpx:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsFpx
chargePaymentMethodDetails'Fpx :: (GHC.Maybe.Maybe PaymentMethodDetailsFpx),
    -- | giropay:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGiropay
chargePaymentMethodDetails'Giropay :: (GHC.Maybe.Maybe PaymentMethodDetailsGiropay),
    -- | grabpay:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGrabpay
chargePaymentMethodDetails'Grabpay :: (GHC.Maybe.Maybe PaymentMethodDetailsGrabpay),
    -- | ideal:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsIdeal
chargePaymentMethodDetails'Ideal :: (GHC.Maybe.Maybe PaymentMethodDetailsIdeal),
    -- | interac_present:
    ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsInteracPresent
chargePaymentMethodDetails'InteracPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsInteracPresent),
    -- | klarna:
    ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Klarna :: (GHC.Maybe.Maybe PaymentMethodDetailsKlarna),
    -- | multibanco:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsMultibanco
chargePaymentMethodDetails'Multibanco :: (GHC.Maybe.Maybe PaymentMethodDetailsMultibanco),
    -- | oxxo:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsOxxo
chargePaymentMethodDetails'Oxxo :: (GHC.Maybe.Maybe PaymentMethodDetailsOxxo),
    -- | p24:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsP24
chargePaymentMethodDetails'P24 :: (GHC.Maybe.Maybe PaymentMethodDetailsP24),
    -- | sepa_debit:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSepaDebit
chargePaymentMethodDetails'SepaDebit :: (GHC.Maybe.Maybe PaymentMethodDetailsSepaDebit),
    -- | sofort:
    ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSofort
chargePaymentMethodDetails'Sofort :: (GHC.Maybe.Maybe PaymentMethodDetailsSofort),
    -- | stripe_account:
    ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'StripeAccount :: (GHC.Maybe.Maybe PaymentMethodDetailsStripeAccount),
    -- | type: The type of transaction-specific details of the payment method used in the payment, one of \`ach_credit_transfer\`, \`ach_debit\`, \`acss_debit\`, \`alipay\`, \`au_becs_debit\`, \`bancontact\`, \`card\`, \`card_present\`, \`eps\`, \`giropay\`, \`ideal\`, \`klarna\`, \`multibanco\`, \`p24\`, \`sepa_debit\`, \`sofort\`, \`stripe_account\`, or \`wechat\`.
    -- An additional hash is included on \`payment_method_details\` with a name matching this value.
    -- It contains information specific to the payment method.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargePaymentMethodDetails' -> Maybe Text
chargePaymentMethodDetails'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | wechat:
    ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Wechat :: (GHC.Maybe.Maybe PaymentMethodDetailsWechat)
  }
  deriving
    ( Int -> ChargePaymentMethodDetails' -> ShowS
[ChargePaymentMethodDetails'] -> ShowS
ChargePaymentMethodDetails' -> String
(Int -> ChargePaymentMethodDetails' -> ShowS)
-> (ChargePaymentMethodDetails' -> String)
-> ([ChargePaymentMethodDetails'] -> ShowS)
-> Show ChargePaymentMethodDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargePaymentMethodDetails'] -> ShowS
$cshowList :: [ChargePaymentMethodDetails'] -> ShowS
show :: ChargePaymentMethodDetails' -> String
$cshow :: ChargePaymentMethodDetails' -> String
showsPrec :: Int -> ChargePaymentMethodDetails' -> ShowS
$cshowsPrec :: Int -> ChargePaymentMethodDetails' -> ShowS
GHC.Show.Show,
      ChargePaymentMethodDetails' -> ChargePaymentMethodDetails' -> Bool
(ChargePaymentMethodDetails'
 -> ChargePaymentMethodDetails' -> Bool)
-> (ChargePaymentMethodDetails'
    -> ChargePaymentMethodDetails' -> Bool)
-> Eq ChargePaymentMethodDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargePaymentMethodDetails' -> ChargePaymentMethodDetails' -> Bool
$c/= :: ChargePaymentMethodDetails' -> ChargePaymentMethodDetails' -> Bool
== :: ChargePaymentMethodDetails' -> ChargePaymentMethodDetails' -> Bool
$c== :: ChargePaymentMethodDetails' -> ChargePaymentMethodDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargePaymentMethodDetails' where
  toJSON :: ChargePaymentMethodDetails' -> Value
toJSON ChargePaymentMethodDetails'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"ach_credit_transfer" Text -> Maybe PaymentMethodDetailsAchCreditTransfer -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAchCreditTransfer
chargePaymentMethodDetails'AchCreditTransfer ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"ach_debit" Text -> Maybe PaymentMethodDetailsAchDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAchDebit
chargePaymentMethodDetails'AchDebit ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"acss_debit" Text -> Maybe PaymentMethodDetailsAcssDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAcssDebit
chargePaymentMethodDetails'AcssDebit ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"afterpay_clearpay" Text -> Maybe PaymentMethodDetailsAfterpayClearpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAfterpayClearpay
chargePaymentMethodDetails'AfterpayClearpay ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"alipay" Text
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
chargePaymentMethodDetails'Alipay ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"au_becs_debit" Text -> Maybe PaymentMethodDetailsAuBecsDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAuBecsDebit
chargePaymentMethodDetails'AuBecsDebit ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bacs_debit" Text -> Maybe PaymentMethodDetailsBacsDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBacsDebit
chargePaymentMethodDetails'BacsDebit ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bancontact" Text -> Maybe PaymentMethodDetailsBancontact -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBancontact
chargePaymentMethodDetails'Bancontact ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"boleto" Text -> Maybe PaymentMethodDetailsBoleto -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBoleto
chargePaymentMethodDetails'Boleto ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text -> Maybe PaymentMethodDetailsCard -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsCard
chargePaymentMethodDetails'Card ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card_present" Text -> Maybe PaymentMethodDetailsCardPresent -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsCardPresent
chargePaymentMethodDetails'CardPresent ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"eps" Text -> Maybe PaymentMethodDetailsEps -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsEps
chargePaymentMethodDetails'Eps ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fpx" Text -> Maybe PaymentMethodDetailsFpx -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsFpx
chargePaymentMethodDetails'Fpx ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"giropay" Text -> Maybe PaymentMethodDetailsGiropay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGiropay
chargePaymentMethodDetails'Giropay ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"grabpay" Text -> Maybe PaymentMethodDetailsGrabpay -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGrabpay
chargePaymentMethodDetails'Grabpay ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"ideal" Text -> Maybe PaymentMethodDetailsIdeal -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsIdeal
chargePaymentMethodDetails'Ideal ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"interac_present" Text -> Maybe PaymentMethodDetailsInteracPresent -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsInteracPresent
chargePaymentMethodDetails'InteracPresent ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"klarna" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Klarna ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"multibanco" Text -> Maybe PaymentMethodDetailsMultibanco -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsMultibanco
chargePaymentMethodDetails'Multibanco ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"oxxo" Text -> Maybe PaymentMethodDetailsOxxo -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsOxxo
chargePaymentMethodDetails'Oxxo ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"p24" Text -> Maybe PaymentMethodDetailsP24 -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsP24
chargePaymentMethodDetails'P24 ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sepa_debit" Text -> Maybe PaymentMethodDetailsSepaDebit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSepaDebit
chargePaymentMethodDetails'SepaDebit ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sofort" Text -> Maybe PaymentMethodDetailsSofort -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSofort
chargePaymentMethodDetails'Sofort ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"stripe_account" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'StripeAccount ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Text
chargePaymentMethodDetails'Type ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"wechat" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Wechat ChargePaymentMethodDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargePaymentMethodDetails' -> Encoding
toEncoding ChargePaymentMethodDetails'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"ach_credit_transfer" Text -> Maybe PaymentMethodDetailsAchCreditTransfer -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAchCreditTransfer
chargePaymentMethodDetails'AchCreditTransfer ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"ach_debit" Text -> Maybe PaymentMethodDetailsAchDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAchDebit
chargePaymentMethodDetails'AchDebit ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"acss_debit" Text -> Maybe PaymentMethodDetailsAcssDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsAcssDebit
chargePaymentMethodDetails'AcssDebit ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"afterpay_clearpay" Text -> Maybe PaymentMethodDetailsAfterpayClearpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAfterpayClearpay
chargePaymentMethodDetails'AfterpayClearpay ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"alipay" Text
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
chargePaymentMethodDetails'Alipay ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"au_becs_debit" Text -> Maybe PaymentMethodDetailsAuBecsDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsAuBecsDebit
chargePaymentMethodDetails'AuBecsDebit ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bacs_debit" Text -> Maybe PaymentMethodDetailsBacsDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBacsDebit
chargePaymentMethodDetails'BacsDebit ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bancontact" Text -> Maybe PaymentMethodDetailsBancontact -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBancontact
chargePaymentMethodDetails'Bancontact ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"boleto" Text -> Maybe PaymentMethodDetailsBoleto -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsBoleto
chargePaymentMethodDetails'Boleto ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text -> Maybe PaymentMethodDetailsCard -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsCard
chargePaymentMethodDetails'Card ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card_present" Text -> Maybe PaymentMethodDetailsCardPresent -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsCardPresent
chargePaymentMethodDetails'CardPresent ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"eps" Text -> Maybe PaymentMethodDetailsEps -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsEps
chargePaymentMethodDetails'Eps ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fpx" Text -> Maybe PaymentMethodDetailsFpx -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsFpx
chargePaymentMethodDetails'Fpx ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"giropay" Text -> Maybe PaymentMethodDetailsGiropay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGiropay
chargePaymentMethodDetails'Giropay ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"grabpay" Text -> Maybe PaymentMethodDetailsGrabpay -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsGrabpay
chargePaymentMethodDetails'Grabpay ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"ideal" Text -> Maybe PaymentMethodDetailsIdeal -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsIdeal
chargePaymentMethodDetails'Ideal ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"interac_present" Text -> Maybe PaymentMethodDetailsInteracPresent -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails'
-> Maybe PaymentMethodDetailsInteracPresent
chargePaymentMethodDetails'InteracPresent ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"klarna" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Klarna ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"multibanco" Text -> Maybe PaymentMethodDetailsMultibanco -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsMultibanco
chargePaymentMethodDetails'Multibanco ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"oxxo" Text -> Maybe PaymentMethodDetailsOxxo -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsOxxo
chargePaymentMethodDetails'Oxxo ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"p24" Text -> Maybe PaymentMethodDetailsP24 -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsP24
chargePaymentMethodDetails'P24 ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"sepa_debit" Text -> Maybe PaymentMethodDetailsSepaDebit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSepaDebit
chargePaymentMethodDetails'SepaDebit ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"sofort" Text -> Maybe PaymentMethodDetailsSofort -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe PaymentMethodDetailsSofort
chargePaymentMethodDetails'Sofort ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"stripe_account" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'StripeAccount ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"type" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Text
chargePaymentMethodDetails'Type ChargePaymentMethodDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"wechat" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargePaymentMethodDetails' -> Maybe Object
chargePaymentMethodDetails'Wechat ChargePaymentMethodDetails'
obj))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargePaymentMethodDetails' where
  parseJSON :: Value -> Parser ChargePaymentMethodDetails'
parseJSON = String
-> (Object -> Parser ChargePaymentMethodDetails')
-> Value
-> Parser ChargePaymentMethodDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargePaymentMethodDetails'" (\Object
obj -> ((((((((((((((((((((((((((Maybe PaymentMethodDetailsAchCreditTransfer
 -> Maybe PaymentMethodDetailsAchDebit
 -> Maybe PaymentMethodDetailsAcssDebit
 -> Maybe PaymentMethodDetailsAfterpayClearpay
 -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
 -> Maybe PaymentMethodDetailsAuBecsDebit
 -> Maybe PaymentMethodDetailsBacsDebit
 -> Maybe PaymentMethodDetailsBancontact
 -> Maybe PaymentMethodDetailsBoleto
 -> Maybe PaymentMethodDetailsCard
 -> Maybe PaymentMethodDetailsCardPresent
 -> Maybe PaymentMethodDetailsEps
 -> Maybe PaymentMethodDetailsFpx
 -> Maybe PaymentMethodDetailsGiropay
 -> Maybe PaymentMethodDetailsGrabpay
 -> Maybe PaymentMethodDetailsIdeal
 -> Maybe PaymentMethodDetailsInteracPresent
 -> Maybe Object
 -> Maybe PaymentMethodDetailsMultibanco
 -> Maybe PaymentMethodDetailsOxxo
 -> Maybe PaymentMethodDetailsP24
 -> Maybe PaymentMethodDetailsSepaDebit
 -> Maybe PaymentMethodDetailsSofort
 -> Maybe Object
 -> Maybe Text
 -> Maybe Object
 -> ChargePaymentMethodDetails')
-> Parser
     (Maybe PaymentMethodDetailsAchCreditTransfer
      -> Maybe PaymentMethodDetailsAchDebit
      -> Maybe PaymentMethodDetailsAcssDebit
      -> Maybe PaymentMethodDetailsAfterpayClearpay
      -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
      -> Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe PaymentMethodDetailsAchCreditTransfer
-> Maybe PaymentMethodDetailsAchDebit
-> Maybe PaymentMethodDetailsAcssDebit
-> Maybe PaymentMethodDetailsAfterpayClearpay
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
-> Maybe PaymentMethodDetailsAuBecsDebit
-> Maybe PaymentMethodDetailsBacsDebit
-> Maybe PaymentMethodDetailsBancontact
-> Maybe PaymentMethodDetailsBoleto
-> Maybe PaymentMethodDetailsCard
-> Maybe PaymentMethodDetailsCardPresent
-> Maybe PaymentMethodDetailsEps
-> Maybe PaymentMethodDetailsFpx
-> Maybe PaymentMethodDetailsGiropay
-> Maybe PaymentMethodDetailsGrabpay
-> Maybe PaymentMethodDetailsIdeal
-> Maybe PaymentMethodDetailsInteracPresent
-> Maybe Object
-> Maybe PaymentMethodDetailsMultibanco
-> Maybe PaymentMethodDetailsOxxo
-> Maybe PaymentMethodDetailsP24
-> Maybe PaymentMethodDetailsSepaDebit
-> Maybe PaymentMethodDetailsSofort
-> Maybe Object
-> Maybe Text
-> Maybe Object
-> ChargePaymentMethodDetails'
ChargePaymentMethodDetails' Parser
  (Maybe PaymentMethodDetailsAchCreditTransfer
   -> Maybe PaymentMethodDetailsAchDebit
   -> Maybe PaymentMethodDetailsAcssDebit
   -> Maybe PaymentMethodDetailsAfterpayClearpay
   -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
   -> Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsAchCreditTransfer)
-> Parser
     (Maybe PaymentMethodDetailsAchDebit
      -> Maybe PaymentMethodDetailsAcssDebit
      -> Maybe PaymentMethodDetailsAfterpayClearpay
      -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
      -> Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PaymentMethodDetailsAchCreditTransfer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"ach_credit_transfer")) Parser
  (Maybe PaymentMethodDetailsAchDebit
   -> Maybe PaymentMethodDetailsAcssDebit
   -> Maybe PaymentMethodDetailsAfterpayClearpay
   -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
   -> Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsAchDebit)
-> Parser
     (Maybe PaymentMethodDetailsAcssDebit
      -> Maybe PaymentMethodDetailsAfterpayClearpay
      -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
      -> Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsAchDebit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"ach_debit")) Parser
  (Maybe PaymentMethodDetailsAcssDebit
   -> Maybe PaymentMethodDetailsAfterpayClearpay
   -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
   -> Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsAcssDebit)
-> Parser
     (Maybe PaymentMethodDetailsAfterpayClearpay
      -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
      -> Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsAcssDebit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"acss_debit")) Parser
  (Maybe PaymentMethodDetailsAfterpayClearpay
   -> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
   -> Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsAfterpayClearpay)
-> Parser
     (Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
      -> Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PaymentMethodDetailsAfterpayClearpay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"afterpay_clearpay")) Parser
  (Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
   -> Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails)
-> Parser
     (Maybe PaymentMethodDetailsAuBecsDebit
      -> Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"alipay")) Parser
  (Maybe PaymentMethodDetailsAuBecsDebit
   -> Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsAuBecsDebit)
-> Parser
     (Maybe PaymentMethodDetailsBacsDebit
      -> Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsAuBecsDebit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"au_becs_debit")) Parser
  (Maybe PaymentMethodDetailsBacsDebit
   -> Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsBacsDebit)
-> Parser
     (Maybe PaymentMethodDetailsBancontact
      -> Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsBacsDebit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bacs_debit")) Parser
  (Maybe PaymentMethodDetailsBancontact
   -> Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsBancontact)
-> Parser
     (Maybe PaymentMethodDetailsBoleto
      -> Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsBancontact)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bancontact")) Parser
  (Maybe PaymentMethodDetailsBoleto
   -> Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsBoleto)
-> Parser
     (Maybe PaymentMethodDetailsCard
      -> Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsBoleto)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"boleto")) Parser
  (Maybe PaymentMethodDetailsCard
   -> Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsCard)
-> Parser
     (Maybe PaymentMethodDetailsCardPresent
      -> Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsCard)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card")) Parser
  (Maybe PaymentMethodDetailsCardPresent
   -> Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsCardPresent)
-> Parser
     (Maybe PaymentMethodDetailsEps
      -> Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsCardPresent)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card_present")) Parser
  (Maybe PaymentMethodDetailsEps
   -> Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsEps)
-> Parser
     (Maybe PaymentMethodDetailsFpx
      -> Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsEps)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"eps")) Parser
  (Maybe PaymentMethodDetailsFpx
   -> Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsFpx)
-> Parser
     (Maybe PaymentMethodDetailsGiropay
      -> Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsFpx)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fpx")) Parser
  (Maybe PaymentMethodDetailsGiropay
   -> Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsGiropay)
-> Parser
     (Maybe PaymentMethodDetailsGrabpay
      -> Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsGiropay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"giropay")) Parser
  (Maybe PaymentMethodDetailsGrabpay
   -> Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsGrabpay)
-> Parser
     (Maybe PaymentMethodDetailsIdeal
      -> Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsGrabpay)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"grabpay")) Parser
  (Maybe PaymentMethodDetailsIdeal
   -> Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsIdeal)
-> Parser
     (Maybe PaymentMethodDetailsInteracPresent
      -> Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsIdeal)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"ideal")) Parser
  (Maybe PaymentMethodDetailsInteracPresent
   -> Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsInteracPresent)
-> Parser
     (Maybe Object
      -> Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsInteracPresent)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"interac_present")) Parser
  (Maybe Object
   -> Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe Object)
-> Parser
     (Maybe PaymentMethodDetailsMultibanco
      -> Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"klarna")) Parser
  (Maybe PaymentMethodDetailsMultibanco
   -> Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsMultibanco)
-> Parser
     (Maybe PaymentMethodDetailsOxxo
      -> Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsMultibanco)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"multibanco")) Parser
  (Maybe PaymentMethodDetailsOxxo
   -> Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsOxxo)
-> Parser
     (Maybe PaymentMethodDetailsP24
      -> Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsOxxo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"oxxo")) Parser
  (Maybe PaymentMethodDetailsP24
   -> Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsP24)
-> Parser
     (Maybe PaymentMethodDetailsSepaDebit
      -> Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsP24)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"p24")) Parser
  (Maybe PaymentMethodDetailsSepaDebit
   -> Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsSepaDebit)
-> Parser
     (Maybe PaymentMethodDetailsSofort
      -> Maybe Object
      -> Maybe Text
      -> Maybe Object
      -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsSepaDebit)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sepa_debit")) Parser
  (Maybe PaymentMethodDetailsSofort
   -> Maybe Object
   -> Maybe Text
   -> Maybe Object
   -> ChargePaymentMethodDetails')
-> Parser (Maybe PaymentMethodDetailsSofort)
-> Parser
     (Maybe Object
      -> Maybe Text -> Maybe Object -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PaymentMethodDetailsSofort)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sofort")) Parser
  (Maybe Object
   -> Maybe Text -> Maybe Object -> ChargePaymentMethodDetails')
-> Parser (Maybe Object)
-> Parser
     (Maybe Text -> Maybe Object -> ChargePaymentMethodDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"stripe_account")) Parser (Maybe Text -> Maybe Object -> ChargePaymentMethodDetails')
-> Parser (Maybe Text)
-> Parser (Maybe Object -> ChargePaymentMethodDetails')
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
"type")) Parser (Maybe Object -> ChargePaymentMethodDetails')
-> Parser (Maybe Object) -> Parser ChargePaymentMethodDetails'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"wechat"))

-- | Create a new 'ChargePaymentMethodDetails'' with all required fields.
mkChargePaymentMethodDetails' :: ChargePaymentMethodDetails'
mkChargePaymentMethodDetails' :: ChargePaymentMethodDetails'
mkChargePaymentMethodDetails' =
  ChargePaymentMethodDetails' :: Maybe PaymentMethodDetailsAchCreditTransfer
-> Maybe PaymentMethodDetailsAchDebit
-> Maybe PaymentMethodDetailsAcssDebit
-> Maybe PaymentMethodDetailsAfterpayClearpay
-> Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
-> Maybe PaymentMethodDetailsAuBecsDebit
-> Maybe PaymentMethodDetailsBacsDebit
-> Maybe PaymentMethodDetailsBancontact
-> Maybe PaymentMethodDetailsBoleto
-> Maybe PaymentMethodDetailsCard
-> Maybe PaymentMethodDetailsCardPresent
-> Maybe PaymentMethodDetailsEps
-> Maybe PaymentMethodDetailsFpx
-> Maybe PaymentMethodDetailsGiropay
-> Maybe PaymentMethodDetailsGrabpay
-> Maybe PaymentMethodDetailsIdeal
-> Maybe PaymentMethodDetailsInteracPresent
-> Maybe Object
-> Maybe PaymentMethodDetailsMultibanco
-> Maybe PaymentMethodDetailsOxxo
-> Maybe PaymentMethodDetailsP24
-> Maybe PaymentMethodDetailsSepaDebit
-> Maybe PaymentMethodDetailsSofort
-> Maybe Object
-> Maybe Text
-> Maybe Object
-> ChargePaymentMethodDetails'
ChargePaymentMethodDetails'
    { chargePaymentMethodDetails'AchCreditTransfer :: Maybe PaymentMethodDetailsAchCreditTransfer
chargePaymentMethodDetails'AchCreditTransfer = Maybe PaymentMethodDetailsAchCreditTransfer
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'AchDebit :: Maybe PaymentMethodDetailsAchDebit
chargePaymentMethodDetails'AchDebit = Maybe PaymentMethodDetailsAchDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'AcssDebit :: Maybe PaymentMethodDetailsAcssDebit
chargePaymentMethodDetails'AcssDebit = Maybe PaymentMethodDetailsAcssDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'AfterpayClearpay :: Maybe PaymentMethodDetailsAfterpayClearpay
chargePaymentMethodDetails'AfterpayClearpay = Maybe PaymentMethodDetailsAfterpayClearpay
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Alipay :: Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
chargePaymentMethodDetails'Alipay = Maybe PaymentFlowsPrivatePaymentMethodsAlipayDetails
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'AuBecsDebit :: Maybe PaymentMethodDetailsAuBecsDebit
chargePaymentMethodDetails'AuBecsDebit = Maybe PaymentMethodDetailsAuBecsDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'BacsDebit :: Maybe PaymentMethodDetailsBacsDebit
chargePaymentMethodDetails'BacsDebit = Maybe PaymentMethodDetailsBacsDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Bancontact :: Maybe PaymentMethodDetailsBancontact
chargePaymentMethodDetails'Bancontact = Maybe PaymentMethodDetailsBancontact
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Boleto :: Maybe PaymentMethodDetailsBoleto
chargePaymentMethodDetails'Boleto = Maybe PaymentMethodDetailsBoleto
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Card :: Maybe PaymentMethodDetailsCard
chargePaymentMethodDetails'Card = Maybe PaymentMethodDetailsCard
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'CardPresent :: Maybe PaymentMethodDetailsCardPresent
chargePaymentMethodDetails'CardPresent = Maybe PaymentMethodDetailsCardPresent
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Eps :: Maybe PaymentMethodDetailsEps
chargePaymentMethodDetails'Eps = Maybe PaymentMethodDetailsEps
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Fpx :: Maybe PaymentMethodDetailsFpx
chargePaymentMethodDetails'Fpx = Maybe PaymentMethodDetailsFpx
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Giropay :: Maybe PaymentMethodDetailsGiropay
chargePaymentMethodDetails'Giropay = Maybe PaymentMethodDetailsGiropay
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Grabpay :: Maybe PaymentMethodDetailsGrabpay
chargePaymentMethodDetails'Grabpay = Maybe PaymentMethodDetailsGrabpay
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Ideal :: Maybe PaymentMethodDetailsIdeal
chargePaymentMethodDetails'Ideal = Maybe PaymentMethodDetailsIdeal
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'InteracPresent :: Maybe PaymentMethodDetailsInteracPresent
chargePaymentMethodDetails'InteracPresent = Maybe PaymentMethodDetailsInteracPresent
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Klarna :: Maybe Object
chargePaymentMethodDetails'Klarna = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Multibanco :: Maybe PaymentMethodDetailsMultibanco
chargePaymentMethodDetails'Multibanco = Maybe PaymentMethodDetailsMultibanco
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Oxxo :: Maybe PaymentMethodDetailsOxxo
chargePaymentMethodDetails'Oxxo = Maybe PaymentMethodDetailsOxxo
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'P24 :: Maybe PaymentMethodDetailsP24
chargePaymentMethodDetails'P24 = Maybe PaymentMethodDetailsP24
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'SepaDebit :: Maybe PaymentMethodDetailsSepaDebit
chargePaymentMethodDetails'SepaDebit = Maybe PaymentMethodDetailsSepaDebit
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Sofort :: Maybe PaymentMethodDetailsSofort
chargePaymentMethodDetails'Sofort = Maybe PaymentMethodDetailsSofort
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'StripeAccount :: Maybe Object
chargePaymentMethodDetails'StripeAccount = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Type :: Maybe Text
chargePaymentMethodDetails'Type = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargePaymentMethodDetails'Wechat :: Maybe Object
chargePaymentMethodDetails'Wechat = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.charge.properties.refunds@ in the specification.
--
-- A list of refunds that have been applied to the charge.
data ChargeRefunds' = ChargeRefunds'
  { -- | data: Details about each object.
    ChargeRefunds' -> [Refund]
chargeRefunds'Data :: ([Refund]),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    ChargeRefunds' -> Bool
chargeRefunds'HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeRefunds' -> Text
chargeRefunds'Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> ChargeRefunds' -> ShowS
[ChargeRefunds'] -> ShowS
ChargeRefunds' -> String
(Int -> ChargeRefunds' -> ShowS)
-> (ChargeRefunds' -> String)
-> ([ChargeRefunds'] -> ShowS)
-> Show ChargeRefunds'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeRefunds'] -> ShowS
$cshowList :: [ChargeRefunds'] -> ShowS
show :: ChargeRefunds' -> String
$cshow :: ChargeRefunds' -> String
showsPrec :: Int -> ChargeRefunds' -> ShowS
$cshowsPrec :: Int -> ChargeRefunds' -> ShowS
GHC.Show.Show,
      ChargeRefunds' -> ChargeRefunds' -> Bool
(ChargeRefunds' -> ChargeRefunds' -> Bool)
-> (ChargeRefunds' -> ChargeRefunds' -> Bool) -> Eq ChargeRefunds'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeRefunds' -> ChargeRefunds' -> Bool
$c/= :: ChargeRefunds' -> ChargeRefunds' -> Bool
== :: ChargeRefunds' -> ChargeRefunds' -> Bool
$c== :: ChargeRefunds' -> ChargeRefunds' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargeRefunds' where
  toJSON :: ChargeRefunds' -> Value
toJSON ChargeRefunds'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text -> [Refund] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> [Refund]
chargeRefunds'Data ChargeRefunds'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"has_more" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> Bool
chargeRefunds'HasMore ChargeRefunds'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"url" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> Text
chargeRefunds'Url ChargeRefunds'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargeRefunds' -> Encoding
toEncoding ChargeRefunds'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text -> [Refund] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> [Refund]
chargeRefunds'Data ChargeRefunds'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"has_more" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> Bool
chargeRefunds'HasMore ChargeRefunds'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"url" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeRefunds' -> Text
chargeRefunds'Url ChargeRefunds'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list"))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeRefunds' where
  parseJSON :: Value -> Parser ChargeRefunds'
parseJSON = String
-> (Object -> Parser ChargeRefunds')
-> Value
-> Parser ChargeRefunds'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargeRefunds'" (\Object
obj -> ((([Refund] -> Bool -> Text -> ChargeRefunds')
-> Parser ([Refund] -> Bool -> Text -> ChargeRefunds')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [Refund] -> Bool -> Text -> ChargeRefunds'
ChargeRefunds' Parser ([Refund] -> Bool -> Text -> ChargeRefunds')
-> Parser [Refund] -> Parser (Bool -> Text -> ChargeRefunds')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [Refund]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser (Bool -> Text -> ChargeRefunds')
-> Parser Bool -> Parser (Text -> ChargeRefunds')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"has_more")) Parser (Text -> ChargeRefunds')
-> Parser Text -> Parser ChargeRefunds'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"url"))

-- | Create a new 'ChargeRefunds'' with all required fields.
mkChargeRefunds' ::
  -- | 'chargeRefunds'Data'
  [Refund] ->
  -- | 'chargeRefunds'HasMore'
  GHC.Types.Bool ->
  -- | 'chargeRefunds'Url'
  Data.Text.Internal.Text ->
  ChargeRefunds'
mkChargeRefunds' :: [Refund] -> Bool -> Text -> ChargeRefunds'
mkChargeRefunds' [Refund]
chargeRefunds'Data Bool
chargeRefunds'HasMore Text
chargeRefunds'Url =
  ChargeRefunds' :: [Refund] -> Bool -> Text -> ChargeRefunds'
ChargeRefunds'
    { chargeRefunds'Data :: [Refund]
chargeRefunds'Data = [Refund]
chargeRefunds'Data,
      chargeRefunds'HasMore :: Bool
chargeRefunds'HasMore = Bool
chargeRefunds'HasMore,
      chargeRefunds'Url :: Text
chargeRefunds'Url = Text
chargeRefunds'Url
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.review.anyOf@ in the specification.
--
-- ID of the review associated with this charge if one exists.
data ChargeReview'Variants
  = ChargeReview'Text Data.Text.Internal.Text
  | ChargeReview'Review Review
  deriving (Int -> ChargeReview'Variants -> ShowS
[ChargeReview'Variants] -> ShowS
ChargeReview'Variants -> String
(Int -> ChargeReview'Variants -> ShowS)
-> (ChargeReview'Variants -> String)
-> ([ChargeReview'Variants] -> ShowS)
-> Show ChargeReview'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeReview'Variants] -> ShowS
$cshowList :: [ChargeReview'Variants] -> ShowS
show :: ChargeReview'Variants -> String
$cshow :: ChargeReview'Variants -> String
showsPrec :: Int -> ChargeReview'Variants -> ShowS
$cshowsPrec :: Int -> ChargeReview'Variants -> ShowS
GHC.Show.Show, ChargeReview'Variants -> ChargeReview'Variants -> Bool
(ChargeReview'Variants -> ChargeReview'Variants -> Bool)
-> (ChargeReview'Variants -> ChargeReview'Variants -> Bool)
-> Eq ChargeReview'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeReview'Variants -> ChargeReview'Variants -> Bool
$c/= :: ChargeReview'Variants -> ChargeReview'Variants -> Bool
== :: ChargeReview'Variants -> ChargeReview'Variants -> Bool
$c== :: ChargeReview'Variants -> ChargeReview'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeReview'Variants where
  toJSON :: ChargeReview'Variants -> Value
toJSON (ChargeReview'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeReview'Review Review
a) = Review -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Review
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeReview'Variants where
  parseJSON :: Value -> Parser ChargeReview'Variants
parseJSON Value
val = case (Text -> ChargeReview'Variants
ChargeReview'Text (Text -> ChargeReview'Variants)
-> Result Text -> Result ChargeReview'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeReview'Variants
-> Result ChargeReview'Variants -> Result ChargeReview'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Review -> ChargeReview'Variants
ChargeReview'Review (Review -> ChargeReview'Variants)
-> Result Review -> Result ChargeReview'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Review
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeReview'Variants
-> Result ChargeReview'Variants -> Result ChargeReview'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeReview'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeReview'Variants
a -> ChargeReview'Variants -> Parser ChargeReview'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeReview'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeReview'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.charge.properties.shipping.anyOf@ in the specification.
--
-- Shipping information for the charge.
data ChargeShipping' = ChargeShipping'
  { -- | address:
    ChargeShipping' -> Maybe Address
chargeShipping'Address :: (GHC.Maybe.Maybe Address),
    -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeShipping' -> Maybe Text
chargeShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | name: Recipient name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeShipping' -> Maybe Text
chargeShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | phone: Recipient phone (including extension).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeShipping' -> Maybe Text
chargeShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    ChargeShipping' -> Maybe Text
chargeShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> ChargeShipping' -> ShowS
[ChargeShipping'] -> ShowS
ChargeShipping' -> String
(Int -> ChargeShipping' -> ShowS)
-> (ChargeShipping' -> String)
-> ([ChargeShipping'] -> ShowS)
-> Show ChargeShipping'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeShipping'] -> ShowS
$cshowList :: [ChargeShipping'] -> ShowS
show :: ChargeShipping' -> String
$cshow :: ChargeShipping' -> String
showsPrec :: Int -> ChargeShipping' -> ShowS
$cshowsPrec :: Int -> ChargeShipping' -> ShowS
GHC.Show.Show,
      ChargeShipping' -> ChargeShipping' -> Bool
(ChargeShipping' -> ChargeShipping' -> Bool)
-> (ChargeShipping' -> ChargeShipping' -> Bool)
-> Eq ChargeShipping'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeShipping' -> ChargeShipping' -> Bool
$c/= :: ChargeShipping' -> ChargeShipping' -> Bool
== :: ChargeShipping' -> ChargeShipping' -> Bool
$c== :: ChargeShipping' -> ChargeShipping' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargeShipping' where
  toJSON :: ChargeShipping' -> Value
toJSON ChargeShipping'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"address" Text -> Maybe Address -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Address
chargeShipping'Address ChargeShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"carrier" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'Carrier ChargeShipping'
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..= ChargeShipping' -> Maybe Text
chargeShipping'Name ChargeShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"phone" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'Phone ChargeShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tracking_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'TrackingNumber ChargeShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargeShipping' -> Encoding
toEncoding ChargeShipping'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"address" Text -> Maybe Address -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Address
chargeShipping'Address ChargeShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"carrier" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'Carrier ChargeShipping'
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..= ChargeShipping' -> Maybe Text
chargeShipping'Name ChargeShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"phone" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'Phone ChargeShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"tracking_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeShipping' -> Maybe Text
chargeShipping'TrackingNumber ChargeShipping'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeShipping' where
  parseJSON :: Value -> Parser ChargeShipping'
parseJSON = String
-> (Object -> Parser ChargeShipping')
-> Value
-> Parser ChargeShipping'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargeShipping'" (\Object
obj -> (((((Maybe Address
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> ChargeShipping')
-> Parser
     (Maybe Address
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> ChargeShipping')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Address
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> ChargeShipping'
ChargeShipping' Parser
  (Maybe Address
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> ChargeShipping')
-> Parser (Maybe Address)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Text -> Maybe Text -> ChargeShipping')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Address)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"address")) Parser
  (Maybe Text
   -> Maybe Text -> Maybe Text -> Maybe Text -> ChargeShipping')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Text -> Maybe Text -> ChargeShipping')
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
"carrier")) Parser (Maybe Text -> Maybe Text -> Maybe Text -> ChargeShipping')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe Text -> ChargeShipping')
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 Text -> Maybe Text -> ChargeShipping')
-> Parser (Maybe Text) -> Parser (Maybe Text -> ChargeShipping')
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
"phone")) Parser (Maybe Text -> ChargeShipping')
-> Parser (Maybe Text) -> Parser ChargeShipping'
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
"tracking_number"))

-- | Create a new 'ChargeShipping'' with all required fields.
mkChargeShipping' :: ChargeShipping'
mkChargeShipping' :: ChargeShipping'
mkChargeShipping' =
  ChargeShipping' :: Maybe Address
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> ChargeShipping'
ChargeShipping'
    { chargeShipping'Address :: Maybe Address
chargeShipping'Address = Maybe Address
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeShipping'Carrier :: Maybe Text
chargeShipping'Carrier = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeShipping'Name :: Maybe Text
chargeShipping'Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeShipping'Phone :: Maybe Text
chargeShipping'Phone = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeShipping'TrackingNumber :: Maybe Text
chargeShipping'TrackingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.source_transfer.anyOf@ in the specification.
--
-- The transfer ID which created this charge. Only present if the charge came from another Stripe account. [See the Connect documentation](https:\/\/stripe.com\/docs\/connect\/destination-charges) for details.
data ChargeSourceTransfer'Variants
  = ChargeSourceTransfer'Text Data.Text.Internal.Text
  | ChargeSourceTransfer'Transfer Transfer
  deriving (Int -> ChargeSourceTransfer'Variants -> ShowS
[ChargeSourceTransfer'Variants] -> ShowS
ChargeSourceTransfer'Variants -> String
(Int -> ChargeSourceTransfer'Variants -> ShowS)
-> (ChargeSourceTransfer'Variants -> String)
-> ([ChargeSourceTransfer'Variants] -> ShowS)
-> Show ChargeSourceTransfer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeSourceTransfer'Variants] -> ShowS
$cshowList :: [ChargeSourceTransfer'Variants] -> ShowS
show :: ChargeSourceTransfer'Variants -> String
$cshow :: ChargeSourceTransfer'Variants -> String
showsPrec :: Int -> ChargeSourceTransfer'Variants -> ShowS
$cshowsPrec :: Int -> ChargeSourceTransfer'Variants -> ShowS
GHC.Show.Show, ChargeSourceTransfer'Variants
-> ChargeSourceTransfer'Variants -> Bool
(ChargeSourceTransfer'Variants
 -> ChargeSourceTransfer'Variants -> Bool)
-> (ChargeSourceTransfer'Variants
    -> ChargeSourceTransfer'Variants -> Bool)
-> Eq ChargeSourceTransfer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeSourceTransfer'Variants
-> ChargeSourceTransfer'Variants -> Bool
$c/= :: ChargeSourceTransfer'Variants
-> ChargeSourceTransfer'Variants -> Bool
== :: ChargeSourceTransfer'Variants
-> ChargeSourceTransfer'Variants -> Bool
$c== :: ChargeSourceTransfer'Variants
-> ChargeSourceTransfer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeSourceTransfer'Variants where
  toJSON :: ChargeSourceTransfer'Variants -> Value
toJSON (ChargeSourceTransfer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeSourceTransfer'Transfer Transfer
a) = Transfer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Transfer
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeSourceTransfer'Variants where
  parseJSON :: Value -> Parser ChargeSourceTransfer'Variants
parseJSON Value
val = case (Text -> ChargeSourceTransfer'Variants
ChargeSourceTransfer'Text (Text -> ChargeSourceTransfer'Variants)
-> Result Text -> Result ChargeSourceTransfer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeSourceTransfer'Variants
-> Result ChargeSourceTransfer'Variants
-> Result ChargeSourceTransfer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Transfer -> ChargeSourceTransfer'Variants
ChargeSourceTransfer'Transfer (Transfer -> ChargeSourceTransfer'Variants)
-> Result Transfer -> Result ChargeSourceTransfer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Transfer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeSourceTransfer'Variants
-> Result ChargeSourceTransfer'Variants
-> Result ChargeSourceTransfer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeSourceTransfer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeSourceTransfer'Variants
a -> ChargeSourceTransfer'Variants
-> Parser ChargeSourceTransfer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeSourceTransfer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeSourceTransfer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.charge.properties.transfer.anyOf@ in the specification.
--
-- ID of the transfer to the \`destination\` account (only applicable if the charge was created using the \`destination\` parameter).
data ChargeTransfer'Variants
  = ChargeTransfer'Text Data.Text.Internal.Text
  | ChargeTransfer'Transfer Transfer
  deriving (Int -> ChargeTransfer'Variants -> ShowS
[ChargeTransfer'Variants] -> ShowS
ChargeTransfer'Variants -> String
(Int -> ChargeTransfer'Variants -> ShowS)
-> (ChargeTransfer'Variants -> String)
-> ([ChargeTransfer'Variants] -> ShowS)
-> Show ChargeTransfer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeTransfer'Variants] -> ShowS
$cshowList :: [ChargeTransfer'Variants] -> ShowS
show :: ChargeTransfer'Variants -> String
$cshow :: ChargeTransfer'Variants -> String
showsPrec :: Int -> ChargeTransfer'Variants -> ShowS
$cshowsPrec :: Int -> ChargeTransfer'Variants -> ShowS
GHC.Show.Show, ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool
(ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool)
-> (ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool)
-> Eq ChargeTransfer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool
$c/= :: ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool
== :: ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool
$c== :: ChargeTransfer'Variants -> ChargeTransfer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeTransfer'Variants where
  toJSON :: ChargeTransfer'Variants -> Value
toJSON (ChargeTransfer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeTransfer'Transfer Transfer
a) = Transfer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Transfer
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeTransfer'Variants where
  parseJSON :: Value -> Parser ChargeTransfer'Variants
parseJSON Value
val = case (Text -> ChargeTransfer'Variants
ChargeTransfer'Text (Text -> ChargeTransfer'Variants)
-> Result Text -> Result ChargeTransfer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeTransfer'Variants
-> Result ChargeTransfer'Variants -> Result ChargeTransfer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Transfer -> ChargeTransfer'Variants
ChargeTransfer'Transfer (Transfer -> ChargeTransfer'Variants)
-> Result Transfer -> Result ChargeTransfer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Transfer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeTransfer'Variants
-> Result ChargeTransfer'Variants -> Result ChargeTransfer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeTransfer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeTransfer'Variants
a -> ChargeTransfer'Variants -> Parser ChargeTransfer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeTransfer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeTransfer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.charge.properties.transfer_data.anyOf@ in the specification.
--
-- An optional dictionary including the account to automatically transfer to as part of a destination charge. [See the Connect documentation](https:\\\/\\\/stripe.com\\\/docs\\\/connect\\\/destination-charges) for details.
data ChargeTransferData' = ChargeTransferData'
  { -- | amount: The amount transferred to the destination account, if specified. By default, the entire charge amount is transferred to the destination account.
    ChargeTransferData' -> Maybe Int
chargeTransferData'Amount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | destination: ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
    ChargeTransferData'
-> Maybe ChargeTransferData'Destination'Variants
chargeTransferData'Destination :: (GHC.Maybe.Maybe ChargeTransferData'Destination'Variants)
  }
  deriving
    ( Int -> ChargeTransferData' -> ShowS
[ChargeTransferData'] -> ShowS
ChargeTransferData' -> String
(Int -> ChargeTransferData' -> ShowS)
-> (ChargeTransferData' -> String)
-> ([ChargeTransferData'] -> ShowS)
-> Show ChargeTransferData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeTransferData'] -> ShowS
$cshowList :: [ChargeTransferData'] -> ShowS
show :: ChargeTransferData' -> String
$cshow :: ChargeTransferData' -> String
showsPrec :: Int -> ChargeTransferData' -> ShowS
$cshowsPrec :: Int -> ChargeTransferData' -> ShowS
GHC.Show.Show,
      ChargeTransferData' -> ChargeTransferData' -> Bool
(ChargeTransferData' -> ChargeTransferData' -> Bool)
-> (ChargeTransferData' -> ChargeTransferData' -> Bool)
-> Eq ChargeTransferData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeTransferData' -> ChargeTransferData' -> Bool
$c/= :: ChargeTransferData' -> ChargeTransferData' -> Bool
== :: ChargeTransferData' -> ChargeTransferData' -> Bool
$c== :: ChargeTransferData' -> ChargeTransferData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON ChargeTransferData' where
  toJSON :: ChargeTransferData' -> Value
toJSON ChargeTransferData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeTransferData' -> Maybe Int
chargeTransferData'Amount ChargeTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"destination" Text -> Maybe ChargeTransferData'Destination'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeTransferData'
-> Maybe ChargeTransferData'Destination'Variants
chargeTransferData'Destination ChargeTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: ChargeTransferData' -> Encoding
toEncoding ChargeTransferData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeTransferData' -> Maybe Int
chargeTransferData'Amount ChargeTransferData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"destination" Text -> Maybe ChargeTransferData'Destination'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= ChargeTransferData'
-> Maybe ChargeTransferData'Destination'Variants
chargeTransferData'Destination ChargeTransferData'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON ChargeTransferData' where
  parseJSON :: Value -> Parser ChargeTransferData'
parseJSON = String
-> (Object -> Parser ChargeTransferData')
-> Value
-> Parser ChargeTransferData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"ChargeTransferData'" (\Object
obj -> ((Maybe Int
 -> Maybe ChargeTransferData'Destination'Variants
 -> ChargeTransferData')
-> Parser
     (Maybe Int
      -> Maybe ChargeTransferData'Destination'Variants
      -> ChargeTransferData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe ChargeTransferData'Destination'Variants
-> ChargeTransferData'
ChargeTransferData' Parser
  (Maybe Int
   -> Maybe ChargeTransferData'Destination'Variants
   -> ChargeTransferData')
-> Parser (Maybe Int)
-> Parser
     (Maybe ChargeTransferData'Destination'Variants
      -> ChargeTransferData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount")) Parser
  (Maybe ChargeTransferData'Destination'Variants
   -> ChargeTransferData')
-> Parser (Maybe ChargeTransferData'Destination'Variants)
-> Parser ChargeTransferData'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe ChargeTransferData'Destination'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"destination"))

-- | Create a new 'ChargeTransferData'' with all required fields.
mkChargeTransferData' :: ChargeTransferData'
mkChargeTransferData' :: ChargeTransferData'
mkChargeTransferData' =
  ChargeTransferData' :: Maybe Int
-> Maybe ChargeTransferData'Destination'Variants
-> ChargeTransferData'
ChargeTransferData'
    { chargeTransferData'Amount :: Maybe Int
chargeTransferData'Amount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      chargeTransferData'Destination :: Maybe ChargeTransferData'Destination'Variants
chargeTransferData'Destination = Maybe ChargeTransferData'Destination'Variants
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.charge.properties.transfer_data.anyOf.properties.destination.anyOf@ in the specification.
--
-- ID of an existing, connected Stripe account to transfer funds to if \`transfer_data\` was specified in the charge request.
data ChargeTransferData'Destination'Variants
  = ChargeTransferData'Destination'Text Data.Text.Internal.Text
  | ChargeTransferData'Destination'Account Account
  deriving (Int -> ChargeTransferData'Destination'Variants -> ShowS
[ChargeTransferData'Destination'Variants] -> ShowS
ChargeTransferData'Destination'Variants -> String
(Int -> ChargeTransferData'Destination'Variants -> ShowS)
-> (ChargeTransferData'Destination'Variants -> String)
-> ([ChargeTransferData'Destination'Variants] -> ShowS)
-> Show ChargeTransferData'Destination'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChargeTransferData'Destination'Variants] -> ShowS
$cshowList :: [ChargeTransferData'Destination'Variants] -> ShowS
show :: ChargeTransferData'Destination'Variants -> String
$cshow :: ChargeTransferData'Destination'Variants -> String
showsPrec :: Int -> ChargeTransferData'Destination'Variants -> ShowS
$cshowsPrec :: Int -> ChargeTransferData'Destination'Variants -> ShowS
GHC.Show.Show, ChargeTransferData'Destination'Variants
-> ChargeTransferData'Destination'Variants -> Bool
(ChargeTransferData'Destination'Variants
 -> ChargeTransferData'Destination'Variants -> Bool)
-> (ChargeTransferData'Destination'Variants
    -> ChargeTransferData'Destination'Variants -> Bool)
-> Eq ChargeTransferData'Destination'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ChargeTransferData'Destination'Variants
-> ChargeTransferData'Destination'Variants -> Bool
$c/= :: ChargeTransferData'Destination'Variants
-> ChargeTransferData'Destination'Variants -> Bool
== :: ChargeTransferData'Destination'Variants
-> ChargeTransferData'Destination'Variants -> Bool
$c== :: ChargeTransferData'Destination'Variants
-> ChargeTransferData'Destination'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON ChargeTransferData'Destination'Variants where
  toJSON :: ChargeTransferData'Destination'Variants -> Value
toJSON (ChargeTransferData'Destination'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (ChargeTransferData'Destination'Account Account
a) = Account -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Account
a

instance Data.Aeson.Types.FromJSON.FromJSON ChargeTransferData'Destination'Variants where
  parseJSON :: Value -> Parser ChargeTransferData'Destination'Variants
parseJSON Value
val = case (Text -> ChargeTransferData'Destination'Variants
ChargeTransferData'Destination'Text (Text -> ChargeTransferData'Destination'Variants)
-> Result Text -> Result ChargeTransferData'Destination'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Text
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeTransferData'Destination'Variants
-> Result ChargeTransferData'Destination'Variants
-> Result ChargeTransferData'Destination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Account -> ChargeTransferData'Destination'Variants
ChargeTransferData'Destination'Account (Account -> ChargeTransferData'Destination'Variants)
-> Result Account -> Result ChargeTransferData'Destination'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Account
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result ChargeTransferData'Destination'Variants
-> Result ChargeTransferData'Destination'Variants
-> Result ChargeTransferData'Destination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result ChargeTransferData'Destination'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success ChargeTransferData'Destination'Variants
a -> ChargeTransferData'Destination'Variants
-> Parser ChargeTransferData'Destination'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure ChargeTransferData'Destination'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser ChargeTransferData'Destination'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a