#if 0
#elif defined(__arm64__) && __arm64__ || defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.7.1 (swiftlang-5.7.1.135.3 clang-1400.0.29.51)
#ifndef STRIPEPAYMENTS_SWIFT_H
#define STRIPEPAYMENTS_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wduplicate-method-match"
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#endif

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...)
# endif
#endif

#if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
#else
# define SWIFT_RELEASES_ARGUMENT
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if defined(__has_attribute) && __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
#else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
#  define SWIFT_EXTERN extern "C"
# else
#  define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if defined(__cplusplus)
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT noexcept
#endif
#else
#if !defined(SWIFT_NOEXCEPT)
# define SWIFT_NOEXCEPT 
#endif
#endif
#if defined(__cplusplus)
#if !defined(SWIFT_CXX_INT_DEFINED)
#define SWIFT_CXX_INT_DEFINED
namespace swift {
using Int = ptrdiff_t;
using UInt = size_t;
}
#endif
#endif
#if defined(__OBJC__)
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import CoreFoundation;
@import Foundation;
@import ObjectiveC;
@import SafariServices;
@import StripeCore;
@import UIKit;
#endif

#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"

#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="StripePayments",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

#if defined(__OBJC__)

/// Objects conforming to STPAPIResponseDecodable can be automatically converted
/// from a JSON dictionary that was returned from the Stripe API.
SWIFT_PROTOCOL("_TtP14StripePayments23STPAPIResponseDecodable_")
@protocol STPAPIResponseDecodable <NSObject>
/// Parses an response from the Stripe API (in JSON format; represented as
/// an <code>NSDictionary</code>) into an instance of the class.
/// \param response The JSON dictionary that represents an object of this type
///
///
/// returns:
/// The object represented by the JSON dictionary, or nil if the object
/// could not be decoded (i.e. if one of its <code>requiredFields</code> is nil).
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
/// The raw JSON response used to create the object. This can be useful for accessing
/// fields that haven’t yet been made into native properties in the SDK.
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
@end


/// For internal SDK use only
SWIFT_CLASS_NAMED("LinkAccountSession")
@interface STP_Internal_LinkAccountSession : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// For internal SDK use only
SWIFT_CLASS_NAMED("LinkSettings")
@interface STP_Internal_LinkSettings : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class NSString;

@interface NSDecimalNumber (SWIFT_EXTENSION(StripePayments))
+ (NSDecimalNumber * _Nonnull)stp_decimalNumberWithAmount:(NSInteger)amount currency:(NSString * _Nullable)currency SWIFT_WARN_UNUSED_RESULT;
- (NSInteger)stp_amountWithCurrency:(NSString * _Nullable)currency SWIFT_WARN_UNUSED_RESULT;
@end





@class STPBankAccountParams;
@class STPToken;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Converts an STPBankAccount object into a Stripe token using the Stripe API.
/// \param bankAccount The user’s bank account details. Cannot be nil. - seealso: https://stripe.com/docs/api#create_bank_account_token
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithBankAccount:(STPBankAccountParams * _Nonnull)bankAccount completion:(void (^ _Nonnull)(STPToken * _Nullable, NSError * _Nullable))completion;
@end

@class STPConnectAccountParams;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Converts an <code>STPConnectAccountParams</code> object into a Stripe token using the Stripe API.
/// This allows the connected account to accept the Terms of Service, and/or send Legal Entity information.
/// \param account The Connect Account parameters. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithConnectAccount:(STPConnectAccountParams * _Nonnull)account completion:(void (^ _Nullable)(STPToken * _Nullable, NSError * _Nullable))completion;
@end

@class STPRadarSession;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Creates a Radar Session.
/// note:
/// See https://stripe.com/docs/radar/radar-session
/// note:
/// This API and the guide linked above require special permissions to use. Contact support@stripe.com.
/// note:
/// <code>StripeAPI.advancedFraudSignalsEnabled</code> must be <code>true</code> to use this method.
/// note:
/// See <code>STPRadarSession</code>
/// \param completion The callback to run with the returned <code>STPRadarSession</code> (and any errors that may have occurred).
///
- (void)createRadarSessionWithCompletion:(void (^ _Nonnull)(STPRadarSession * _Nullable, NSError * _Nullable))completion;
@end


@class UIImage;
enum STPFilePurpose : NSInteger;
@class STPFile;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Uses the Stripe file upload API to upload an image. This can be used for
/// identity verification and evidence disputes.
/// seealso:
/// https://stripe.com/docs/file-upload
/// \param image The image to be uploaded. The maximum allowed file size is 16MB
/// for identity documents and 5MB for evidence disputes. Cannot be nil.
/// Your image will be automatically resized down if you pass in one that
/// is too large
///
/// \param purpose The purpose of this file. This can be either an identifying
/// document or an evidence dispute.
///
/// \param completion The callback to run with the returned Stripe file
/// (and any errors that may have occurred).
///
- (void)uploadImage:(UIImage * _Nonnull)image purpose:(enum STPFilePurpose)purpose completion:(void (^ _Nullable)(STPFile * _Nullable, NSError * _Nullable))completion;
@end


@class STPCardParams;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Converts an STPCardParams object into a Stripe token using the Stripe API.
/// \param cardParams The user’s card details. Cannot be nil. - seealso: https://stripe.com/docs/api#create_card_token
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithCard:(STPCardParams * _Nonnull)cardParams completion:(void (^ _Nonnull)(STPToken * _Nullable, NSError * _Nullable))completion;
/// Converts a CVC string into a Stripe token using the Stripe API.
/// \param cvc The CVC/CVV number used to create the token. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenForCVCUpdate:(NSString * _Nonnull)cvc completion:(void (^ _Nullable)(STPToken * _Nullable, NSError * _Nullable))completion;
@end


@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Converts a personal identification number into a Stripe token using the Stripe API.
/// \param pii The user’s personal identification number. Cannot be nil. - seealso: https://stripe.com/docs/api#create_pii_token
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithPersonalIDNumber:(NSString * _Nonnull)pii completion:(void (^ _Nullable)(STPToken * _Nullable, NSError * _Nullable))completion;
/// Converts the last 4 SSN digits into a Stripe token using the Stripe API.
/// \param ssnLast4 The last 4 digits of the user’s SSN. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithSSNLast4:(NSString * _Nonnull)ssnLast4 completion:(void (^ _Nonnull)(STPToken * _Nullable, NSError * _Nullable))completion;
@end

@class STPPaymentMethodParams;
@class STPPaymentMethod;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Creates a PaymentMethod object with the provided params object.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/create
/// \param paymentMethodParams The <code>STPPaymentMethodParams</code> to pass to <code>/v1/payment_methods</code>.  Cannot be nil.
///
/// \param completion The callback to run with the returned PaymentMethod object, or an error.
///
- (void)createPaymentMethodWithParams:(STPPaymentMethodParams * _Nonnull)paymentMethodParams completion:(void (^ _Nonnull)(STPPaymentMethod * _Nullable, NSError * _Nullable))completion;
@end

@class STPSourceParams;
@class STPSource;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Creates a Source object using the provided details.
/// Note: in order to create a source on a connected account, you can set your
/// API client’s <code>stripeAccount</code> property to the ID of the account.
/// seealso:
/// https://stripe.com/docs/sources/connect#creating-direct-charges
/// \param sourceParams The details of the source to create. Cannot be nil. - seealso: https://stripe.com/docs/api#create_source
///
/// \param completion The callback to run with the returned Source object, or an error.
///
- (void)createSourceWithParams:(STPSourceParams * _Nonnull)sourceParams completion:(void (^ _Nonnull)(STPSource * _Nullable, NSError * _Nullable))completion;
/// Retrieves the Source object with the given ID. - seealso: https://stripe.com/docs/api#retrieve_source
/// \param identifier The identifier of the source to be retrieved. Cannot be nil.
///
/// \param secret The client secret of the source. Cannot be nil.
///
/// \param completion The callback to run with the returned Source object, or an error.
///
- (void)retrieveSourceWithId:(NSString * _Nonnull)identifier clientSecret:(NSString * _Nonnull)secret completion:(void (^ _Nonnull)(STPSource * _Nullable, NSError * _Nullable))completion;
/// Starts polling the Source object with the given ID. For payment methods that require
/// additional customer action (e.g. authorizing a payment with their bank), polling
/// allows you to determine if the action was successful. Polling will stop and the
/// provided callback will be called once the source’s status is no longer <code>pending</code>,
/// or if the given timeout is reached and the source is still <code>pending</code>. If polling
/// stops due to an error, the callback will be fired with the latest retrieved
/// source and the error.
/// Note that if a poll is already running for a source, subsequent calls to <code>startPolling</code>
/// with the same source ID will do nothing.
/// \param identifier The identifier of the source to be retrieved. Cannot be nil.
///
/// \param secret The client secret of the source. Cannot be nil.
///
/// \param timeout The timeout for the polling operation, in seconds. Timeouts are capped at 5 minutes.
///
/// \param completion The callback to run with the returned Source object, or an error.
///
- (void)startPollingSourceWithId:(NSString * _Nonnull)identifier clientSecret:(NSString * _Nonnull)secret timeout:(NSTimeInterval)timeout completion:(void (^ _Nonnull)(STPSource * _Nullable, NSError * _Nullable))completion;
/// Stops polling the Source object with the given ID. Note that the completion block passed to
/// <code>startPolling</code> will not be fired when <code>stopPolling</code> is called.
/// \param identifier The identifier of the source to be retrieved. Cannot be nil.
///
- (void)stopPollingSourceWithId:(NSString * _Nonnull)identifier;
@end


@class PKPayment;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Converts a PKPayment object into a Stripe token using the Stripe API.
/// \param payment The user’s encrypted payment information as returned from a PKPaymentAuthorizationController. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
///
- (void)createTokenWithPayment:(PKPayment * _Nonnull)payment completion:(void (^ _Nonnull)(STPToken * _Nullable, NSError * _Nullable))completion;
/// Converts a PKPayment object into a Stripe source using the Stripe API.
/// \param payment The user’s encrypted payment information as returned from a PKPaymentAuthorizationController. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe source (and any errors that may have occurred).
///
- (void)createSourceWithPayment:(PKPayment * _Nonnull)payment completion:(void (^ _Nonnull)(STPSource * _Nullable, NSError * _Nullable))completion;
/// Converts a PKPayment object into a Stripe Payment Method using the Stripe API.
/// \param payment The user’s encrypted payment information as returned from a PKPaymentAuthorizationController. Cannot be nil.
///
/// \param completion The callback to run with the returned Stripe source (and any errors that may have occurred).
///
- (void)createPaymentMethodWithPayment:(PKPayment * _Nonnull)payment completion:(void (^ _Nonnull)(STPPaymentMethod * _Nullable, NSError * _Nullable))completion;
/// Converts a PKPayment object into a Stripe Payment Method using the Stripe API.
/// \param payment The user’s encrypted payment information as returned from a PKPaymentAuthorizationController. Cannot be nil.
///
/// \param metadata Additional data to be included with the payment method
///
/// \param completion The callback to run with the returned Stripe source (and any errors that may have occurred).
///
- (void)createPaymentMethodWithPayment:(PKPayment * _Nonnull)payment metadata:(NSDictionary<NSString *, NSString *> * _Nonnull)metadata completion:(void (^ _Nonnull)(STPPaymentMethod * _Nullable, NSError * _Nullable))completion;
@end


@class STPPaymentIntent;
@class STPPaymentIntentParams;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Retrieves the PaymentIntent object using the given secret. - seealso: https://stripe.com/docs/api#retrieve_payment_intent
/// \param secret The client secret of the payment intent to be retrieved. Cannot be nil.
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)retrievePaymentIntentWithClientSecret:(NSString * _Nonnull)secret completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Retrieves the PaymentIntent object using the given secret. - seealso: https://stripe.com/docs/api#retrieve_payment_intent
/// \param secret The client secret of the payment intent to be retrieved. Cannot be nil.
///
/// \param expand An array of string keys to expand on the returned PaymentIntent object. These strings should match one or more of the parameter names that are marked as expandable. - seealso: https://stripe.com/docs/api/payment_intents/object
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)retrievePaymentIntentWithClientSecret:(NSString * _Nonnull)secret expand:(NSArray<NSString *> * _Nullable)expand completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Confirms the PaymentIntent object with the provided params object.
/// At a minimum, the params object must include the <code>clientSecret</code>.
/// seealso:
/// https://stripe.com/docs/api#confirm_payment_intent
/// @note Use the <code>confirmPayment:withAuthenticationContext:completion:</code> method on <code>STPPaymentHandler</code> instead
/// of calling this method directly. It handles any authentication necessary for you. - seealso: https://stripe.com/docs/payments/3d-secure
/// \param paymentIntentParams The <code>STPPaymentIntentParams</code> to pass to <code>/confirm</code>
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)confirmPaymentIntentWithParams:(STPPaymentIntentParams * _Nonnull)paymentIntentParams completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Confirms the PaymentIntent object with the provided params object.
/// At a minimum, the params object must include the <code>clientSecret</code>.
/// seealso:
/// https://stripe.com/docs/api#confirm_payment_intent
/// @note Use the <code>confirmPayment:withAuthenticationContext:completion:</code> method on <code>STPPaymentHandler</code> instead
/// of calling this method directly. It handles any authentication necessary for you. - seealso: https://stripe.com/docs/payments/3d-secure
/// \param paymentIntentParams The <code>STPPaymentIntentParams</code> to pass to <code>/confirm</code>
///
/// \param expand An array of string keys to expand on the returned PaymentIntent object. These strings should match one or more of the parameter names that are marked as expandable. - seealso: https://stripe.com/docs/api/payment_intents/object
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)confirmPaymentIntentWithParams:(STPPaymentIntentParams * _Nonnull)paymentIntentParams expand:(NSArray<NSString *> * _Nullable)expand completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
@end


@class STPSetupIntent;
@class STPSetupIntentConfirmParams;

@interface STPAPIClient (SWIFT_EXTENSION(StripePayments))
/// Retrieves the SetupIntent object using the given secret. - seealso: https://stripe.com/docs/api/setup_intents/retrieve
/// \param secret The client secret of the SetupIntent to be retrieved. Cannot be nil.
///
/// \param completion The callback to run with the returned SetupIntent object, or an error.
///
- (void)retrieveSetupIntentWithClientSecret:(NSString * _Nonnull)secret completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
/// Retrieves the SetupIntent object using the given secret. - seealso: https://stripe.com/docs/api/setup_intents/retrieve
/// \param secret The client secret of the SetupIntent to be retrieved. Cannot be nil.
///
/// \param expand An array of string keys to expand on the returned SetupIntent object. These strings should match one or more of the parameter names that are marked as expandable. - seealso: https://stripe.com/docs/api/setup_intents/object
///
/// \param completion The callback to run with the returned SetupIntent object, or an error.
///
- (void)retrieveSetupIntentWithClientSecret:(NSString * _Nonnull)secret expand:(NSArray<NSString *> * _Nullable)expand completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
/// Confirms the SetupIntent object with the provided params object.
/// At a minimum, the params object must include the <code>clientSecret</code>.
/// seealso:
/// https://stripe.com/docs/api/setup_intents/confirm
/// @note Use the <code>confirmSetupIntent:withAuthenticationContext:completion:</code> method on <code>STPPaymentHandler</code> instead
/// of calling this method directly. It handles any authentication necessary for you. - seealso: https://stripe.com/docs/payments/3d-secure
/// \param setupIntentParams The <code>STPSetupIntentConfirmParams</code> to pass to <code>/confirm</code>
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)confirmSetupIntentWithParams:(STPSetupIntentConfirmParams * _Nonnull)setupIntentParams completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
/// Confirms the SetupIntent object with the provided params object.
/// At a minimum, the params object must include the <code>clientSecret</code>.
/// seealso:
/// https://stripe.com/docs/api/setup_intents/confirm
/// @note Use the <code>confirmSetupIntent:withAuthenticationContext:completion:</code> method on <code>STPPaymentHandler</code> instead
/// of calling this method directly. It handles any authentication necessary for you. - seealso: https://stripe.com/docs/mobile/ios/authentication
/// \param setupIntentParams The <code>STPSetupIntentConfirmParams</code> to pass to <code>/confirm</code>
///
/// \param expand An array of string keys to expand on the returned SetupIntent object. These strings should match one or more of the parameter names that are marked as expandable. - seealso: https://stripe.com/docs/api/setup_intents/object
///
/// \param completion The callback to run with the returned PaymentIntent object, or an error.
///
- (void)confirmSetupIntentWithParams:(STPSetupIntentConfirmParams * _Nonnull)setupIntentParams expand:(NSArray<NSString *> * _Nullable)expand completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
@end


@class PKShippingMethod;
@class STPPaymentMethodBillingDetails;
@class PKContact;
@class CNContact;

/// STPAddress Contains an address as represented by the Stripe API.
SWIFT_CLASS("_TtC14StripePayments10STPAddress")
@interface STPAddress : NSObject
/// The user’s full name (e.g. “Jane Doe”)
@property (nonatomic, copy) NSString * _Nullable name;
/// The first line of the user’s street address (e.g. “123 Fake St”)
@property (nonatomic, copy) NSString * _Nullable line1;
/// The apartment, floor number, etc of the user’s street address (e.g. “Apartment 1A”)
@property (nonatomic, copy) NSString * _Nullable line2;
/// The city in which the user resides (e.g. “San Francisco”)
@property (nonatomic, copy) NSString * _Nullable city;
/// The state in which the user resides (e.g. “CA”)
@property (nonatomic, copy) NSString * _Nullable state;
/// The postal code in which the user resides (e.g. “90210”)
@property (nonatomic, copy) NSString * _Nullable postalCode;
/// The ISO country code of the address (e.g. “US”)
@property (nonatomic, copy) NSString * _Nullable country;
/// The phone number of the address (e.g. “8885551212”)
@property (nonatomic, copy) NSString * _Nullable phone;
/// The email of the address (e.g. “jane@doe.com”)
@property (nonatomic, copy) NSString * _Nullable email;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// When creating a charge on your backend, you can attach shipping information
/// to prevent fraud on a physical good. You can use this method to turn your user’s
/// shipping address and selected shipping method into a hash suitable for attaching
/// to a charge. You should pass this to your backend, and use it as the <code>shipping</code>
/// parameter when creating a charge.
/// seealso:
/// https://stripe.com/docs/api#create_charge-shipping
/// \param address The user’s shipping address. If nil, this method will return nil.
///
/// \param method The user’s selected shipping method. May be nil.
///
+ (NSDictionary * _Nullable)shippingInfoForChargeWithAddress:(STPAddress * _Nullable)address shippingMethod:(PKShippingMethod * _Nullable)method SWIFT_WARN_UNUSED_RESULT;
/// Initializes an empty STPAddress.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new STPAddress with data from STPPaymentMethodBillingDetails.
/// \param billingDetails The STPPaymentMethodBillingDetails instance you want to populate the STPAddress from.
///
///
/// returns:
/// A new STPAddress instance with data copied from the passed in billing details.
- (nonnull instancetype)initWithPaymentMethodBillingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails OBJC_DESIGNATED_INITIALIZER;
/// Initializes a new STPAddress with data from an PassKit contact.
/// \param contact The PassKit contact you want to populate the STPAddress from.
///
///
/// returns:
/// A new STPAddress instance with data copied from the passed in contact.
- (nonnull instancetype)initWithPKContact:(PKContact * _Nonnull)contact OBJC_DESIGNATED_INITIALIZER;
/// Generates a PassKit contact representation of this STPAddress.
///
/// returns:
/// A new PassKit contact with data copied from this STPAddress instance.
- (PKContact * _Nonnull)PKContactValue SWIFT_WARN_UNUSED_RESULT;
/// Initializes a new STPAddress with a contact from the Contacts framework.
/// \param contact The CNContact you want to populate the STPAddress from.
///
///
/// returns:
/// A new STPAddress instance with data copied from the passed in contact.
- (nonnull instancetype)initWithCNContact:(CNContact * _Nonnull)contact OBJC_DESIGNATED_INITIALIZER;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
@end


@interface STPAddress (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPAddress (SWIFT_EXTENSION(StripePayments)) <NSCopying>
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end


/// Objects conforming to STPFormEncodable can be automatically converted to a form-encoded string, which can then be used when making requests to the Stripe API.
SWIFT_PROTOCOL("_TtP14StripePayments16STPFormEncodable_")
@protocol STPFormEncodable <NSObject>
/// The root object name to be used when converting this object to a form-encoded string. For example, if this returns “card”, then the form-encoded output will resemble “card[foo]=bar” (where ‘foo’ and ‘bar’ are specified by <code>propertyNamesToFormFieldNamesMapping</code> below.
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
/// This maps properties on an object that is being form-encoded into parameter names in the Stripe API. For example, STPCardParams has a field called <code>expMonth</code>, but the Stripe API expects a field called <code>exp_month</code>. This dictionary represents a mapping from the former to the latter (in other words, STPCardParams.propertyNamesToFormFieldNamesMapping()[“expMonth”] == “exp_month”.)
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
/// You can use this property to add additional fields to an API request that are not explicitly defined by the object’s interface. This can be useful when using beta features that haven’t been added to the Stripe SDK yet. For example, if the /v1/tokens API began to accept a beta field called “test_field”, you might do the following:
/// var cardParams = STPCardParams()
/// // add card values
/// cardParams.additionalAPIParameters = [“test_field”: “example_value”]
/// STPAPIClient.shared.createToken(withParameters: cardParams completion:…);
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
@end


@interface STPAddress (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end







@class UIViewController;
@class SFSafariViewController;

/// <code>STPAuthenticationContext</code> provides information required to present authentication challenges
/// to a user.
SWIFT_PROTOCOL("_TtP14StripePayments24STPAuthenticationContext_")
@protocol STPAuthenticationContext <NSObject>
/// The Stripe SDK will modally present additional view controllers on top
/// of the <code>authenticationPresentingViewController</code> when required for user
/// authentication, like in the Challenge Flow for 3DS2 transactions.
- (UIViewController * _Nonnull)authenticationPresentingViewController SWIFT_WARN_UNUSED_RESULT;
@optional
/// This method is called before presenting a UIViewController for authentication.
/// @note <code>STPPaymentHandler</code> will not proceed until <code>completion</code> is called.
- (void)prepareAuthenticationContextForPresentation:(void (^ _Nonnull)(void))completion;
/// This method is called before presenting an SFSafariViewController for web-based authentication.
/// Implement this method to configure the <code>SFSafariViewController</code> instance, e.g. <code>viewController.preferredBarTintColor = MyBarTintColor</code>
/// @note Setting the <code>delegate</code> property has no effect.
- (void)configureSafariViewController:(SFSafariViewController * _Nonnull)viewController;
/// This method is called when an authentication UIViewController is about to be dismissed.
/// Implement this method to prepare your UI for the authentication view controller to be dismissed. For example,
/// if you requested authentication while displaying an STPBankSelectionViewController, you may want to hide
/// it to return the user to your desired view controller.
- (void)authenticationContextWillDismissViewController:(UIViewController * _Nonnull)viewController;
@end


/// Objects conforming to this protocol can be attached to a Stripe Customer object
/// as a payment source.
/// seealso:
/// https://stripe.com/docs/api#customer_object-sources
SWIFT_PROTOCOL("_TtP14StripePayments17STPSourceProtocol_")
@protocol STPSourceProtocol <NSObject>
/// The Stripe ID of the source.
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeID;
@end

enum STPBankAccountHolderType : NSInteger;
enum STPBankAccountStatus : NSInteger;

/// Representation of a user’s bank account details that have been tokenized with
/// the Stripe API.
/// seealso:
/// https://stripe.com/docs/api#bank_accounts
SWIFT_CLASS("_TtC14StripePayments14STPBankAccount")
@interface STPBankAccount : NSObject <STPAPIResponseDecodable, STPSourceProtocol>
/// You cannot directly instantiate an <code>STPBankAccount</code>. You should only use one
/// that has been returned from an <code>STPAPIClient</code> callback.
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The routing number for the bank account. This should be the ACH routing number,
/// not the wire routing number.
@property (nonatomic, readonly, copy) NSString * _Nullable routingNumber;
/// Two-letter ISO code representing the country the bank account is located in.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// The default currency for the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable currency;
/// The last 4 digits of the account number.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The name of the bank that owns the account.
@property (nonatomic, readonly, copy) NSString * _Nullable bankName;
/// The name of the person or business that owns the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable accountHolderName;
/// The type of entity that holds the account.
@property (nonatomic, readonly) enum STPBankAccountHolderType accountHolderType;
/// A proxy for the account number, this uniquely identifies the account and can be
/// used to compare equality of different bank accounts.
@property (nonatomic, readonly, copy) NSString * _Nullable fingerprint;
/// The validation status of the bank account. - seealso: STPBankAccountStatus
@property (nonatomic, readonly) enum STPBankAccountStatus status;
/// The Stripe ID for the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable bankAccountId SWIFT_DEPRECATED_MSG("Use stripeID (defined in STPSourceProtocol)");
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeID;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)bankAccount SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly) NSUInteger hash;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

@class STPCollectBankAccountParams;
@class NSError;

/// A class responsible for collecting bank account information
SWIFT_CLASS("_TtC14StripePayments23STPBankAccountCollector")
@interface STPBankAccountCollector : NSObject
- (nonnull instancetype)init;
/// Presents a modal from the viewController to collect bank account
/// and if completed successfully, link your bank account to a PaymentIntent
/// \param clientSecret Client secret of the payment intent
///
/// \param params Parameters for this call
///
/// \param viewController Presenting view controller that will present the modal
///
/// \param completion Completion block to be called on completion of the operation.
/// Upon success, the <code>STPPaymentIntent</code> instance will have an
/// expanded <code>paymentMethod</code> containing detailed payment method information
///
- (void)collectBankAccountForPaymentWithClientSecret:(NSString * _Nonnull)clientSecret params:(STPCollectBankAccountParams * _Nonnull)params from:(UIViewController * _Nonnull)viewController completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Presents a modal from the viewController to collect bank account
/// and if completed successfully, link your bank account to a PaymentIntent
/// \param clientSecret Client secret of the payment intent
///
/// \param returnURL A URL that redirects back to your app to be used to return after completing authentication in another app (such as bank app or Safari).
///
/// \param params Parameters for this call
///
/// \param viewController Presenting view controller that will present the modal
///
/// \param completion Completion block to be called on completion of the operation.
/// Upon success, the <code>STPPaymentIntent</code> instance will have an
/// expanded <code>paymentMethod</code> containing detailed payment method information
///
- (void)collectBankAccountForPaymentWithClientSecret:(NSString * _Nonnull)clientSecret returnURL:(NSString * _Nullable)returnURL params:(STPCollectBankAccountParams * _Nonnull)params from:(UIViewController * _Nonnull)viewController completion:(void (^ _Nonnull)(STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Presents a modal from the viewController to collect bank account
/// and if completed successfully, link your bank account to a SetupIntent
/// \param clientSecret Client secret of the setup intent
///
/// \param params Parameters for this call
///
/// \param viewController Presenting view controller that will present the modal
///
/// \param completion Completion block to be called on completion of the operation.
/// Upon success, the <code>STPSetupIntent</code> instance will have an
/// expanded <code>paymentMethod</code> containing detailed payment method information
///
- (void)collectBankAccountForSetupWithClientSecret:(NSString * _Nonnull)clientSecret params:(STPCollectBankAccountParams * _Nonnull)params from:(UIViewController * _Nonnull)viewController completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
/// Presents a modal from the viewController to collect bank account
/// and if completed successfully, link your bank account to a SetupIntent
/// \param clientSecret Client secret of the setup intent
///
/// \param returnURL A URL that redirects back to your app to be used to return after completing authentication in another app (such as bank app or Safari).
///
/// \param params Parameters for this call
///
/// \param viewController Presenting view controller that will present the modal
///
/// \param completion Completion block to be called on completion of the operation.
/// Upon success, the <code>STPSetupIntent</code> instance will have an
/// expanded <code>paymentMethod</code> containing detailed payment method information
///
- (void)collectBankAccountForSetupWithClientSecret:(NSString * _Nonnull)clientSecret returnURL:(NSString * _Nullable)returnURL params:(STPCollectBankAccountParams * _Nonnull)params from:(UIViewController * _Nonnull)viewController completion:(void (^ _Nonnull)(STPSetupIntent * _Nullable, NSError * _Nullable))completion;
@end

/// The type of entity that holds a bank account.
typedef SWIFT_ENUM(NSInteger, STPBankAccountHolderType, open) {
/// An individual holds this bank account.
  STPBankAccountHolderTypeIndividual = 0,
/// A company holds this bank account.
  STPBankAccountHolderTypeCompany = 1,
};


/// Representation of a user’s bank account details. You can assemble these with
/// information that your user enters and then create Stripe tokens with them using
/// an STPAPIClient.
/// seealso:
/// https://stripe.com/docs/api#create_bank_account_token
SWIFT_CLASS("_TtC14StripePayments20STPBankAccountParams")
@interface STPBankAccountParams : NSObject <STPFormEncodable>
/// The account number for the bank account. Currently must be a checking account.
@property (nonatomic, copy) NSString * _Nullable accountNumber;
/// The last 4 digits of the bank account’s account number, if it’s been set,
/// otherwise nil.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The routing number for the bank account. This should be the ACH routing number,
/// not the wire routing number.
@property (nonatomic, copy) NSString * _Nullable routingNumber;
/// Two-letter ISO code representing the country the bank account is located in.
@property (nonatomic, copy) NSString * _Nullable country;
/// The default currency for the bank account.
@property (nonatomic, copy) NSString * _Nullable currency;
/// The name of the person or business that owns the bank account.
@property (nonatomic, copy) NSString * _Nullable accountHolderName;
/// The type of entity that holds the account.
/// Defaults to STPBankAccountHolderTypeIndividual.
@property (nonatomic) enum STPBankAccountHolderType accountHolderType;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initializes an empty STPBankAccountParams.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end

/// Possible validation states for a bank account.
typedef SWIFT_ENUM(NSInteger, STPBankAccountStatus, open) {
/// The account has had no activity or validation performed
  STPBankAccountStatusNew = 0,
/// Stripe has determined this bank account exists.
  STPBankAccountStatusValidated = 1,
/// Bank account verification has succeeded.
  STPBankAccountStatusVerified = 2,
/// Verification for this bank account has failed.
  STPBankAccountStatusVerificationFailed = 3,
/// A transfer sent to this bank account has failed.
  STPBankAccountStatusErrored = 4,
};

enum STPCardBrand : NSInteger;
enum STPCardFundingType : NSInteger;

/// Representation of a user’s credit card details that have been tokenized with
/// the Stripe API
/// seealso:
/// https://stripe.com/docs/api#cards
SWIFT_CLASS("_TtC14StripePayments7STPCard")
@interface STPCard : NSObject <STPAPIResponseDecodable, STPSourceProtocol>
/// The last 4 digits of the card.
@property (nonatomic, readonly, copy) NSString * _Nonnull last4;
/// For cards made with Apple Pay, this refers to the last 4 digits of the
/// “Device Account Number” for the tokenized card. For regular cards, it will
/// be nil.
@property (nonatomic, readonly, copy) NSString * _Nullable dynamicLast4;
/// Whether or not the card originated from Apple Pay.
@property (nonatomic, readonly) BOOL isApplePayCard;
/// The card’s expiration month. 1-indexed (i.e. 1 == January)
@property (nonatomic, readonly) NSInteger expMonth;
/// The card’s expiration year.
@property (nonatomic, readonly) NSInteger expYear;
/// The cardholder’s name.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// The cardholder’s address.
@property (nonatomic, readonly, strong) STPAddress * _Nullable address;
/// The issuer of the card.
@property (nonatomic, readonly) enum STPCardBrand brand;
/// The funding source for the card (credit, debit, prepaid, or other)
@property (nonatomic, readonly) enum STPCardFundingType funding;
/// Two-letter ISO code representing the issuing country of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// This is only applicable when tokenizing debit cards to issue payouts to managed
/// accounts. You should not set it otherwise. The card can then be used as a
/// transfer destination for funds in this currency.
@property (nonatomic, readonly, copy) NSString * _Nullable currency;
/// Returns a string representation for the provided card brand;
/// i.e. <code>STPCard.string(from brand: .visa) == "Visa"</code>.
/// \param brand the brand you want to convert to a string
///
///
/// returns:
/// A string representing the brand, suitable for displaying to a user.
+ (NSString * _Nonnull)stringFromBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// This parses a string representing a card’s brand into the appropriate
/// STPCardBrand enum value,
/// i.e. <code>STPCard.brand(from string: "American Express") == .amex</code>.
/// The string values themselves are specific to Stripe as listed in the Stripe API
/// documentation.
/// seealso:
/// https://stripe.com/docs/api#card_object-brand
/// \param string a string representing the card’s brand as returned from
/// the Stripe API
///
///
/// returns:
/// an enum value mapped to that string. If the string is unrecognized,
/// returns STPCardBrandUnknown.
+ (enum STPCardBrand)brandFromString:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
/// Create an STPCard from a Stripe API response.
/// \param cardID The Stripe ID of the card, e.g. <code>card_185iQx4JYtv6MPZKfcuXwkOx</code>
///
/// \param brand The brand of the card (e.g. “Visa”. To obtain this enum value
/// from a string, use <code>STPCardBrand.brand(from string:string)</code>;
///
/// \param last4 The last 4 digits of the card, e.g. 4242
///
/// \param expMonth The card’s expiration month, 1-indexed (i.e. 1 = January)
///
/// \param expYear The card’s expiration year
///
/// \param funding The card’s funding type (credit, debit, or prepaid). To obtain
/// this enum value from a string, use <code>STPCardBrand.funding(from string:)</code>.
///
///
/// returns:
/// an STPCard instance populated with the provided values.
- (nonnull instancetype)initWithID:(NSString * _Nonnull)cardID brand:(enum STPCardBrand)brand last4:(NSString * _Nonnull)last4 expMonth:(NSInteger)expMonth expYear:(NSInteger)expYear funding:(enum STPCardFundingType)funding OBJC_DESIGNATED_INITIALIZER SWIFT_DEPRECATED_MSG("You cannot directly instantiate an STPCard. You should only use one that has been returned from an STPAPIClient callback.");
/// This parses a string representing a card’s funding type into the appropriate
/// <code>STPCardFundingType</code> enum value,
/// i.e. <code>STPCard.funding(from string:"prepaid") == .prepaid</code>.
/// \param string a string representing the card’s funding type as returned from
/// the Stripe API
///
///
/// returns:
/// an enum value mapped to that string. If the string is unrecognized,
/// returns <code>STPCardFundingTypeOther</code>.
+ (enum STPCardFundingType)fundingFromString:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, copy) NSString * _Nonnull stripeID;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly) NSUInteger hash;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
/// A set of key/value pairs associated with the card object.
/// @deprecated Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
/// seealso:
/// https://stripe.com/docs/api#metadata
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable metadata SWIFT_DEPRECATED_MSG("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.");
/// The Stripe ID for the card.
@property (nonatomic, readonly, copy) NSString * _Nullable cardId SWIFT_DEPRECATED_MSG("Use stripeID (defined in STPSourceProtocol)");
/// The first line of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressLine1 SWIFT_DEPRECATED_MSG("Use address.line1");
/// The second line of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressLine2 SWIFT_DEPRECATED_MSG("Use address.line2");
/// The city of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressCity SWIFT_DEPRECATED_MSG("Use address.city");
/// The state of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressState SWIFT_DEPRECATED_MSG("Use address.state");
/// The zip code of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressZip SWIFT_DEPRECATED_MSG("Use address.postalCode");
/// The country of the cardholder’s address
@property (nonatomic, readonly, copy) NSString * _Nullable addressCountry SWIFT_DEPRECATED_MSG("Use address.country");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// The various card brands to which a payment card can belong.
typedef SWIFT_ENUM(NSInteger, STPCardBrand, open) {
/// Visa card
  STPCardBrandVisa = 0,
/// American Express card
  STPCardBrandAmex = 1,
/// Mastercard card
  STPCardBrandMastercard = 2,
/// Discover card
  STPCardBrandDiscover = 3,
/// JCB card
  STPCardBrandJCB = 4,
/// Diners Club card
  STPCardBrandDinersClub = 5,
/// UnionPay card
  STPCardBrandUnionPay = 6,
/// Cartes Bancaires
  STPCardBrandCartesBancaires = 7,
/// An unknown card brand type
  STPCardBrandUnknown = 8,
};


