{-# 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 IssuerFraudRecord
module StripeAPI.Types.IssuerFraudRecord 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.Charge
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuer_fraud_record@ in the specification.
--
-- This resource has been renamed to [Early Fraud
-- Warning](\#early_fraud_warning_object) and will be removed in a future API
-- version.
data IssuerFraudRecord = IssuerFraudRecord
  { -- | actionable: An IFR is actionable if it has not received a dispute and has not been fully refunded. You may wish to proactively refund a charge that receives an IFR, in order to avoid receiving a dispute later.
    IssuerFraudRecord -> Bool
issuerFraudRecordActionable :: GHC.Types.Bool,
    -- | charge: ID of the charge this issuer fraud record is for, optionally expanded.
    IssuerFraudRecord -> IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge :: IssuerFraudRecordCharge'Variants,
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    IssuerFraudRecord -> Int
issuerFraudRecordCreated :: GHC.Types.Int,
    -- | fraud_type: The type of fraud labelled by the issuer. One of \`card_never_received\`, \`fraudulent_card_application\`, \`made_with_counterfeit_card\`, \`made_with_lost_card\`, \`made_with_stolen_card\`, \`misc\`, \`unauthorized_use_of_card\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuerFraudRecord -> Text
issuerFraudRecordFraudType :: Data.Text.Internal.Text,
    -- | has_liability_shift: If true, the associated charge is subject to [liability shift](https:\/\/stripe.com\/docs\/payments\/3d-secure\#disputed-payments).
    IssuerFraudRecord -> Bool
issuerFraudRecordHasLiabilityShift :: GHC.Types.Bool,
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuerFraudRecord -> Text
issuerFraudRecordId :: Data.Text.Internal.Text,
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    IssuerFraudRecord -> Bool
issuerFraudRecordLivemode :: GHC.Types.Bool,
    -- | post_date: The timestamp at which the card issuer posted the issuer fraud record.
    IssuerFraudRecord -> Int
issuerFraudRecordPostDate :: GHC.Types.Int
  }
  deriving
    ( Int -> IssuerFraudRecord -> ShowS
[IssuerFraudRecord] -> ShowS
IssuerFraudRecord -> String
(Int -> IssuerFraudRecord -> ShowS)
-> (IssuerFraudRecord -> String)
-> ([IssuerFraudRecord] -> ShowS)
-> Show IssuerFraudRecord
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuerFraudRecord] -> ShowS
$cshowList :: [IssuerFraudRecord] -> ShowS
show :: IssuerFraudRecord -> String
$cshow :: IssuerFraudRecord -> String
showsPrec :: Int -> IssuerFraudRecord -> ShowS
$cshowsPrec :: Int -> IssuerFraudRecord -> ShowS
GHC.Show.Show,
      IssuerFraudRecord -> IssuerFraudRecord -> Bool
(IssuerFraudRecord -> IssuerFraudRecord -> Bool)
-> (IssuerFraudRecord -> IssuerFraudRecord -> Bool)
-> Eq IssuerFraudRecord
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuerFraudRecord -> IssuerFraudRecord -> Bool
$c/= :: IssuerFraudRecord -> IssuerFraudRecord -> Bool
== :: IssuerFraudRecord -> IssuerFraudRecord -> Bool
$c== :: IssuerFraudRecord -> IssuerFraudRecord -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuerFraudRecord where
  toJSON :: IssuerFraudRecord -> Value
toJSON IssuerFraudRecord
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"actionable" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Bool
issuerFraudRecordActionable IssuerFraudRecord
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"charge" Text -> IssuerFraudRecordCharge'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge IssuerFraudRecord
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..= IssuerFraudRecord -> Int
issuerFraudRecordCreated IssuerFraudRecord
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fraud_type" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Text
issuerFraudRecordFraudType IssuerFraudRecord
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"has_liability_shift" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Bool
issuerFraudRecordHasLiabilityShift IssuerFraudRecord
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..= IssuerFraudRecord -> Text
issuerFraudRecordId IssuerFraudRecord
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..= IssuerFraudRecord -> Bool
issuerFraudRecordLivemode IssuerFraudRecord
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"post_date" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Int
issuerFraudRecordPostDate IssuerFraudRecord
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
"issuer_fraud_record" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuerFraudRecord -> Encoding
toEncoding IssuerFraudRecord
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"actionable" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Bool
issuerFraudRecordActionable IssuerFraudRecord
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"charge" Text -> IssuerFraudRecordCharge'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge IssuerFraudRecord
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..= IssuerFraudRecord -> Int
issuerFraudRecordCreated IssuerFraudRecord
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fraud_type" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Text
issuerFraudRecordFraudType IssuerFraudRecord
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"has_liability_shift" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Bool
issuerFraudRecordHasLiabilityShift IssuerFraudRecord
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..= IssuerFraudRecord -> Text
issuerFraudRecordId IssuerFraudRecord
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..= IssuerFraudRecord -> Bool
issuerFraudRecordLivemode IssuerFraudRecord
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"post_date" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuerFraudRecord -> Int
issuerFraudRecordPostDate IssuerFraudRecord
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
"issuer_fraud_record")))))))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuerFraudRecord where
  parseJSON :: Value -> Parser IssuerFraudRecord
parseJSON = String
-> (Object -> Parser IssuerFraudRecord)
-> Value
-> Parser IssuerFraudRecord
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuerFraudRecord" (\Object
obj -> ((((((((Bool
 -> IssuerFraudRecordCharge'Variants
 -> Int
 -> Text
 -> Bool
 -> Text
 -> Bool
 -> Int
 -> IssuerFraudRecord)
-> Parser
     (Bool
      -> IssuerFraudRecordCharge'Variants
      -> Int
      -> Text
      -> Bool
      -> Text
      -> Bool
      -> Int
      -> IssuerFraudRecord)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Bool
-> IssuerFraudRecordCharge'Variants
-> Int
-> Text
-> Bool
-> Text
-> Bool
-> Int
-> IssuerFraudRecord
IssuerFraudRecord Parser
  (Bool
   -> IssuerFraudRecordCharge'Variants
   -> Int
   -> Text
   -> Bool
   -> Text
   -> Bool
   -> Int
   -> IssuerFraudRecord)
-> Parser Bool
-> Parser
     (IssuerFraudRecordCharge'Variants
      -> Int -> Text -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
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
"actionable")) Parser
  (IssuerFraudRecordCharge'Variants
   -> Int -> Text -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
-> Parser IssuerFraudRecordCharge'Variants
-> Parser
     (Int -> Text -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuerFraudRecordCharge'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"charge")) Parser
  (Int -> Text -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
-> Parser Int
-> Parser
     (Text -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
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 -> Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
-> Parser Text
-> Parser (Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
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
"fraud_type")) Parser (Bool -> Text -> Bool -> Int -> IssuerFraudRecord)
-> Parser Bool -> Parser (Text -> Bool -> Int -> IssuerFraudRecord)
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_liability_shift")) Parser (Text -> Bool -> Int -> IssuerFraudRecord)
-> Parser Text -> Parser (Bool -> Int -> IssuerFraudRecord)
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 (Bool -> Int -> IssuerFraudRecord)
-> Parser Bool -> Parser (Int -> IssuerFraudRecord)
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 (Int -> IssuerFraudRecord)
-> Parser Int -> Parser IssuerFraudRecord
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
"post_date"))

-- | Create a new 'IssuerFraudRecord' with all required fields.
mkIssuerFraudRecord ::
  -- | 'issuerFraudRecordActionable'
  GHC.Types.Bool ->
  -- | 'issuerFraudRecordCharge'
  IssuerFraudRecordCharge'Variants ->
  -- | 'issuerFraudRecordCreated'
  GHC.Types.Int ->
  -- | 'issuerFraudRecordFraudType'
  Data.Text.Internal.Text ->
  -- | 'issuerFraudRecordHasLiabilityShift'
  GHC.Types.Bool ->
  -- | 'issuerFraudRecordId'
  Data.Text.Internal.Text ->
  -- | 'issuerFraudRecordLivemode'
  GHC.Types.Bool ->
  -- | 'issuerFraudRecordPostDate'
  GHC.Types.Int ->
  IssuerFraudRecord
mkIssuerFraudRecord :: Bool
-> IssuerFraudRecordCharge'Variants
-> Int
-> Text
-> Bool
-> Text
-> Bool
-> Int
-> IssuerFraudRecord
mkIssuerFraudRecord Bool
issuerFraudRecordActionable IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge Int
issuerFraudRecordCreated Text
issuerFraudRecordFraudType Bool
issuerFraudRecordHasLiabilityShift Text
issuerFraudRecordId Bool
issuerFraudRecordLivemode Int
issuerFraudRecordPostDate =
  IssuerFraudRecord :: Bool
-> IssuerFraudRecordCharge'Variants
-> Int
-> Text
-> Bool
-> Text
-> Bool
-> Int
-> IssuerFraudRecord
IssuerFraudRecord
    { issuerFraudRecordActionable :: Bool
issuerFraudRecordActionable = Bool
issuerFraudRecordActionable,
      issuerFraudRecordCharge :: IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge = IssuerFraudRecordCharge'Variants
issuerFraudRecordCharge,
      issuerFraudRecordCreated :: Int
issuerFraudRecordCreated = Int
issuerFraudRecordCreated,
      issuerFraudRecordFraudType :: Text
issuerFraudRecordFraudType = Text
issuerFraudRecordFraudType,
      issuerFraudRecordHasLiabilityShift :: Bool
issuerFraudRecordHasLiabilityShift = Bool
issuerFraudRecordHasLiabilityShift,
      issuerFraudRecordId :: Text
issuerFraudRecordId = Text
issuerFraudRecordId,
      issuerFraudRecordLivemode :: Bool
issuerFraudRecordLivemode = Bool
issuerFraudRecordLivemode,
      issuerFraudRecordPostDate :: Int
issuerFraudRecordPostDate = Int
issuerFraudRecordPostDate
    }

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

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

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