/// Card brand choice information for an intent
/// You cannot directly instantiate an <code>STPCardBrandChoice</code>.
/// seealso:
/// https://stripe.com/docs/card-brand-choice
SWIFT_CLASS("_TtC14StripePayments18STPCardBrandChoice")
@interface STPCardBrandChoice : NSObject
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPCardBrandChoice (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains <code>STPStringFromCardBrand</code>
SWIFT_CLASS("_TtC14StripePayments21STPCardBrandUtilities")
@interface STPCardBrandUtilities : NSObject
/// Returns a string representation for the provided card brand;
/// i.e. <code>STPCardBrandUtilities.stringFrom(brand: .visa) == "Visa"</code>.
/// \param brand the brand you want to convert to a string
///
///
/// returns:
/// A string representing the brand, suitable for displaying to a user.
+ (NSString * _Nullable)stringFromCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Returns brand API string value from given card brand.
/// \param brand The <code>STPCardBrand</code> to transform into a string.
///
///
/// returns:
/// A <code>String</code> representing the card brand. This could be “visa”,
+ (NSString * _Nonnull)apiValueFromCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// The various funding sources for a payment card.
typedef SWIFT_ENUM(NSInteger, STPCardFundingType, open) {
/// Debit card funding
  STPCardFundingTypeDebit = 0,
/// Credit card funding
  STPCardFundingTypeCredit = 1,
/// Prepaid card funding
  STPCardFundingTypePrepaid = 2,
/// An other or unknown type of funding source.
  STPCardFundingTypeOther = 3,
};


/// Representation of a user’s credit card details. You can assemble these with
/// information that your user enters and then create Stripe tokens with them using
/// an STPAPIClient.
/// seealso:
/// https://stripe.com/docs/api#cards
SWIFT_CLASS("_TtC14StripePayments13STPCardParams")
@interface STPCardParams : NSObject <NSCopying, STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// A convenience initializer for creating a card params from a card payment method params.
- (nonnull instancetype)initWithPaymentMethodParams:(STPPaymentMethodParams * _Nonnull)paymentMethodParams;
/// The card’s number.
@property (nonatomic, copy) NSString * _Nullable number;
/// The last 4 digits of the card’s number, if it’s been set, otherwise nil.
- (NSString * _Nullable)last4 SWIFT_WARN_UNUSED_RESULT;
/// The card’s expiration month.
@property (nonatomic) NSUInteger expMonth;
/// The card’s expiration year.
@property (nonatomic) NSUInteger expYear;
/// The card’s security code, found on the back.
@property (nonatomic, copy) NSString * _Nullable cvc;
/// The cardholder’s name.
/// @note Changing this property will also changing the name of the
/// param’s <code>address</code> property.
@property (nonatomic, copy) NSString * _Nullable name;
/// The cardholder’s address.
/// @note Setting <code>address</code> to a new value will also change the <code>name</code> property to
/// be the value of <code>address.name</code>. However, changing <code>address.name</code> directly will
/// not* change <code>name</code>.
@property (nonatomic, strong) STPAddress * _Nonnull address;
/// Three-letter ISO currency code representing the currency paid out to the bank
/// account. This is only applicable when tokenizing debit cards to issue payouts
/// to managed accounts. You should not set it otherwise. The card can then be
/// used as a transfer destination for funds in this currency.
@property (nonatomic, copy) NSString * _Nullable currency;
/// The first line of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressLine1;
/// The second line of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressLine2;
/// The city of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressCity;
/// The state of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressState;
/// The zip code of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressZip;
/// The country of the cardholder’s address
@property (nonatomic, copy) NSString * _Nullable addressCountry;
/// Initializes an empty STPCardParams.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end

/// These fields indicate whether a card field represents a valid value, invalid
/// value, or incomplete value.
typedef SWIFT_ENUM(NSInteger, STPCardValidationState, closed) {
/// The field’s contents are valid. For example, a valid, 16-digit card number.
/// Note that valid values may not be complete. For example: a US Zip code can
/// be 5 or 9 digits. A 5-digit code is Valid, but more text could be entered
/// to transition to incomplete again. American Express CVC codes can be 3 or
/// 4 digits and both will be treated as Valid.
  STPCardValidationStateValid = 0,
/// The field’s contents are invalid. For example, an expiration date
/// of “13/42”.
  STPCardValidationStateInvalid = 1,
/// The field’s contents are not currently valid, but could be by typing
/// additional characters. For example, a CVC of “1”.
  STPCardValidationStateIncomplete = 2,
};


/// This class contains static methods to validate card numbers, expiration dates,
/// and CVCs. For a list of test card numbers to use with this code,
/// see https://stripe.com/docs/testing
SWIFT_CLASS_NAMED("STPCardValidator")
@interface STPCardValidator : NSObject
/// Returns a copy of the passed string with all non-numeric characters removed.
+ (NSString * _Nonnull)sanitizedNumericStringForString:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
/// Returns a copy of the passed string with all characters removed that do not exist within a postal code.
+ (NSString * _Nonnull)sanitizedPostalStringForString:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
/// Whether or not the target string contains only numeric characters.
+ (BOOL)stringIsNumeric:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
/// Validates a card number, passed as a string. This will return
/// STPCardValidationStateInvalid for numbers that are too short or long, contain
/// invalid characters, do not pass Luhn validation, or (optionally) do not match
/// a number format issued by a major card brand.
/// \param cardNumber The card number to validate. Ex. @“4242424242424242”
///
/// \param validatingCardBrand Whether or not to enforce that the number appears to
/// be issued by a major card brand (or could be). For example, no issuing card
/// network currently issues card numbers beginning with the digit 9; if an
/// otherwise correct-length and luhn-valid card number beginning with 9
/// (example: 9999999999999995) were passed to this method, it would return
/// STPCardValidationStateInvalid if this parameter were YES and
/// STPCardValidationStateValid if this parameter were NO. If unsure, you should
/// use YES for this value.
///
///
/// returns:
/// STPCardValidationStateValid if the number is valid,
/// STPCardValidationStateInvalid if the number is invalid, or
/// STPCardValidationStateIncomplete if the number is a substring of a valid
/// card (e.g. @“4242”).
+ (enum STPCardValidationState)validationStateForNumber:(NSString * _Nullable)cardNumber validatingCardBrand:(BOOL)validatingCardBrand SWIFT_WARN_UNUSED_RESULT;
/// The card brand for a card number or substring thereof.
/// \param cardNumber A card number, or partial card number. For
/// example, @“4242”, @“5555555555554444”, or @“123”.
///
///
/// returns:
/// The brand for that card number. The example parameters would
/// return STPCardBrandVisa, STPCardBrandMasterCard, and
/// STPCardBrandUnknown, respectively.
+ (enum STPCardBrand)brandForNumber:(NSString * _Nonnull)cardNumber SWIFT_WARN_UNUSED_RESULT;
/// The possible number lengths for cards associated with a card brand. For
/// example, Discover card numbers contain 16 characters, while American Express
/// cards contain 15 characters.
/// \param brand The brand to return lengths for.
///
///
/// returns:
/// The set of possible lengths cards associated with that brand can be.
+ (NSSet<NSNumber *> * _Nonnull)lengthsForCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// The maximum possible length the number of a card associated with the specified
/// brand could be.
/// For example, Visa cards could be either 13 or 16 characters, so this method
/// would return 16 for the that card brand.
/// \param brand The brand to return the max length for.
///
///
/// returns:
/// The maximum length card numbers associated with that brand could be.
+ (NSInteger)maxLengthForCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// The length of the final grouping of digits to use when formatting a card number
/// for display.
/// For example, Visa cards display their final 4 numbers, e.g. “4242”, while
/// American Express cards display their final 5 digits, e.g. “10005”.
/// \param brand The brand to return the fragment length for.
///
///
/// returns:
/// The final fragment length card numbers associated with that brand use.
+ (NSInteger)fragmentLengthForCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Validates an expiration month, passed as an (optionally 0-padded) string.
/// Example valid values are “3”, “12”, and “08”. Example invalid values are “99”,
/// “a”, and “00”. Incomplete values include “0” and “1”.
/// \param expirationMonth A string representing a 2-digit expiration month for a
/// payment card.
///
///
/// returns:
/// STPCardValidationStateValid if the month is valid,
/// STPCardValidationStateInvalid if the month is invalid, or
/// STPCardValidationStateIncomplete if the month is a substring of a valid
/// month (e.g. @“0” or @“1”).
+ (enum STPCardValidationState)validationStateForExpirationMonth:(NSString * _Nonnull)expirationMonth SWIFT_WARN_UNUSED_RESULT;
/// Validates an expiration year, passed as a string representing the final
/// 2 digits of the year.
/// This considers the period between the current year until 2099 as valid times.
/// An example valid year value would be “16” (assuming the current year, as
/// determined by NSDate.date, is 2015).
/// Will return STPCardValidationStateInvalid for a month/year combination that
/// is earlier than the current date (i.e. @“15” and @“04” in October 2015).
/// Example invalid year values are “00”, “a”, and “13”. Any 1-digit year string
/// will return STPCardValidationStateIncomplete.
/// \param expirationYear A string representing a 2-digit expiration year for a
/// payment card.
///
/// \param expirationMonth A string representing a valid 2-digit expiration month
/// for a payment card. If the month is invalid
/// (see <code>validationStateForExpirationMonth</code>), this will
/// return STPCardValidationStateInvalid.
///
///
/// returns:
/// STPCardValidationStateValid if the year is valid,
/// STPCardValidationStateInvalid if the year is invalid, or
/// STPCardValidationStateIncomplete if the year is a substring of a valid
/// year (e.g. @“1” or @“2”).
+ (enum STPCardValidationState)validationStateForExpirationYear:(NSString * _Nonnull)expirationYear inMonth:(NSString * _Nonnull)expirationMonth SWIFT_WARN_UNUSED_RESULT;
/// The max CVC length for a card brand (for example, American Express CVCs are
/// 4 digits, while all others are 3).
/// \param brand The brand to return the max CVC length for.
///
///
/// returns:
/// The maximum length of CVC numbers for cards associated with that brand.
+ (NSUInteger)maxCVCLengthForCardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Validates a card’s CVC, passed as a numeric string, for the given card brand.
/// \param cvc the CVC to validate
///
/// \param brand the card brand (can be determined from the card’s number
/// using <code>brandForNumber</code>)
///
///
/// returns:
/// Whether the CVC represents a valid CVC for that card brand. For
/// example, would return STPCardValidationStateValid for @“123” and
/// STPCardBrandVisa, STPCardValidationStateValid for @“1234” and
/// STPCardBrandAmericanExpress, STPCardValidationStateIncomplete for @“12” and
/// STPCardBrandVisa, and STPCardValidationStateInvalid for @“12345” and any brand.
+ (enum STPCardValidationState)validationStateForCVC:(NSString * _Nonnull)cvc cardBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Validates the given card details.
/// \param card The card details to validate.
///
///
/// returns:
/// STPCardValidationStateValid if all fields are valid,
/// STPCardValidationStateInvalid if any field is invalid, or
/// STPCardValidationStateIncomplete if all fields are either incomplete or valid.
+ (enum STPCardValidationState)validationStateForCard:(STPCardParams * _Nonnull)card SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Error codes generated by STPBankAccountCollector
typedef SWIFT_ENUM(NSInteger, STPCollectBankAccountError, open) {
/// Error when using APIs that require the linking the StripeFinancialConnections SDK
  STPCollectBankAccountErrorFinancialConnectionsSDKNotLinked SWIFT_COMPILE_NAME("financialConnectionsSDKNotLinked") = 0,
/// Error when a secret can not be parsed to retrieve the ID
  STPCollectBankAccountErrorInvalidClientSecret SWIFT_COMPILE_NAME("invalidClientSecret") = 1,
/// Unexpected behavior in calling the API
  STPCollectBankAccountErrorUnexpectedError SWIFT_COMPILE_NAME("unexpectedError") = 2,
};


/// Parameters to use with <code>STPBankAccountCollector</code> to collect bank account details for payments.
/// @see <code>STPBankAccountCollector</code>
SWIFT_CLASS("_TtC14StripePayments27STPCollectBankAccountParams")
@interface STPCollectBankAccountParams : NSObject
/// Configures and returns an instance of <code>STPCollectBankAccountParams</code> for US Bank Accounts
/// \param name The customer’s full name. <em>required</em>
///
/// \param email The customer’s email. If included, can be used to notify the customer of pending micro-deposit verification.
///
+ (STPCollectBankAccountParams * _Nonnull)collectUSBankAccountParamsWithName:(NSString * _Nonnull)name email:(NSString * _Nullable)email SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Alipay options to pass to `STPConfirmPaymentMethodOptions``
SWIFT_CLASS("_TtC14StripePayments23STPConfirmAlipayOptions")
@interface STPConfirmAlipayOptions : NSObject
/// The app bundle ID.
/// @note This is automatically populated by the SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull appBundleID;
/// The app version.
/// @note This is automatically populated by the SDK.
@property (nonatomic, readonly, copy) NSString * _Nonnull appVersionKey;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConfirmAlipayOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// BLIK options to pass to `STPConfirmPaymentMethodOptions``
/// seealso:
/// https://site-admin.stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options-blik
SWIFT_CLASS("_TtC14StripePayments21STPConfirmBLIKOptions")
@interface STPConfirmBLIKOptions : NSObject
/// The 6-digit BLIK code that a customer has generated using their banking application.
@property (nonatomic, copy) NSString * _Nonnull code;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Initializes STPConfirmBLIKOptions
/// \param code The 6-digit BLIK code that a customer has generated using their banking application.
///
- (nonnull instancetype)initWithCode:(NSString * _Nonnull)code OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPConfirmBLIKOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Options to update a Card PaymentMethod during PaymentIntent confirmation.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options-card
SWIFT_CLASS("_TtC14StripePayments21STPConfirmCardOptions")
@interface STPConfirmCardOptions : NSObject
/// CVC value with which to update the Card PaymentMethod.
@property (nonatomic, copy) NSString * _Nullable cvc;
/// Selected network to process this PaymentIntent on. Depends on the available networks of the card attached to the PaymentIntent. Can be only set confirm-time.
@property (nonatomic, copy) NSString * _Nullable network;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConfirmCardOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Options for a Konbini Payment Methods during PaymentIntent confirmation
/// <ul>
///   <li>
///     seealso https://stripe.com/docs/api/errors#errors-payment_intent-payment_method_options-konbini
///   </li>
/// </ul>
SWIFT_CLASS("_TtC14StripePayments24STPConfirmKonbiniOptions")
@interface STPConfirmKonbiniOptions : NSObject
/// An optional 10 to 11 digit numeric-only string determining the confirmation code at applicable convenience stores.
@property (nonatomic, copy) NSString * _Nullable confirmationNumber;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConfirmKonbiniOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end

@class STPConfirmWeChatPayOptions;
@class STPConfirmUSBankAccountOptions;

/// Options to update the associated PaymentMethod during PaymentIntent confirmation.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options
SWIFT_CLASS("_TtC14StripePayments30STPConfirmPaymentMethodOptions")
@interface STPConfirmPaymentMethodOptions : NSObject
/// Options to update a Card PaymentMethod.
/// seealso:
/// STPConfirmCardOptions
@property (nonatomic, strong) STPConfirmCardOptions * _Nullable cardOptions;
/// Options for an Alipay Payment Method.
@property (nonatomic, strong) STPConfirmAlipayOptions * _Nullable alipayOptions;
/// Options for a BLIK Payment Method.
@property (nonatomic, strong) STPConfirmBLIKOptions * _Nullable blikOptions;
/// Options for a WeChat Pay Payment Method.
@property (nonatomic, strong) STPConfirmWeChatPayOptions * _Nullable weChatPayOptions;
/// Options for a US Bank Account Payment Method.
@property (nonatomic, strong) STPConfirmUSBankAccountOptions * _Nullable usBankAccountOptions;
/// Options for a Konbini Payment Method.
@property (nonatomic, strong) STPConfirmKonbiniOptions * _Nullable konbiniOptions;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConfirmPaymentMethodOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

enum STPPaymentIntentSetupFutureUsage : NSInteger;

/// Options for US Bank Account Payment Methods during PaymentIntent or SetupIntent confirmation
/// <ul>
///   <li>
///     seealso https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options-us_bank_account
///   </li>
/// </ul>
SWIFT_CLASS("_TtC14StripePayments30STPConfirmUSBankAccountOptions")
@interface STPConfirmUSBankAccountOptions : NSObject
/// Initializer for <code>STPConfirmUSBankAccountOptions</code>
/// \param setupFutureUsage Indicates that you intend to make future payments with this payment method.
///
- (nonnull instancetype)initWithSetupFutureUsage:(enum STPPaymentIntentSetupFutureUsage)setupFutureUsage OBJC_DESIGNATED_INITIALIZER;
/// Indicates that you intend to make future payments with this payment method.
/// Providing this parameter will attach the payment method to the PaymentIntent’s Customer, if present, after the Intent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be attached to a Customer after the transaction completes.
/// If setup_future_usage is already set, you may only update the value from on_session to off_session.
@property (nonatomic) enum STPPaymentIntentSetupFutureUsage setupFutureUsage;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPConfirmUSBankAccountOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end


/// WeChat Pay options to pass to `STPConfirmPaymentMethodOptions``
/// seealso:
/// https://site-admin.stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options-wechat_pay
SWIFT_CLASS("_TtC14StripePayments26STPConfirmWeChatPayOptions")
@interface STPConfirmWeChatPayOptions : NSObject
/// Your WeChat-provided application ID. WeChat Pay uses
/// this as the redirect URL scheme.
@property (nonatomic, copy) NSString * _Nullable appId;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Initializes STPConfirmWeChatPayOptions
/// \param appId Your WeChat-provided application ID. WeChat Pay
/// uses this as the redirect URL scheme.
///
- (nonnull instancetype)initWithAppId:(NSString * _Nonnull)appId OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPConfirmWeChatPayOptions (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// An address to use with <code>STPConnectAccountParams</code>.
SWIFT_CLASS("_TtC14StripePayments24STPConnectAccountAddress")
@interface STPConnectAccountAddress : NSObject
/// City, district, suburb, town, or village.
/// For addresses in Japan: City or ward.
@property (nonatomic, copy) NSString * _Nullable city;
/// Two-letter country code (ISO 3166-1 alpha-2).
/// seealso:
/// https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
@property (nonatomic, copy) NSString * _Nullable country;
/// Address line 1 (e.g., street, PO Box, or company name).
/// For addresses in Japan: Block or building number.
@property (nonatomic, copy) NSString * _Nullable line1;
/// Address line 2 (e.g., apartment, suite, unit, or building).
/// For addresses in Japan: Building details.
@property (nonatomic, copy) NSString * _Nullable line2;
/// ZIP or postal code.
@property (nonatomic, copy) NSString * _Nullable postalCode;
/// State, county, province, or region.
/// For addresses in Japan: Prefecture.
@property (nonatomic, copy) NSString * _Nullable state;
/// Town or cho-me.
/// This property only applies to Japanese addresses.
@property (nonatomic, copy) NSString * _Nullable town;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConnectAccountAddress (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

/// The business type of the Connect account.
typedef SWIFT_ENUM(NSInteger, STPConnectAccountBusinessType, open) {
/// This Connect account represents an individual.
  STPConnectAccountBusinessTypeIndividual = 0,
/// This Connect account represents a company.
  STPConnectAccountBusinessTypeCompany = 1,
/// No value was provided.
/// note:
/// This value is used instead of <code>nil</code> for Obj-C compatibility.
  STPConnectAccountBusinessTypeNone = 2,
};

@class NSNumber;

/// Information about the company or business to use with <code>STPConnectAccountParams</code>.
/// seealso:
/// https://stripe.com/docs/api/tokens/create_account#create_account_token-account-company
SWIFT_CLASS("_TtC14StripePayments30STPConnectAccountCompanyParams")
@interface STPConnectAccountCompanyParams : NSObject
/// The company’s primary address.
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable address;
/// The Kana variation of the company’s primary address (Japan only).
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable kanaAddress;
/// The Kanji variation of the company’s primary address (Japan only).
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable kanjiAddress;
/// Whether the company’s directors have been provided.
/// Set this Boolean to true after creating all the company’s directors with the Persons API (https://stripe.com/docs/api/persons) for accounts with a relationship.director requirement.
/// This value is not automatically set to true after creating directors, so it needs to be updated to indicate all directors have been provided.
@property (nonatomic, strong) NSNumber * _Nullable directorsProvided;
/// The company’s legal name.
@property (nonatomic, copy) NSString * _Nullable name;
/// The Kana variation of the company’s legal name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanaName;
/// The Kanji variation of the company’s legal name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanjiName;
/// Whether the company’s owners have been provided.
/// Set this Boolean to true after creating all the company’s owners with the Persons API (https://stripe.com/docs/api/persons) for accounts with a relationship.owner requirement.
@property (nonatomic, strong) NSNumber * _Nullable ownersProvided;
/// The company’s phone number (used for verification).
@property (nonatomic, copy) NSString * _Nullable phone;
/// The business ID number of the company, as appropriate for the company’s country.
/// (Examples are an Employer ID Number in the U.S., a Business Number in Canada, or a Company Number in the UK.)
@property (nonatomic, copy) NSString * _Nullable taxID;
/// The jurisdiction in which the taxID is registered (Germany-based companies only).
@property (nonatomic, copy) NSString * _Nullable taxIDRegistrar;
/// The VAT number of the company.
@property (nonatomic, copy) NSString * _Nullable vatID;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConnectAccountCompanyParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

@class NSDateComponents;
@class STPConnectAccountIndividualVerification;

/// Information about the person represented by the account for use with <code>STPConnectAccountParams</code>.
/// seealso:
/// https://stripe.com/docs/api/tokens/create_account#create_account_token-account-individual
SWIFT_CLASS("_TtC14StripePayments33STPConnectAccountIndividualParams")
@interface STPConnectAccountIndividualParams : NSObject
/// The individual’s primary address.
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable address;
/// The Kana variation of the the individual’s primary address (Japan only).
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable kanaAddress;
/// The Kanji variation of the the individual’s primary address (Japan only).
@property (nonatomic, strong) STPConnectAccountAddress * _Nullable kanjiAddress;
/// The individual’s date of birth.
/// Must include <code>day</code>, <code>month</code>, and <code>year</code>, and only those fields are used.
@property (nonatomic, copy) NSDateComponents * _Nullable dateOfBirth;
/// The individual’s email address.
@property (nonatomic, copy) NSString * _Nullable email;
/// The individual’s first name.
@property (nonatomic, copy) NSString * _Nullable firstName;
/// The Kana variation of the the individual’s first name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanaFirstName;
/// The Kanji variation of the individual’s first name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanjiFirstName;
/// The individual’s gender
/// International regulations require either “male” or “female”.
@property (nonatomic, copy) NSString * _Nullable gender;
/// The government-issued ID number of the individual, as appropriate for the representative’s country.
/// Examples are a Social Security Number in the U.S., or a Social Insurance Number in Canada.
/// Instead of the number itself, you can also provide a PII token (see https://stripe.com/docs/api/tokens/create_pii).
@property (nonatomic, copy) NSString * _Nullable idNumber;
/// The individual’s last name.
@property (nonatomic, copy) NSString * _Nullable lastName;
/// The Kana varation of the individual’s last name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanaLastName;
/// The Kanji varation of the individual’s last name (Japan only).
@property (nonatomic, copy) NSString * _Nullable kanjiLastName;
/// The individual’s maiden name.
@property (nonatomic, copy) NSString * _Nullable maidenName;
/// Set of key-value pairs that you can attach to an object.
/// This can be useful for storing additional information about the object in a structured format.
@property (nonatomic, copy) NSDictionary * _Nullable metadata;
/// The individual’s phone number.
@property (nonatomic, copy) NSString * _Nullable phone;
/// The last four digits of the individual’s Social Security Number (U.S. only).
@property (nonatomic, copy) NSString * _Nullable ssnLast4;
/// The individual’s verification document information.
@property (nonatomic, strong) STPConnectAccountIndividualVerification * _Nullable verification;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConnectAccountIndividualParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

@class STPConnectAccountVerificationDocument;

/// The individual’s verification document information for use with <code>STPConnectAccountIndividualParams</code>.
SWIFT_CLASS("_TtC14StripePayments39STPConnectAccountIndividualVerification")
@interface STPConnectAccountIndividualVerification : NSObject
/// An identifying document, either a passport or local ID card.
@property (nonatomic, strong) STPConnectAccountVerificationDocument * _Nullable document;
/// A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
@property (nonatomic, strong) STPConnectAccountVerificationDocument * _Nullable additionalDocument;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConnectAccountIndividualVerification (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Parameters for creating a Connect Account token.
/// seealso:
/// https://stripe.com/docs/api/tokens/create_account
SWIFT_CLASS("_TtC14StripePayments23STPConnectAccountParams")
@interface STPConnectAccountParams : NSObject
/// Boolean indicating that the Terms Of Service were shown to the user &
/// the user accepted them.
@property (nonatomic, strong) NSNumber * _Nullable tosShownAndAccepted;
/// The business type.
@property (nonatomic) enum STPConnectAccountBusinessType businessType;
/// Information about the individual represented by the account.
@property (nonatomic, strong) STPConnectAccountIndividualParams * _Nullable individual;
/// Information about the company or business.
@property (nonatomic, strong) STPConnectAccountCompanyParams * _Nullable company;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initialize <code>STPConnectAccountParams</code> with tosShownAndAccepted = YES
/// This method cannot be called with <code>wasAccepted == NO</code>, guarded by a <code>NSParameterAssert()</code>.
/// Use this init method if you want to set the <code>tosShownAndAccepted</code> parameter. If you
/// don’t, use the <code>initWithIndividual:</code> version instead.
/// \param wasAccepted Must be YES, but only if the user was shown & accepted the ToS
///
/// \param individual Information about the person represented by the account. See <code>STPConnectAccountIndividualParams</code>.
///
- (nullable instancetype)initWithTosShownAndAccepted:(BOOL)wasAccepted individual:(STPConnectAccountIndividualParams * _Nonnull)individual OBJC_DESIGNATED_INITIALIZER;
/// Initialize <code>STPConnectAccountParams</code> with tosShownAndAccepted = YES
/// This method cannot be called with <code>wasAccepted == NO</code>, guarded by a <code>NSParameterAssert()</code>.
/// Use this init method if you want to set the <code>tosShownAndAccepted</code> parameter. If you
/// don’t, use the <code>initWithCompany:</code> version instead.
/// \param wasAccepted Must be YES, but only if the user was shown & accepted the ToS
///
/// \param company Information about the company or business. See <code>STPConnectAccountCompanyParams</code>.
///
- (nullable instancetype)initWithTosShownAndAccepted:(BOOL)wasAccepted company:(STPConnectAccountCompanyParams * _Nonnull)company OBJC_DESIGNATED_INITIALIZER;
/// Initialize <code>STPConnectAccountParams</code> with the provided <code>individual</code> dictionary.
/// \param individual Information about the person represented by the account
/// This init method cannot change the <code>tosShownAndAccepted</code> parameter. Use
/// <code>initWithTosShownAndAccepted:individual:</code> instead if you need to do that.
///
- (nonnull instancetype)initWithIndividual:(STPConnectAccountIndividualParams * _Nonnull)individual OBJC_DESIGNATED_INITIALIZER;
/// Initialize <code>STPConnectAccountParams</code> with the provided <code>company</code> dictionary.
/// \param company Information about the company or business
/// This init method cannot change the <code>tosShownAndAccepted</code> parameter. Use
/// <code>initWithTosShownAndAccepted:company:</code> instead if you need to do that.
///
- (nonnull instancetype)initWithCompany:(STPConnectAccountCompanyParams * _Nonnull)company OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end


@interface STPConnectAccountParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end


/// An identifying document, either a passport or local ID card for use with <code>STPConnectAccountIndividualVerification</code>.
SWIFT_CLASS("_TtC14StripePayments37STPConnectAccountVerificationDocument")
@interface STPConnectAccountVerificationDocument : NSObject
/// The back of an ID returned by a file upload with a <code>purpose</code> value of <code>identity_document</code>.
/// seealso:
/// https://stripe.com/docs/api/files/create for file uploads
@property (nonatomic, copy) NSString * _Nullable back;
/// The front of an ID returned by a file upload with a <code>purpose</code> value of <code>identity_document</code>.
/// seealso:
/// https://stripe.com/docs/api/files/create for file uploads
@property (nonatomic, copy) NSString * _Nullable front;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPConnectAccountVerificationDocument (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains constants that represent different parts of a users contact/address information.
SWIFT_CLASS("_TtC14StripePayments15STPContactField")
@interface STPContactField : NSObject
/// The contact’s full physical address.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) STPContactField * _Nonnull postalAddress;)
+ (STPContactField * _Nonnull)postalAddress SWIFT_WARN_UNUSED_RESULT;
/// The contact’s email address
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) STPContactField * _Nonnull emailAddress;)
+ (STPContactField * _Nonnull)emailAddress SWIFT_WARN_UNUSED_RESULT;
/// The contact’s phone number.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) STPContactField * _Nonnull phoneNumber;)
+ (STPContactField * _Nonnull)phoneNumber SWIFT_WARN_UNUSED_RESULT;
/// The contact’s name.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) STPContactField * _Nonnull name;)
+ (STPContactField * _Nonnull)name SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An <code>STPCustomer</code> represents a deserialized Customer object from the Stripe API.
/// You shouldn’t need to instantiate an <code>STPCustomer</code> – you should instead use
/// <code>STPCustomerContext</code> to manage retrieving and updating a customer.
SWIFT_CLASS("_TtC14StripePayments11STPCustomer")
@interface STPCustomer : NSObject
/// The Stripe ID of the customer, e.g. <code>cus_1234</code>
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeID;
/// The default source used to charge the customer.
@property (nonatomic, readonly, strong) id <STPSourceProtocol> _Nullable defaultSource;
/// The available payment sources the customer has (this may be an empty array).
@property (nonatomic, readonly, copy) NSArray<id <STPSourceProtocol>> * _Nonnull sources;
/// The customer’s email address.
@property (nonatomic, readonly, copy) NSString * _Nullable email;
/// The customer’s shipping address.
@property (nonatomic, strong) STPAddress * _Nullable shippingAddress;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// Initialize a customer object with the provided values.
/// \param stripeID The ID of the customer, e.g. <code>cus_abc</code>
///
/// \param defaultSource The default source of the customer, such as an <code>STPCard</code> object. Can be nil.
///
/// \param sources All of the customer’s payment sources. This might be an empty array.
///
///
/// returns:
/// an instance of STPCustomer
- (nonnull instancetype)initWithStripeID:(NSString * _Nonnull)stripeID defaultSource:(id <STPSourceProtocol> _Nullable)defaultSource sources:(NSArray<id <STPSourceProtocol>> * _Nonnull)sources;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Replaces the customer’s <code>sources</code> and <code>defaultSource</code> based on whether or not
/// they should include Apple Pay sources. More details on documentation for
/// <code>STPCustomerContext includeApplePaySources</code>
/// @param filteringApplePay      If YES, Apple Pay sources will be ignored
- (void)updateSourcesFilteringApplePay:(BOOL)filteringApplePay;
@end


@interface STPCustomer (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

@class NSData;
@class NSURLResponse;

/// Use <code>STPCustomerDeserializer</code> to convert a response from the Stripe API into an <code>STPCustomer</code> object. <code>STPCustomerDeserializer</code> expects the JSON response to be in the exact same format as the Stripe API.
SWIFT_CLASS("_TtC14StripePayments23STPCustomerDeserializer")
@interface STPCustomerDeserializer : NSObject
/// If a customer was successfully parsed from the response, it will be set here. Otherwise, this value wil be nil (and the <code>error</code> property will explain what went wrong).
@property (nonatomic, readonly, strong) STPCustomer * _Nullable customer;
/// If the deserializer failed to parse a customer, this property will explain why (and the <code>customer</code> property will be nil).
@property (nonatomic, readonly) NSError * _Nullable error;
/// Initialize a customer deserializer. The <code>data</code>, <code>urlResponse</code>, and <code>error</code>
/// parameters are intended to be passed from an <code>NSURLSessionDataTask</code> callback.
/// After it has been initialized, you can inspect the <code>error</code> and <code>customer</code>
/// properties to see if the deserialization was successful. If <code>error</code> is nil,
/// <code>customer</code> will be non-nil (and vice versa).
/// \param data An <code>NSData</code> object representing encoded JSON for a Customer object
///
/// \param urlResponse The URL response obtained from the <code>NSURLSessionTask</code>
///
/// \param error Any error that occurred from the URL session task (if this
/// is non-nil, the <code>error</code> property will be set to this value after initialization).
///
- (nonnull instancetype)initWithData:(NSData * _Nullable)data urlResponse:(NSURLResponse * _Nullable)urlResponse error:(NSError * _Nullable)error;
/// Initializes a customer deserializer with a JSON dictionary. This JSON should be
/// in the exact same format as what the Stripe API returns. If it’s successfully
/// parsed, the <code>customer</code> parameter will be present after initialization;
/// otherwise <code>error</code> will be present.
/// \param json a JSON dictionary.
///
- (nonnull instancetype)initWithJsonResponse:(id _Nullable)json;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An individual’s date of birth.
/// See https://stripe.com/docs/api/tokens/create_account#create_account_token-account-individual-dob
SWIFT_CLASS("_TtC14StripePayments14STPDateOfBirth")
@interface STPDateOfBirth : NSObject
/// The day of birth, between 1 and 31.
@property (nonatomic) NSInteger day;
/// The month of birth, between 1 and 12.
@property (nonatomic) NSInteger month;
/// The four-digit year of birth.
@property (nonatomic) NSInteger year;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPDateOfBirth (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// An STPAPIResponseDecodable implementation to use for endpoints that don’t
/// actually return objects, like /v1/3ds2/challenge_completed
SWIFT_CLASS("_TtC14StripePayments22STPEmptyStripeResponse")
@interface STPEmptyStripeResponse : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

enum STPFPXBankBrand : NSInteger;

/// Convenience methods for using FPX bank brands.
SWIFT_CLASS("_TtC14StripePayments10STPFPXBank")
@interface STPFPXBank : NSObject
/// Returns a string representation for the provided bank brand;
/// i.e. <code>STPFPXBank.stringFrom(brand:.uob) == "UOB Bank"</code>.
/// \param brand The brand you want to convert to a string
///
///
/// returns:
/// A string representing the brand, suitable for displaying to a user.
+ (NSString * _Nullable)stringFrom:(enum STPFPXBankBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Returns a bank brand provided a string representation identifying a bank brand;
/// i.e. <code>STPFPXBankBrandFromIdentifier(@"uob") == STPCardBrandUob</code>.
/// \param identifier The identifier for the brand
///
///
/// returns:
/// The STPFPXBankBrand enum value
+ (enum STPFPXBankBrand)brandFrom:(NSString * _Nullable)identifier SWIFT_WARN_UNUSED_RESULT;
/// Returns a string representation identifying the provided bank brand;
/// i.e. <code>STPIdentifierFromFPXBankBrand(STPCardBrandUob) ==  @"uob"</code>.
/// \param brand The brand you want to convert to a string
///
///
/// returns:
/// A string representing the brand, suitable for using with the Stripe API.
+ (NSString * _Nullable)identifierFrom:(enum STPFPXBankBrand)brand SWIFT_WARN_UNUSED_RESULT;
/// Returns the code identifying the provided bank brand in the FPX status API;
/// i.e. <code>STPIdentifierFromFPXBankBrand(STPCardBrandUob) ==  @"UOB0226"</code>.
/// \param brand The brand you want to convert to an FPX bank code
///
/// \param isBusiness Requests the code for the business version of this bank brand, which may be different from the code used for individual accounts
///
///
/// returns:
/// A string representing the brand, suitable for checking against the FPX status API.
+ (NSString * _Nullable)bankCodeFrom:(enum STPFPXBankBrand)brand :(BOOL)isBusiness SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// The various bank brands available for FPX payments.
typedef SWIFT_ENUM(NSInteger, STPFPXBankBrand, open) {
/// Maybank2U
  STPFPXBankBrandMaybank2U = 0,
/// CIMB Clicks
  STPFPXBankBrandCIMB = 1,
/// Public Bank
  STPFPXBankBrandPublicBank = 2,
/// RHB Bank
  STPFPXBankBrandRHB = 3,
/// Hong Leong Bank
  STPFPXBankBrandHongLeongBank = 4,
/// AmBank
  STPFPXBankBrandAmbank = 5,
/// Affin Bank
  STPFPXBankBrandAffinBank = 6,
/// Alliance Bank
  STPFPXBankBrandAllianceBank = 7,
/// Bank Islam
  STPFPXBankBrandBankIslam = 8,
/// Bank Muamalat
  STPFPXBankBrandBankMuamalat = 9,
/// Bank Rakyat
  STPFPXBankBrandBankRakyat = 10,
/// BSN
  STPFPXBankBrandBSN = 11,
/// HSBC BANK
  STPFPXBankBrandHSBC = 12,
/// KFH
  STPFPXBankBrandKFH = 13,
/// Maybank2E
  STPFPXBankBrandMaybank2E = 14,
/// OCBC Bank
  STPFPXBankBrandOcbc = 15,
/// Standard Chartered
  STPFPXBankBrandStandardChartered = 16,
/// UOB Bank
  STPFPXBankBrandUOB = 17,
/// An unknown bank
  STPFPXBankBrandUnknown = 18,
};

@class NSDate;

/// Representation of a file upload object in the Stripe API.
/// seealso:
/// https://stripe.com/docs/api#file_uploads
SWIFT_CLASS("_TtC14StripePayments7STPFile")
@interface STPFile : NSObject <STPAPIResponseDecodable>
/// The token for this file.
@property (nonatomic, readonly, copy) NSString * _Nullable fileId;
/// The date this file was created.
@property (nonatomic, readonly, copy) NSDate * _Nullable created;
/// The purpose of this file. This can be either an identifing document or an evidence dispute.
/// seealso:
/// https://stripe.com/docs/file-upload
@property (nonatomic, readonly) enum STPFilePurpose purpose;
/// The file size in bytes.
@property (nonatomic, readonly, strong) NSNumber * _Nullable size;
/// The file type. This can be “jpg”, “png”, or “pdf”.
@property (nonatomic, readonly, copy) NSString * _Nullable type;
/// Returns the string value for a purpose.
+ (NSString * _Nullable)stringFromPurpose:(enum STPFilePurpose)purpose SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly) NSUInteger hash;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// The purpose of the uploaded file.
/// seealso:
/// https://stripe.com/docs/file-upload
typedef SWIFT_ENUM(NSInteger, STPFilePurpose, open) {
/// Identity document file
  STPFilePurposeIdentityDocument = 0,
/// Dispute evidence file
  STPFilePurposeDisputeEvidence = 1,
/// A file of unknown purpose type
  STPFilePurposeUnknown = 2,
};



SWIFT_CLASS("_TtC14StripePayments14STPFormEncoder")
@interface STPFormEncoder : NSObject
+ (NSDictionary<NSString *, id> * _Nonnull)dictionaryForObject:(NSObject <STPFormEncodable> * _Nonnull)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum STPIntentActionType : NSInteger;
@class STPIntentActionRedirectToURL;
@class STPIntentActionOXXODisplayDetails;
@class STPIntentActionAlipayHandleRedirect;
@class STPIntentActionWechatPayRedirectToApp;
@class STPIntentActionBoletoDisplayDetails;
@class STPIntentActionVerifyWithMicrodeposits;
@class STPIntentActionCashAppRedirectToApp;
@class STPIntentActionPayNowDisplayQrCode;
@class STPIntentActionKonbiniDisplayDetails;
@class STPIntentActionPromptPayDisplayQrCode;
@class STPIntentActionSwishHandleRedirect;

/// Next action details for <code>STPPaymentIntent</code> and <code>STPSetupIntent</code>.
/// This is a container for the various types that are available.
/// Check the <code>type</code> to see which one it is, and then use the related
/// property for the details necessary to handle it.
/// You cannot directly instantiate an <code>STPIntentAction</code>.
SWIFT_CLASS("_TtC14StripePayments15STPIntentAction")
@interface STPIntentAction : NSObject
/// The type of action needed. The value of this field determines which
/// property of this object contains further details about the action.
@property (nonatomic, readonly) enum STPIntentActionType type;
/// The details for authorizing via URL, when <code>type == .redirectToURL</code>
@property (nonatomic, readonly, strong) STPIntentActionRedirectToURL * _Nullable redirectToURL;
/// The details for displaying OXXO voucher via URL, when <code>type == .OXXODisplayDetails</code>
@property (nonatomic, readonly, strong) STPIntentActionOXXODisplayDetails * _Nullable oxxoDisplayDetails;
/// Contains instructions for authenticating a payment by redirecting your customer to Alipay App or website.
@property (nonatomic, readonly, strong) STPIntentActionAlipayHandleRedirect * _Nullable alipayHandleRedirect;
/// Contains instructions for authenticating a payment by redirecting your customer to the WeChat Pay app.
@property (nonatomic, readonly, strong) STPIntentActionWechatPayRedirectToApp * _Nullable weChatPayRedirectToApp;
/// The details for displaying Boleto voucher via URL, when <code>type == .boleto</code>
@property (nonatomic, readonly, strong) STPIntentActionBoletoDisplayDetails * _Nullable boletoDisplayDetails;
/// Contains details describing microdeposits verification flow for US bank accounts
@property (nonatomic, readonly, strong) STPIntentActionVerifyWithMicrodeposits * _Nullable verifyWithMicrodeposits;
/// Contains instructions for authenticating a payment by redirecting your customer to Cash App.
@property (nonatomic, readonly, strong) STPIntentActionCashAppRedirectToApp * _Nullable cashAppRedirectToApp;
/// Contains details for displaying the QR code required for PayNow.
@property (nonatomic, readonly, strong) STPIntentActionPayNowDisplayQrCode * _Nullable payNowDisplayQrCode;
/// Contains instructions for authenticating a Konbini payment.
@property (nonatomic, readonly, strong) STPIntentActionKonbiniDisplayDetails * _Nullable konbiniDisplayDetails;
/// Contains details for displaying the QR code required for PromptPay.
@property (nonatomic, readonly, strong) STPIntentActionPromptPayDisplayQrCode * _Nullable promptPayDisplayQrCode;
/// Contains details for redirecting to the Swish app.
@property (nonatomic, readonly, strong) STPIntentActionSwishHandleRedirect * _Nullable swishHandleRedirect;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentAction (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPIntentAction (SWIFT_EXTENSION(StripePayments))
/// The details for authorizing via URL, when <code>type == STPIntentActionTypeRedirectToURL</code>
/// @deprecated Use <code>redirectToURL</code> instead.
@property (nonatomic, readonly, strong) STPIntentActionRedirectToURL * _Nullable authorizeWithURL SWIFT_DEPRECATED_MSG("Use `redirectToURL` instead.", "redirectToURL");
@end

@class NSURL;

/// Contains instructions for authenticating a payment by redirecting your customer to Alipay App or website.
/// You cannot directly instantiate an <code>STPPaymentIntentActionAlipayHandleRedirect</code>.
SWIFT_CLASS("_TtC14StripePayments35STPIntentActionAlipayHandleRedirect")
@interface STPIntentActionAlipayHandleRedirect : NSObject
/// The native URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nullable nativeURL;
/// If the customer does not exit their browser while authenticating, they will be redirected to this specified URL after completion.
@property (nonatomic, readonly, copy) NSURL * _Nonnull returnURL;
/// The URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nonnull url;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionAlipayHandleRedirect (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end



/// Contains Boleto details necessary for the customer to complete the payment.
SWIFT_CLASS("_TtC14StripePayments35STPIntentActionBoletoDisplayDetails")
@interface STPIntentActionBoletoDisplayDetails : NSObject <STPAPIResponseDecodable>
/// The boleto voucher number.
@property (nonatomic, readonly, copy) NSString * _Nonnull number;
/// The expiry date of the boleto voucher.
@property (nonatomic, readonly, copy) NSDate * _Nonnull expiresAt;
/// The URL to the hosted boleto voucher page, which allows customers to view the boleto voucher.
@property (nonatomic, readonly, copy) NSURL * _Nonnull hostedVoucherURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Contains instructions for authenticating a payment by redirecting your customer to Cash App.
/// You cannot directly instantiate an <code>STPIntentActionCashAppRedirectToApp</code>.
SWIFT_CLASS("_TtC14StripePayments35STPIntentActionCashAppRedirectToApp")
@interface STPIntentActionCashAppRedirectToApp : NSObject
/// The native URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nullable mobileAuthURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionCashAppRedirectToApp (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains Konbini details necessary for the customer to complete the payment.
SWIFT_CLASS("_TtC14StripePayments36STPIntentActionKonbiniDisplayDetails")
@interface STPIntentActionKonbiniDisplayDetails : NSObject <STPAPIResponseDecodable>
/// The date at which the pending Konbini payment expires.
@property (nonatomic, readonly, copy) NSDate * _Nonnull expiresAt;
/// The URL for the Konbini payment instructions page, which allows customers to view and print a Konbini voucher.
@property (nonatomic, readonly, copy) NSURL * _Nonnull hostedVoucherURL;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Contains OXXO details necessary for the customer to complete the payment.
SWIFT_CLASS("_TtC14StripePayments33STPIntentActionOXXODisplayDetails")
@interface STPIntentActionOXXODisplayDetails : NSObject <STPAPIResponseDecodable>
/// The timestamp after which the OXXO voucher expires.
@property (nonatomic, readonly, copy) NSDate * _Nonnull expiresAfter;
/// The URL for the hosted OXXO voucher page, which allows customers to view and print an OXXO voucher.
@property (nonatomic, readonly, copy) NSURL * _Nonnull hostedVoucherURL;
/// OXXO reference number.
@property (nonatomic, readonly, copy) NSString * _Nonnull number;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Contains instructions for presenting the QR code required to complete a PayNow payment.
/// You cannot directly instantiate an <code>STPIntentActionPayNowDisplayQrCode</code>.
SWIFT_CLASS("_TtC14StripePayments34STPIntentActionPayNowDisplayQrCode")
@interface STPIntentActionPayNowDisplayQrCode : NSObject
/// The URL to open which contains instructions on how to complete the payment.
@property (nonatomic, readonly, copy) NSURL * _Nullable hostedInstructionsURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionPayNowDisplayQrCode (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains instructions for presenting the QR code required to complete a PromptPay payment.
/// You cannot directly instantiate an <code>STPIntentActionPromptPayDisplayQrCode</code>.
SWIFT_CLASS("_TtC14StripePayments37STPIntentActionPromptPayDisplayQrCode")
@interface STPIntentActionPromptPayDisplayQrCode : NSObject
/// The URL to open which contains instructions on how to complete the payment.
@property (nonatomic, readonly, copy) NSURL * _Nullable hostedInstructionsURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionPromptPayDisplayQrCode (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains instructions for authenticating a payment by redirecting your customer to another page or application.
/// You cannot directly instantiate an <code>STPIntentActionRedirectToURL</code>.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/object#payment_intent_object-next_action
SWIFT_CLASS("_TtC14StripePayments28STPIntentActionRedirectToURL")
@interface STPIntentActionRedirectToURL : NSObject
/// The URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nonnull url;
/// The return URL that’ll be redirected back to when the user is done
/// authenticating.
@property (nonatomic, readonly, copy) NSURL * _Nullable returnURL;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionRedirectToURL (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains instructions for redirecting to the Swish app.
/// You cannot directly instantiate an <code>STPIntentActionSwishHandle</code>.
SWIFT_CLASS("_TtC14StripePayments34STPIntentActionSwishHandleRedirect")
@interface STPIntentActionSwishHandleRedirect : NSObject
/// The native URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nonnull mobileAuthURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionSwishHandleRedirect (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// Types of next actions for <code>STPPaymentIntent</code> and <code>STPSetupIntent</code>.
/// You shouldn’t need to inspect this yourself; <code>STPPaymentHandler</code> will handle any next actions for you.
typedef SWIFT_ENUM(NSInteger, STPIntentActionType, open) {
/// This is an unknown action that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>nextAction.allResponseFields</code>
/// for custom handling.
  STPIntentActionTypeUnknown = 0,
/// The payment intent needs to be authorized by the user. We provide
/// <code>STPPaymentHandler</code> to handle the url redirections necessary.
  STPIntentActionTypeRedirectToURL = 1,
/// The payment intent requires additional action handled by <code>STPPaymentHandler</code>.
  STPIntentActionTypeUseStripeSDK = 2,
/// The action type is OXXO payment. We provide <code>STPPaymentHandler</code> to display
/// the OXXO voucher.
  STPIntentActionTypeOXXODisplayDetails = 3,
/// Contains instructions for authenticating a payment by redirecting your customer to Alipay App or website.
  STPIntentActionTypeAlipayHandleRedirect = 4,
/// The action type for BLIK payment methods. The customer must authorize the transaction in their banking app within 1 minute.
  STPIntentActionTypeBLIKAuthorize = 5,
/// Contains instructions for authenticating a payment by redirecting your customer to the WeChat Pay App.
  STPIntentActionTypeWeChatPayRedirectToApp = 6,
/// The action type is Boleto payment. We provide <code>STPPaymentHandler</code> to display the Boleto voucher.
  STPIntentActionTypeBoletoDisplayDetails = 7,
/// Contains details describing the microdeposits verification flow for US Bank Account payments
  STPIntentActionTypeVerifyWithMicrodeposits = 8,
/// The action type for UPI payment methods. The customer must complete the transaction in their banking app within 5 minutes.
  STPIntentActionTypeUpiAwaitNotification = 9,
/// Contains instructions for authenticating a payment by redirecting your customer to Cash App.
  STPIntentActionTypeCashAppRedirectToApp = 10,
/// Contains details for displaying the QR code required for PayNow.
  STPIntentActionTypePayNowDisplayQrCode = 11,
/// Contains instructions for completing Konbini payments.
  STPIntentActionTypeKonbiniDisplayDetails = 12,
/// Contains details for displaying the QR code required for PromptPay.
  STPIntentActionTypePromptpayDisplayQrCode = 13,
/// Contains details for redirecting to the Swish app.
  STPIntentActionTypeSwishHandleRedirect = 14,
};

enum STPMicrodepositType : NSInteger;

/// Contains details describing microdeposits verification flow for US Bank Accounts.
SWIFT_CLASS("_TtC14StripePayments38STPIntentActionVerifyWithMicrodeposits")
@interface STPIntentActionVerifyWithMicrodeposits : NSObject
/// The timestamp when the microdeposits are expected to land
@property (nonatomic, readonly, copy) NSDate * _Nonnull arrivalDate;
/// The URL for the hosted verification page, which allows customers to verify their bank account
@property (nonatomic, readonly, copy) NSURL * _Nonnull hostedVerificationURL;
/// The type of the microdeposit sent to the customer. Used to distinguish between different verificaion methods.
@property (nonatomic, readonly) enum STPMicrodepositType microdepositType;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionVerifyWithMicrodeposits (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains instructions for authenticating a payment by redirecting your customer to WeChat Pay app.
/// You cannot directly instantiate an <code>STPIntentActionWechatPayRedirectToApp</code>.
SWIFT_CLASS("_TtC14StripePayments37STPIntentActionWechatPayRedirectToApp")
@interface STPIntentActionWechatPayRedirectToApp : NSObject
/// The native URL you must redirect your customer to in order to authenticate the payment.
@property (nonatomic, readonly, copy) NSURL * _Nullable nativeURL;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIntentActionWechatPayRedirectToApp (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Information related to a Stripe Issuing card, including the PIN
SWIFT_CLASS("_TtC14StripePayments17STPIssuingCardPin")
@interface STPIssuingCardPin : NSObject
/// The PIN for the card
@property (nonatomic, readonly, copy) NSString * _Nullable pin;
/// If the PIN failed to be created, this error might be present
@property (nonatomic, readonly, copy) NSDictionary * _Nullable error;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPIssuingCardPin (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

enum STPKlarnaLineItemType : NSInteger;

/// An object representing a line item in a Klarna source.
/// seealso:
/// https://stripe.com/docs/sources/klarna#create-source
SWIFT_CLASS("_TtC14StripePayments17STPKlarnaLineItem")
@interface STPKlarnaLineItem : NSObject
/// The line item’s type. One of <code>sku</code> (for a product), <code>tax</code> (for taxes), or <code>shipping</code> (for shipping costs).
@property (nonatomic) enum STPKlarnaLineItemType itemType;
/// The human-readable description for the line item.
@property (nonatomic, copy) NSString * _Nonnull itemDescription;
/// The quantity to display for this line item.
@property (nonatomic, strong) NSNumber * _Nonnull quantity;
/// The total price of this line item.
/// Note: This is the total price after multiplying by the quantity, not
/// the price of an individual item. It is denominated in the currency
/// of the STPSourceParams which contains it.
@property (nonatomic, strong) NSNumber * _Nonnull totalAmount;
/// Initialize this <code>STPKlarnaLineItem</code> with a set of parameters.
/// \param itemType The line item’s type.
///
/// \param itemDescription The human-readable description for the line item.
///
/// \param quantity The quantity to display for this line item.
///
/// \param totalAmount The total price of this line item.
///
- (nonnull instancetype)initWithItemType:(enum STPKlarnaLineItemType)itemType itemDescription:(NSString * _Nonnull)itemDescription quantity:(NSNumber * _Nonnull)quantity totalAmount:(NSNumber * _Nonnull)totalAmount OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// The type of the Klarna line item.
typedef SWIFT_ENUM(NSInteger, STPKlarnaLineItemType, open) {
/// The line item for a product
  STPKlarnaLineItemTypeSKU = 0,
/// The line item for taxes
  STPKlarnaLineItemTypeTax = 1,
/// The line item for shipping costs
  STPKlarnaLineItemTypeShipping = 2,
};

/// Custom payment methods for Klarna
/// seealso:
/// https://stripe.com/docs/sources/klarna#create-source
typedef SWIFT_ENUM(NSInteger, STPKlarnaPaymentMethods, open) {
/// Don’t specify any custom payment methods.
  STPKlarnaPaymentMethodsNone = 0,
/// Offer payments over 4 installments. (a.k.a. Pay Later in 4)
  STPKlarnaPaymentMethodsPayIn4 = 1,
/// Offer payments over an arbitrary number of installments. (a.k.a. Slice It)
  STPKlarnaPaymentMethodsInstallments = 2,
/// Offer payments over 4 or an arbitrary number of installments.
  STPKlarnaPaymentMethodsPayIn4OrInstallments = 3,
};

enum STPMandateCustomerAcceptanceType : NSInteger;
@class STPMandateOnlineParams;

/// An object that contains details about the customer acceptance of the Mandate. - seealso: https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data-customer_acceptance
SWIFT_CLASS("_TtC14StripePayments34STPMandateCustomerAcceptanceParams")
@interface STPMandateCustomerAcceptanceParams : NSObject <STPFormEncodable>
/// The type of customer acceptance information included with the Mandate.
@property (nonatomic) enum STPMandateCustomerAcceptanceType type;
/// If this is a Mandate accepted online, this object contains details about the online acceptance.
/// @note If <code>type == STPMandateCustomerAcceptanceTypeOnline</code>, this value must be non-nil.
@property (nonatomic, strong) STPMandateOnlineParams * _Nullable onlineParams;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initializes an empty STPMandateCustomerAcceptanceParams.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

/// The type of customer acceptance information included with the Mandate.
typedef SWIFT_ENUM(NSInteger, STPMandateCustomerAcceptanceType, open) {
/// A Mandate that was accepted online.
  STPMandateCustomerAcceptanceTypeOnline = 0,
/// A Mandate that was accepted offline.
  STPMandateCustomerAcceptanceTypeOffline = 1,
};


/// This object contains details about the Mandate to create. - seealso: https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data
SWIFT_CLASS("_TtC14StripePayments20STPMandateDataParams")
@interface STPMandateDataParams : NSObject
/// Details about the customer acceptance of the Mandate.
@property (nonatomic, readonly, strong) STPMandateCustomerAcceptanceParams * _Nonnull customerAcceptance;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initializes an STPMandateDataParams from an STPMandateCustomerAcceptanceParams.
- (nonnull instancetype)initWithCustomerAcceptance:(STPMandateCustomerAcceptanceParams * _Nonnull)customerAcceptance OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPMandateDataParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Contains details about a Mandate accepted online. - seealso: https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data-customer_acceptance-online
SWIFT_CLASS("_TtC14StripePayments22STPMandateOnlineParams")
@interface STPMandateOnlineParams : NSObject
/// The IP address from which the Mandate was accepted by the customer.
@property (nonatomic, readonly, copy) NSString * _Nonnull ipAddress;
/// The user agent of the browser from which the Mandate was accepted by the customer.
@property (nonatomic, readonly, copy) NSString * _Nonnull userAgent;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
@property (nonatomic, strong) NSNumber * _Nullable inferFromClient;
/// Initializes an STPMandateOnlineParams.
/// \param ipAddress The IP address from which the Mandate was accepted by the customer.
///
/// \param userAgent The user agent of the browser from which the Mandate was accepted by the customer.
///
///
/// returns:
/// A new STPMandateOnlineParams instance with the specified parameters.
- (nonnull instancetype)initWithIPAddress:(NSString * _Nonnull)ipAddress userAgent:(NSString * _Nonnull)userAgent OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPMandateOnlineParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end

typedef SWIFT_ENUM(NSInteger, STPMicrodepositType, open) {
/// This is an unknown type that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>allResponseFields</code>
/// for custom handling.
  STPMicrodepositTypeUnknown = 0,
/// Two non-unique micro-deposits to the customer’s bank account
  STPMicrodepositTypeAmounts = 1,
/// A single micro-deposit sent to the customer’s bank account with a unique descriptor code
  STPMicrodepositTypeDescriptorCode = 2,
};

@class STPThreeDSCustomizationSettings;
enum STPPaymentHandlerActionStatus : NSInteger;

/// <code>STPPaymentHandler</code> is a utility class that confirms PaymentIntents/SetupIntents and handles any authentication required, such as 3DS1/3DS2 for Strong Customer Authentication.
/// It can present authentication UI on top of your app or redirect users out of your app (to e.g. their banking app).
/// seealso:
/// https://stripe.com/docs/payments/3d-secure
SWIFT_CLASS("_TtC14StripePayments17STPPaymentHandler")
@interface STPPaymentHandler : NSObject
/// The error domain for errors in <code>STPPaymentHandler</code>.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull errorDomain;)
+ (NSString * _Nonnull)errorDomain SWIFT_WARN_UNUSED_RESULT;
/// The globally shared instance of <code>STPPaymentHandler</code>.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) STPPaymentHandler * _Nonnull sharedHandler;)
+ (STPPaymentHandler * _Nonnull)sharedHandler SWIFT_WARN_UNUSED_RESULT;
/// The globally shared instance of <code>STPPaymentHandler</code>.
+ (STPPaymentHandler * _Nonnull)shared SWIFT_WARN_UNUSED_RESULT;
/// By default <code>sharedHandler</code> initializes with STPAPIClient.shared.
@property (nonatomic, strong) STPAPIClient * _Nonnull apiClient;
/// Customizable settings to use when performing 3DS2 authentication.
/// Note: Configure this before calling any methods.
/// Defaults to <code>STPThreeDSCustomizationSettings()</code>.
@property (nonatomic, strong) STPThreeDSCustomizationSettings * _Nonnull threeDSCustomizationSettings;
/// When this flag is enabled, STPPaymentHandler will confirm certain PaymentMethods using
/// Safari instead of SFSafariViewController. If you’d like to use this in your own
/// testing or Continuous Integration platform, please see the IntegrationTester app
/// for usage examples.
/// Note: This flag is only intended for development, and only impacts payments made with testmode keys.
/// Setting this to <code>true</code> with a livemode key will fail.
@property (nonatomic) BOOL simulateAppToAppRedirect;
/// Confirms the PaymentIntent with the provided parameters and handles any <code>nextAction</code> required
/// to authenticate the PaymentIntent.
/// Call this method if you are using automatic confirmation.  - seealso:https://stripe.com/docs/payments/accept-a-payment?platform=ios&ui=custom
/// \param paymentParams The params used to confirm the PaymentIntent. Note that this method overrides the value of <code>paymentParams.useStripeSDK</code> to <code>@YES</code>.
///
/// \param authenticationContext The authentication context used to authenticate the payment.
///
/// \param completion The completion block. If the status returned is <code>STPPaymentHandlerActionStatusSucceeded</code>, the PaymentIntent status is not necessarily STPPaymentIntentStatusSucceeded (e.g. some bank payment methods take days before the PaymentIntent succeeds).
///
- (void)confirmPayment:(STPPaymentIntentParams * _Nonnull)paymentParams withAuthenticationContext:(id <STPAuthenticationContext> _Nonnull)authenticationContext completion:(void (^ _Nonnull)(enum STPPaymentHandlerActionStatus, STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Handles any <code>nextAction</code> required to authenticate the PaymentIntent.
/// Call this method if you are using server-side confirmation.  - seealso: https://stripe.com/docs/payments/accept-a-payment?platform=ios&ui=custom
/// \param paymentIntentClientSecret The client secret of the PaymentIntent to handle next actions for.
///
/// \param authenticationContext The authentication context used to authenticate the payment.
///
/// \param returnURL An optional URL to redirect your customer back to after they authenticate or cancel in a webview. This should match the returnURL you specified during PaymentIntent confirmation.
///
/// \param completion The completion block. If the status returned is <code>STPPaymentHandlerActionStatusSucceeded</code>, the PaymentIntent status is not necessarily STPPaymentIntentStatusSucceeded (e.g. some bank payment methods take days before the PaymentIntent succeeds).
///
- (void)handleNextActionForPayment:(NSString * _Nonnull)paymentIntentClientSecret withAuthenticationContext:(id <STPAuthenticationContext> _Nonnull)authenticationContext returnURL:(NSString * _Nullable)returnURL completion:(void (^ _Nonnull)(enum STPPaymentHandlerActionStatus, STPPaymentIntent * _Nullable, NSError * _Nullable))completion;
/// Confirms the SetupIntent with the provided parameters and handles any <code>nextAction</code> required
/// to authenticate the SetupIntent.
/// seealso:
/// https://stripe.com/docs/payments/save-during-payment?platform=ios
/// \param setupIntentConfirmParams The params used to confirm the SetupIntent. Note that this method overrides the value of <code>setupIntentConfirmParams.useStripeSDK</code> to <code>@YES</code>.
///
/// \param authenticationContext The authentication context used to authenticate the SetupIntent.
///
/// \param completion The completion block. If the status returned is <code>STPPaymentHandlerActionStatusSucceeded</code>, the SetupIntent status will always be STPSetupIntentStatusSucceeded.
///
- (void)confirmSetupIntent:(STPSetupIntentConfirmParams * _Nonnull)setupIntentConfirmParams withAuthenticationContext:(id <STPAuthenticationContext> _Nonnull)authenticationContext completion:(void (^ _Nonnull)(enum STPPaymentHandlerActionStatus, STPSetupIntent * _Nullable, NSError * _Nullable))completion;
/// Handles any <code>nextAction</code> required to authenticate the SetupIntent.
/// Call this method if you are confirming the SetupIntent on your backend and get a status of requires_action.
/// \param setupIntentClientSecret The client secret of the SetupIntent to handle next actions for.
///
/// \param authenticationContext The authentication context used to authenticate the SetupIntent.
///
/// \param returnURL An optional URL to redirect your customer back to after they authenticate or cancel in a webview. This should match the returnURL you specified during SetupIntent confirmation.
///
/// \param completion The completion block. If the status returned is <code>STPPaymentHandlerActionStatusSucceeded</code>, the SetupIntent status will always be  STPSetupIntentStatusSucceeded.
///
- (void)handleNextActionForSetupIntent:(NSString * _Nonnull)setupIntentClientSecret withAuthenticationContext:(id <STPAuthenticationContext> _Nonnull)authenticationContext returnURL:(NSString * _Nullable)returnURL completion:(void (^ _Nonnull)(enum STPPaymentHandlerActionStatus, STPSetupIntent * _Nullable, NSError * _Nullable))completion;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentHandler (SWIFT_EXTENSION(StripePayments)) <STPURLCallbackListener>
/// :nodoc:
- (BOOL)handleURLCallback:(NSURL * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPPaymentHandler (SWIFT_EXTENSION(StripePayments)) <SFSafariViewControllerDelegate>
/// :nodoc:
- (void)safariViewControllerDidFinish:(SFSafariViewController * _Nonnull)controller;
@end


/// <code>STPPaymentHandlerActionStatus</code> represents the possible outcomes of requesting an action by <code>STPPaymentHandler</code>. An action could be confirming and/or handling the next action for a PaymentIntent.
typedef SWIFT_ENUM(NSInteger, STPPaymentHandlerActionStatus, open) {
/// The action succeeded.
  STPPaymentHandlerActionStatusSucceeded = 0,
/// The action was cancelled by the cardholder/user.
  STPPaymentHandlerActionStatusCanceled = 1,
/// The action failed. See the error code for more details.
  STPPaymentHandlerActionStatusFailed = 2,
};

/// Error codes generated by <code>STPPaymentHandler</code>
typedef SWIFT_ENUM(NSInteger, STPPaymentHandlerErrorCode, open) {
/// Indicates that the action requires an authentication method not recognized or supported by the SDK.
  STPPaymentHandlerUnsupportedAuthenticationErrorCode SWIFT_COMPILE_NAME("unsupportedAuthenticationErrorCode") = 0,
/// Indicates that the action requires an authentication app, but either the app is not installed or the request to switch to the app was denied.
  STPPaymentHandlerRequiredAppNotAvailableErrorCode SWIFT_COMPILE_NAME("requiredAppNotAvailable") = 1,
/// Attach a payment method to the PaymentIntent or SetupIntent before using <code>STPPaymentHandler</code>.
  STPPaymentHandlerRequiresPaymentMethodErrorCode SWIFT_COMPILE_NAME("requiresPaymentMethodErrorCode") = 2,
/// The PaymentIntent or SetupIntent status cannot be resolved by <code>STPPaymentHandler</code>.
  STPPaymentHandlerIntentStatusErrorCode SWIFT_COMPILE_NAME("intentStatusErrorCode") = 3,
/// The action timed out.
  STPPaymentHandlerTimedOutErrorCode SWIFT_COMPILE_NAME("timedOutErrorCode") = 4,
/// There was an error in the Stripe3DS2 SDK.
  STPPaymentHandlerStripe3DS2ErrorCode SWIFT_COMPILE_NAME("stripe3DS2ErrorCode") = 5,
/// The transaction did not authenticate (e.g. user entered the wrong code).
  STPPaymentHandlerNotAuthenticatedErrorCode SWIFT_COMPILE_NAME("notAuthenticatedErrorCode") = 6,
/// <code>STPPaymentHandler</code> does not support concurrent actions.
  STPPaymentHandlerNoConcurrentActionsErrorCode SWIFT_COMPILE_NAME("noConcurrentActionsErrorCode") = 7,
/// Payment requires a valid <code>STPAuthenticationContext</code>.  Make sure your presentingViewController isn’t already presenting.
  STPPaymentHandlerRequiresAuthenticationContextErrorCode SWIFT_COMPILE_NAME("requiresAuthenticationContextErrorCode") = 8,
/// There was an error confirming the Intent.
/// Inspect the <code>paymentIntent.lastPaymentError</code> or <code>setupIntent.lastSetupError</code> property.
  STPPaymentHandlerPaymentErrorCode SWIFT_COMPILE_NAME("paymentErrorCode") = 9,
/// The provided PaymentIntent of SetupIntent client secret does not match the expected pattern for client secrets.
/// Make sure that your server is returning the correct value and that is being passed to <code>STPPaymentHandler</code>.
  STPPaymentHandlerInvalidClientSecret SWIFT_COMPILE_NAME("invalidClientSecret") = 10,
};


SWIFT_CLASS("_TtC14StripePayments42STPPaymentHandlerPaymentIntentActionParams")
@interface STPPaymentHandlerPaymentIntentActionParams : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum STPPaymentIntentCaptureMethod : NSInteger;
enum STPPaymentIntentConfirmationMethod : NSInteger;
enum STPPaymentIntentStatus : NSInteger;
@class STPPaymentIntentLastPaymentError;
@class STPPaymentIntentShippingDetails;

/// A PaymentIntent tracks the process of collecting a payment from your customer.
/// seealso:
/// https://stripe.com/docs/api#payment_intents
/// seealso:
/// https://stripe.com/docs/payments/3d-secure
SWIFT_CLASS("_TtC14StripePayments16STPPaymentIntent")
@interface STPPaymentIntent : NSObject
/// The Stripe ID of the PaymentIntent.
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeId;
/// The client secret used to fetch this PaymentIntent
@property (nonatomic, readonly, copy) NSString * _Nonnull clientSecret;
/// Amount intended to be collected by this PaymentIntent.
@property (nonatomic, readonly) NSInteger amount;
/// If status is <code>.canceled</code>, when the PaymentIntent was canceled.
@property (nonatomic, readonly, copy) NSDate * _Nullable canceledAt;
/// Capture method of this PaymentIntent
@property (nonatomic, readonly) enum STPPaymentIntentCaptureMethod captureMethod;
/// Confirmation method of this PaymentIntent
@property (nonatomic, readonly) enum STPPaymentIntentConfirmationMethod confirmationMethod;
/// When the PaymentIntent was created.
@property (nonatomic, readonly, copy) NSDate * _Nonnull created;
/// The currency associated with the PaymentIntent.
@property (nonatomic, readonly, copy) NSString * _Nonnull currency;
/// The <code>description</code> field of the PaymentIntent.
/// An arbitrary string attached to the object. Often useful for displaying to users.
@property (nonatomic, readonly, copy) NSString * _Nullable stripeDescription;
/// Whether or not this PaymentIntent was created in livemode.
@property (nonatomic, readonly) BOOL livemode;
/// If <code>status == .requiresAction</code>, this
/// property contains the next action to take for this PaymentIntent.
@property (nonatomic, readonly, strong) STPIntentAction * _Nullable nextAction;
/// Email address that the receipt for the resulting payment will be sent to.
@property (nonatomic, readonly, copy) NSString * _Nullable receiptEmail;
/// The Stripe ID of the Source used in this PaymentIntent.
@property (nonatomic, readonly, copy) NSString * _Nullable sourceId;
/// The Stripe ID of the PaymentMethod used in this PaymentIntent.
@property (nonatomic, readonly, copy) NSString * _Nullable paymentMethodId;
/// Status of the PaymentIntent
@property (nonatomic, readonly) enum STPPaymentIntentStatus status;
/// The list of payment method types (e.g. <code>[NSNumber(value: STPPaymentMethodType.card.rawValue)]</code>) that this PaymentIntent is allowed to use.
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nonnull paymentMethodTypes;
/// When provided, this property indicates how you intend to use the payment method that your customer provides after the current payment completes. If applicable, additional authentication may be performed to comply with regional legislation or network rules required to enable the usage of the same payment method for additional payments.
/// Use on_session if you intend to only reuse the payment method when the customer is in your checkout flow. Use off_session if your customer may or may not be in your checkout flow.
@property (nonatomic, readonly) enum STPPaymentIntentSetupFutureUsage setupFutureUsage;
/// The payment error encountered in the previous PaymentIntent confirmation.
@property (nonatomic, readonly, strong) STPPaymentIntentLastPaymentError * _Nullable lastPaymentError;
/// Shipping information for this PaymentIntent.
@property (nonatomic, readonly, strong) STPPaymentIntentShippingDetails * _Nullable shipping;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// The optionally expanded PaymentMethod used in this PaymentIntent.
@property (nonatomic, readonly, strong) STPPaymentMethod * _Nullable paymentMethod;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end



@interface STPPaymentIntent (SWIFT_EXTENSION(StripePayments))
/// If <code>status == STPPaymentIntentStatusRequiresAction</code>, this
/// property contains the next source action to take for this PaymentIntent.
/// @deprecated Use nextAction instead
@property (nonatomic, readonly, strong) STPIntentAction * _Nullable nextSourceAction SWIFT_DEPRECATED_MSG("Use nextAction instead", "nextAction");
@end


@interface STPPaymentIntent (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Action details for an STPPaymentIntent. This is a container for
/// the various types that are available. Check the <code>type</code> to see which one
/// it is, and then use the related property for the details necessary to handle it.
/// @deprecated Use <code>STPIntentAction</code> instead.
SWIFT_CLASS("_TtC14StripePayments22STPPaymentIntentAction") SWIFT_DEPRECATED_MSG("Use `STPIntentAction` instead.", "_TtC14StripePayments15STPIntentAction")
@interface STPPaymentIntentAction : STPIntentAction
@end


/// Contains instructions for authenticating a payment by redirecting your customer to another page or application.
/// @deprecated Use <code>STPIntentActionRedirectToURL</code> instead.
SWIFT_CLASS("_TtC14StripePayments35STPPaymentIntentActionRedirectToURL") SWIFT_UNAVAILABLE_MSG("'STPPaymentIntentActionRedirectToURL' has been renamed to '_TtC14StripePayments28STPIntentActionRedirectToURL': Use `STPIntentActionRedirectToURL` instead.")
@interface STPPaymentIntentActionRedirectToURL : STPIntentActionRedirectToURL
@end

/// Types of Actions from a <code>STPPaymentIntent</code>, when the payment intent
/// status is <code>STPPaymentIntentStatusRequiresAction</code>.
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentActionType, open) {
/// This is an unknown action, that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>nextAction.allResponseFields</code>
/// for custom handling.
  STPPaymentIntentActionTypeUnknown = 0,
/// The payment intent needs to be authorized by the user. We provide
/// <code>STPRedirectContext</code> to handle the url redirections necessary.
  STPPaymentIntentActionTypeRedirectToURL = 1,
};

/// Capture methods for a STPPaymentIntent
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentCaptureMethod, open) {
/// Unknown capture method
  STPPaymentIntentCaptureMethodUnknown = 0,
/// The PaymentIntent will be automatically captured
  STPPaymentIntentCaptureMethodAutomatic = 1,
/// The PaymentIntent must be manually captured once it has the status
/// <code>STPPaymentIntentStatusRequiresCapture</code>
  STPPaymentIntentCaptureMethodManual = 2,
};

/// Confirmation methods for a STPPaymentIntent
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentConfirmationMethod, open) {
/// Unknown confirmation method
  STPPaymentIntentConfirmationMethodUnknown = 0,
/// Confirmed via publishable key
  STPPaymentIntentConfirmationMethodManual = 1,
/// Confirmed via secret key
  STPPaymentIntentConfirmationMethodAutomatic = 2,
};

enum STPPaymentIntentLastPaymentErrorType : NSInteger;

/// A value for <code>code</code> indicating the provided payment method failed authentication./// The payment error encountered in the previous PaymentIntent confirmation.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/object#payment_intent_object-last_payment_error
SWIFT_CLASS("_TtC14StripePayments32STPPaymentIntentLastPaymentError")
@interface STPPaymentIntentLastPaymentError : NSObject
/// A value for <code>code</code> indicating the provided payment method failed authentication.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull ErrorCodeAuthenticationFailure;)
+ (NSString * _Nonnull)ErrorCodeAuthenticationFailure SWIFT_WARN_UNUSED_RESULT;
/// For some errors that could be handled programmatically, a short string indicating the error code reported.
/// seealso:
/// https://stripe.com/docs/error-codes
@property (nonatomic, readonly, copy) NSString * _Nullable code;
/// For card (<code>STPPaymentIntentLastPaymentErrorType.card</code>) errors resulting from a card issuer decline,
/// a short string indicating the card issuer’s reason for the decline if they provide one.
/// seealso:
/// https://stripe.com/docs/declines#issuer-declines
@property (nonatomic, readonly, copy) NSString * _Nullable declineCode;
/// A URL to more information about the error code reported.
/// seealso:
/// https://stripe.com/docs/error-codes
@property (nonatomic, readonly, copy) NSString * _Nullable docURL;
/// A human-readable message providing more details about the error.
/// For card (<code>STPPaymentIntentLastPaymentErrorType.card</code>) errors, these messages can be shown to your users.
@property (nonatomic, readonly, copy) NSString * _Nullable message;
/// If the error is parameter-specific, the parameter related to the error.
/// For example, you can use this to display a message near the correct form field.
@property (nonatomic, readonly, copy) NSString * _Nullable param;
/// The PaymentMethod object for errors returned on a request involving a PaymentMethod.
@property (nonatomic, readonly, strong) STPPaymentMethod * _Nullable paymentMethod;
/// The type of error.
@property (nonatomic, readonly) enum STPPaymentIntentLastPaymentErrorType type;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentIntentLastPaymentError (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// The type of the error represented by <code>STPPaymentIntentLastPaymentError</code>.
/// Some STPPaymentIntentLastPaymentError properties are only populated for certain error types.
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentLastPaymentErrorType, open) {
/// An unknown error type.
  STPPaymentIntentLastPaymentErrorTypeUnknown = 0,
/// An error connecting to Stripe’s API.
  STPPaymentIntentLastPaymentErrorTypeAPIConnection SWIFT_COMPILE_NAME("apiConnection") = 1,
/// An error with the Stripe API.
  STPPaymentIntentLastPaymentErrorTypeAPI SWIFT_COMPILE_NAME("api") = 2,
/// A failure to authenticate your customer.
  STPPaymentIntentLastPaymentErrorTypeAuthentication = 3,
/// Card errors are the most common type of error you should expect to handle.
/// They result when the user enters a card that can’t be charged for some reason.
/// Check the <code>declineCode</code> property for the decline code.  The <code>message</code> property contains a message you can show to your users.
  STPPaymentIntentLastPaymentErrorTypeCard = 4,
/// Keys for idempotent requests can only be used with the same parameters they were first used with.
  STPPaymentIntentLastPaymentErrorTypeIdempotency = 5,
/// Invalid request errors.  Typically, this is because your request has invalid parameters.
  STPPaymentIntentLastPaymentErrorTypeInvalidRequest = 6,
/// Too many requests hit the API too quickly.
  STPPaymentIntentLastPaymentErrorTypeRateLimit = 7,
};

enum STPPaymentMethodType : NSInteger;
@class STPPaymentIntentShippingDetailsParams;

/// An object representing parameters used to confirm a PaymentIntent object.
/// A PaymentIntent must have a PaymentMethod or Source associated in order to successfully confirm it.
/// That PaymentMethod or Source can either be:
/// seealso:
/// https://stripe.com/docs/api#confirm_payment_intent
/// <ul>
///   <li>
///     created during confirmation, by passing in a <code>STPPaymentMethodParams</code> or <code>STPSourceParams</code> object in the <code>paymentMethodParams</code> or <code>sourceParams</code> field
///   </li>
///   <li>
///     a pre-existing PaymentMethod or Source can be associated by passing its id in the <code>paymentMethodId</code> or <code>sourceId</code> field
///   </li>
///   <li>
///     or already set via your backend, either when creating or updating the PaymentIntent
///   </li>
/// </ul>
SWIFT_CLASS("_TtC14StripePayments22STPPaymentIntentParams")
@interface STPPaymentIntentParams : NSObject
/// Initialize this <code>STPPaymentIntentParams</code> with a <code>clientSecret</code>, which is the only required
/// field.
/// \param clientSecret the client secret for this PaymentIntent
///
- (nonnull instancetype)initWithClientSecret:(NSString * _Nonnull)clientSecret OBJC_DESIGNATED_INITIALIZER;
/// Initializes this <code>STPPaymentIntentParams</code> with a <code>clientSecret</code> and <code>paymentMethodType</code>.
/// Use this initializer for PaymentIntents that already have a PaymentMethod attached.
/// \param clientSecret the client secret for this PaymentIntent
///
/// \param paymentMethodType the known type of the PaymentIntent’s attached PaymentMethod
///
- (nonnull instancetype)initWithClientSecret:(NSString * _Nonnull)clientSecret paymentMethodType:(enum STPPaymentMethodType)paymentMethodType OBJC_DESIGNATED_INITIALIZER;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The Stripe id of the PaymentIntent, extracted from the clientSecret.
@property (nonatomic, readonly, copy) NSString * _Nullable stripeId;
/// The client secret of the PaymentIntent. Required
@property (nonatomic, copy) NSString * _Nonnull clientSecret;
/// Provide a supported <code>STPPaymentMethodParams</code> object, and Stripe will create a
/// PaymentMethod during PaymentIntent confirmation.
/// @note alternative to <code>paymentMethodId</code>
@property (nonatomic, strong) STPPaymentMethodParams * _Nullable paymentMethodParams;
/// Provide an already created PaymentMethod’s id, and it will be used to confirm the PaymentIntent.
/// @note alternative to <code>paymentMethodParams</code>
@property (nonatomic, copy) NSString * _Nullable paymentMethodId;
/// Provide a supported <code>STPSourceParams</code> object into here, and Stripe will create a Source
/// during PaymentIntent confirmation.
/// @note alternative to <code>sourceId</code>
@property (nonatomic, strong) STPSourceParams * _Nullable sourceParams;
/// Provide an already created Source’s id, and it will be used to confirm the PaymentIntent.
/// @note alternative to <code>sourceParams</code>
@property (nonatomic, copy) NSString * _Nullable sourceId;
/// Email address that the receipt for the resulting payment will be sent to.
@property (nonatomic, copy) NSString * _Nullable receiptEmail;
/// <code>@YES</code> to save this PaymentIntent’s PaymentMethod or Source to the associated Customer,
/// if the PaymentMethod/Source is not already attached.
/// This should be a boolean NSNumber, so that it can be <code>nil</code>
@property (nonatomic, strong) NSNumber * _Nullable savePaymentMethod;
/// The URL to redirect your customer back to after they authenticate or cancel
/// their payment on the payment method’s app or site.
/// This should probably be a URL that opens your iOS app.
@property (nonatomic, copy) NSString * _Nullable returnURL;
/// When provided, this property indicates how you intend to use the payment method that your customer provides after the current payment completes.
/// If applicable, additional authentication may be performed to comply with regional legislation or network rules required to enable the usage of the same payment method for additional payments.
/// This property should only be used in Objective-C. In Swift, use <code>setupFutureUsage</code>.
/// seealso:
/// STPPaymentIntentSetupFutureUsage for more details on what values you can provide.
@property (nonatomic, strong) NSNumber * _Nullable setupFutureUsage;
/// A boolean number to indicate whether you intend to use the Stripe SDK’s functionality to handle any PaymentIntent next actions.
/// If set to false, STPPaymentIntent.nextAction will only ever contain a redirect url that can be opened in a webview or mobile browser.
/// When set to true, the nextAction may contain information that the Stripe SDK can use to perform native authentication within your
/// app.
@property (nonatomic, strong) NSNumber * _Nullable useStripeSDK;
/// Details about the Mandate to create.
/// @note If this value is null, the SDK will set this to an internal value indicating that the mandate data should be inferred from the current context if it’s required for <code>self.paymentMethodType</code>
@property (nonatomic, strong) STPMandateDataParams * _Nullable mandateData;
/// Options to update the associated PaymentMethod during confirmation.
/// seealso:
/// STPConfirmPaymentMethodOptions
@property (nonatomic, strong) STPConfirmPaymentMethodOptions * _Nullable paymentMethodOptions;
/// Shipping information.
@property (nonatomic, strong) STPPaymentIntentShippingDetailsParams * _Nullable shipping;
/// The URL to redirect your customer back to after they authenticate or cancel
/// their payment on the payment method’s app or site.
/// This property has been renamed to <code>returnURL</code> and deprecated.
@property (nonatomic, copy) NSString * _Nullable returnUrl SWIFT_DEPRECATED_MSG("", "returnURL");
/// <code>@YES</code> to save this PaymentIntent’s Source to the associated Customer,
/// if the Source is not already attached.
/// This should be a boolean NSNumber, so that it can be <code>nil</code>
/// This property has been renamed to <code>savePaymentMethod</code> and deprecated.
@property (nonatomic, strong) NSNumber * _Nullable saveSourceToCustomer SWIFT_DEPRECATED_MSG("", "savePaymentMethod");
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
@end


@interface STPPaymentIntentParams (SWIFT_EXTENSION(StripePayments)) <NSCopying>
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPPaymentIntentParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end

/// Indicates how you intend to use the payment method that your customer provides after the current payment completes.
/// If applicable, additional authentication may be performed to comply with regional legislation or network rules required to enable the usage of the same payment method for additional payments.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/object#payment_intent_object-setup_future_usage
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentSetupFutureUsage, open) {
/// Unknown value.  Update your SDK, or use <code>allResponseFields</code> for custom handling.
  STPPaymentIntentSetupFutureUsageUnknown = 0,
/// No value was provided.
  STPPaymentIntentSetupFutureUsageNone = 1,
/// Indicates you intend to only reuse the payment method when the customer is in your checkout flow.
  STPPaymentIntentSetupFutureUsageOnSession = 2,
/// Indicates you intend to reuse the payment method when the customer may or may not be in your checkout flow.
  STPPaymentIntentSetupFutureUsageOffSession = 3,
};

@class STPPaymentIntentShippingDetailsAddress;

/// Shipping information for a PaymentIntent
/// You cannot directly instantiate an <code>STPPaymentIntentShippingDetails</code>.
/// You should only use one that is part of an existing <code>STPPaymentMethod</code> object.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/object#payment_intent_object-shipping
SWIFT_CLASS("_TtC14StripePayments31STPPaymentIntentShippingDetails")
@interface STPPaymentIntentShippingDetails : NSObject
/// Shipping address.
@property (nonatomic, readonly, strong) STPPaymentIntentShippingDetailsAddress * _Nullable address;
/// Recipient name.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@property (nonatomic, readonly, copy) NSString * _Nullable carrier;
/// Recipient phone (including extension).
@property (nonatomic, readonly, copy) NSString * _Nullable phone;
/// 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.
@property (nonatomic, readonly, copy) NSString * _Nullable trackingNumber;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentIntentShippingDetails (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Shipping address for a PaymentIntent’s shipping details.
/// You cannot directly instantiate an <code>STPPaymentIntentShippingDetailsAddress</code>.
/// You should only use one that is part of an existing <code>STPPaymentMethod</code> object.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/object#payment_intent_object-shipping
SWIFT_CLASS("_TtC14StripePayments38STPPaymentIntentShippingDetailsAddress")
@interface STPPaymentIntentShippingDetailsAddress : NSObject
/// City/District/Suburb/Town/Village.
@property (nonatomic, readonly, copy) NSString * _Nullable city;
/// Two-letter country code (ISO 3166-1 alpha-2).
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// Address line 1 (Street address/PO Box/Company name).
@property (nonatomic, readonly, copy) NSString * _Nullable line1;
/// Address line 2 (Apartment/Suite/Unit/Building).
@property (nonatomic, readonly, copy) NSString * _Nullable line2;
/// ZIP or postal code.
@property (nonatomic, readonly, copy) NSString * _Nullable postalCode;
/// State/County/Province/Region.
@property (nonatomic, readonly, copy) NSString * _Nullable state;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentIntentShippingDetailsAddress (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Shipping address for a PaymentIntent’s shipping details.
/// seealso:
/// https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-shipping-address
SWIFT_CLASS("_TtC14StripePayments44STPPaymentIntentShippingDetailsAddressParams")
@interface STPPaymentIntentShippingDetailsAddressParams : NSObject
/// City/District/Suburb/Town/Village.
@property (nonatomic, copy) NSString * _Nullable city;
/// Two-letter country code (ISO 3166-1 alpha-2).
@property (nonatomic, copy) NSString * _Nullable country;
/// Address line 1 (Street address/PO Box/Company name).
@property (nonatomic, copy) NSString * _Nonnull line1;
/// Address line 2 (Apartment/Suite/Unit/Building).
@property (nonatomic, copy) NSString * _Nullable line2;
/// ZIP or postal code.
@property (nonatomic, copy) NSString * _Nullable postalCode;
/// State/County/Province/Region.
@property (nonatomic, copy) NSString * _Nullable state;
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initialize an <code>STPPaymentIntentShippingDetailsAddressParams</code> instance with required properties.
- (nonnull instancetype)initWithLine1:(NSString * _Nonnull)line1 OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentIntentShippingDetailsAddressParams (SWIFT_EXTENSION(StripePayments)) <NSCopying>
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPPaymentIntentShippingDetailsAddressParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Shipping information for a PaymentIntent
/// seealso:
/// https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-shipping
SWIFT_CLASS("_TtC14StripePayments37STPPaymentIntentShippingDetailsParams")
@interface STPPaymentIntentShippingDetailsParams : NSObject
/// Shipping address.
@property (nonatomic, strong) STPPaymentIntentShippingDetailsAddressParams * _Nonnull address;
/// Recipient name.
@property (nonatomic, copy) NSString * _Nonnull name;
/// The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
@property (nonatomic, copy) NSString * _Nullable carrier;
/// Recipient phone (including extension).
@property (nonatomic, copy) NSString * _Nullable phone;
/// 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.
@property (nonatomic, copy) NSString * _Nullable trackingNumber;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initialize an <code>STPPaymentIntentShippingDetailsParams</code> with required properties.
- (nonnull instancetype)initWithAddress:(STPPaymentIntentShippingDetailsAddressParams * _Nonnull)address name:(NSString * _Nonnull)name OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentIntentShippingDetailsParams (SWIFT_EXTENSION(StripePayments)) <NSCopying>
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPPaymentIntentShippingDetailsParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
@end


/// Source Action details for an STPPaymentIntent. This is a container for
/// the various types that are available. Check the <code>type</code> to see which one
/// it is, and then use the related property for the details necessary to handle
/// it.
/// @deprecated Use <code>STPIntentAction</code> instead.
SWIFT_CLASS("_TtC14StripePayments28STPPaymentIntentSourceAction") SWIFT_UNAVAILABLE_MSG("'STPPaymentIntentSourceAction' has been renamed to '_TtC14StripePayments15STPIntentAction': Use `STPIntentAction` instead.")
@interface STPPaymentIntentSourceAction : STPIntentAction
@end


/// The <code>STPPaymentIntentSourceAction</code> details when type is <code>STPPaymentIntentSourceActionTypeAuthorizeWithURL</code>.
/// These are created & owned by the containing <code>STPPaymentIntent</code>.
/// @deprecated Use <code>STPIntentActionRedirectToURL</code> instead.
SWIFT_CLASS("_TtC14StripePayments44STPPaymentIntentSourceActionAuthorizeWithURL") SWIFT_UNAVAILABLE_MSG("'STPPaymentIntentSourceActionAuthorizeWithURL' has been renamed to '_TtC14StripePayments28STPIntentActionRedirectToURL': Use `STPIntentActionRedirectToURL` instead.")
@interface STPPaymentIntentSourceActionAuthorizeWithURL : STPIntentActionRedirectToURL
@end

/// Types of Source Actions from a <code>STPPaymentIntent</code>, when the payment intent
/// status is <code>STPPaymentIntentStatusRequiresSourceAction</code>.
/// @deprecated Use<code>STPPaymentIntentActionType</code> instead.
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentSourceActionType, open) {
/// This is an unknown source action, that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>nextSourceAction.allResponseFields</code>
/// for custom handling.
  STPPaymentIntentSourceActionTypeUnknown = 0,
/// The payment intent needs to be authorized by the user. We provide
/// <code>STPRedirectContext</code> to handle the url redirections necessary.
  STPPaymentIntentSourceActionTypeAuthorizeWithURL = 1,
};

/// Status types for an STPPaymentIntent
typedef SWIFT_ENUM(NSInteger, STPPaymentIntentStatus, open) {
/// Unknown status
  STPPaymentIntentStatusUnknown = 0,
/// This PaymentIntent requires a PaymentMethod or Source
  STPPaymentIntentStatusRequiresPaymentMethod = 1,
/// This PaymentIntent requires a Source
/// Deprecated: Use STPPaymentIntentStatusRequiresPaymentMethod instead.
  STPPaymentIntentStatusRequiresSource = 2,
/// This PaymentIntent needs to be confirmed
  STPPaymentIntentStatusRequiresConfirmation = 3,
/// The selected PaymentMethod or Source requires additional authentication steps.
/// Additional actions found via <code>next_action</code>
  STPPaymentIntentStatusRequiresAction = 4,
/// The selected Source requires additional authentication steps.
/// Additional actions found via <code>next_source_action</code>
/// Deprecated: Use STPPaymentIntentStatusRequiresAction instead.
  STPPaymentIntentStatusRequiresSourceAction = 5,
/// Stripe is processing this PaymentIntent
  STPPaymentIntentStatusProcessing = 6,
/// The payment has succeeded
  STPPaymentIntentStatusSucceeded = 7,
/// Indicates the payment must be captured, for STPPaymentIntentCaptureMethodManual
  STPPaymentIntentStatusRequiresCapture = 8,
/// This PaymentIntent was canceled and cannot be changed.
  STPPaymentIntentStatusCanceled = 9,
};

@class STPPaymentMethodAlipay;
@class STPPaymentMethodGrabPay;
@class STPPaymentMethodCard;
@class STPPaymentMethodiDEAL;
@class STPPaymentMethodFPX;
@class STPPaymentMethodCardPresent;
@class STPPaymentMethodSEPADebit;
@class STPPaymentMethodBacsDebit;
@class STPPaymentMethodAUBECSDebit;
@class STPPaymentMethodGiropay;
@class STPPaymentMethodEPS;
@class STPPaymentMethodPrzelewy24;
@class STPPaymentMethodBancontact;
@class STPPaymentMethodNetBanking;
@class STPPaymentMethodOXXO;
@class STPPaymentMethodSofort;
@class STPPaymentMethodUPI;
@class STPPaymentMethodPayPal;
@class STPPaymentMethodAfterpayClearpay;
@class STPPaymentMethodBLIK;
@class STPPaymentMethodBoleto;
@class STPPaymentMethodLink;
@class STPPaymentMethodKlarna;
@class STPPaymentMethodAffirm;
@class STPPaymentMethodUSBankAccount;
@class STPPaymentMethodCashApp;
@class STPPaymentMethodRevolutPay;
@class STPPaymentMethodSwish;

/// PaymentMethod objects represent your customer’s payment instruments. They can be used with PaymentIntents to collect payments.
/// seealso:
/// https://stripe.com/docs/api/payment_methods
SWIFT_CLASS("_TtC14StripePayments16STPPaymentMethod")
@interface STPPaymentMethod : NSObject <STPAPIResponseDecodable>
/// Unique identifier for the object.
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeId;
/// Time at which the object was created. Measured in seconds since the Unix epoch.
@property (nonatomic, readonly, copy) NSDate * _Nullable created;
/// <code>YES</code> if the object exists in live mode or the value <code>NO</code> if the object exists in test mode.
@property (nonatomic, readonly) BOOL liveMode;
/// The type of the PaymentMethod.  The corresponding, similarly named property contains additional information specific to the PaymentMethod type.
/// e.g. if the type is <code>STPPaymentMethodTypeCard</code>, the <code>card</code> property is also populated.
@property (nonatomic, readonly) enum STPPaymentMethodType type;
/// Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods.
@property (nonatomic, readonly, strong) STPPaymentMethodBillingDetails * _Nullable billingDetails;
/// If this is an Alipay PaymentMethod (ie <code>self.type == STPPaymentMethodTypeAlipay</code>), this contains additional detailsl
@property (nonatomic, readonly, strong) STPPaymentMethodAlipay * _Nullable alipay;
/// If this is a GrabPay PaymentMethod (ie <code>self.type == STPPaymentMethodTypeGrabPay</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodGrabPay * _Nullable grabPay;
/// If this is a card PaymentMethod (ie <code>self.type == STPPaymentMethodTypeCard</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodCard * _Nullable card;
/// If this is a iDEAL PaymentMethod (ie <code>self.type == STPPaymentMethodTypeiDEAL</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodiDEAL * _Nullable iDEAL;
/// If this is an FPX PaymentMethod (ie <code>self.type == STPPaymentMethodTypeFPX</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodFPX * _Nullable fpx;
/// If this is a card present PaymentMethod (ie <code>self.type == STPPaymentMethodTypeCardPresent</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodCardPresent * _Nullable cardPresent;
/// If this is a SEPA Debit PaymentMethod (ie <code>self.type == STPPaymentMethodTypeSEPADebit</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodSEPADebit * _Nullable sepaDebit;
/// If this is a Bacs Debit PaymentMethod (ie <code>self.type == STPPaymentMethodTypeBacsDebit</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodBacsDebit * _Nullable bacsDebit;
/// If this is an AU BECS Debit PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeAUBECSDebit</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodAUBECSDebit * _Nullable auBECSDebit;
/// If this is a giropay PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeGiropay</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodGiropay * _Nullable giropay;
/// If this is an EPS PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeEPS</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodEPS * _Nullable eps;
/// If this is a Przelewy24 PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypePrzelewy24</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodPrzelewy24 * _Nullable przelewy24;
/// If this is a Bancontact PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeBancontact</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodBancontact * _Nullable bancontact;
/// If this is a NetBanking PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeNetBanking</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodNetBanking * _Nullable netBanking;
/// If this is an OXXO PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeOXXO</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodOXXO * _Nullable oxxo;
/// If this is a Sofort PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeSofort</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodSofort * _Nullable sofort;
/// If this is a UPI PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeUPI</code>), this contains additional details. :nodoc:
@property (nonatomic, readonly, strong) STPPaymentMethodUPI * _Nullable upi;
/// If this is a PayPal PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypePayPal</code>), this contains additional details. :nodoc:
@property (nonatomic, readonly, strong) STPPaymentMethodPayPal * _Nullable payPal;
/// If this is an AfterpayClearpay PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeAfterpayClearpay</code>), this contains additional details. :nodoc:
@property (nonatomic, readonly, strong) STPPaymentMethodAfterpayClearpay * _Nullable afterpayClearpay;
/// If this is a BLIK PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeBLIK</code>), this contains additional details. :nodoc:
@property (nonatomic, readonly, strong) STPPaymentMethodBLIK * _Nullable blik;
/// If this is an Boleto PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeBoleto</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodBoleto * _Nullable boleto;
/// If this is a Link PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeLink</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodLink * _Nullable link;
/// If this is an Klarna PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeKlarna</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodKlarna * _Nullable klarna;
/// If this is an Affirm PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeAffirm</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodAffirm * _Nullable affirm;
/// If this is a US Bank Account PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeUSBankAccount</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodUSBankAccount * _Nullable usBankAccount;
/// If this is an Cash App PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeCashApp</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodCashApp * _Nullable cashApp;
/// If this is an RevolutPay PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeRevolutPay</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodRevolutPay * _Nullable revolutPay;
/// If this is a Swish PaymentMethod (i.e. <code>self.type == STPPaymentMethodTypeSwish</code>), this contains additional details.
@property (nonatomic, readonly, strong) STPPaymentMethodSwish * _Nullable swish;
/// The ID of the Customer to which this PaymentMethod is saved. Nil when the PaymentMethod has not been saved to a Customer.
@property (nonatomic, readonly, copy) NSString * _Nullable customerId;
/// Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
/// @deprecated Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
/// seealso:
/// https://stripe.com/docs/api#metadata
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable metadata SWIFT_DEPRECATED_MSG("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using your secret key instead.");
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
- (nonnull instancetype)initWithStripeId:(NSString * _Nonnull)stripeId OBJC_DESIGNATED_INITIALIZER;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An AU BECS Debit Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-au_becs_debit
SWIFT_CLASS("_TtC14StripePayments27STPPaymentMethodAUBECSDebit")
@interface STPPaymentMethodAUBECSDebit : NSObject <STPAPIResponseDecodable>
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// Six-digit number identifying bank and branch associated with this bank account.
@property (nonatomic, readonly, copy) NSString * _Nonnull bsbNumber;
/// Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
@property (nonatomic, readonly, copy) NSString * _Nonnull fingerprint;
/// Last four digits of the bank account number.
@property (nonatomic, readonly, copy) NSString * _Nonnull last4;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an AU BECS Debit Payment Method
SWIFT_CLASS("_TtC14StripePayments33STPPaymentMethodAUBECSDebitParams")
@interface STPPaymentMethodAUBECSDebitParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The account number to debit.
@property (nonatomic, copy) NSString * _Nullable accountNumber;
/// Six-digit number identifying bank and branch associated with this bank account.
@property (nonatomic, copy) NSString * _Nullable bsbNumber;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The billing address, a property on <code>STPPaymentMethodBillingDetails</code>
SWIFT_CLASS("_TtC14StripePayments23STPPaymentMethodAddress")
@interface STPPaymentMethodAddress : NSObject <STPAPIResponseDecodable, STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// City/District/Suburb/Town/Village.
@property (nonatomic, copy) NSString * _Nullable city;
/// 2-letter country code.
@property (nonatomic, copy) NSString * _Nullable country;
/// Address line 1 (Street address/PO Box/Company name).
@property (nonatomic, copy) NSString * _Nullable line1;
/// Address line 2 (Apartment/Suite/Unit/Building).
@property (nonatomic, copy) NSString * _Nullable line2;
/// ZIP or postal code.
@property (nonatomic, copy) NSString * _Nullable postalCode;
/// State/County/Province/Region.
@property (nonatomic, copy) NSString * _Nullable state;
/// Convenience initializer for creating a STPPaymentMethodAddress from an STPAddress.
- (nonnull instancetype)initWithAddress:(STPAddress * _Nonnull)address OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// The Affirm Payment Method.
/// seealso:
/// <TODO>
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodAffirm")
@interface STPPaymentMethodAffirm : NSObject <STPAPIResponseDecodable>
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an Affirm Payment Method
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodAffirmParams")
@interface STPPaymentMethodAffirmParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// An AfterpayClearpay Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-afterpay_clearpay
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodAfterpayClearpay")
@interface STPPaymentMethodAfterpayClearpay : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an AfterpayClearpay Payment Method
SWIFT_CLASS("_TtC14StripePayments38STPPaymentMethodAfterpayClearpayParams")
@interface STPPaymentMethodAfterpayClearpayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Contains details for an Alipay Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-alipay
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodAlipay")
@interface STPPaymentMethodAlipay : NSObject <STPAPIResponseDecodable>
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an Alipay Payment Method.
/// There are currently no parameters to pass.
/// seealso:
/// https://site-admin.stripe.com/docs/api/payment_methods/create#create_payment_method-alipay
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodAlipayParams")
@interface STPPaymentMethodAlipayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Contains details for a BLIK Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-blik
SWIFT_CLASS("_TtC14StripePayments20STPPaymentMethodBLIK")
@interface STPPaymentMethodBLIK : NSObject <STPAPIResponseDecodable>
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a BLIK Payment Method
/// There are currently no parameters to pass.
/// seealso:
/// https://site-admin.stripe.com/docs/api/payment_methods/create#create_payment_method-blik
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodBLIKParams")
@interface STPPaymentMethodBLIKParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Bacs Debit Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-bacs_debit
SWIFT_CLASS("_TtC14StripePayments25STPPaymentMethodBacsDebit")
@interface STPPaymentMethodBacsDebit : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// This payment method’s fingerprint.
@property (nonatomic, readonly, copy) NSString * _Nullable fingerprint;
/// The last four digits of the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The sort code of the bank account (eg 10-88-00)
@property (nonatomic, readonly, copy) NSString * _Nullable sortCode;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// The user’s bank account details.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/create#create_payment_method-bacs_debit
SWIFT_CLASS("_TtC14StripePayments31STPPaymentMethodBacsDebitParams")
@interface STPPaymentMethodBacsDebitParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The bank account number (eg 00012345)
@property (nonatomic, copy) NSString * _Nullable accountNumber;
/// The sort code of the bank account (eg 10-88-00)
@property (nonatomic, copy) NSString * _Nullable sortCode;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Bancontact Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/bancontact
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodBancontact")
@interface STPPaymentMethodBancontact : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a Bancontact Payment Method
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodBancontactParams")
@interface STPPaymentMethodBancontactParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Billing information associated with a <code>STPPaymentMethod</code> that may be used or required by particular types of payment methods.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-billing_details
SWIFT_CLASS("_TtC14StripePayments30STPPaymentMethodBillingDetails")
@interface STPPaymentMethodBillingDetails : NSObject <STPAPIResponseDecodable, STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Billing address.
@property (nonatomic, strong) STPPaymentMethodAddress * _Nullable address;
/// Email address.
@property (nonatomic, copy) NSString * _Nullable email;
/// Full name.
@property (nonatomic, copy) NSString * _Nullable name;
/// Billing phone number (including extension).
@property (nonatomic, copy) NSString * _Nullable phone;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end



/// A Boleto Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/boleto
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodBoleto")
@interface STPPaymentMethodBoleto : NSObject <STPAPIResponseDecodable>
/// The tax ID of the customer (CPF for individuals or CNPJ for businesses).
@property (nonatomic, readonly, copy) NSString * _Nonnull taxID;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a Boleto Payment Method
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodBoletoParams")
@interface STPPaymentMethodBoletoParams : NSObject <STPFormEncodable>
/// The tax ID of the customer (CPF for individuals or CNPJ for businesses).
/// Supported formats:
/// <ul>
///   <li>
///     <code>XXX.XXX.XXX-XX</code> or <code>XXXXXXXXXXX</code> for CPF
///   </li>
///   <li>
///     <code>XX.XXX.XXX/XXXX-XX</code> or <code>XXXXXXXXXXXXXX</code> for CNPJ
///   </li>
/// </ul>
@property (nonatomic, copy) NSString * _Nullable taxID;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

@class STPPaymentMethodCardChecks;
@class STPPaymentMethodCardNetworks;
@class STPPaymentMethodThreeDSecureUsage;
@class STPPaymentMethodCardWallet;

/// Contains details about a user’s credit card.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-card
SWIFT_CLASS("_TtC14StripePayments20STPPaymentMethodCard")
@interface STPPaymentMethodCard : NSObject <STPAPIResponseDecodable>
/// You cannot directly instantiate an <code>STPPaymentMethodCard</code>. You should only use one that is part of an existing <code>STPPaymentMethod</code> object.
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The issuer of the card.
@property (nonatomic, readonly) enum STPCardBrand brand;
/// Checks on Card address and CVC if provided.
@property (nonatomic, readonly, strong) STPPaymentMethodCardChecks * _Nullable checks;
/// Two-letter ISO code representing the country of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// Two-digit number representing the card’s expiration month.
@property (nonatomic, readonly) NSInteger expMonth;
/// Four-digit number representing the card’s expiration year.
@property (nonatomic, readonly) NSInteger expYear;
/// Card funding type. Can be credit, debit, prepaid, or unknown.
@property (nonatomic, readonly, copy) NSString * _Nullable funding;
/// The last four digits of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// Uniquely identifies this particular card number. You can use this attribute to check whether two customers who’ve signed up with you are using the same card number, for example.
@property (nonatomic, readonly, copy) NSString * _Nullable fingerprint;
/// Contains information about card networks that can be used to process the payment.
@property (nonatomic, readonly, strong) STPPaymentMethodCardNetworks * _Nullable networks;
/// Contains details on how this Card maybe be used for 3D Secure authentication.
@property (nonatomic, readonly, strong) STPPaymentMethodThreeDSecureUsage * _Nullable threeDSecureUsage;
/// If this Card is part of a Card Wallet, this contains the details of the Card Wallet.
@property (nonatomic, readonly, strong) STPPaymentMethodCardWallet * _Nullable wallet;
/// Returns a string representation for the provided card brand;
/// i.e. <code>STPPaymentMethodCard.string(from brand:.visa) == "Visa"</code>.
/// \param brand the brand you want to convert to a string
///
///
/// returns:
/// A string representing the brand, suitable for displaying to a user.
+ (NSString * _Nonnull)stringFromBrand:(enum STPCardBrand)brand SWIFT_WARN_UNUSED_RESULT;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
+ (enum STPCardBrand)brandFromString:(NSString * _Nonnull)string SWIFT_WARN_UNUSED_RESULT;
@end

/// The result of a check on a Card address or CVC.
typedef SWIFT_ENUM(NSInteger, STPPaymentMethodCardCheckResult, open) {
/// The check passed.
  STPPaymentMethodCardCheckResultPass = 0,
/// The check failed.
  STPPaymentMethodCardCheckResultFailed = 1,
/// The check is unavailable.
  STPPaymentMethodCardCheckResultUnavailable = 2,
/// The value was not checked.
  STPPaymentMethodCardCheckResultUnchecked = 3,
/// Represents an unknown or null value.
  STPPaymentMethodCardCheckResultUnknown = 4,
};


/// Checks on Card address and CVC.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-checks
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodCardChecks")
@interface STPPaymentMethodCardChecks : NSObject <STPAPIResponseDecodable>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// If a address line1 was provided, results of the check.
@property (nonatomic, readonly) enum STPPaymentMethodCardCheckResult addressLine1Check SWIFT_DEPRECATED_MSG("Card check values are no longer returned to clients using publishable keys. Retrieve them on your server using your secret key instead.");
/// If a address postal code was provided, results of the check.
/// deprecated Card check values are no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
@property (nonatomic, readonly) enum STPPaymentMethodCardCheckResult addressPostalCodeCheck SWIFT_DEPRECATED_MSG("Card check values are no longer returned to clients using publishable keys. Retrieve them on your server using your secret key instead.");
/// If a CVC was provided, results of the check.
/// deprecated Card check values are no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
@property (nonatomic, readonly) enum STPPaymentMethodCardCheckResult cvcCheck SWIFT_DEPRECATED_MSG("Card check values are no longer returned to clients using publishable keys. Retrieve them on your server using your secret key instead.");
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// <code>STPPaymentMethodCardNetworks</code> contains information about card networks that can be used to process a payment.
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodCardNetworks")
@interface STPPaymentMethodCardNetworks : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// All available networks for the card.
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull available;
/// The preferred network for the card if one exists.
@property (nonatomic, readonly, copy) NSString * _Nullable preferred;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


SWIFT_CLASS("_TtC14StripePayments34STPPaymentMethodCardNetworksParams")
@interface STPPaymentMethodCardNetworksParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The network that your user selected for this payment
/// method. This must reflect an explicit user choice. If your user didn’t
/// make a selection, then pass <code>null</code>.
@property (nonatomic, copy) NSString * _Nullable preferred;
- (nonnull instancetype)initWithPreferred:(NSString * _Nullable)preferred;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The user’s card details.
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodCardParams")
@interface STPPaymentMethodCardParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// A convenience initializer for creating a payment method from a card source.
/// This should be used to help with migrations to Payment Methods from Sources.
- (nonnull instancetype)initWithCardSourceParams:(STPCardParams * _Nonnull)cardSourceParams;
/// Initializes an empty STPPaymentMethodCardParams.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
/// The card number, as a string without any separators. Ex. @“4242424242424242”
@property (nonatomic, copy) NSString * _Nullable number;
/// Number representing the card’s expiration month. Ex. @1
@property (nonatomic, strong) NSNumber * _Nullable expMonth;
/// Two- or four-digit number representing the card’s expiration year.
@property (nonatomic, strong) NSNumber * _Nullable expYear;
/// For backwards compatibility, you can alternatively set this as a Stripe token (e.g., for apple pay)
@property (nonatomic, copy) NSString * _Nullable token;
/// Card security code. It is highly recommended to always include this value.
@property (nonatomic, copy) NSString * _Nullable cvc;
/// Information about the networks to use with this payment method.
@property (nonatomic, strong) STPPaymentMethodCardNetworksParams * _Nullable networks;
/// The last 4 digits of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)other SWIFT_WARN_UNUSED_RESULT;
@end


/// Details about the Card Present payment method
SWIFT_CLASS("_TtC14StripePayments27STPPaymentMethodCardPresent")
@interface STPPaymentMethodCardPresent : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

enum STPPaymentMethodCardWalletType : NSInteger;
@class STPPaymentMethodCardWalletMasterpass;
@class STPPaymentMethodCardWalletVisaCheckout;

/// A Card Wallet.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-wallet
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodCardWallet")
@interface STPPaymentMethodCardWallet : NSObject <STPAPIResponseDecodable>
/// The type of the Card Wallet. A matching property is populated if the type is <code>STPPaymentMethodCardWalletTypeMasterpass</code> or <code>STPPaymentMethodCardWalletTypeVisaCheckout</code> containing additional information specific to the Card Wallet type.
@property (nonatomic, readonly) enum STPPaymentMethodCardWalletType type;
/// Contains additional Masterpass information, if the type of the Card Wallet is <code>STPPaymentMethodCardWalletTypeMasterpass</code>
@property (nonatomic, readonly, strong) STPPaymentMethodCardWalletMasterpass * _Nullable masterpass;
/// Contains additional Visa Checkout information, if the type of the Card Wallet is <code>STPPaymentMethodCardWalletTypeVisaCheckout</code>
@property (nonatomic, readonly, strong) STPPaymentMethodCardWalletVisaCheckout * _Nullable visaCheckout;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end



/// A Masterpass Card Wallet
/// seealso:
/// https://stripe.com/docs/masterpass
SWIFT_CLASS("_TtC14StripePayments36STPPaymentMethodCardWalletMasterpass")
@interface STPPaymentMethodCardWalletMasterpass : NSObject <STPAPIResponseDecodable>
/// Owner’s verified email. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, copy) NSString * _Nullable email;
/// Owner’s verified email. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// Owner’s verified billing address. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, strong) STPPaymentMethodAddress * _Nullable billingAddress;
/// Owner’s verified shipping address. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, strong) STPPaymentMethodAddress * _Nullable shippingAddress;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// The type of Card Wallet.
typedef SWIFT_ENUM(NSInteger, STPPaymentMethodCardWalletType, open) {
/// Amex Express Checkout
  STPPaymentMethodCardWalletTypeAmexExpressCheckout = 0,
/// Apple Pay
  STPPaymentMethodCardWalletTypeApplePay = 1,
/// Google Pay
  STPPaymentMethodCardWalletTypeGooglePay = 2,
/// Masterpass
  STPPaymentMethodCardWalletTypeMasterpass = 3,
/// Samsung Pay
  STPPaymentMethodCardWalletTypeSamsungPay = 4,
/// Visa Checkout
  STPPaymentMethodCardWalletTypeVisaCheckout = 5,
/// An unknown Card Wallet type.
  STPPaymentMethodCardWalletTypeUnknown = 6,
};


/// A Visa Checkout Card Wallet
/// seealso:
/// https://stripe.com/docs/visa-checkout
SWIFT_CLASS("_TtC14StripePayments38STPPaymentMethodCardWalletVisaCheckout")
@interface STPPaymentMethodCardWalletVisaCheckout : NSObject <STPAPIResponseDecodable>
/// Owner’s verified email. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, copy) NSString * _Nullable email;
/// Owner’s verified email. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// Owner’s verified billing address. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, strong) STPPaymentMethodAddress * _Nullable billingAddress;
/// Owner’s verified shipping address. Values are verified or provided by the payment method directly (and if supported) at the time of authorization or settlement.
@property (nonatomic, readonly, strong) STPPaymentMethodAddress * _Nullable shippingAddress;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// The CashApp Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/cash-app-pay
SWIFT_CLASS("_TtC14StripePayments23STPPaymentMethodCashApp")
@interface STPPaymentMethodCashApp : NSObject
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a CashApp Payment Method
SWIFT_CLASS("_TtC14StripePayments29STPPaymentMethodCashAppParams")
@interface STPPaymentMethodCashAppParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// An EPS Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-eps
SWIFT_CLASS("_TtC14StripePayments19STPPaymentMethodEPS")
@interface STPPaymentMethodEPS : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a EPS Payment Method
SWIFT_CLASS("_TtC14StripePayments25STPPaymentMethodEPSParams")
@interface STPPaymentMethodEPSParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// An FPX Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-fpx
SWIFT_CLASS("_TtC14StripePayments19STPPaymentMethodFPX")
@interface STPPaymentMethodFPX : NSObject <STPAPIResponseDecodable>
/// The customer’s bank identifier code.
@property (nonatomic, readonly, copy) NSString * _Nullable bankIdentifierCode;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create an FPX Payment Method
SWIFT_CLASS("_TtC14StripePayments25STPPaymentMethodFPXParams")
@interface STPPaymentMethodFPXParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The customer’s bank. Required.
@property (nonatomic) enum STPFPXBankBrand bank;
/// The raw underlying bank string sent to the server.
/// Generally you should use <code>bank</code> instead unless you have a reason not to.
/// You can use this if you want to create a param of a bank not yet supported
/// by the current version of the SDK’s <code>STPFPXBankBrand</code> enum.
/// Setting this to a value not known by the SDK causes <code>bank</code> to
/// return <code>STPFPXBankBrandUnknown</code>
@property (nonatomic, copy) NSString * _Nullable rawBankString;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A giropay Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-giropay
SWIFT_CLASS("_TtC14StripePayments23STPPaymentMethodGiropay")
@interface STPPaymentMethodGiropay : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a giropay Payment Method
SWIFT_CLASS("_TtC14StripePayments29STPPaymentMethodGiropayParams")
@interface STPPaymentMethodGiropayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A GrabPay PaymentMethod
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-grabpay
SWIFT_CLASS("_TtC14StripePayments23STPPaymentMethodGrabPay")
@interface STPPaymentMethodGrabPay : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a GrabPay Payment Method
SWIFT_CLASS("_TtC14StripePayments29STPPaymentMethodGrabPayParams")
@interface STPPaymentMethodGrabPayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The Klarna Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/klarna
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodKlarna")
@interface STPPaymentMethodKlarna : NSObject <STPAPIResponseDecodable>
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an Klarna Payment Method
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodKlarnaParams")
@interface STPPaymentMethodKlarnaParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Link Payment Method.
SWIFT_CLASS("_TtC14StripePayments20STPPaymentMethodLink")
@interface STPPaymentMethodLink : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create an Link Payment Method
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodLinkParams")
@interface STPPaymentMethodLinkParams : NSObject <STPFormEncodable>
/// :nodoc:
@property (nonatomic, copy) NSString * _Nullable paymentDetailsID;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nullable credentials;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Deserializes the response returned from https://stripe.com/docs/api/payment_methods/list
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodListDeserializer")
@interface STPPaymentMethodListDeserializer : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create a MobilePay Payment Method
SWIFT_CLASS("_TtC14StripePayments31STPPaymentMethodMobilePayParams")
@interface STPPaymentMethodMobilePayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A NetBanking Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-netbanking
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodNetBanking")
@interface STPPaymentMethodNetBanking : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// Customer’s Bank Name
@property (nonatomic, readonly, copy) NSString * _Nonnull bank;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a NetBanking Payment Method
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodNetBankingParams")
@interface STPPaymentMethodNetBankingParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Customer’s Bank Name. Required.
@property (nonatomic, copy) NSString * _Nullable bank;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// An OXXO Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/oxxo
SWIFT_CLASS("_TtC14StripePayments20STPPaymentMethodOXXO")
@interface STPPaymentMethodOXXO : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create an OXXO Payment Method
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodOXXOParams")
@interface STPPaymentMethodOXXOParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


SWIFT_CLASS("_TtC14StripePayments23STPPaymentMethodOptions")
@interface STPPaymentMethodOptions : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentMethodOptions (SWIFT_EXTENSION(StripePayments))
@end


@class STPPaymentMethodiDEALParams;
@class STPPaymentMethodSEPADebitParams;
@class STPPaymentMethodPayPalParams;
@class STPPaymentMethodPrzelewy24Params;
@class STPPaymentMethodSofortParams;
@class STPPaymentMethodUPIParams;
@class STPPaymentMethodUSBankAccountParams;
@class STPPaymentMethodRevolutPayParams;
@class STPPaymentMethodSwishParams;

/// An object representing parameters used to create a PaymentMethod object.
/// @note To create a PaymentMethod from an Apple Pay PKPaymentToken, see <code>STPAPIClient createPaymentMethodWithPayment:completion:</code>
/// seealso:
/// https://stripe.com/docs/api/payment_methods/create
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodParams")
@interface STPPaymentMethodParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The type of payment method.  The associated property will contain additional information (e.g. <code>type == STPPaymentMethodTypeCard</code> means <code>card</code> should also be populated).
@property (nonatomic) enum STPPaymentMethodType type;
/// The raw underlying type string sent to the server.
/// Generally you should use <code>type</code> instead unless you have a reason not to.
/// You can use this if you want to create a param of a type not yet supported
/// by the current version of the SDK’s <code>STPPaymentMethodType</code> enum.
/// Setting this to a value not known by the SDK causes <code>type</code> to
/// return <code>STPPaymentMethodTypeUnknown</code>
@property (nonatomic, copy) NSString * _Nullable rawTypeString;
/// Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods.
@property (nonatomic, strong) STPPaymentMethodBillingDetails * _Nullable billingDetails;
/// If this is a card PaymentMethod, this contains the user’s card details.
@property (nonatomic, strong) STPPaymentMethodCardParams * _Nullable card;
/// If this is an Alipay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodAlipayParams * _Nullable alipay;
/// If this is a iDEAL PaymentMethod, this contains details about user’s bank.
@property (nonatomic, strong) STPPaymentMethodiDEALParams * _Nullable iDEAL;
/// If this is a FPX PaymentMethod, this contains details about user’s bank.
@property (nonatomic, strong) STPPaymentMethodFPXParams * _Nullable fpx;
/// If this is a SEPA Debit PaymentMethod, this contains details about the bank to debit.
@property (nonatomic, strong) STPPaymentMethodSEPADebitParams * _Nullable sepaDebit;
/// If this is a Bacs Debit PaymentMethod, this contains details about the bank account to debit.
@property (nonatomic, strong) STPPaymentMethodBacsDebitParams * _Nullable bacsDebit;
/// If this is an AU BECS Debit PaymentMethod, this contains details about the bank to debit.
@property (nonatomic, strong) STPPaymentMethodAUBECSDebitParams * _Nullable auBECSDebit;
/// If this is a giropay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodGiropayParams * _Nullable giropay;
/// If this is a PayPal PaymentMethod, this contains additional details. :nodoc:
@property (nonatomic, strong) STPPaymentMethodPayPalParams * _Nullable payPal;
/// If this is a Przelewy24 PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodPrzelewy24Params * _Nullable przelewy24;
/// If this is an EPS PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodEPSParams * _Nullable eps;
/// If this is a Bancontact PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodBancontactParams * _Nullable bancontact;
/// If this is a NetBanking PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodNetBankingParams * _Nullable netBanking;
/// If this is an OXXO PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodOXXOParams * _Nullable oxxo;
/// If this is a Sofort PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodSofortParams * _Nullable sofort;
/// If this is a UPI PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodUPIParams * _Nullable upi;
/// If this is a GrabPay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodGrabPayParams * _Nullable grabPay;
/// If this is a Afterpay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodAfterpayClearpayParams * _Nullable afterpayClearpay;
/// If this is a BLIK PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodBLIKParams * _Nullable blik;
/// If this is an Boleto PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodBoletoParams * _Nullable boleto;
/// If this is a Link PaymentMethod, this contains additional details
@property (nonatomic, strong) STPPaymentMethodLinkParams * _Nullable link;
/// If this is an Klarna PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodKlarnaParams * _Nullable klarna;
/// If this is an Affirm PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodAffirmParams * _Nullable affirm;
/// If this is a US Bank Account PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodUSBankAccountParams * _Nullable usBankAccount;
/// If this is a Cash App PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodCashAppParams * _Nullable cashApp;
/// If this is a RevolutPay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodRevolutPayParams * _Nullable revolutPay;
/// If this is a Swish PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodSwishParams * _Nullable swish;
/// If this is a MobilePay PaymentMethod, this contains additional details.
@property (nonatomic, strong) STPPaymentMethodMobilePayParams * _Nullable mobilePay;
/// Set of key-value pairs that you can attach to the PaymentMethod. This can be useful for storing additional information about the PaymentMethod in a structured format.
@property (nonatomic, copy) NSDictionary<NSString *, NSString *> * _Nullable metadata;
/// Creates params for a card PaymentMethod.
/// \param card An object containing the user’s card details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithCard:(STPPaymentMethodCardParams * _Nonnull)card billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an iDEAL PaymentMethod.
/// \param iDEAL An object containing the user’s iDEAL bank details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithIDEAL:(STPPaymentMethodiDEALParams * _Nonnull)iDEAL billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an FPX PaymentMethod.
/// \param fpx An object containing the user’s FPX bank details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithFpx:(STPPaymentMethodFPXParams * _Nonnull)fpx billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a SEPA Debit PaymentMethod;
/// \param sepaDebit An object containing the SEPA bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for SEPA Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithSepaDebit:(STPPaymentMethodSEPADebitParams * _Nonnull)sepaDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a Bacs Debit PaymentMethod;
/// \param bacsDebit An object containing the Bacs bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that name, email, and address are required for Bacs Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithBacsDebit:(STPPaymentMethodBacsDebitParams * _Nonnull)bacsDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an AU BECS Debit PaymentMethod;
/// \param auBECSDebit An object containing the AU BECS bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> and <code>billingDetails.email</code> are required for AU BECS Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithAubecsDebit:(STPPaymentMethodAUBECSDebitParams * _Nonnull)auBECSDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a giropay PaymentMethod;
/// \param giropay An object containing additional giropay details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for giropay PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithGiropay:(STPPaymentMethodGiropayParams * _Nonnull)giropay billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an EPS PaymentMethod;
/// \param eps An object containing additional EPS details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for EPS PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithEps:(STPPaymentMethodEPSParams * _Nonnull)eps billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a Przelewy24 PaymentMethod;
/// \param przelewy24 An object containing additional Przelewy24 details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.email</code> is required for Przelewy24 PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithPrzelewy24:(STPPaymentMethodPrzelewy24Params * _Nonnull)przelewy24 billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a Bancontact PaymentMethod;
/// \param bancontact An object containing additional Bancontact details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for Bancontact PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithBancontact:(STPPaymentMethodBancontactParams * _Nonnull)bancontact billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a NetBanking PaymentMethod;
/// \param netBanking An object containing additional NetBanking details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithNetBanking:(STPPaymentMethodNetBankingParams * _Nonnull)netBanking billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a GrabPay PaymentMethod;
/// \param grabPay An object containing additional GrabPay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithGrabPay:(STPPaymentMethodGrabPayParams * _Nonnull)grabPay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an OXXO PaymentMethod;
/// \param oxxo An object containing additional OXXO details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithOxxo:(STPPaymentMethodOXXOParams * _Nonnull)oxxo billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a Sofort PaymentMethod;
/// \param sofort An object containing additional Sofort details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> and <code>billingDetails.email</code> are required to save bank details from a Sofort payment.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithSofort:(STPPaymentMethodSofortParams * _Nonnull)sofort billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a UPI PaymentMethod;
/// \param upi An object containing additional UPI details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithUpi:(STPPaymentMethodUPIParams * _Nonnull)upi billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an Alipay PaymentMethod.
/// \param alipay An object containing additional Alipay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithAlipay:(STPPaymentMethodAlipayParams * _Nonnull)alipay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a PayPal PaymentMethod. :nodoc:
/// \param payPal An object containing additional PayPal details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithPayPal:(STPPaymentMethodPayPalParams * _Nonnull)payPal billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an AfterpayClearpay PaymentMethod. :nodoc:
/// \param afterpayClearpay An object containing additional AfterpayClearpay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithAfterpayClearpay:(STPPaymentMethodAfterpayClearpayParams * _Nonnull)afterpayClearpay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a BLIK PaymentMethod.
/// \param blik An object containing additional BLIK details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithBlik:(STPPaymentMethodBLIKParams * _Nonnull)blik billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an Boleto PaymentMethod;
/// \param boleto An object containing additional Boleto details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithBoleto:(STPPaymentMethodBoletoParams * _Nonnull)boleto billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an Klarna PaymentMethod. :nodoc:
/// \param klarna An object containing additional Klarna details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithKlarna:(STPPaymentMethodKlarnaParams * _Nonnull)klarna billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an Affirm PaymentMethod. :nodoc:
/// \param affirm An object containing additional Affirm details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithAffirm:(STPPaymentMethodAffirmParams * _Nonnull)affirm metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a US Bank Account Payment Method
/// \param usBankAccount An object containing additional US bank account details
///
/// \param billingDetails An object containing the user’s billing details. Name is required for US Bank Accounts
///
/// \param metadata Additional information to attach to the PaymentMethod
///
- (nonnull instancetype)initWithUsBankAccount:(STPPaymentMethodUSBankAccountParams * _Nonnull)usBankAccount billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an Cash App PaymentMethod.
/// \param cashApp An object containing additional Cash App details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithCashApp:(STPPaymentMethodCashAppParams * _Nonnull)cashApp billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for an RevolutPay PaymentMethod.
/// \param revolutPay An object containing additional RevolutPay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithRevolutPay:(STPPaymentMethodRevolutPayParams * _Nonnull)revolutPay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a Swish PaymentMethod.
/// \param swish An object containing additional Swish details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithSwish:(STPPaymentMethodSwishParams * _Nonnull)swish billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params for a MobilePay PaymentMethod.
/// \param mobilePay An object containing additional MobilePay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
- (nonnull instancetype)initWithMobilePay:(STPPaymentMethodMobilePayParams * _Nonnull)mobilePay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata;
/// Creates params from a single-use PaymentMethod. This is useful for recreating a new payment method
/// with similar settings. It will return nil if used with a reusable PaymentMethod.
/// \param paymentMethod An object containing the original single-use PaymentMethod.
///
- (nullable instancetype)initWithSingleUsePaymentMethod:(STPPaymentMethod * _Nonnull)paymentMethod;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end



@interface STPPaymentMethodParams (SWIFT_EXTENSION(StripePayments))
@property (nonatomic, readonly, copy) NSString * _Nonnull label;
@end


@interface STPPaymentMethodParams (SWIFT_EXTENSION(StripePayments))
/// Creates params for a card PaymentMethod.
/// \param card An object containing the user’s card details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithCard:(STPPaymentMethodCardParams * _Nonnull)card billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an iDEAL PaymentMethod.
/// \param iDEAL An object containing the user’s iDEAL bank details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithiDEAL:(STPPaymentMethodiDEALParams * _Nonnull)iDEAL billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an FPX PaymentMethod.
/// \param fpx An object containing the user’s FPX bank details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithFPX:(STPPaymentMethodFPXParams * _Nonnull)fpx billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a SEPA Debit PaymentMethod;
/// \param sepaDebit An object containing the SEPA bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for SEPA Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithSEPADebit:(STPPaymentMethodSEPADebitParams * _Nonnull)sepaDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Bacs Debit PaymentMethod;
/// \param bacsDebit An object containing the Bacs bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that name, email, and address are required for Bacs Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithBacsDebit:(STPPaymentMethodBacsDebitParams * _Nonnull)bacsDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an AU BECS Debit PaymentMethod;
/// \param auBECSDebit An object containing the AU BECS bank debit details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> and <code>billingDetails.email</code> are required for AU BECS Debit PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithAUBECSDebit:(STPPaymentMethodAUBECSDebitParams * _Nonnull)auBECSDebit billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a giropay PaymentMethod;
/// \param giropay An object containing additional giropay details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for giropay PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithGiropay:(STPPaymentMethodGiropayParams * _Nonnull)giropay billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an EPS PaymentMethod;
/// \param eps An object containing additional EPS details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for EPS PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithEPS:(STPPaymentMethodEPSParams * _Nonnull)eps billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Przelewy24 PaymentMethod;
/// \param przelewy24 An object containing additional Przelewy24 details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.email</code> is required for Przelewy24 PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithPrzelewy24:(STPPaymentMethodPrzelewy24Params * _Nonnull)przelewy24 billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Bancontact PaymentMethod;
/// \param bancontact An object containing additional Bancontact details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for Bancontact PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithBancontact:(STPPaymentMethodBancontactParams * _Nonnull)bancontact billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a NetBanking PaymentMethod;
/// \param netBanking An object containing additional NetBanking details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for Bancontact PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithNetBanking:(STPPaymentMethodNetBankingParams * _Nonnull)netBanking billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an OXXO PaymentMethod;
/// \param oxxo An object containing additional OXXO details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> is required for OXXO PaymentMethods.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithOXXO:(STPPaymentMethodOXXOParams * _Nonnull)oxxo billingDetails:(STPPaymentMethodBillingDetails * _Nonnull)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a GrabPay PaymentMethod;
/// \param grabPay An object containing additional GrabPay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithGrabPay:(STPPaymentMethodGrabPayParams * _Nonnull)grabPay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Sofort PaymentMethod;
/// \param sofort An object containing additional Sofort details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> and <code>billingDetails.email</code> are required to save bank details from a Sofort payment.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithSofort:(STPPaymentMethodSofortParams * _Nonnull)sofort billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a UPI PaymentMethod;
/// \param upi An object containing additional UPI details.
///
/// \param billingDetails An object containing the user’s billing details. Note that <code>billingDetails.name</code> and <code>billingDetails.email</code> are required to save bank details from a UPI payment.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithUPI:(STPPaymentMethodUPIParams * _Nonnull)upi billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an Alipay PaymentMethod.
/// \param alipay An object containing additional Alipay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithAlipay:(STPPaymentMethodAlipayParams * _Nonnull)alipay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a PayPal PaymentMethod.
/// \param payPal An object containing additional PayPal details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithPayPal:(STPPaymentMethodPayPalParams * _Nonnull)payPal billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an AfterpayClearpay PaymentMethod.
/// \param afterpayClearpay An object containing additional AfterpayClearpay details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithAfterpayClearpay:(STPPaymentMethodAfterpayClearpayParams * _Nonnull)afterpayClearpay billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a BLIK PaymentMethod.
/// \param blik An object containing additional BLIK details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithBLIK:(STPPaymentMethodBLIKParams * _Nonnull)blik billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an Klarna PaymentMethod.
/// \param klarna An object containing additional Klarna details.
///
/// \param billingDetails An object containing the user’s billing details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithKlarna:(STPPaymentMethodKlarnaParams * _Nonnull)klarna billingDetails:(STPPaymentMethodBillingDetails * _Nullable)billingDetails metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an Affirm PaymentMethod.
/// \param affirm An object containing additional Affirm details.
///
/// \param metadata Additional information to attach to the PaymentMethod.
///
+ (STPPaymentMethodParams * _Nonnull)paramsWithAffirm:(STPPaymentMethodAffirmParams * _Nonnull)affirm metadata:(NSDictionary<NSString *, NSString *> * _Nullable)metadata SWIFT_WARN_UNUSED_RESULT;
@end


/// A PayPal Payment Method. :nodoc:
/// seealso:
/// https://stripe.com/docs/payments/paypal
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodPayPal")
@interface STPPaymentMethodPayPal : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a PayPal Payment Method :nodoc:
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodPayPalParams")
@interface STPPaymentMethodPayPalParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Przelewy24 Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/p24
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodPrzelewy24")
@interface STPPaymentMethodPrzelewy24 : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a Przelewy24 Payment Method
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodPrzelewy24Params")
@interface STPPaymentMethodPrzelewy24Params : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The RevolutPay Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/revolut-pay
SWIFT_CLASS("_TtC14StripePayments26STPPaymentMethodRevolutPay")
@interface STPPaymentMethodRevolutPay : NSObject
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a RevolutPay Payment Method
SWIFT_CLASS("_TtC14StripePayments32STPPaymentMethodRevolutPayParams")
@interface STPPaymentMethodRevolutPayParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A SEPA Debit Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-sepa_debit
SWIFT_CLASS("_TtC14StripePayments25STPPaymentMethodSEPADebit")
@interface STPPaymentMethodSEPADebit : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// The last 4 digits of the account number.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The account’s bank code.
@property (nonatomic, readonly, copy) NSString * _Nullable bankCode;
/// The account’s branch code
@property (nonatomic, readonly, copy) NSString * _Nullable branchCode;
/// Two-letter ISO code representing the country of the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// The account’s fingerprint.
@property (nonatomic, readonly, copy) NSString * _Nullable fingerprint;
/// The reference of the mandate accepted by your customer. - seealso: https://stripe.com/docs/api/sources/create#create_source-mandate
@property (nonatomic, readonly, copy) NSString * _Nullable mandate;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a SEPA Debit Payment Method
SWIFT_CLASS("_TtC14StripePayments31STPPaymentMethodSEPADebitParams")
@interface STPPaymentMethodSEPADebitParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The IBAN number for the bank account you wish to debit. Required.
@property (nonatomic, copy) NSString * _Nullable iban;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Sofort Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-Sofort
SWIFT_CLASS("_TtC14StripePayments22STPPaymentMethodSofort")
@interface STPPaymentMethodSofort : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// Two-letter ISO code representing the country the bank account is located in.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a Sofort Payment Method
SWIFT_CLASS("_TtC14StripePayments28STPPaymentMethodSofortParams")
@interface STPPaymentMethodSofortParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Two-letter ISO code representing the country the bank account is located in. Required.
@property (nonatomic, copy) NSString * _Nullable country;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A Swish Payment Method.
/// seealso:
/// https://stripe.com/docs/payments/swish
SWIFT_CLASS("_TtC14StripePayments21STPPaymentMethodSwish")
@interface STPPaymentMethodSwish : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create a Swish Payment Method
SWIFT_CLASS("_TtC14StripePayments27STPPaymentMethodSwishParams")
@interface STPPaymentMethodSwishParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// Contains details on how an <code>STPPaymentMethodCard</code> maybe be used for 3D Secure authentication.
SWIFT_CLASS("_TtC14StripePayments33STPPaymentMethodThreeDSecureUsage")
@interface STPPaymentMethodThreeDSecureUsage : NSObject <STPAPIResponseDecodable>
/// <code>YES</code> if 3D Secure is supported on this card.
@property (nonatomic, readonly) BOOL supported;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// The type of the PaymentMethod.
typedef SWIFT_ENUM(NSInteger, STPPaymentMethodType, open) {
/// A card payment method.
  STPPaymentMethodTypeCard = 0,
/// An Alipay payment method.
  STPPaymentMethodTypeAlipay = 1,
/// A GrabPay payment method.
  STPPaymentMethodTypeGrabPay = 2,
/// An iDEAL payment method.
  STPPaymentMethodTypeiDEAL SWIFT_COMPILE_NAME("iDEAL") = 3,
/// An FPX payment method.
  STPPaymentMethodTypeFPX = 4,
/// A card present payment method.
  STPPaymentMethodTypeCardPresent = 5,
/// A SEPA Debit payment method.
  STPPaymentMethodTypeSEPADebit SWIFT_COMPILE_NAME("SEPADebit") = 6,
/// An AU BECS Debit payment method.
  STPPaymentMethodTypeAUBECSDebit SWIFT_COMPILE_NAME("AUBECSDebit") = 7,
/// A Bacs Debit payment method.
  STPPaymentMethodTypeBacsDebit = 8,
/// A giropay payment method.
  STPPaymentMethodTypeGiropay = 9,
/// A Przelewy24 Debit payment method.
  STPPaymentMethodTypePrzelewy24 = 10,
/// An EPS payment method.
  STPPaymentMethodTypeEPS SWIFT_COMPILE_NAME("EPS") = 11,
/// A Bancontact payment method.
  STPPaymentMethodTypeBancontact = 12,
/// A NetBanking payment method.
  STPPaymentMethodTypeNetBanking = 13,
/// An OXXO payment method.
  STPPaymentMethodTypeOXXO SWIFT_COMPILE_NAME("OXXO") = 14,
/// A Sofort payment method.
  STPPaymentMethodTypeSofort = 15,
/// A UPI payment method.
  STPPaymentMethodTypeUPI = 16,
/// A PayPal payment method. :nodoc:
  STPPaymentMethodTypePayPal = 17,
/// An AfterpayClearpay payment method
  STPPaymentMethodTypeAfterpayClearpay = 18,
/// A BLIK payment method
  STPPaymentMethodTypeBLIK SWIFT_COMPILE_NAME("blik") = 19,
/// A WeChat Pay payment method
  STPPaymentMethodTypeWeChatPay = 20,
/// A Boleto payment method.
  STPPaymentMethodTypeBoleto = 21,
/// A Link payment method
  STPPaymentMethodTypeLink = 22,
/// A Klarna payment method.
  STPPaymentMethodTypeKlarna = 23,
/// A Link Instant Debit payment method
  STPPaymentMethodTypeLinkInstantDebit = 24,
/// An Affirm payment method
  STPPaymentMethodTypeAffirm = 25,
/// A US Bank Account payment method (ACH)
  STPPaymentMethodTypeUSBankAccount = 26,
/// A CashApp payment method
  STPPaymentMethodTypeCashApp = 27,
/// A PayNow payment method
  STPPaymentMethodTypePaynow = 28,
/// A Zip payment method
  STPPaymentMethodTypeZip = 29,
/// A RevolutPay payment method
  STPPaymentMethodTypeRevolutPay = 30,
/// An AmazonPay payment method
  STPPaymentMethodTypeAmazonPay = 31,
/// An Alma payment method
  STPPaymentMethodTypeAlma = 32,
/// A MobilePay payment method
  STPPaymentMethodTypeMobilePay = 33,
/// A Konbini payment method
  STPPaymentMethodTypeKonbini = 34,
/// A PromptPay payment method
  STPPaymentMethodTypePromptPay = 35,
/// A Swish payment method
  STPPaymentMethodTypeSwish = 36,
/// An unknown type.
  STPPaymentMethodTypeUnknown = 37,
};


/// A UPI Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-upi
SWIFT_CLASS("_TtC14StripePayments19STPPaymentMethodUPI")
@interface STPPaymentMethodUPI : NSObject <STPAPIResponseDecodable>
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// Customer’s Virtual Payment Address (VPA).
@property (nonatomic, readonly, copy) NSString * _Nonnull vpa;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a UPI Payment Method
SWIFT_CLASS("_TtC14StripePayments25STPPaymentMethodUPIParams")
@interface STPPaymentMethodUPIParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Customer’s Virtual Payment Address (VPA). Required.
@property (nonatomic, copy) NSString * _Nullable vpa;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum STPPaymentMethodUSBankAccountHolderType : NSInteger;
enum STPPaymentMethodUSBankAccountType : NSInteger;
@class STPPaymentMethodUSBankAccountNetworks;

/// A US Bank Account Payment Method (ACH)
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-us_bank_account
SWIFT_CLASS("_TtC14StripePayments29STPPaymentMethodUSBankAccount")
@interface STPPaymentMethodUSBankAccount : NSObject
/// Account holder type
@property (nonatomic, readonly) enum STPPaymentMethodUSBankAccountHolderType accountHolderType;
/// Account type
@property (nonatomic, readonly) enum STPPaymentMethodUSBankAccountType accountType;
/// The name of the bank
@property (nonatomic, readonly, copy) NSString * _Nonnull bankName;
/// Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
@property (nonatomic, readonly, copy) NSString * _Nonnull fingerprint;
/// Last four digits of the bank account number
@property (nonatomic, readonly, copy) NSString * _Nonnull last4;
/// The token of the Linked Account used to create the payment method
@property (nonatomic, readonly, copy) NSString * _Nullable linkedAccount;
/// Contains information about US bank account networks that can be used
@property (nonatomic, readonly, strong) STPPaymentMethodUSBankAccountNetworks * _Nullable networks;
/// Routing number of the bank account
@property (nonatomic, readonly, copy) NSString * _Nonnull routingNumber;
/// :nodoc:
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPPaymentMethodUSBankAccount (SWIFT_EXTENSION(StripePayments)) <STPAPIResponseDecodable>
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// Account holder type
typedef SWIFT_ENUM(NSInteger, STPPaymentMethodUSBankAccountHolderType, open) {
/// This is an unknown type that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>allResponseFields</code>
/// for custom handling.
  STPPaymentMethodUSBankAccountHolderTypeUnknown = 0,
/// Account belongs to an individual
  STPPaymentMethodUSBankAccountHolderTypeIndividual = 1,
/// Account belongs to a company
  STPPaymentMethodUSBankAccountHolderTypeCompany = 2,
};


/// Contains information about US bank account networks that can be used
SWIFT_CLASS("_TtC14StripePayments37STPPaymentMethodUSBankAccountNetworks")
@interface STPPaymentMethodUSBankAccountNetworks : NSObject
/// The preferred network
@property (nonatomic, readonly, copy) NSString * _Nullable preferred;
/// All supported networks
@property (nonatomic, readonly, copy) NSArray<NSString *> * _Nonnull supported;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters used to create a US Bank Account Payment Method
SWIFT_CLASS("_TtC14StripePayments35STPPaymentMethodUSBankAccountParams")
@interface STPPaymentMethodUSBankAccountParams : NSObject
/// The raw underlying account holder type string sent to the server.
/// You can use this if you want to create a param of a bank not yet supported
/// by the current version of the SDK’s <code>STPPaymentMethodUSBankAccountHolderType</code> enum.
/// Setting this to a value not known by the SDK causes <code>accountHolderType</code> to
/// return <code>.unknown</code>
@property (nonatomic, copy) NSString * _Nullable accountHolderTypeString;
/// Account holder type
@property (nonatomic) enum STPPaymentMethodUSBankAccountHolderType accountHolderType;
/// Account number of the bank account
@property (nonatomic, copy) NSString * _Nullable accountNumber;
/// The raw underlying account type string sent to the server.
/// You can use this if you want to create a param of a type not yet supported
/// by the current version of the SDK’s <code>STPPaymentMethodUSBankAccountType</code> enum.
/// Setting this to a value not known by the SDK causes <code>accountType</code> to
/// return <code>.unknown</code>
@property (nonatomic, copy) NSString * _Nullable accountTypeString;
/// Account type
@property (nonatomic) enum STPPaymentMethodUSBankAccountType accountType;
/// Routing number of the bank account
@property (nonatomic, copy) NSString * _Nullable routingNumber;
/// :nodoc:
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Internal-only option to create directly from a link_account_session ID
@property (nonatomic, copy) NSString * _Nullable linkAccountSessionID;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPPaymentMethodUSBankAccountParams (SWIFT_EXTENSION(StripePayments)) <STPFormEncodable>
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end

/// Account type
typedef SWIFT_ENUM(NSInteger, STPPaymentMethodUSBankAccountType, open) {
/// This is an unknown type that’s been added since the SDK
/// was last updated.
/// Update your SDK, or use the <code>allResponseFields</code>
/// for custom handling.
  STPPaymentMethodUSBankAccountTypeUnknown = 0,
/// Bank account type is checking
  STPPaymentMethodUSBankAccountTypeChecking = 1,
/// Bank account type is savings
  STPPaymentMethodUSBankAccountTypeSavings = 2,
};


/// An iDEAL Payment Method.
/// seealso:
/// https://stripe.com/docs/api/payment_methods/object#payment_method_object-ideal
SWIFT_CLASS("_TtC14StripePayments21STPPaymentMethodiDEAL")
@interface STPPaymentMethodiDEAL : NSObject <STPAPIResponseDecodable>
/// The customer’s bank.
@property (nonatomic, readonly, copy) NSString * _Nullable bankName;
/// The Bank Identifier Code of the customer’s bank.
@property (nonatomic, readonly, copy) NSString * _Nullable bankIdentifierCode;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create an iDEAL Payment Method
SWIFT_CLASS("_TtC14StripePayments27STPPaymentMethodiDEALParams")
@interface STPPaymentMethodiDEALParams : NSObject <STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The customer’s bank.
@property (nonatomic, copy) NSString * _Nullable bankName;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

/// An enum representing the status of a payment requested from the user.
typedef SWIFT_ENUM(NSInteger, STPPaymentStatus, open) {
/// The payment succeeded.
  STPPaymentStatusSuccess = 0,
/// The payment failed due to an unforeseen error, such as the user’s Internet connection being offline.
  STPPaymentStatusError = 1,
/// The user cancelled the payment (for example, by hitting “cancel” in the Apple Pay dialog).
  STPPaymentStatusUserCancellation = 2,
};

/// An enum representing the success and error states of PIN management
typedef SWIFT_ENUM(NSInteger, STPPinStatus, open) {
/// The verification object was already redeemed
  STPPinStatusSuccess = 0,
/// The verification object was already redeemed
  STPPinStatusErrorVerificationAlreadyRedeemed = 1,
/// The one-time code was incorrect
  STPPinStatusErrorVerificationCodeIncorrect = 2,
/// The verification object was expired
  STPPinStatusErrorVerificationExpired = 3,
/// The verification object has been attempted too many times
  STPPinStatusErrorVerificationTooManyAttempts = 4,
/// An error occured while retrieving the ephemeral key
  STPPinStatusEphemeralKeyError = 5,
/// An unknown error occured
  STPPinStatusUnknownError = 6,
};


/// A <a href="https://stripe.com/docs/radar/radar-session">Radar Session</a>.
/// note:
/// This API and the guide linked above require special permissions to use. Contact support@stripe.com if you’re interested.
SWIFT_CLASS("_TtC14StripePayments15STPRadarSession")
@interface STPRadarSession : NSObject <STPAPIResponseDecodable>
/// The Stripe identifier of the RadarSession
@property (nonatomic, readonly, copy) NSString * _Nonnull id;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (STPRadarSession * _Nullable)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum STPRedirectContextState : NSInteger;
@class UIPresentationController;

/// This is a helper class for handling redirects associated with STPSource and
/// STPPaymentIntents.
/// Init and retain an instance with the Source or PaymentIntent you want to handle,
/// then choose a redirect method. The context will fire the completion handler
/// when the redirect completes.
/// Due to the nature of iOS, very little concrete information can be gained
/// during this process, as all actions take place in either the Safari app
/// or the sandboxed SFSafariViewController class. The context attempts to
/// detect when the user has completed the necessary redirect action by listening
/// for both app foregrounds and url callbacks received in the app delegate.
/// However, it is possible the when the redirect is “completed”, the user may
/// have not actually completed the necessary actions to authorize the charge.
/// You should not use either this class, nor <code>STPAPIClient</code>, as a way
/// to determine when you should charge the Source or to determine if the redirect
/// was successful. Use Stripe webhooks on your backend server to listen for Source
/// state changes and to make the charge.
/// @note You must retain this instance for the duration of the redirect flow.
/// This class dismisses any presented view controller upon deallocation.
/// See https://stripe.com/docs/sources/best-practices
SWIFT_CLASS("_TtC14StripePayments18STPRedirectContext")
@interface STPRedirectContext : NSObject <SFSafariViewControllerDelegate, UIViewControllerTransitioningDelegate>
/// The domain for NSErrors specific to <code>STPRedirectContext</code>
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull STPRedirectContextErrorDomain;)
+ (NSString * _Nonnull)STPRedirectContextErrorDomain SWIFT_WARN_UNUSED_RESULT;
/// The current state of the context.
@property (nonatomic, readonly) enum STPRedirectContextState state;
/// Initializer for context from an <code>STPSource</code>.
/// @note You must ensure that the returnURL set up in the created source
/// correctly goes to your app so that users can be returned once
/// they complete the redirect in the web broswer.
/// \param source The source that needs user redirect action to be taken.
///
/// \param completion A block to fire when the action is believed to have
/// been completed.
///
///
/// returns:
/// nil if the specified source is not a redirect-flow source. Otherwise
/// a new context object.
/// @note Execution of the completion block does not necessarily mean the user
/// successfully performed the redirect action. You should listen for source status
/// change webhooks on your backend to determine the result of a redirect.
- (nullable instancetype)initWithSource:(STPSource * _Nonnull)source completion:(void (^ _Nonnull)(NSString * _Nonnull, NSString * _Nullable, NSError * _Nullable))completion;
/// Initializer for context from an <code>STPPaymentIntent</code>.
/// This should be used when the <code>status</code> is <code>STPPaymentIntentStatusRequiresAction</code>.
/// If the next action involves a redirect, this init method will return a non-nil object.
/// \param paymentIntent The STPPaymentIntent that needs a redirect.
///
/// \param completion A block to fire when the action is believed to have
/// been completed.
///
///
/// returns:
/// nil if the provided PaymentIntent does not need a redirect. Otherwise
/// a new context object.
/// @note Execution of the completion block does not necessarily mean the user
/// successfully performed the redirect action.
- (nullable instancetype)initWithPaymentIntent:(STPPaymentIntent * _Nonnull)paymentIntent completion:(void (^ _Nonnull)(NSString * _Nonnull, NSError * _Nullable))completion;
/// Starts a redirect flow.
/// You must ensure that your app delegate listens for  the <code>returnURL</code> that you
/// set on the Stripe object, and forwards it to the Stripe SDK so that the
/// context can be notified when the redirect is completed and dismiss the
/// view controller. See <code>StripeAPI.handleURLCallback(with url:)</code>
/// The context will listen for both received URLs and app open notifications
/// and fire its completion block when either the URL is received, or the next
/// time the app is foregrounded.
/// The context will initiate the flow by presenting a SFSafariViewController
/// instance from the passsed in view controller. If you want more manual control
/// over the redirect method, you can use <code>startSafariViewControllerRedirectFlowFromViewController</code>
/// or <code>startSafariAppRedirectFlow</code>
/// If the redirect supports a native app, and that app is is installed on the user’s
/// device, this call will do a direct app-to-app redirect instead of showing
/// a web url.
/// @note This method does nothing if the context is not in the
/// <code>STPRedirectContextStateNotStarted</code> state.
/// \param presentingViewController The view controller to present the Safari
/// view controller from.
///
- (void)startRedirectFlowFromViewController:(UIViewController * _Nonnull)presentingViewController;
/// Starts a redirect flow by presenting an SFSafariViewController in your app
/// from the passed in view controller.
/// You must ensure that your app delegate listens for  the <code>returnURL</code> that you
/// set on the Stripe object, and forwards it to the Stripe SDK so that the
/// context can be notified when the redirect is completed and dismiss the
/// view controller. See <code>StripeAPI.handleStripeURLCallback(with url:)]</code>
/// The context will listen for both received URLs and app open notifications
/// and fire its completion block when either the URL is received, or the next
/// time the app is foregrounded.
/// @note This method does nothing if the context is not in the
/// <code>STPRedirectContextStateNotStarted</code> state.
/// \param presentingViewController The view controller to present the Safari
/// view controller from.
///
- (void)startSafariViewControllerRedirectFlowFromViewController:(UIViewController * _Nonnull)presentingViewController;
/// Starts a redirect flow by calling <code>openURL</code> to bounce the user out to
/// the Safari app.
/// The context will listen for app open notifications and fire its completion
/// block the next time the user re-opens the app (either manually or via url)
/// @note This method does nothing if the context is not in the
/// <code>STPRedirectContextStateNotStarted</code> state.
- (void)startSafariAppRedirectFlow;
/// Dismisses any presented views and stops listening for any
/// app opens or callbacks. The completion block will not be fired.
- (void)cancel;
/// :nodoc:
- (void)safariViewControllerDidFinish:(SFSafariViewController * _Nonnull)controller;
/// :nodoc:
- (void)safariViewController:(SFSafariViewController * _Nonnull)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully;
/// :nodoc:
- (void)safariViewController:(SFSafariViewController * _Nonnull)controller initialLoadDidRedirectToURL:(NSURL * _Nonnull)URL;
/// :nodoc:
- (UIPresentationController * _Nullable)presentationControllerForPresentedViewController:(UIViewController * _Nonnull)presented presentingViewController:(UIViewController * _Nullable)presenting sourceViewController:(UIViewController * _Nonnull)source SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface STPRedirectContext (SWIFT_EXTENSION(StripePayments)) <STPURLCallbackListener>
/// :nodoc:
- (BOOL)handleURLCallback:(NSURL * _Nonnull)url SWIFT_WARN_UNUSED_RESULT;
@end

/// Error codes specific to <code>STPRedirectContext</code>
typedef SWIFT_ENUM(NSInteger, STPRedirectContextError, open) {
/// <code>STPRedirectContext</code> failed to redirect to the app to complete the payment.
/// This could be because the app is not installed on the user’s device.
  STPRedirectContextAppRedirectError SWIFT_COMPILE_NAME("appRedirectError") = 0,
};

/// Possible states for the redirect context to be in
typedef SWIFT_ENUM(NSInteger, STPRedirectContextState, open) {
/// Initialized, but redirect not started.
  STPRedirectContextStateNotStarted = 0,
/// Redirect is in progress.
  STPRedirectContextStateInProgress = 1,
/// Redirect has been cancelled programmatically before completing.
  STPRedirectContextStateCancelled = 2,
/// Redirect has completed.
  STPRedirectContextStateCompleted = 3,
};

enum STPSetupIntentStatus : NSInteger;
enum STPSetupIntentUsage : NSInteger;
@class STPSetupIntentLastSetupError;

/// A SetupIntent guides you through the process of setting up a customer’s payment credentials for future payments.
/// seealso:
/// https://stripe.com/docs/api/setup_intents
SWIFT_CLASS("_TtC14StripePayments14STPSetupIntent")
@interface STPSetupIntent : NSObject <STPAPIResponseDecodable>
/// The Stripe ID of the SetupIntent.
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeID;
/// The client secret of this SetupIntent. Used for client-side retrieval using a publishable key.
@property (nonatomic, readonly, copy) NSString * _Nonnull clientSecret;
/// Time at which the object was created.
@property (nonatomic, readonly, copy) NSDate * _Nonnull created;
/// ID of the Customer this SetupIntent belongs to, if one exists.
@property (nonatomic, readonly, copy) NSString * _Nullable customerID;
/// An arbitrary string attached to the object. Often useful for displaying to users.
@property (nonatomic, readonly, copy) NSString * _Nullable stripeDescription;
/// Has the value <code>YES</code> if the object exists in live mode or the value <code>NO</code> if the object exists in test mode.
@property (nonatomic, readonly) BOOL livemode;
/// If present, this property tells you what actions you need to take in order for your customer to set up this payment method.
@property (nonatomic, readonly, strong) STPIntentAction * _Nullable nextAction;
/// ID of the payment method used with this SetupIntent.
@property (nonatomic, readonly, copy) NSString * _Nullable paymentMethodID;
/// The optionally expanded PaymentMethod used in this SetupIntent.
@property (nonatomic, readonly, strong) STPPaymentMethod * _Nullable paymentMethod;
/// The list of payment method types (e.g. <code>[STPPaymentMethodType.card]</code>) that this SetupIntent is allowed to set up.
@property (nonatomic, readonly, copy) NSArray<NSNumber *> * _Nonnull paymentMethodTypes;
/// Status of this SetupIntent.
@property (nonatomic, readonly) enum STPSetupIntentStatus status;
/// Indicates how the payment method is intended to be used in the future.
@property (nonatomic, readonly) enum STPSetupIntentUsage usage;
/// The setup error encountered in the previous SetupIntent confirmation.
@property (nonatomic, readonly, strong) STPSetupIntentLastSetupError * _Nullable lastSetupError;
/// Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
/// @deprecated Metadata is not  returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
/// seealso:
/// https://stripe.com/docs/api#metadata
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable metadata SWIFT_DEPRECATED_MSG("Metadata is not returned to clients using publishable keys. Retrieve them on your server using your secret key instead.");
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (NSString * _Nullable)idFromClientSecret:(NSString * _Nonnull)clientSecret SWIFT_WARN_UNUSED_RESULT;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An object representing parameters to confirm a SetupIntent object.
/// For example, you would confirm a SetupIntent when a customer hits the “Save” button on a payment method management view in your app.
/// If the selected payment method does not require any additional steps from the customer, the SetupIntent’s status will transition to <code>STPSetupIntentStatusSucceeded</code>.  Otherwise, it will transition to <code>STPSetupIntentStatusRequiresAction</code>, and suggest additional actions via <code>nextAction</code>.
/// Instead of passing this to <code>STPAPIClient.confirmSetupIntent(...)</code> directly, we recommend using <code>STPPaymentHandler</code> to handle any additional steps for you.
/// seealso:
/// https://stripe.com/docs/api/setup_intents/confirm
SWIFT_CLASS("_TtC14StripePayments27STPSetupIntentConfirmParams")
@interface STPSetupIntentConfirmParams : NSObject <NSCopying, STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// Initialize this <code>STPSetupIntentConfirmParams</code> with a <code>clientSecret</code>.
/// \param clientSecret the client secret for this SetupIntent
///
- (nonnull instancetype)initWithClientSecret:(NSString * _Nonnull)clientSecret OBJC_DESIGNATED_INITIALIZER;
/// Initialize this <code>STPSetupIntentConfirmParams</code> with a <code>clientSecret</code> and <code>paymentMethodType</code>.
/// Use this initializer for SetupIntents that already have a PaymentMethod attached.
/// \param clientSecret the client secret for this SetupIntent
///
/// \param paymentMethodType the known type of the SetupIntent’s attached PaymentMethod
///
- (nonnull instancetype)initWithClientSecret:(NSString * _Nonnull)clientSecret paymentMethodType:(enum STPPaymentMethodType)paymentMethodType OBJC_DESIGNATED_INITIALIZER;
/// The client secret of the SetupIntent. Required.
@property (nonatomic, copy) NSString * _Nonnull clientSecret;
/// Provide a supported <code>STPPaymentMethodParams</code> object, and Stripe will create a
/// PaymentMethod during PaymentIntent confirmation.
/// @note alternative to <code>paymentMethodId</code>
@property (nonatomic, strong) STPPaymentMethodParams * _Nullable paymentMethodParams;
/// Provide an already created PaymentMethod’s id, and it will be used to confirm the SetupIntent.
/// @note alternative to <code>paymentMethodParams</code>
@property (nonatomic, copy) NSString * _Nullable paymentMethodID;
/// The URL to redirect your customer back to after they authenticate or cancel
/// their payment on the payment method’s app or site.
/// This should probably be a URL that opens your iOS app.
@property (nonatomic, copy) NSString * _Nullable returnURL;
/// A boolean number to indicate whether you intend to use the Stripe SDK’s functionality to handle any SetupIntent next actions.
/// If set to false, STPSetupIntent.nextAction will only ever contain a redirect url that can be opened in a webview or mobile browser.
/// When set to true, the nextAction may contain information that the Stripe SDK can use to perform native authentication within your
/// app.
@property (nonatomic, strong) NSNumber * _Nullable useStripeSDK;
/// Details about the Mandate to create.
/// @note If this value is null, the SDK will set this to an internal value indicating that the mandate data should be inferred from the current context if it’s required for <code>self.paymentMethodType</code>
@property (nonatomic, strong) STPMandateDataParams * _Nullable mandateData;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
@end

enum STPSetupIntentLastSetupErrorType : NSUInteger;

/// A value for <code>code</code> indicating the provided payment method failed authentication./// The error encountered in the previous SetupIntent confirmation.
/// seealso:
/// https://stripe.com/docs/api/setup_intents/object#setup_intent_object-last_setup_error
SWIFT_CLASS("_TtC14StripePayments28STPSetupIntentLastSetupError")
@interface STPSetupIntentLastSetupError : NSObject <STPAPIResponseDecodable>
/// For some errors that could be handled programmatically, a short string indicating the error code reported.
/// seealso:
/// https://stripe.com/docs/error-codes
@property (nonatomic, readonly, copy) NSString * _Nullable code;
/// For card (<code>STPSetupIntentLastSetupErrorTypeCard</code>) errors resulting from a card issuer decline,
/// a short string indicating the card issuer’s reason for the decline if they provide one.
/// seealso:
/// https://stripe.com/docs/declines#issuer-declines
@property (nonatomic, readonly, copy) NSString * _Nullable declineCode;
/// A URL to more information about the error code reported.
/// seealso:
/// https://stripe.com/docs/error-codes
@property (nonatomic, readonly, copy) NSString * _Nullable docURL;
/// A human-readable message providing more details about the error.
/// For card (<code>STPSetupIntentLastSetupErrorTypeCard</code>) errors, these messages can be shown to your users.
@property (nonatomic, readonly, copy) NSString * _Nullable message;
/// If the error is parameter-specific, the parameter related to the error.
/// For example, you can use this to display a message near the correct form field.
@property (nonatomic, readonly, copy) NSString * _Nullable param;
/// The PaymentMethod object for errors returned on a request involving a PaymentMethod.
@property (nonatomic, readonly, strong) STPPaymentMethod * _Nullable paymentMethod;
/// The type of error.
@property (nonatomic, readonly) enum STPSetupIntentLastSetupErrorType type;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


@interface STPSetupIntentLastSetupError (SWIFT_EXTENSION(StripePayments))
/// A possible value for the <code>error</code> property.  The provided payment method has failed authentication. Provide a new payment method to attempt to fulfill this SetupIntent again.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull CodeAuthenticationFailure;)
+ (NSString * _Nonnull)CodeAuthenticationFailure SWIFT_WARN_UNUSED_RESULT;
@end

/// The type of the error represented by <code>STPSetupIntentLastSetupError</code>.
/// Some STPSetupIntentLastError properties are only populated for certain error types.
typedef SWIFT_ENUM(NSUInteger, STPSetupIntentLastSetupErrorType, open) {
/// An unknown error type.
  STPSetupIntentLastSetupErrorTypeUnknown = 0,
/// An error connecting to Stripe’s API.
  STPSetupIntentLastSetupErrorTypeAPIConnection SWIFT_COMPILE_NAME("apiConnection") = 1,
/// An error with the Stripe API.
  STPSetupIntentLastSetupErrorTypeAPI = 2,
/// A failure to authenticate your customer.
  STPSetupIntentLastSetupErrorTypeAuthentication = 3,
/// Card errors are the most common type of error you should expect to handle.
/// They result when the user enters a card that can’t be charged for some reason.
/// Check the <code>declineCode</code> property for the decline code.  The <code>message</code> property contains a message you can show to your users.
  STPSetupIntentLastSetupErrorTypeCard = 4,
/// Keys for idempotent requests can only be used with the same parameters they were first used with.
  STPSetupIntentLastSetupErrorTypeIdempotency = 5,
/// Invalid request errors.  Typically, this is because your request has invalid parameters.
  STPSetupIntentLastSetupErrorTypeInvalidRequest = 6,
/// Too many requests hit the API too quickly.
  STPSetupIntentLastSetupErrorTypeRateLimit = 7,
};

/// Status types for an STPSetupIntent
typedef SWIFT_ENUM(NSInteger, STPSetupIntentStatus, open) {
/// Unknown status
  STPSetupIntentStatusUnknown = 0,
/// This SetupIntent requires a PaymentMethod
  STPSetupIntentStatusRequiresPaymentMethod = 1,
/// This SetupIntent needs to be confirmed
  STPSetupIntentStatusRequiresConfirmation = 2,
/// The selected PaymentMethod requires additional authentication steps.
/// Additional actions found via the <code>nextAction</code> property of <code>STPSetupIntent</code>
  STPSetupIntentStatusRequiresAction = 3,
/// Stripe is processing this SetupIntent
  STPSetupIntentStatusProcessing = 4,
/// The SetupIntent has succeeded
  STPSetupIntentStatusSucceeded = 5,
/// This SetupIntent was canceled and cannot be changed.
  STPSetupIntentStatusCanceled = 6,
};

/// Indicates how the payment method is intended to be used in the future.
/// seealso:
/// https://stripe.com/docs/api/setup_intents/create#create_setup_intent-usage
typedef SWIFT_ENUM(NSInteger, STPSetupIntentUsage, open) {
/// Unknown value.  Update your SDK, or use <code>allResponseFields</code> for custom handling.
  STPSetupIntentUsageUnknown = 0,
/// No value was provided.
  STPSetupIntentUsageNone = 1,
/// Indicates you intend to only reuse the payment method when the customer is in your checkout flow.
  STPSetupIntentUsageOnSession = 2,
/// Indicates you intend to reuse the payment method when the customer may or may not be in your checkout flow.
  STPSetupIntentUsageOffSession = 3,
};

enum STPSourceFlow : NSInteger;
@class STPSourceOwner;
@class STPSourceReceiver;
@class STPSourceRedirect;
enum STPSourceStatus : NSInteger;
enum STPSourceType : NSInteger;
enum STPSourceUsage : NSInteger;
@class STPSourceVerification;
@class STPSourceCardDetails;
@class STPSourceKlarnaDetails;
@class STPSourceSEPADebitDetails;
@class STPSourceWeChatPayDetails;

/// Representation of a customer’s payment instrument created with the Stripe API. - seealso: https://stripe.com/docs/api#sources
SWIFT_CLASS("_TtC14StripePayments9STPSource")
@interface STPSource : NSObject <STPAPIResponseDecodable, STPSourceProtocol>
/// You cannot directly instantiate an <code>STPSource</code>. You should only use one that
/// has been returned from an <code>STPAPIClient</code> callback.
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The amount associated with the source.
@property (nonatomic, readonly, strong) NSNumber * _Nullable amount;
/// The client secret of the source. Used for client-side fetching of a source
/// using a publishable key.
@property (nonatomic, readonly, copy) NSString * _Nullable clientSecret;
/// When the source was created.
@property (nonatomic, readonly, copy) NSDate * _Nullable created;
/// The currency associated with the source.
@property (nonatomic, readonly, copy) NSString * _Nullable currency;
/// The authentication flow of the source.
@property (nonatomic, readonly) enum STPSourceFlow flow;
/// Whether or not this source was created in livemode.
@property (nonatomic, readonly) BOOL livemode;
/// Information about the owner of the payment instrument.
@property (nonatomic, readonly, strong) STPSourceOwner * _Nullable owner;
/// Information related to the receiver flow. Present if the source’s flow
/// is receiver.
@property (nonatomic, readonly, strong) STPSourceReceiver * _Nullable receiver;
/// Information related to the redirect flow. Present if the source’s flow
/// is redirect.
@property (nonatomic, readonly, strong) STPSourceRedirect * _Nullable redirect;
/// The status of the source.
@property (nonatomic, readonly) enum STPSourceStatus status;
/// The type of the source.
@property (nonatomic, readonly) enum STPSourceType type;
/// Whether this source should be reusable or not.
@property (nonatomic, readonly) enum STPSourceUsage usage;
/// Information related to the verification flow. Present if the source’s flow
/// is verification.
@property (nonatomic, readonly, strong) STPSourceVerification * _Nullable verification;
/// Information about the source specific to its type
@property (nonatomic, readonly, copy) NSDictionary * _Nullable details;
/// If this is a card source, this property provides typed access to the
/// contents of the <code>details</code> dictionary.
@property (nonatomic, readonly, strong) STPSourceCardDetails * _Nullable cardDetails;
/// If this is a Klarna source, this property provides typed access to the
/// contents of the <code>details</code> dictionary.
@property (nonatomic, readonly, strong) STPSourceKlarnaDetails * _Nullable klarnaDetails;
/// If this is a SEPA Debit source, this property provides typed access to the
/// contents of the <code>details</code> dictionary.
@property (nonatomic, readonly, strong) STPSourceSEPADebitDetails * _Nullable sepaDebitDetails;
/// If this is a WeChat Pay source, this property provides typed access to the
/// contents of the <code>details</code> dictionary.
@property (nonatomic, readonly, strong) STPSourceWeChatPayDetails * _Nullable weChatPayDetails;
/// A set of key/value pairs associated with the source object.
/// @deprecated Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.
/// seealso:
/// https://stripe.com/docs/api#metadata
@property (nonatomic, readonly, copy) NSDictionary<NSString *, NSString *> * _Nullable metadata SWIFT_DEPRECATED_MSG("Metadata is no longer returned to clients using publishable keys. Retrieve them on your server using yoursecret key instead.");
@property (nonatomic, copy) NSString * _Nonnull stripeID;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly) NSUInteger hash;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// The status of this card’s 3D Secure support.
/// seealso:
/// https://stripe.com/docs/sources/three-d-secure#check-requirement
typedef SWIFT_ENUM(NSInteger, STPSourceCard3DSecureStatus, open) {
/// 3D Secure is required. This card must be converted into a 3D Secure
/// source for a charge on it to be successful.
  STPSourceCard3DSecureStatusRequired = 0,
/// 3D Secure is optional. It is not required nor recommended for successful charging,
/// but can be performed to help reduce the likelihood of fraud.
  STPSourceCard3DSecureStatusOptional = 1,
/// 3D Secure is not supported on this card.
  STPSourceCard3DSecureStatusNotSupported = 2,
/// 3D Secure is recommended. The process is not required, but it is highly recommended
/// and has minimal impact to your conversion rate.
  STPSourceCard3DSecureStatusRecommended = 3,
/// The status of 3D Secure support on this card is unknown.
  STPSourceCard3DSecureStatusUnknown = 4,
};


/// This class provides typed access to the contents of an STPSource <code>details</code>
/// dictionary for card sources.
SWIFT_CLASS("_TtC14StripePayments20STPSourceCardDetails")
@interface STPSourceCardDetails : NSObject <STPAPIResponseDecodable>
/// The last 4 digits of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The card’s expiration month. 1-indexed (i.e. 1 == January)
@property (nonatomic, readonly) NSUInteger expMonth;
/// The card’s expiration year.
@property (nonatomic, readonly) NSUInteger expYear;
/// The issuer of the card.
@property (nonatomic, readonly) enum STPCardBrand brand;
/// The funding source for the card (credit, debit, prepaid, or other)
@property (nonatomic, readonly) enum STPCardFundingType funding;
/// Two-letter ISO code representing the issuing country of the card.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// Whether 3D Secure is supported or required by the card.
@property (nonatomic, readonly) enum STPSourceCard3DSecureStatus threeDSecure;
/// True if this card was created through Apple Pay, false otherwise.
@property (nonatomic, readonly) BOOL isApplePayCard;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Authentication flows for a Source
typedef SWIFT_ENUM(NSInteger, STPSourceFlow, open) {
/// No action is required from your customer.
/// @note WeChat Pay Sources also have this flow type.
  STPSourceFlowNone = 0,
/// Your customer must be redirected to their online banking service (either a website or mobile banking app) to approve the payment.
  STPSourceFlowRedirect = 1,
/// Your customer must verify ownership of their account by providing a code that you post to the Stripe API for authentication.
  STPSourceFlowCodeVerification = 2,
/// Your customer must push funds to the account information provided.
  STPSourceFlowReceiver = 3,
/// The source’s flow is unknown.
  STPSourceFlowUnknown = 4,
};


/// Details of a Klarna source.
SWIFT_CLASS("_TtC14StripePayments22STPSourceKlarnaDetails")
@interface STPSourceKlarnaDetails : NSObject <STPAPIResponseDecodable>
/// The Klarna-specific client token. This may be used with the Klarna SDK.
/// seealso:
/// https://developers.klarna.com/documentation/in-app/ios/steps-klarna-payments-native/#initialization
@property (nonatomic, readonly, copy) NSString * _Nullable clientToken;
/// The ISO-3166 2-letter country code of the customer’s location.
@property (nonatomic, readonly, copy) NSString * _Nullable purchaseCountry;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// Information about a source’s owner.
SWIFT_CLASS("_TtC14StripePayments14STPSourceOwner")
@interface STPSourceOwner : NSObject <STPAPIResponseDecodable>
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// Owner’s address.
@property (nonatomic, readonly, strong) STPAddress * _Nullable address;
/// Owner’s email address.
@property (nonatomic, readonly, copy) NSString * _Nullable email;
/// Owner’s full name.
@property (nonatomic, readonly, copy) NSString * _Nullable name;
/// Owner’s phone number.
@property (nonatomic, readonly, copy) NSString * _Nullable phone;
/// Verified owner’s address.
@property (nonatomic, readonly, strong) STPAddress * _Nullable verifiedAddress;
/// Verified owner’s email address.
@property (nonatomic, readonly, copy) NSString * _Nullable verifiedEmail;
/// Verified owner’s full name.
@property (nonatomic, readonly, copy) NSString * _Nullable verifiedName;
/// Verified owner’s phone number.
@property (nonatomic, readonly, copy) NSString * _Nullable verifiedPhone;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end


/// An object representing parameters used to create a Source object.
/// seealso:
/// https://stripe.com/docs/api#create_source
SWIFT_CLASS("_TtC14StripePayments15STPSourceParams")
@interface STPSourceParams : NSObject <NSCopying, STPFormEncodable>
@property (nonatomic, copy) NSDictionary * _Nonnull additionalAPIParameters;
/// The type of the source to create. Required.
@property (nonatomic) enum STPSourceType type;
/// The raw underlying type string sent to the server.
/// Generally you should use <code>type</code> instead unless you have a reason not to.
/// You can use this if you want to create a param of a type not yet supported
/// by the current version of the SDK’s <code>STPSourceType</code> enum.
/// Setting this to a value not known by the SDK causes <code>type</code> to
/// return <code>STPSourceTypeUnknown</code>
@property (nonatomic, copy) NSString * _Nullable rawTypeString;
/// A positive integer in the smallest currency unit representing the
/// amount to charge the customer (e.g., @1099 for a €10.99 payment).
/// Required for <code>single_use</code> sources.
@property (nonatomic, strong) NSNumber * _Nullable amount;
/// The currency associated with the source. This is the currency for which the source
/// will be chargeable once ready.
@property (nonatomic, copy) NSString * _Nullable currency;
/// The authentication flow of the source to create. <code>flow</code> may be “redirect”,
/// “receiver”, “verification”, or “none”. It is generally inferred unless a type
/// supports multiple flows.
@property (nonatomic) enum STPSourceFlow flow;
/// A set of key/value pairs that you can attach to a source object.
@property (nonatomic, copy) NSDictionary * _Nullable metadata;
/// Information about the owner of the payment instrument. May be used or required
/// by particular source types.
@property (nonatomic, copy) NSDictionary * _Nullable owner;
/// Parameters required for the redirect flow. Required if the source is
/// authenticated by a redirect (<code>flow</code> is “redirect”).
@property (nonatomic, copy) NSDictionary * _Nullable redirect;
/// An optional token used to create the source. When passed, token properties will
/// override source parameters.
@property (nonatomic, copy) NSString * _Nullable token;
/// Whether this source should be reusable or not. <code>usage</code> may be “reusable” or
/// “single_use”. Some source types may or may not be reusable by construction,
/// while other may leave the option at creation.
@property (nonatomic) enum STPSourceUsage usage;
/// Initializes an empty STPSourceParams.
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


@interface STPSourceParams (SWIFT_EXTENSION(StripePayments))
/// Creates params for a Bancontact source.
/// seealso:
/// https://stripe.com/docs/payments/bancontact#create-source
/// \param amount The amount to charge the customer in EUR.
///
/// \param name The full name of the account holder.
///
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param statementDescriptor (Optional) A custom statement descriptor for
/// the payment.
/// @note The currency for Bancontact must be “eur”. This will be set automatically
/// for you.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)bancontactParamsWithAmount:(NSInteger)amount name:(NSString * _Nonnull)name returnURL:(NSString * _Nonnull)returnURL statementDescriptor:(NSString * _Nullable)statementDescriptor SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Card source.
/// seealso:
/// https://stripe.com/docs/sources/cards#create-source
/// \param card An object containing the user’s card details
///
///
/// returns:
/// an STPSourceParams object populated with the provided card details.
+ (STPSourceParams * _Nonnull)cardParamsWithCard:(STPCardParams * _Nonnull)card SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Giropay source.
/// seealso:
/// https://stripe.com/docs/sources/giropay#create-source
/// \param amount The amount to charge the customer in EUR.
///
/// \param name The full name of the account holder.
///
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param statementDescriptor (Optional) A custom statement descriptor for
/// the payment.
/// @note The currency for Giropay must be “eur”. This will be set automatically
/// for you.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)giropayParamsWithAmount:(NSInteger)amount name:(NSString * _Nonnull)name returnURL:(NSString * _Nonnull)returnURL statementDescriptor:(NSString * _Nullable)statementDescriptor SWIFT_WARN_UNUSED_RESULT;
/// Creates params for an iDEAL source.
/// seealso:
/// https://stripe.com/docs/sources/ideal#create-source
/// \param amount The amount to charge the customer in EUR.
///
/// \param name (Optional) The full name of the account holder.
///
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param statementDescriptor (Optional) A custom statement descriptor for t
/// he payment.
///
/// \param bank (Optional) The customer’s bank.
/// @note The currency for iDEAL must be “eur”. This will be set automatically
/// for you.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)idealParamsWithAmount:(NSInteger)amount name:(NSString * _Nullable)name returnURL:(NSString * _Nonnull)returnURL statementDescriptor:(NSString * _Nullable)statementDescriptor bank:(NSString * _Nullable)bank SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a SEPA Debit source.
/// seealso:
/// https://stripe.com/docs/sources/sepa-debit#create-source
/// \param name The full name of the account holder.
///
/// \param iban The IBAN number for the bank account you wish to debit.
///
/// \param addressLine1 (Optional) The bank account holder’s first address line.
///
/// \param city (Optional) The bank account holder’s city.
///
/// \param postalCode (Optional) The bank account holder’s postal code.
///
/// \param country (Optional) The bank account holder’s two-letter
/// country code.
/// @note The currency for SEPA Debit must be “eur”. This will be set automatically
/// for you.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)sepaDebitParamsWithName:(NSString * _Nonnull)name iban:(NSString * _Nonnull)iban addressLine1:(NSString * _Nullable)addressLine1 city:(NSString * _Nullable)city postalCode:(NSString * _Nullable)postalCode country:(NSString * _Nullable)country SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Sofort source.
/// seealso:
/// https://stripe.com/docs/sources/sofort#create-source
/// \param amount The amount to charge the customer in EUR.
///
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param country The country code of the customer’s bank.
///
/// \param statementDescriptor (Optional) A custom statement descriptor for
/// the payment.
/// @note The currency for Sofort must be “eur”. This will be set automatically
/// for you.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)sofortParamsWithAmount:(NSInteger)amount returnURL:(NSString * _Nonnull)returnURL country:(NSString * _Nonnull)country statementDescriptor:(NSString * _Nullable)statementDescriptor SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Klarna source.
/// seealso:
/// https://stripe.com/docs/sources/klarna#create-source
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param currency The currency the payment is being created in.
///
/// \param purchaseCountry The ISO-3166 2-letter country code of the customer’s location.
///
/// \param items An array of STPKlarnaLineItems. Klarna will present these on the confirmation
/// page. The total amount charged will be a sum of the <code>totalAmount</code> of each of these items.
///
/// \param customPaymentMethods Required for customers located in the US. This determines whether Pay Later and/or Slice It
/// is offered to a US customer.
///
/// \param address An STPAddress for the customer. At a minimum, an <code>email</code>, <code>line1</code>, <code>postalCode</code>, <code>city</code>, and <code>country</code> must be provided.
/// The address’ <code>name</code> will be ignored in favor of the <code>firstName and </code>lastName` parameters.
///
/// \param firstName The customer’s first name.
///
/// \param lastName The customer’s last name.
/// If the provided information is missing a line1, postal code, city, email, or first/last name, or if the country code is
/// outside the specified country, no address information will be sent to Klarna, and Klarna will prompt the customer to provide their address.
///
/// \param dateOfBirth The customer’s date of birth. This will be used by Klarna for a credit check in some EU countries.
/// The optional fields (address, firstName, lastName, and dateOfBirth) can be provided to skip Klarna’s customer information form.
/// If this information is missing, Klarna will prompt the customer for these values during checkout.
/// Be careful with this option: If the provided information is invalid,
/// Klarna may reject the transaction without giving the customer a chance to correct it.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)klarnaParamsWithReturnURL:(NSString * _Nonnull)returnURL currency:(NSString * _Nonnull)currency purchaseCountry:(NSString * _Nonnull)purchaseCountry items:(NSArray<STPKlarnaLineItem *> * _Nonnull)items customPaymentMethods:(NSArray<NSNumber *> * _Nonnull)customPaymentMethods billingAddress:(STPAddress * _Nullable)address billingFirstName:(NSString * _Nullable)firstName billingLastName:(NSString * _Nullable)lastName billingDOB:(STPDateOfBirth * _Nullable)dateOfBirth SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a Klarna source.
/// seealso:
/// https://stripe.com/docs/sources/klarna#create-source
/// \param returnURL The URL the customer should be redirected to after
/// they have successfully verified the payment.
///
/// \param currency The currency the payment is being created in.
///
/// \param purchaseCountry The ISO-3166 2-letter country code of the customer’s location.
///
/// \param items An array of STPKlarnaLineItems. Klarna will present these in the confirmation
/// dialog. The total amount charged will be a sum of the <code>totalAmount</code> of each of these items.
///
/// \param customPaymentMethods Required for customers located in the US. This determines whether Pay Later and/or Slice It
/// is offered to a US customer.
///
///
/// returns:
/// an STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)klarnaParamsWithReturnURL:(NSString * _Nonnull)returnURL currency:(NSString * _Nonnull)currency purchaseCountry:(NSString * _Nonnull)purchaseCountry items:(NSArray<STPKlarnaLineItem *> * _Nonnull)items customPaymentMethods:(NSArray<NSNumber *> * _Nonnull)customPaymentMethods SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a 3DS source.
/// seealso:
/// https://stripe.com/docs/sources/three-d-secure#create-3ds-source
/// \param amount The amount to charge the customer.
///
/// \param currency The currency the payment is being created in.
///
/// \param returnURL The URL the customer should be redirected to after they have
/// successfully verified the payment.
///
/// \param card The ID of the card source.
///
///
/// returns:
/// an STPSourceParams object populated with the provided card details.
+ (STPSourceParams * _Nonnull)threeDSecureParamsWithAmount:(NSInteger)amount currency:(NSString * _Nonnull)currency returnURL:(NSString * _Nonnull)returnURL card:(NSString * _Nonnull)card SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a single-use Alipay source
/// seealso:
/// https://stripe.com/docs/sources/alipay#create-source
/// \param amount The amount to charge the customer.
///
/// \param currency The currency the payment is being created in.
///
/// \param returnURL The URL the customer should be redirected to after they have
/// successfully verified the payment.
///
///
/// returns:
/// An STPSourceParams object populated with the provided values
+ (STPSourceParams * _Nonnull)alipayParamsWithAmount:(NSInteger)amount currency:(NSString * _Nonnull)currency returnURL:(NSString * _Nonnull)returnURL SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a reusable Alipay source
/// seealso:
/// https://stripe.com/docs/sources/alipay#create-source
/// \param currency The currency the payment is being created in.
///
/// \param returnURL The URL the customer should be redirected to after they have
/// successfully verified the payment.
///
///
/// returns:
/// An STPSourceParams object populated with the provided values
+ (STPSourceParams * _Nonnull)alipayReusableParamsWithCurrency:(NSString * _Nonnull)currency returnURL:(NSString * _Nonnull)returnURL SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a P24 source
/// seealso:
/// https://stripe.com/docs/sources/p24#create-source
/// \param amount The amount to charge the customer.
///
/// \param currency The currency the payment is being created in (this must be
/// EUR or PLN)
///
/// \param email The email address of the account holder.
///
/// \param name The full name of the account holder (optional).
///
/// \param returnURL The URL the customer should be redirected to after they have
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)p24ParamsWithAmount:(NSInteger)amount currency:(NSString * _Nonnull)currency email:(NSString * _Nonnull)email name:(NSString * _Nullable)name returnURL:(NSString * _Nonnull)returnURL SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a card source created from Visa Checkout.
/// seealso:
/// https://stripe.com/docs/visa-checkout
/// @note Creating an STPSource with these params will give you a
/// source with type == STPSourceTypeCard
/// \param callId The callId property from a <code>VisaCheckoutResult</code> object.
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)visaCheckoutParamsWithCallId:(NSString * _Nonnull)callId SWIFT_WARN_UNUSED_RESULT;
/// Creates params for a card source created from Masterpass.
/// seealso:
/// https://stripe.com/docs/masterpass
/// @note Creating an STPSource with these params will give you a
/// source with type == STPSourceTypeCard
/// \param cartId The cartId from a <code>MCCCheckoutResponse</code> object.
///
/// \param transactionId The transactionid from a <code>MCCCheckoutResponse</code> object.
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)masterpassParamsWithCartId:(NSString * _Nonnull)cartId transactionId:(NSString * _Nonnull)transactionId SWIFT_WARN_UNUSED_RESULT;
/// Create params for an EPS source
/// seealso:
/// https://stripe.com/docs/sources/eps
/// \param amount The amount to charge the customer.
///
/// \param name The full name of the account holder.
///
/// \param returnURL The URL the customer should be redirected to
/// after the authorization process.
///
/// \param statementDescriptor A custom statement descriptor for the
/// payment (optional).
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)epsParamsWithAmount:(NSInteger)amount name:(NSString * _Nonnull)name returnURL:(NSString * _Nonnull)returnURL statementDescriptor:(NSString * _Nullable)statementDescriptor SWIFT_WARN_UNUSED_RESULT;
/// Create params for a Multibanco source
/// seealso:
/// https://stripe.com/docs/sources/multibanco
/// \param amount The amount to charge the customer.
///
/// \param returnURL The URL the customer should be redirected to after the
/// authorization process.
///
/// \param email The full email address of the customer.
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)multibancoParamsWithAmount:(NSInteger)amount returnURL:(NSString * _Nonnull)returnURL email:(NSString * _Nonnull)email SWIFT_WARN_UNUSED_RESULT;
/// Create params for a WeChat Pay native app redirect source
/// @note This feature is in private beta.
/// \param amount The amount to charge the customer.
///
/// \param currency The currency of the payment
///
/// \param appId Your WeChat-provided application id. WeChat Pay uses
/// this as the redirect URL scheme
///
/// \param statementDescriptor A custom statement descriptor for the payment (optional).
///
///
/// returns:
/// An STPSourceParams object populated with the provided values.
+ (STPSourceParams * _Nonnull)wechatPayParamsWithAmount:(NSInteger)amount currency:(NSString * _Nonnull)currency appId:(NSString * _Nonnull)appId statementDescriptor:(NSString * _Nullable)statementDescriptor SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Private setter allows for setting the name of the app in the returnURL so
/// that it can be displayed on hooks.stripe.com if the automatic redirect back
/// to the app fails.
/// We intercept the reading of redirect dictionary from STPFormEncoder and replace
/// the value of return_url if necessary
- (NSDictionary * _Nonnull)redirectDictionaryWithMerchantNameIfNecessary SWIFT_WARN_UNUSED_RESULT;
+ (NSString * _Nullable)rootObjectName SWIFT_WARN_UNUSED_RESULT;
+ (NSDictionary<NSString *, NSString *> * _Nonnull)propertyNamesToFormFieldNamesMapping SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT;
@end



/// Information related to a source’s receiver flow.
SWIFT_CLASS("_TtC14StripePayments17STPSourceReceiver")
@interface STPSourceReceiver : NSObject <STPAPIResponseDecodable>
/// The address of the receiver source. This is the value that should be communicated to the customer to send their funds to.
@property (nonatomic, readonly, copy) NSString * _Nullable address;
/// The total amount charged by you.
@property (nonatomic, readonly, strong) NSNumber * _Nullable amountCharged;
/// The total amount received by the receiver source.
@property (nonatomic, readonly, strong) NSNumber * _Nullable amountReceived;
/// The total amount that was returned to the customer.
@property (nonatomic, readonly, strong) NSNumber * _Nullable amountReturned;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum STPSourceRedirectStatus : NSInteger;

/// Information related to a source’s redirect flow.
SWIFT_CLASS("_TtC14StripePayments17STPSourceRedirect")
@interface STPSourceRedirect : NSObject <STPAPIResponseDecodable>
/// The URL you provide to redirect the customer to after they authenticated their payment.
@property (nonatomic, readonly, copy) NSURL * _Nonnull returnURL;
/// The status of the redirect.
@property (nonatomic, readonly) enum STPSourceRedirectStatus status;
/// The URL provided to you to redirect a customer to as part of a redirect authentication flow.
@property (nonatomic, readonly, copy) NSURL * _Nonnull url;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// Redirect status types for a Source.
typedef SWIFT_ENUM(NSInteger, STPSourceRedirectStatus, open) {
/// The redirect is pending.
  STPSourceRedirectStatusPending = 0,
/// The redirect has succeeded.
  STPSourceRedirectStatusSucceeded = 1,
/// The redirect has failed.
  STPSourceRedirectStatusFailed = 2,
/// The redirect should not be used.
  STPSourceRedirectStatusNotRequired = 3,
/// The state of the redirect is unknown.
  STPSourceRedirectStatusUnknown = 4,
};


/// This class provides typed access to the contents of an STPSource <code>details</code>
/// dictionary for SEPA Debit sources.
SWIFT_CLASS("_TtC14StripePayments25STPSourceSEPADebitDetails")
@interface STPSourceSEPADebitDetails : NSObject <STPAPIResponseDecodable>
/// You cannot directly instantiate an <code>STPSourceSEPADebitDetails</code>.
/// You should only use one that is part of an existing <code>STPSource</code> object.
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The last 4 digits of the account number.
@property (nonatomic, readonly, copy) NSString * _Nullable last4;
/// The account’s bank code.
@property (nonatomic, readonly, copy) NSString * _Nullable bankCode;
/// Two-letter ISO code representing the country of the bank account.
@property (nonatomic, readonly, copy) NSString * _Nullable country;
/// The account’s fingerprint.
@property (nonatomic, readonly, copy) NSString * _Nullable fingerprint;
/// The reference of the mandate accepted by your customer.
@property (nonatomic, readonly, copy) NSString * _Nullable mandateReference;
/// The details of the mandate accepted by your customer.
@property (nonatomic, readonly, copy) NSURL * _Nullable mandateURL;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// Status types for a Source
typedef SWIFT_ENUM(NSInteger, STPSourceStatus, open) {
/// The source has been created and is awaiting customer action.
  STPSourceStatusPending = 0,
/// The source is ready to use. The customer action has been completed or the
/// payment method requires no customer action.
  STPSourceStatusChargeable = 1,
/// The source has been used. This status only applies to single-use sources.
  STPSourceStatusConsumed = 2,
/// The source, which was chargeable, has expired because it was not used to
/// make a charge request within a specified amount of time.
  STPSourceStatusCanceled = 3,
/// Your customer has not taken the required action or revoked your access
/// (e.g., did not authorize the payment with their bank or canceled their
/// mandate acceptance for SEPA direct debits).
  STPSourceStatusFailed = 4,
/// The source status is unknown.
  STPSourceStatusUnknown = 5,
};

/// Types for a Source
/// seealso:
/// https://stripe.com/docs/sources
typedef SWIFT_ENUM(NSInteger, STPSourceType, open) {
/// A Bancontact source. - seealso: https://stripe.com/docs/sources/bancontact
  STPSourceTypeBancontact = 0,
/// A card source. - seealso: https://stripe.com/docs/sources/cards
  STPSourceTypeCard = 1,
/// A Giropay source. - seealso: https://stripe.com/docs/sources/giropay
  STPSourceTypeGiropay = 2,
/// An iDEAL source. - seealso: https://stripe.com/docs/sources/ideal
  STPSourceTypeiDEAL SWIFT_COMPILE_NAME("iDEAL") = 3,
/// A SEPA Direct Debit source. - seealso: https://stripe.com/docs/sources/sepa-debit
  STPSourceTypeSEPADebit = 4,
/// A Sofort source. - seealso: https://stripe.com/docs/sources/sofort
  STPSourceTypeSofort = 5,
/// A 3DS card source. - seealso: https://stripe.com/docs/sources/three-d-secure
  STPSourceTypeThreeDSecure = 6,
/// An Alipay source. - seealso: https://stripe.com/docs/sources/alipay
  STPSourceTypeAlipay = 7,
/// A P24 source. - seealso: https://stripe.com/docs/sources/p24
  STPSourceTypeP24 = 8,
/// An EPS source. - seealso: https://stripe.com/docs/sources/eps
  STPSourceTypeEPS = 9,
/// A Multibanco source. - seealso: https://stripe.com/docs/sources/multibanco
  STPSourceTypeMultibanco = 10,
/// A WeChat Pay source. - seealso: https://stripe.com/docs/sources/wechat-pay
  STPSourceTypeWeChatPay = 11,
/// A Klarna source. - seealso: https://stripe.com/docs/sources/klarna
  STPSourceTypeKlarna = 12,
/// An unknown type of source.
  STPSourceTypeUnknown = 13,
};

/// Usage types for a Source
typedef SWIFT_ENUM(NSInteger, STPSourceUsage, open) {
/// The source can be reused.
  STPSourceUsageReusable = 0,
/// The source can only be used once.
  STPSourceUsageSingleUse = 1,
/// The source’s usage is unknown.
  STPSourceUsageUnknown = 2,
};

enum STPSourceVerificationStatus : NSInteger;

/// Information related to a source’s verification flow.
SWIFT_CLASS("_TtC14StripePayments21STPSourceVerification")
@interface STPSourceVerification : NSObject <STPAPIResponseDecodable>
/// The number of attempts remaining to authenticate the source object with a
/// verification code.
@property (nonatomic, readonly, strong) NSNumber * _Nullable attemptsRemaining;
/// The status of the verification.
@property (nonatomic, readonly) enum STPSourceVerificationStatus status;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// Verification status types for a Source.
typedef SWIFT_ENUM(NSInteger, STPSourceVerificationStatus, open) {
/// The verification is pending.
  STPSourceVerificationStatusPending = 0,
/// The verification has succeeeded.
  STPSourceVerificationStatusSucceeded = 1,
/// The verification has failed.
  STPSourceVerificationStatusFailed = 2,
/// The state of the verification is unknown.
  STPSourceVerificationStatusUnknown = 3,
};


/// Details of a WeChat Pay Source.
SWIFT_CLASS("_TtC14StripePayments25STPSourceWeChatPayDetails")
@interface STPSourceWeChatPayDetails : NSObject <STPAPIResponseDecodable>
/// A URL to the WeChat App.
/// Use <code>STPRedirectContext</code> instead of redirecting users yourself.
@property (nonatomic, readonly, copy) NSString * _Nullable weChatAppURL;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// :nodoc:
SWIFT_CLASS("_TtC14StripePayments22STPStringFromCardBrand") SWIFT_DEPRECATED_MSG("STPStringFromCardBrand has been replaced with STPCardBrandUtilities.stringFrom(brand)")
@interface STPStringFromCardBrand : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum STPThreeDSCustomizationButtonType : NSInteger;
@class UIColor;
enum STPThreeDSButtonTitleStyle : NSInteger;
@class UIFont;

/// A customization object to use to configure the UI of a button.
SWIFT_CLASS("_TtC14StripePayments29STPThreeDSButtonCustomization")
@interface STPThreeDSButtonCustomization : NSObject
/// The default settings for the provided button type.
+ (STPThreeDSButtonCustomization * _Nonnull)defaultSettingsForButtonType:(enum STPThreeDSCustomizationButtonType)type SWIFT_WARN_UNUSED_RESULT;
/// Initializes an instance of STDSButtonCustomization with the given backgroundColor and colorRadius.
- (nonnull instancetype)initWithBackgroundColor:(UIColor * _Nonnull)backgroundColor cornerRadius:(CGFloat)cornerRadius OBJC_DESIGNATED_INITIALIZER;
/// The background color of the button.
/// The default for .resend and .cancel is clear.
/// The default for .submit, .continue, and .next is blue.
@property (nonatomic, strong) UIColor * _Nonnull backgroundColor;
/// The corner radius of the button. Defaults to 8.
@property (nonatomic) CGFloat cornerRadius;
/// The capitalization style of the button title.
@property (nonatomic) enum STPThreeDSButtonTitleStyle titleStyle;
/// The font of the title.
@property (nonatomic, strong) UIFont * _Nullable font;
/// The text color of the title.
@property (nonatomic, strong) UIColor * _Nullable textColor;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

/// An enumeration of the case transformations that can be applied to the button’s title
typedef SWIFT_ENUM(NSInteger, STPThreeDSButtonTitleStyle, open) {
/// Default style, doesn’t modify the title
  STPThreeDSButtonTitleStyleDefault = 0,
/// Applies localizedUppercaseString to the title
  STPThreeDSButtonTitleStyleUppercase = 1,
/// Applies localizedLowercaseString to the title
  STPThreeDSButtonTitleStyleLowercase = 2,
/// Applies localizedCapitalizedString to the title
  STPThreeDSButtonTitleStyleSentenceCapitalized = 3,
};

/// An enum that defines the different types of buttons that are able to be customized.
typedef SWIFT_ENUM(NSInteger, STPThreeDSCustomizationButtonType, open) {
/// The submit button type.
  STPThreeDSCustomizationButtonTypeSubmit = 0,
/// The continue button type.
  STPThreeDSCustomizationButtonTypeContinue = 1,
/// The next button type.
  STPThreeDSCustomizationButtonTypeNext = 2,
/// The cancel button type.
  STPThreeDSCustomizationButtonTypeCancel = 3,
/// The resend button type.
  STPThreeDSCustomizationButtonTypeResend = 4,
};

@class STPThreeDSUICustomization;

/// <code>STPThreeDSCustomizationSettings</code> provides customization options for 3DS2 authentication flows in your app.
SWIFT_CLASS("_TtC14StripePayments31STPThreeDSCustomizationSettings")
@interface STPThreeDSCustomizationSettings : NSObject
/// Returns an <code>STPThreeDSCustomizationSettings</code> preconfigured with the default
/// Stripe UI settings and a 10 minute <code>authenticationTimeout</code>.
/// @deprecated Use STPThreeDSCustomizationSettings() instead. The default settings are the same.
+ (STPThreeDSCustomizationSettings * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use STPThreeDSCustomizationSettings() instead of STPThreeDSCustomizationSettings.defaultSettings().");
/// <code>uiCustomization</code> can be used to provide custom UI settings for the authentication
/// challenge screens presented during a Three Domain Secure authentication. For more information see
/// our guide on supporting 3DS2 in your iOS application.
/// Note: It’s important to configure this object appropriately before calling any <code>STPPaymentHandler</code> APIs.
/// The API makes a copy of the customization settings you provide; it ignores any subsequent changes you
/// make to your <code>STPThreeDSUICustomization</code> instance.
/// Defaults to <code>STPThreeDSUICustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSUICustomization * _Nonnull uiCustomization;
/// <code>authenticationTimeout</code> is the total time allowed for a user to complete a 3DS2 authentication
/// interaction, in minutes.  This value <em>must</em> be at least 5 minutes.
/// Defaults to 10 minutes.
@property (nonatomic) NSInteger authenticationTimeout;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The Challenge view displays a footer with additional details that
/// expand when tapped. This object configures the appearance of that view.
SWIFT_CLASS("_TtC14StripePayments29STPThreeDSFooterCustomization")
@interface STPThreeDSFooterCustomization : NSObject
/// The default settings.
+ (STPThreeDSFooterCustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// The background color of the footer.
/// Defaults to gray.
@property (nonatomic, strong) UIColor * _Nonnull backgroundColor;
/// The color of the chevron. Defaults to a dark gray.
@property (nonatomic, strong) UIColor * _Nonnull chevronColor;
/// The color of the heading text. Defaults to black.
@property (nonatomic, strong) UIColor * _Nonnull headingTextColor;
/// The font to use for the heading text.
@property (nonatomic, strong) UIFont * _Nonnull headingFont;
/// The font of the text.
@property (nonatomic, strong) UIFont * _Nullable font;
/// The color of the text.
@property (nonatomic, strong) UIColor * _Nullable textColor;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A customization object to use to configure the UI of a text label.
SWIFT_CLASS("_TtC14StripePayments28STPThreeDSLabelCustomization")
@interface STPThreeDSLabelCustomization : NSObject
/// The default settings.
+ (STPThreeDSLabelCustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// The font to use for heading text.
@property (nonatomic, strong) UIFont * _Nonnull headingFont;
/// The color of heading text. Defaults to black.
@property (nonatomic, strong) UIColor * _Nonnull headingTextColor;
/// The font to use for non-heading text.
@property (nonatomic, strong) UIFont * _Nullable font;
/// The color to use for non-heading text. Defaults to black.
@property (nonatomic, strong) UIColor * _Nullable textColor;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A customization object to use to configure a UINavigationBar.
SWIFT_CLASS("_TtC14StripePayments36STPThreeDSNavigationBarCustomization")
@interface STPThreeDSNavigationBarCustomization : NSObject
/// The default settings.
+ (STPThreeDSNavigationBarCustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// The tint color of the navigation bar background.
/// Defaults to nil.
@property (nonatomic, strong) UIColor * _Nullable barTintColor;
/// The navigation bar style.
/// Defaults to UIBarStyleDefault.
/// @note This property controls the <code>UIStatusBarStyle</code>. Set this to <code>UIBarStyleBlack</code>
/// to change the <code>statusBarStyle</code> to <code>UIStatusBarStyleLightContent</code> - even if you also set
/// <code>barTintColor</code> to change the actual color of the navigation bar.
@property (nonatomic) UIBarStyle barStyle;
/// A Boolean value indicating whether the navigation bar is translucent or not.
/// Defaults to YES.
@property (nonatomic) BOOL translucent;
/// The text to display in the title of the navigation bar.
/// Defaults to “Secure checkout”.
@property (nonatomic, copy) NSString * _Nonnull headerText;
/// The text to display for the button in the navigation bar.
/// Defaults to “Cancel”.
@property (nonatomic, copy) NSString * _Nonnull buttonText;
/// The font to use for the title. Defaults to nil.
@property (nonatomic, strong) UIFont * _Nullable font;
/// The color to use for the title. Defaults to nil.
@property (nonatomic, strong) UIColor * _Nullable textColor;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A customization object that configures the appearance of
/// radio buttons and checkboxes.
SWIFT_CLASS("_TtC14StripePayments32STPThreeDSSelectionCustomization")
@interface STPThreeDSSelectionCustomization : NSObject
/// The default settings.
+ (STPThreeDSSelectionCustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// The primary color of the selected state.
/// Defaults to blue.
@property (nonatomic, strong) UIColor * _Nonnull primarySelectedColor;
/// The secondary color of the selected state (e.g. the checkmark color).
/// Defaults to white.
@property (nonatomic, strong) UIColor * _Nonnull secondarySelectedColor;
/// The background color displayed in the unselected state.
/// Defaults to light blue.
@property (nonatomic, strong) UIColor * _Nonnull unselectedBackgroundColor;
/// The color of the border drawn around the view in the unselected state.
/// Defaults to blue.
@property (nonatomic, strong) UIColor * _Nonnull unselectedBorderColor;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// A customization object to use to configure the UI of a text field.
SWIFT_CLASS("_TtC14StripePayments32STPThreeDSTextFieldCustomization")
@interface STPThreeDSTextFieldCustomization : NSObject
/// The default settings.
+ (STPThreeDSTextFieldCustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// The border width of the text field. Defaults to 2.
@property (nonatomic) CGFloat borderWidth;
/// The color of the border of the text field. Defaults to clear.
@property (nonatomic, strong) UIColor * _Nonnull borderColor;
/// The corner radius of the edges of the text field. Defaults to 8.
@property (nonatomic) CGFloat cornerRadius;
/// The appearance of the keyboard. Defaults to UIKeyboardAppearanceDefault.
@property (nonatomic) UIKeyboardAppearance keyboardAppearance;
/// The color of the placeholder text. Defaults to light gray.
@property (nonatomic, strong) UIColor * _Nonnull placeholderTextColor;
/// The font to use for text.
@property (nonatomic, strong) UIFont * _Nullable font;
/// The color to use for the text. Defaults to black.
@property (nonatomic, strong) UIColor * _Nullable textColor;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end


/// The <code>STPThreeDSUICustomization</code> provides configuration for UI elements displayed during 3D Secure authentication.
/// Note: It’s important to configure this object appropriately before calling any <code>STPPaymentHandler</code> APIs.
/// The API makes a copy of the customization settings you provide; it ignores any subsequent changes you
/// make to your <code>STPThreeDSUICustomization</code> instance.
/// seealso:
/// https://stripe.com/docs/payments/3d-secure
SWIFT_CLASS("_TtC14StripePayments25STPThreeDSUICustomization")
@interface STPThreeDSUICustomization : NSObject
/// The default settings.  See individual properties for their default values.
+ (STPThreeDSUICustomization * _Nonnull)defaultSettings SWIFT_WARN_UNUSED_RESULT;
/// Provides custom settings for the UINavigationBar of all UIViewControllers displayed during 3D Secure authentication.
/// The default is <code>STPThreeDSNavigationBarCustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSNavigationBarCustomization * _Nonnull navigationBarCustomization;
/// Provides custom settings for labels.
/// The default is <code>STPThreeDSLabelCustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSLabelCustomization * _Nonnull labelCustomization;
/// Provides custom settings for text fields.
/// The default is <code>STPThreeDSTextFieldCustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSTextFieldCustomization * _Nonnull textFieldCustomization;
/// The primary background color of all UIViewControllers displayed during 3D Secure authentication.
/// Defaults to white.
@property (nonatomic, strong) UIColor * _Nonnull backgroundColor;
/// Provides custom settings for the footer the challenge view can display containing additional details.
/// The default is <code>STPThreeDSFooterCustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSFooterCustomization * _Nonnull footerCustomization;
/// Sets a given button customization for the specified type.
/// \param buttonCustomization The buttom customization to use.
///
/// \param buttonType The type of button to use the customization for.
///
- (void)setButtonCustomization:(STPThreeDSButtonCustomization * _Nonnull)buttonCustomization forType:(enum STPThreeDSCustomizationButtonType)buttonType;
/// Retrieves a button customization object for the given button type.
/// seealso:
/// STPThreeDSButtonCustomization
/// \param buttonType The button type to retrieve a customization object for.
///
///
/// returns:
/// A button customization object, or the default if none was set.
- (STPThreeDSButtonCustomization * _Nonnull)buttonCustomizationForButtonType:(enum STPThreeDSCustomizationButtonType)buttonType SWIFT_WARN_UNUSED_RESULT;
/// Provides custom settings for radio buttons and checkboxes.
/// The default is <code>STPThreeDSSelectionCustomization.defaultSettings()</code>.
@property (nonatomic, strong) STPThreeDSSelectionCustomization * _Nonnull selectionCustomization;
/// The style of <code>UIActivityIndicatorView</code>s displayed.
/// This should contrast with <code>backgroundColor</code>.  Defaults to gray.
@property (nonatomic) enum UIActivityIndicatorViewStyle activityIndicatorViewStyle;
/// The style of the <code>UIBlurEffect</code> displayed underneath the <code>UIActivityIndicatorView</code>.
/// Defaults to <code>UIBlurEffectStyleLight</code>.
@property (nonatomic) enum UIBlurEffectStyle blurStyle;
/// :nodoc:
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

enum STPTokenType : NSInteger;

/// A token returned from submitting payment details to the Stripe API. You should not have to instantiate one of these directly.
SWIFT_CLASS("_TtC14StripePayments8STPToken")
@interface STPToken : NSObject <STPAPIResponseDecodable, STPSourceProtocol>
/// You cannot directly instantiate an <code>STPToken</code>. You should only use one that has been returned from an <code>STPAPIClient</code> callback.
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// The value of the token. You can store this value on your server and use it to make charges and customers.
/// seealso:
/// https://stripe.com/docs/payments/charges-api
@property (nonatomic, readonly, copy) NSString * _Nonnull tokenId;
/// Whether or not this token was created in livemode. Will be YES if you used your Live Publishable Key, and NO if you used your Test Publishable Key.
@property (nonatomic, readonly) BOOL livemode;
/// The type of this token.
@property (nonatomic, readonly) enum STPTokenType type;
/// The credit card details that were used to create the token. Will only be set if the token was created via a credit card or Apple Pay, otherwise it will be
/// nil.
@property (nonatomic, readonly, strong) STPCard * _Nullable card;
/// The bank account details that were used to create the token. Will only be set if the token was created with a bank account, otherwise it will be nil.
@property (nonatomic, readonly, strong) STPBankAccount * _Nullable bankAccount;
/// When the token was created.
@property (nonatomic, readonly, copy) NSDate * _Nullable created;
@property (nonatomic, readonly, copy) NSDictionary * _Nonnull allResponseFields;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// :nodoc:
@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription;
/// :nodoc:
- (BOOL)isEqual:(id _Nullable)object SWIFT_WARN_UNUSED_RESULT;
/// :nodoc:
@property (nonatomic, readonly) NSUInteger hash;
@property (nonatomic, readonly, copy) NSString * _Nonnull stripeID;
+ (nullable instancetype)decodedObjectFromAPIResponse:(NSDictionary * _Nullable)response SWIFT_WARN_UNUSED_RESULT;
@end

/// Possible Token types
typedef SWIFT_ENUM(NSInteger, STPTokenType, open) {
/// Account token type
  STPTokenTypeAccount = 0,
/// Bank account token type
  STPTokenTypeBankAccount = 1,
/// Card token type
  STPTokenTypeCard = 2,
/// PII token type
  STPTokenTypePII = 3,
/// CVC update token type
  STPTokenTypeCvcUpdate = 4,
};

@class PKPaymentRequest;

@interface StripeAPI (SWIFT_EXTENSION(StripePayments))
/// A convenience method to build a <code>PKPaymentRequest</code> with sane default values.
/// You will still need to configure the <code>paymentSummaryItems</code> property to indicate
/// what the user is purchasing, as well as the optional <code>requiredShippingAddressFields</code>,
/// <code>requiredBillingAddressFields</code>, and <code>shippingMethods</code> properties to indicate
/// what contact information your application requires.
/// Note that this method sets the payment request’s countryCode to “US” and its
/// currencyCode to “USD”.
/// \param merchantIdentifier Your Apple Merchant ID.
///
///
/// returns:
/// a <code>PKPaymentRequest</code> with proper default values. Returns nil if running on < iOS8.
/// @deprecated Use <code>paymentRequestWithMerchantIdentifier:country:currency:</code> instead.
/// Apple Pay is available in many countries and currencies, and you should use
/// the appropriate values for your business.
+ (PKPaymentRequest * _Nonnull)paymentRequestWithMerchantIdentifier:(NSString * _Nonnull)merchantIdentifier SWIFT_WARN_UNUSED_RESULT SWIFT_DEPRECATED_MSG("Use `paymentRequestWithMerchantIdentifier:country:currency:` instead.");
@end



#endif
#if defined(__cplusplus)
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#pragma clang diagnostic pop
#endif

#else
#error unsupported Swift architecture
#endif
