diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6abe79f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,40 @@
+.DS_Store
+tmp
+bin
+build
+
+*/*/modules
+*/*/modules*
+.apt_generated
+build.properties
+.svn
+*.pyc
+*~.nib/
+*.pbxuser
+*.perspective
+*.perspectivev3
+xcuserdata
+*.xcuserstate
+*.xcuserdata*
+
+.idea/
+libs/
+
+android/clean
+android/ant_clean
+android/.classpath
+android/.settings
+android/dist/
+android/launch-*
+android/example/
+nbproject
+/metadata.json
+/ios/metadata.json
+/ios/Carthage
+
+android/java-sources.txt
+android/build.properties
+android/.project
+android/platform/README.md
+/ios/dist
+/android/.gradle
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..6ae867d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1 @@
+TODO: place your license here and we'll include it in the module distribution
diff --git a/README b/README
new file mode 100644
index 0000000..5a51f9a
--- /dev/null
+++ b/README
@@ -0,0 +1,107 @@
+# Appcelerator Titanium Mobile Module Project
+
+This is a skeleton Titanium Mobile Mobile module project.
+
+## Module Naming
+
+Choose a unique module id for your module. This ID usually follows a namespace
+convention using DNS notation. For example, com.appcelerator.module.test. This
+ID can only be used once by all public modules in Titanium.
+
+## Getting Started
+
+1. Edit the `manifest` with the appropriate details about your module.
+2. Edit the `LICENSE` to add your license details.
+3. Place any assets (such as PNG files) that are required anywhere in the module folder.
+4. Edit the `timodule.xml` and configure desired settings.
+5. Code and build.
+
+## Documentation
+-----------------------------
+
+You should provide at least minimal documentation for your module in `documentation` folder using the Markdown syntax.
+
+For more information on the Markdown syntax, refer to this documentation at:
+
+
+
+## Example
+
+The `example` directory contains a skeleton application test harness that can be
+used for testing and providing an example of usage to the users of your module.
+
+## Building
+
+Simply run `appc run -p [ios|android] --build-only` which will compile and package your module.
+
+## Linting
+
+You can use `clang` to lint your code. A default Axway linting style is included inside the module main folder.
+Run `clang-format -style=file -i SRC_FILE` in the module root to lint the `SRC_FILE`. You can also patterns,
+like `clang-format -style=file -i Classes/*`
+
+## Install
+
+To use your module locally inside an app you can copy the zip file into the app root folder and compile your app.
+The file will automatically be extracted and copied into the correct `modules/` folder.
+
+If you want to use your module globally in all your apps you have to do the following:
+
+### macOS
+
+Copy the distribution zip file into the `~/Library/Application Support/Titanium` folder
+
+### Linux
+
+Copy the distribution zip file into the `~/.titanium` folder
+
+### Windows
+Copy the distribution zip file into the `C:\ProgramData\Titanium` folder
+
+## Project Usage
+
+Register your module with your application by editing `tiapp.xml` and adding your module.
+Example:
+
+
+ ti.stripe
+
+
+When you run your project, the compiler will combine your module along with its dependencies
+and assets into the application.
+
+## Example Usage
+
+To use your module in code, you will need to require it.
+
+### ES6+ (recommended)
+
+```js
+import MyModule from 'ti.stripe';
+MyModule.foo();
+```
+
+### ES5
+
+```js
+var MyModule = require('ti.stripe');
+MyModule.foo();
+```
+
+## Testing
+
+To test your module with the example, use:
+
+```js
+appc run -p [ios|android]
+```
+
+This will execute the app.js in the example/ folder as a Titanium application.
+
+## Distribution
+
+You have a variety of choises for distributing your module
+- [Gitt.io](http://gitt.io/)
+- [Axway Marketplace](https://marketplace.axway.com/home)
+
+Code strong!
diff --git a/android/.clang-format b/android/.clang-format
new file mode 100644
index 0000000..3e6a508
--- /dev/null
+++ b/android/.clang-format
@@ -0,0 +1,26 @@
+---
+Language: Java
+AccessModifierOffset: -4
+AllowShortBlocksOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+# class, constructor, method should be next line
+BreakBeforeBraces: Linux
+# Keep '=' at end of line when wrapping, but move things like '&&', '||' to beginning of newline
+BreakBeforeBinaryOperators: NonAssignment
+# FIXME: break for brace after synchronized block, anonymous class declarations
+BreakAfterJavaFieldAnnotations: true
+ColumnLimit: 120
+IndentCaseLabels: true
+IndentWidth: 4
+MaxEmptyLinesToKeep: 1
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: ControlStatements
+SpacesInParentheses: false
+TabWidth: 4
+UseTab: ForContinuationAndIndentation
+SpaceAfterCStyleCast: true
+# Spaces inside {} for array literals, i.e. "new Object[] { args }"
+Cpp11BracedListStyle: false
+ReflowComments: false
diff --git a/android/Resources/README.md b/android/Resources/README.md
new file mode 100644
index 0000000..8a22549
--- /dev/null
+++ b/android/Resources/README.md
@@ -0,0 +1,8 @@
+Files in this folder are copied directory into the compiled product directory
+when the Android app is compiled:
+
+ /build/android/bin/assets/Resources/
+
+Files in this directory are copied directly on top of whatever files are already
+in the build directory, so please be careful that your files don't clobber
+essential project files or files from other modules.
diff --git a/android/build.xml b/android/build.xml
new file mode 100644
index 0000000..6643cce
--- /dev/null
+++ b/android/build.xml
@@ -0,0 +1,56 @@
+
+
+ Ant build script for Titanium Android module titanium-stripe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/lib/README b/android/lib/README
new file mode 100644
index 0000000..a54313f
--- /dev/null
+++ b/android/lib/README
@@ -0,0 +1,2 @@
+You can place any .jar dependencies in this directory and they will be included
+when your module is being compiled.
\ No newline at end of file
diff --git a/android/manifest b/android/manifest
new file mode 100644
index 0000000..71368fe
--- /dev/null
+++ b/android/manifest
@@ -0,0 +1,18 @@
+#
+# this is your module manifest and used by Titanium
+# during compilation, packaging, distribution, etc.
+#
+version: 1.0.0
+apiversion: 4
+architectures: arm64-v8a armeabi-v7a x86
+description: titanium-stripe
+author: Your Name
+license: Specify your license
+copyright: Copyright (c) 2020 by Your Company
+
+# these should not be edited
+name: titanium-stripe
+moduleid: ti.stripe
+guid: 8a8da6b4-4dab-4c18-9439-de2e14457a1c
+platform: android
+minsdk: 8.3.2
diff --git a/android/src/ti/stripe/ExampleProxy.java b/android/src/ti/stripe/ExampleProxy.java
new file mode 100644
index 0000000..49404b1
--- /dev/null
+++ b/android/src/ti/stripe/ExampleProxy.java
@@ -0,0 +1,104 @@
+/**
+ * This file was auto-generated by the Titanium Module SDK helper for Android
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2017 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ *
+ */
+package ti.stripe;
+
+import org.appcelerator.kroll.KrollDict;
+import org.appcelerator.kroll.KrollProxy;
+import org.appcelerator.kroll.annotations.Kroll;
+import org.appcelerator.titanium.TiC;
+import org.appcelerator.kroll.common.Log;
+import org.appcelerator.kroll.common.TiConfig;
+import org.appcelerator.titanium.util.TiConvert;
+import org.appcelerator.titanium.proxy.TiViewProxy;
+import org.appcelerator.titanium.view.TiCompositeLayout;
+import org.appcelerator.titanium.view.TiCompositeLayout.LayoutArrangement;
+import org.appcelerator.titanium.view.TiUIView;
+
+import android.app.Activity;
+
+
+// This proxy can be created by calling TitaniumStripe.createExample({message: "hello world"})
+@Kroll.proxy(creatableInModule=TitaniumStripeModule.class)
+public class ExampleProxy extends TiViewProxy
+{
+ // Standard Debugging variables
+ private static final String LCAT = "ExampleProxy";
+ private static final boolean DBG = TiConfig.LOGD;
+
+ private class ExampleView extends TiUIView
+ {
+ public ExampleView(TiViewProxy proxy) {
+ super(proxy);
+ LayoutArrangement arrangement = LayoutArrangement.DEFAULT;
+
+ if (proxy.hasProperty(TiC.PROPERTY_LAYOUT)) {
+ String layoutProperty = TiConvert.toString(proxy.getProperty(TiC.PROPERTY_LAYOUT));
+ if (layoutProperty.equals(TiC.LAYOUT_HORIZONTAL)) {
+ arrangement = LayoutArrangement.HORIZONTAL;
+ } else if (layoutProperty.equals(TiC.LAYOUT_VERTICAL)) {
+ arrangement = LayoutArrangement.VERTICAL;
+ }
+ }
+ setNativeView(new TiCompositeLayout(proxy.getActivity(), arrangement));
+ }
+
+ @Override
+ public void processProperties(KrollDict d)
+ {
+ super.processProperties(d);
+ }
+ }
+
+
+ // Constructor
+ public ExampleProxy()
+ {
+ super();
+ }
+
+ @Override
+ public TiUIView createView(Activity activity)
+ {
+ TiUIView view = new ExampleView(this);
+ view.getLayoutParams().autoFillsHeight = true;
+ view.getLayoutParams().autoFillsWidth = true;
+ return view;
+ }
+
+ // Handle creation options
+ @Override
+ public void handleCreationDict(KrollDict options)
+ {
+ super.handleCreationDict(options);
+
+ if (options.containsKey("message")) {
+ Log.d(LCAT, "example created with message: " + options.get("message"));
+ }
+ }
+
+ // Methods
+ @Kroll.method
+ public void printMessage(String message)
+ {
+ Log.d(LCAT, "printing message: " + message);
+ }
+
+
+ @Kroll.getProperty @Kroll.method
+ public String getMessage()
+ {
+ return "Hello World from my module";
+ }
+
+ @Kroll.setProperty @Kroll.method
+ public void setMessage(String message)
+ {
+ Log.d(LCAT, "Tried setting module message to: " + message);
+ }
+}
diff --git a/android/src/ti/stripe/TitaniumStripeModule.java b/android/src/ti/stripe/TitaniumStripeModule.java
new file mode 100644
index 0000000..e1024a0
--- /dev/null
+++ b/android/src/ti/stripe/TitaniumStripeModule.java
@@ -0,0 +1,67 @@
+/**
+ * This file was auto-generated by the Titanium Module SDK helper for Android
+ * Appcelerator Titanium Mobile
+ * Copyright (c) 2009-2018 by Appcelerator, Inc. All Rights Reserved.
+ * Licensed under the terms of the Apache Public License
+ * Please see the LICENSE included with this distribution for details.
+ *
+ */
+package ti.stripe;
+
+import org.appcelerator.kroll.KrollModule;
+import org.appcelerator.kroll.annotations.Kroll;
+
+import org.appcelerator.titanium.TiApplication;
+import org.appcelerator.kroll.common.Log;
+import org.appcelerator.kroll.common.TiConfig;
+
+
+@Kroll.module(name="TitaniumStripe", id="ti.stripe")
+public class TitaniumStripeModule extends KrollModule
+{
+
+ // Standard Debugging variables
+ private static final String LCAT = "TitaniumStripeModule";
+ private static final boolean DBG = TiConfig.LOGD;
+
+ // You can define constants with @Kroll.constant, for example:
+ // @Kroll.constant public static final String EXTERNAL_NAME = value;
+
+ public TitaniumStripeModule()
+ {
+ super();
+ }
+
+ @Kroll.onAppCreate
+ public static void onAppCreate(TiApplication app)
+ {
+ Log.d(LCAT, "inside onAppCreate");
+ // put module init code that needs to run when the application is created
+ }
+
+ // Methods
+ @Kroll.method
+ public String example()
+ {
+ Log.d(LCAT, "example called");
+ return "hello world";
+ }
+
+ // Properties
+ @Kroll.method
+ @Kroll.getProperty
+ public String getExampleProp()
+ {
+ Log.d(LCAT, "get example property");
+ return "hello world";
+ }
+
+
+ @Kroll.method
+ @Kroll.setProperty
+ public void setExampleProp(String value) {
+ Log.d(LCAT, "set example property: " + value);
+ }
+
+}
+
diff --git a/android/timodule.xml b/android/timodule.xml
new file mode 100644
index 0000000..ae31597
--- /dev/null
+++ b/android/timodule.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/example/app.js b/example/app.js
new file mode 100644
index 0000000..af6a4ee
--- /dev/null
+++ b/example/app.js
@@ -0,0 +1,55 @@
+var Stripe = require('ti.stripe');
+
+var win = Ti.UI.createWindow({
+ backgroundColor: '#fff',
+ layout: 'vertical'
+});
+
+win.addEventListener('open', initialize);
+win.open();
+
+addButton('Update payment details', updatePaymentDetails);
+addButton('Show payment options', showPaymentOptions);
+addButton('Request payment', requestPayment);
+
+function initialize() {
+ Stripe.initialize({
+ publishableKey: 'YOUR_PUBLISHABLE_KEY',
+ companyName: 'YOUR_COMPANY_NAME',
+ styles: {
+ primaryBackgroundColor: 'red',
+ primaryForegroundColor: 'blue',
+ secondaryForegroundColor: 'yellow',
+ accentColor: 'green'
+ }
+ });
+}
+
+function updatePaymentDetails() {
+ Stripe.updatePaymentDetails({
+ currency: 'EUR',
+ country: 'DE',
+ items: [{
+ label: 'Item 1',
+ amount: 12.50
+ }, {
+ label: 'Ite, 2',
+ amount: 0.49
+ }]
+ });
+}
+
+function showPaymentOptions() {
+ Stripe.showPaymentOptions();
+}
+
+function requestPayment() {
+ Stripe.requestPayment();
+}
+
+function addButton(title, action) {
+ var button = Ti.UI.createButton({ top: 100, title });
+ button.addEventListener('click', action);
+
+ return button;
+}
\ No newline at end of file
diff --git a/ios/Cartfile b/ios/Cartfile
new file mode 100644
index 0000000..4675557
--- /dev/null
+++ b/ios/Cartfile
@@ -0,0 +1 @@
+github "stripe/stripe-ios" ~> 19.0.1
\ No newline at end of file
diff --git a/ios/Cartfile.resolved b/ios/Cartfile.resolved
new file mode 100644
index 0000000..27b5f65
--- /dev/null
+++ b/ios/Cartfile.resolved
@@ -0,0 +1 @@
+github "stripe/stripe-ios" "v19.0.1"
diff --git a/ios/Classes/TiStripe.h b/ios/Classes/TiStripe.h
new file mode 100644
index 0000000..eaac282
--- /dev/null
+++ b/ios/Classes/TiStripe.h
@@ -0,0 +1,17 @@
+//
+// TiStripe.h
+// titanium-stripe
+//
+// Created by Your Name
+// Copyright (c) 2020 Your Company. All rights reserved.
+//
+
+#import
+
+//! Project version number for TiStripe.
+FOUNDATION_EXPORT double TiStripeVersionNumber;
+
+//! Project version string for TiStripe.
+FOUNDATION_EXPORT const unsigned char TiStripeVersionString[];
+
+#import "TiStripeModuleAssets.h"
diff --git a/ios/Classes/TiStripeModule.swift b/ios/Classes/TiStripeModule.swift
new file mode 100644
index 0000000..0de7e53
--- /dev/null
+++ b/ios/Classes/TiStripeModule.swift
@@ -0,0 +1,133 @@
+//
+// TiStripeModule.swift
+// titanium-stripe
+//
+// Created by Your Name
+// Copyright (c) 2020 Your Company. All rights reserved.
+//
+
+import Stripe
+import TitaniumKit
+import UIKit
+
+@objc(TiStripeModule)
+class TiStripeModule: TiModule {
+
+ var paymentContext: STPPaymentContext?
+
+ var customerContext: STPCustomerContext?
+
+ func moduleGUID() -> String {
+ return "8a8da6b4-4dab-4c18-9439-de2e14457a1c"
+ }
+
+ @objc(initialize:)
+ func initialize(args: [Any]?) {
+ guard let args = args, let params = args.first as? [String: Any] else { return }
+
+ customerContext = STPCustomerContext(keyProvider: self)
+ paymentContext = STPPaymentContext(customerContext: customerContext!)
+
+ guard let publishableKey = params["publishableKey"] as? String, let companyName = params["companyName"] as? String else { return }
+
+ STPPaymentConfiguration.shared().companyName = companyName
+ STPAPIClient.shared().publishableKey = publishableKey
+
+ if let styles = params["styles"] as? [String: Any] {
+ if let primaryBackgroundColor = styles["primaryBackgroundColor"] {
+ STPTheme.default().primaryBackgroundColor = TiUtils.colorValue(primaryBackgroundColor)?.color
+ }
+ if let primaryForegroundColor = styles["primaryForegroundColor"] {
+ STPTheme.default().primaryForegroundColor = TiUtils.colorValue(primaryForegroundColor)?.color
+ }
+ if let secondaryForegroundColor = styles["secondaryForegroundColor"] {
+ STPTheme.default().secondaryForegroundColor = TiUtils.colorValue(secondaryForegroundColor)?.color
+ }
+ if let accentColor = styles["accentColor"] {
+ STPTheme.default().accentColor = TiUtils.colorValue(accentColor)?.color
+ }
+ }
+
+ paymentContext?.delegate = self
+ paymentContext?.hostViewController = TiApp().controller.topPresentedController()
+ }
+
+ @objc(updatePaymentDetails:)
+ func updatePaymentDetails(args: [Any]?) {
+ guard let args = args, let params = args.first as? [String: Any] else { return }
+
+ guard let items = params["items"] as? [[String: Any]],
+ let currency = params["currency"] as? String,
+ let country = params["country"] as? String else { return }
+
+ paymentContext?.paymentCurrency = currency
+ paymentContext?.paymentCountry = country
+ paymentContext?.paymentSummaryItems = items.map({
+ PKPaymentSummaryItem(label: $0["label"] as! String,
+ amount: NSDecimalNumber(value: $0["amount"] as! Double))
+ })
+ }
+
+ @objc(showPaymentOptions:)
+ func showPaymentOptions(args: [Any]?) {
+ paymentContext?.presentPaymentOptionsViewController()
+ }
+
+ @objc(requestPayment:)
+ func requestPayment(args: [Any]?) {
+ paymentContext?.requestPayment()
+ }
+}
+
+extension TiStripeModule: STPCustomerEphemeralKeyProvider {
+ func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
+ // TODO: Generate ephemeral key online and pass result here
+ completion([:], nil)
+
+ //
+ // let endpoint = "/api/passengers/me/ephemeral_keys"
+ //
+ // guard
+ // !baseURLString.isEmpty,
+ // let baseURL = URL(string: baseURLString),
+ // let url = URL(string: endpoint, relativeTo: baseURL) else {
+ // completion(nil, CustomerKeyError.missingBaseURL)
+ // return
+ // }
+ //
+ // let parameters: [String: Any] = ["api_version": apiVersion]
+ //
+ // Alamofire.request(url, method: .post, parameters: parameters).responseJSON { (response) in
+ // guard let json = response.result.value as? [AnyHashable: Any] else {
+ // completion(nil, CustomerKeyError.invalidResponse)
+ // return
+ // }
+ //
+ // completion(json, nil)
+ // }
+ }
+
+
+}
+
+// MARK: STPPaymentContextDelegate
+
+extension TiStripeModule : STPPaymentContextDelegate {
+
+ func paymentContext(_ paymentContext: STPPaymentContext, didFailToLoadWithError error: Error) {
+ fireEvent("error", with: ["error": error.localizedDescription])
+ }
+
+ func paymentContextDidChange(_ paymentContext: STPPaymentContext) {
+ fireEvent("contextChange")
+ }
+
+ func paymentContext(_ paymentContext: STPPaymentContext, didCreatePaymentResult paymentResult: STPPaymentResult, completion: @escaping STPPaymentStatusBlock) {
+ let event = ["stripeId": paymentResult.paymentMethod?.stripeId, "customerId": paymentResult.paymentMethod?.customerId]
+ fireEvent("paymentResult", with: event)
+ }
+
+ func paymentContext(_ paymentContext: STPPaymentContext, didFinishWith status: STPPaymentStatus, error: Error?) {
+ fireEvent("finish", with: ["status": status.rawValue, "error": error?.localizedDescription ?? ""])
+ }
+}
diff --git a/ios/Classes/TiStripeModuleAssets.h b/ios/Classes/TiStripeModuleAssets.h
new file mode 100644
index 0000000..a67e139
--- /dev/null
+++ b/ios/Classes/TiStripeModuleAssets.h
@@ -0,0 +1,12 @@
+/**
+ * This is a generated file. Do not edit or your changes will be lost
+ */
+
+@interface TiStripeModuleAssets : NSObject {
+
+}
+
+- (NSData *)moduleAsset;
+- (NSData *)resolveModuleAsset:(NSString*)path;
+
+@end
diff --git a/ios/Classes/TiStripeModuleAssets.m b/ios/Classes/TiStripeModuleAssets.m
new file mode 100644
index 0000000..10f0606
--- /dev/null
+++ b/ios/Classes/TiStripeModuleAssets.m
@@ -0,0 +1,24 @@
+/**
+ * This is a generated file. Do not edit or your changes will be lost
+ */
+#import "TiStripeModuleAssets.h"
+
+extern NSData* filterDataInRange(NSData* thedata, NSRange range);
+
+@implementation TiStripeModuleAssets
+
+- (NSData *)moduleAsset
+{
+
+
+ return nil;
+}
+
+- (NSData *)resolveModuleAsset:(NSString *)path
+{
+
+
+ return nil;
+}
+
+@end
diff --git a/ios/Info.plist b/ios/Info.plist
new file mode 100644
index 0000000..fbe1e6b
--- /dev/null
+++ b/ios/Info.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ NSPrincipalClass
+
+
+
diff --git a/ios/README.md b/ios/README.md
new file mode 100644
index 0000000..7d68997
--- /dev/null
+++ b/ios/README.md
@@ -0,0 +1,138 @@
+# Axway Titanium iOS Project
+
+This is a skeleton Titanium iOS module project. Modules can be used to extend
+the functionality of Titanium by providing additional native code that is compiled
+into your application at build time and can expose certain APIs into JavaScript.
+
+## Naming
+
+Choose a unique module id for your module. We usually stick to a naming convention
+like `ti.map` or `titanium-map` to make it more easy to find Titanium modules in the wild.
+
+
+## Components
+
+Components that are exposed by your module must follow a special naming convention.
+A component (widget, proxy, etc) must be named with the pattern:
+
+```
+TiProxy
+```
+
+For example, if you component was called Foo, your proxy would be named:
+
+```
+TiMyfirstFooProxy
+```
+
+For view proxies or widgets, you must create both a view proxy and a view implementation.
+If you widget was named proxy, you would create the following files:
+
+```
+TiMyfirstFooProxy.swift
+TiMyfirstFoo.swift
+```
+
+The view implementation is named the same except it does contain the suffix `Proxy`.
+
+View implementations extend the Titanium base class `TiUIView`. View Proxies extend the
+Titanium base class `TiUIViewProxy` or `TiUIWidgetProxy`.
+
+For proxies that are simply native objects that can be returned to JavaScript, you can
+simply extend `TiProxy` and no view implementation is required.
+
+## Get started
+
+1. Edit manifest with the appropriate details about your module.
+2. Edit LICENSE to add your license details.
+3. Place any assets (such as PNG files) that are required in the assets folder.
+4. Edit the titanium.xcconfig and make sure you're building for the right Titanium version.
+5. Code and build.
+
+## Build time configuration
+
+You can edit the file `module.xcconfig` to include any build time settings that should be
+set during application compilation that your module requires. This file will automatically get imported
+in the main application project.
+
+For more information about this file, please see the [Apple documentation](https://developer.apple.com/library/content/featuredarticles/XcodeConcepts/Concept-Build_Settings.html).
+
+# Documentation
+
+You should provide at least minimal documentation for your module in `documentation` folder using the
+Markdown syntax.
+
+For more information on the Markdown syntax, refer to [this documentation](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
+
+## Examples
+
+The `example` directory contains a skeleton application test harness that can be
+used for testing and providing an example of usage to the users of your module.
+
+## Install
+
+1. Run `appc run -p ios --build-only` which creates your distribution package
+2. Switch to `~/Library/Application Support/Titanium`
+3. Copy this zip file into the folder of your Titanium SDK or copy it to your local project
+
+## Register the module
+
+Register your module with your application by editing `tiapp.xml` and adding your module.
+Example:
+
+```
+
+ __MODULE_ID__
+
+```
+
+When you run your project, the compiler will know automatically compile in your module
+dependencies and copy appropriate image assets into the application.
+
+## Using the module
+
+To use your module in code, you will need to require it.
+
+For example,
+
+```js
+var myModule = require('__MODULE_ID__');
+myModule.foo();
+```
+
+## Pure JavaScript modules
+
+You can write a pure JavaScript "natively compiled" module. This is nice if you
+want to distribute a JavaScript module pre-compiled.
+
+To create a module, create a file named __MODULE_ID__.js under the assets folder.
+This file must be in the CommonJS format. For example:
+
+```js
+exports.echo = (content) => {
+ return content;
+};
+```
+
+Any functions and properties that are exported will be made available as part of your
+module. All other code inside your JavaScript will be private to your module.
+
+For pure JavaScript module, you don't need to modify any of the Swift module code. You
+can leave it as-is and build.
+
+## Testing
+
+Run the `appc` CLI to test your module or test from within Xcode.
+To test with the script, execute:
+
+```
+appc run --project-dir
+```
+
+This will execute the app.js in the example folder as a Titanium application.
+
+## Distribution
+
+You can either open source your module or distribute your module via the [Appcelerator Marketplace](https://marketplace.appcelerator.com).
+
+Cheers!
diff --git a/ios/TiStripe_Prefix.pch b/ios/TiStripe_Prefix.pch
new file mode 100644
index 0000000..2fb3c7f
--- /dev/null
+++ b/ios/TiStripe_Prefix.pch
@@ -0,0 +1,5 @@
+
+#ifdef __OBJC__
+ #import
+#endif
+
diff --git a/ios/hooks/ti.swiftsupport.js b/ios/hooks/ti.swiftsupport.js
new file mode 100644
index 0000000..d0b9f13
--- /dev/null
+++ b/ios/hooks/ti.swiftsupport.js
@@ -0,0 +1,40 @@
+/**
+ * Ti.SwiftSupport
+ * Copyright (c) 2018-present by Axway Appcelerator.
+ * All Rights Reserved.
+ */
+
+'use strict';
+
+exports.id = 'ti.swiftsupport';
+exports.cliVersion = '>=3.2';
+exports.init = init;
+
+/**
+ * Main entry point for our plugin which looks for the platform specific
+ * plugin to invoke.
+ *
+ * @param {Object} logger The logger instance.
+ * @param {Object} config The hook config.
+ * @param {Object} cli The Titanium CLI instance.
+ * @param {Object} appc The Appcelerator CLI instance.
+ */
+// eslint-disable-next-line no-unused-vars
+function init(logger, config, cli, appc) {
+ cli.on('build.ios.xcodeproject', {
+ pre: function (data) {
+ var xobjs = data.args[0].hash.project.objects;
+
+ Object.keys(xobjs.PBXNativeTarget).forEach(function (targetUuid) {
+ var target = xobjs.PBXNativeTarget[targetUuid];
+ if (target && typeof target === 'object') {
+ console.warn(target);
+ xobjs.XCConfigurationList[target.buildConfigurationList].buildConfigurations.forEach(function (buildConf) {
+ var buildSettings = xobjs.XCBuildConfiguration[buildConf.value].buildSettings;
+ buildSettings.ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = 'YES';
+ });
+ }
+ });
+ }
+ });
+}
diff --git a/ios/manifest b/ios/manifest
new file mode 100644
index 0000000..d35ed87
--- /dev/null
+++ b/ios/manifest
@@ -0,0 +1,18 @@
+#
+# this is your module manifest and used by Titanium
+# during compilation, packaging, distribution, etc.
+#
+version: 1.0.0
+apiversion: 2
+architectures: armv7 arm64 i386 x86_64
+description: titanium-stripe is a Swift based Titanium module.
+author: Your Name
+license: Specify your license
+copyright: Copyright (c) 2020 by Your Company
+
+# these should not be edited
+name: titanium-stripe
+moduleid: ti.stripe
+guid: 8a8da6b4-4dab-4c18-9439-de2e14457a1c
+platform: iphone
+minsdk: 8.3.2
diff --git a/ios/module.xcconfig b/ios/module.xcconfig
new file mode 100644
index 0000000..3423d99
--- /dev/null
+++ b/ios/module.xcconfig
@@ -0,0 +1,28 @@
+//
+// PLACE ANY BUILD DEFINITIONS IN THIS FILE AND THEY WILL BE
+// PICKED UP DURING THE APP BUILD FOR YOUR MODULE
+//
+// see the following webpage for instructions on the settings
+// for this file:
+// https://developer.apple.com/library/content/featuredarticles/XcodeConcepts/Concept-Build_Settings.html
+//
+
+//
+// How to manually add a Framework (example)
+// Note: Titanium SDK 6.2.2+ detects and links frameworks automatically
+//
+// OTHER_LDFLAGS=$(inherited) -framework Foo
+//
+// Adding a framework for a specific version(s) of iOS, e.g iOS 11:
+//
+// OTHER_LDFLAGS[sdk=iphoneos11*]=$(inherited) -framework Foo
+// OTHER_LDFLAGS[sdk=iphonesimulator11*]=$(inherited) -framework Foo
+//
+//
+// How to add a compiler define:
+//
+// OTHER_CFLAGS=$(inherited) -DFOO=1
+//
+//
+// IMPORTANT NOTE: always use $(inherited) in your overrides
+//
diff --git a/ios/platform/Stripe.framework/Headers/FauxPasAnnotations.h b/ios/platform/Stripe.framework/Headers/FauxPasAnnotations.h
new file mode 100644
index 0000000..2d18c9a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/FauxPasAnnotations.h
@@ -0,0 +1,40 @@
+//
+// FauxPasAnnotations.h
+// ---
+//
+// This file defines macros that can be used to suppress
+// specific Faux Pas diagnostics within desired units of
+// code.
+//
+// The arguments to the macros should be the short names of
+// the rules whose diagnostics should be suppressed. The
+// suppression macros should be present _inside_ whichever
+// code entity they refer to. For example, if you wish
+// to suppress diagnostics from the `NSLogUsed` and
+// `DotSyntax` rules within an Objective-C method, you
+// would do this:
+//
+// - (void) myMethod {
+// FAUXPAS_IGNORED_IN_METHOD(NSLogUsed, DotSyntax)
+//
+// NSLog(@"Hello world from %@", self.class);
+// }
+//
+// The FAUXPAS_IGNORED() macro refers to the innermost
+// code entity it is contained in (an Obj-C method, a C
+// function, or an Obj-C class). This macro cannot be used
+// to suppress diagnostics within the whole file. For that,
+// use the more explicit FAUXPAS_IGNORED_IN_FILE() macro.
+//
+// ---
+// http://fauxpasapp.com
+//
+
+#pragma once
+
+#define FAUXPAS_IGNORED(...)
+#define FAUXPAS_IGNORED_IN_FILE(...)
+#define FAUXPAS_IGNORED_IN_METHOD(...)
+#define FAUXPAS_IGNORED_IN_FUNCTION(...)
+#define FAUXPAS_IGNORED_IN_CLASS(...)
+#define FAUXPAS_IGNORED_ON_LINE(...)
diff --git a/ios/platform/Stripe.framework/Headers/STDSAlreadyInitializedException.h b/ios/platform/Stripe.framework/Headers/STDSAlreadyInitializedException.h
new file mode 100644
index 0000000..c39a85d
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSAlreadyInitializedException.h
@@ -0,0 +1,22 @@
+//
+// STDSAlreadyInitializedException.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import "STDSException.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSAlreadyInitializedException` represents an exception that will be thrown in the `STDSThreeDS2Service` instance has already been initialized.
+
+ @see STDSThreeDS2Service
+ */
+@interface STDSAlreadyInitializedException : STDSException
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSAuthenticationRequestParameters.h b/ios/platform/Stripe.framework/Headers/STDSAuthenticationRequestParameters.h
new file mode 100644
index 0000000..766e485
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSAuthenticationRequestParameters.h
@@ -0,0 +1,68 @@
+//
+// STDSAuthenticationRequestParameters.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/21/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSJSONEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface STDSAuthenticationRequestParameters : NSObject
+
+/**
+ Designated initializer for `STDSAuthenticationRequestParameters`.
+
+ @param sdkTransactionIdentifier The SDK Transaction Identifier, as created by `[STDSTransaction createTransaction]`
+ @param deviceData Optional device data collected by the SDK.
+ @param sdkEphemeralPublicKey The SDK ephemeral public key.
+ @param sdkAppIdentifier The SDK app identifier.
+ @param sdkReferenceNumber The SDK reference number.
+ @param messageVersion The protocol version that is supported by the SDK and used for the transaction.
+
+ @exception InvalidInputException Thrown if an input parameter is invalid. @see InvalidInputException
+ */
+- (instancetype)initWithSDKTransactionIdentifier:(NSString *)sdkTransactionIdentifier
+ deviceData:(nullable NSString *)deviceData
+ sdkEphemeralPublicKey:(NSString *)sdkEphemeralPublicKey
+ sdkAppIdentifier:(NSString *)sdkAppIdentifier
+ sdkReferenceNumber:(NSString *)sdkReferenceNumber
+ messageVersion:(NSString *)messageVersion;
+
+/**
+ The encrypted device data as a JWE string.
+ */
+@property (nonatomic, readonly, nullable) NSString *deviceData;
+
+/**
+ The SDK Transaction Identifier.
+ */
+@property (nonatomic, readonly) NSString *sdkTransactionIdentifier;
+
+/**
+ The SDK App Identifier.
+ */
+@property (nonatomic, readonly) NSString *sdkAppIdentifier;
+
+/**
+ The SDK reference number.
+ */
+@property (nonatomic, readonly) NSString *sdkReferenceNumber;
+
+/**
+ The SDK ephemeral public key.
+ */
+@property (nonatomic, readonly) NSString *sdkEphemeralPublicKey;
+
+/**
+ The protocol version that is used for the transaction.
+ */
+@property (nonatomic, readonly) NSString *messageVersion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSAuthenticationResponse.h b/ios/platform/Stripe.framework/Headers/STDSAuthenticationResponse.h
new file mode 100644
index 0000000..d527f38
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSAuthenticationResponse.h
@@ -0,0 +1,115 @@
+//
+// STDSAuthenticationResponse.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 2/13/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSJSONDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The `STDSACSStatusType` enum defines the status of a transaction, as detailed in
+ 3DS2 Spec Seq 3.33:
+ */
+typedef NS_ENUM(NSInteger, STDSACSStatusType) {
+ /// The status is unknown or invalid
+ STDSACSStatusTypeUnknown = 0,
+
+ /// Authenticated
+ STDSACSStatusTypeAuthenticated = 1,
+
+ /// Requires a Cardholder challenge to complete authentication
+ STDSACSStatusTypeChallengeRequired = 2,
+
+ /// Requires a Cardholder challenge using Decoupled Authentication
+ STDSACSStatusTypeDecoupledAuthentication = 3,
+
+ /// Not authenticated
+ STDSACSStatusTypeNotAuthenticated = 4,
+
+ /// Not authenticated, but a proof of authentication attempt (Authentication Value)
+ /// was generated
+ STDSACSStatusTypeProofGenerated = 5,
+
+ /// Not authenticated, as authentication could not be performed due to technical or
+ /// other issue
+ STDSACSStatusTypeError = 6,
+
+ /// Not authenticated because the Issuer is rejecting authentication and requesting
+ /// that authorisation not be attempted
+ STDSACSStatusTypeRejected = 7,
+
+ /// Authentication not requested by the 3DS Server for data sent for informational
+ /// purposes only
+ STDSACSStatusTypeInformationalOnly = 8,
+};
+
+/**
+ A native protocol representing the response sent by the 3DS Server.
+ Only parameters relevant to performing 3DS2 authentication in the mobile SDK are exposed.
+ */
+@protocol STDSAuthenticationResponse
+
+/// Universally unique transaction identifier assigned by the 3DS Server to identify a single transaction.
+@property (nonatomic, readonly) NSString *threeDSServerTransactionID;
+
+/// Transaction status
+@property (nonatomic, readonly) STDSACSStatusType status;
+
+/// Indication of whether a challenge is required.
+@property (nonatomic, readonly, getter=isChallengeRequired) BOOL challengeRequired;
+
+/// Indicates whether the ACS confirms utilisation of Decoupled Authentication and agrees to utilise Decoupled Authentication to authenticate the Cardholder.
+@property (nonatomic, readonly) BOOL willUseDecoupledAuthentication;
+
+/**
+ DS assigned ACS identifier.
+ Each DS can provide a unique ID to each ACS on an individual basis.
+ */
+@property (nonatomic, readonly, nullable) NSString *acsOperatorID;
+
+/// Unique identifier assigned by the EMVCo Secretariat upon Testing and Approval.
+@property (nonatomic, readonly, nullable) NSString *acsReferenceNumber;
+
+/// Contains the JWS object (represented as a string) created by the ACS for the ARes message.
+@property (nonatomic, readonly, nullable) NSString *acsSignedContent;
+
+/// Universally Unique transaction identifier assigned by the ACS to identify a single transaction.
+@property (nonatomic, readonly) NSString *acsTransactionID;
+
+/// Fully qualified URL of the ACS to be used for the challenge.
+@property (nonatomic, readonly, nullable) NSURL *acsURL;
+
+/**
+ Text provided by the ACS/Issuer to Cardholder during a Frictionless or Decoupled transaction. The Issuer can provide information to Cardholder.
+ For example, “Additional authentication is needed for this transaction, please contact (Issuer Name) at xxx-xxx-xxxx.”
+ */
+@property (nonatomic, readonly, nullable) NSString *cardholderInfo;
+
+/// EMVCo-assigned unique identifier to track approved DS.
+@property (nonatomic, readonly, nullable) NSString *directoryServerReferenceNumber;
+
+/// Universally unique transaction identifier assigned by the DS to identify a single transaction.
+@property (nonatomic, readonly, nullable) NSString *directoryServerTransactionID;
+
+/**
+ Protocol version identifier This shall be the Protocol Version Number of the specification utilised by the system creating this message.
+ The Message Version Number is set by the 3DS Server which originates the protocol with the AReq message.
+ The Message Version Number does not change during a 3DS transaction.
+ */
+@property (nonatomic, readonly) NSString *protocolVersion;
+
+/// Universally unique transaction identifier assigned by the 3DS SDK to identify a single transaction.
+@property (nonatomic, readonly) NSString *sdkTransactionID;
+
+@end
+
+/// A utility to parse an STDSAuthenticationResponse from JSON
+id _Nullable STDSAuthenticationResponseFromJSON(NSDictionary *json);
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSButtonCustomization.h b/ios/platform/Stripe.framework/Headers/STDSButtonCustomization.h
new file mode 100644
index 0000000..dd63f98
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSButtonCustomization.h
@@ -0,0 +1,83 @@
+//
+// STDSButtonCustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+#import
+#import
+
+#import "STDSCustomization.h"
+
+/// An enum that defines the different types of buttons that are able to be customized.
+typedef NS_ENUM(NSInteger, STDSUICustomizationButtonType) {
+
+ /// The submit button type.
+ STDSUICustomizationButtonTypeSubmit = 0,
+
+ /// The continue button type.
+ STDSUICustomizationButtonTypeContinue = 1,
+
+ /// The next button type.
+ STDSUICustomizationButtonTypeNext = 2,
+
+ /// The cancel button type.
+ STDSUICustomizationButtonTypeCancel = 3,
+
+ /// The resend button type.
+ STDSUICustomizationButtonTypeResend = 4,
+};
+
+/// An enumeration of the case transformations that can be applied to the button's title
+typedef NS_ENUM(NSInteger, STDSButtonTitleStyle) {
+ /// Default style, doesn't modify the title
+ STDSButtonTitleStyleDefault,
+
+ /// Applies localizedUppercaseString to the title
+ STDSButtonTitleStyleUppercase,
+
+ /// Applies localizedLowercaseString to the title
+ STDSButtonTitleStyleLowercase,
+
+ /// Applies localizedCapitalizedString to the title
+ STDSButtonTitleStyleSentenceCapitalized,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// A customization object to use to configure the UI of a button.
+@interface STDSButtonCustomization: STDSCustomization
+
+/// The default settings for the provided button type.
++ (instancetype)defaultSettingsForButtonType:(STDSUICustomizationButtonType)type;
+
+/**
+ Initializes an instance of STDSButtonCustomization with the given backgroundColor and colorRadius.
+ */
+- (instancetype)initWithBackgroundColor:(UIColor *)backgroundColor cornerRadius:(CGFloat)cornerRadius;
+
+/**
+ This is unavailable because there are no sensible default property values without a button type.
+ Use `defaultSettingsForButtonType:` or `initWithBackgroundColor:cornerRadius:` instead.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ 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) UIColor *backgroundColor;
+
+/// The corner radius of the button. Defaults to 8.
+@property (nonatomic) CGFloat cornerRadius;
+
+/**
+ The capitalization style of the button title
+ */
+@property (nonatomic) STDSButtonTitleStyle titleStyle;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSChallengeParameters.h b/ios/platform/Stripe.framework/Headers/STDSChallengeParameters.h
new file mode 100644
index 0000000..e1aa151
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSChallengeParameters.h
@@ -0,0 +1,61 @@
+//
+// STDSChallengeParameters.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 2/13/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+@protocol STDSAuthenticationResponse;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSChallengeParameters` contains information from the 3DS Server's
+ authentication response that are used by the 3DS2 SDK to initiate
+ the challenge flow.
+ */
+@interface STDSChallengeParameters : NSObject
+
+/**
+ Convenience intiializer to create an instace of `STDSChallengeParameters` from an
+ `STDSAuthenticationResponse`
+ */
+- (instancetype)initWithAuthenticationResponse:(id)authResponse;
+
+/**
+ Transaction identifier assigned by the 3DS Server to uniquely identify
+ a transaction.
+ */
+@property (nonatomic, copy) NSString *threeDSServerTransactionID;
+
+/**
+ Transaction identifier assigned by the Access Control Server (ACS)
+ to uniquely identify a transaction.
+ */
+@property (nonatomic, copy) NSString *acsTransactionID;
+
+/**
+ The reference number of the relevant Access Control Server.
+ */
+@property (nonatomic, copy) NSString *acsReferenceNumber;
+
+/**
+ The encrypted message sent by the Access Control Server
+ containing the ACS URL, epthemeral public key, and the
+ 3DS2 SDK ephemeral public key.
+ */
+@property (nonatomic, copy) NSString *acsSignedContent;
+
+/**
+ The URL for the application that is requesting 3DS2 verification.
+ This property can be optionally set and will be included with the
+ messages sent to the Directory Server during the challenge flow.
+ */
+@property (nonatomic, copy, nullable) NSString *threeDSRequestorAppURL;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSChallengeStatusReceiver.h b/ios/platform/Stripe.framework/Headers/STDSChallengeStatusReceiver.h
new file mode 100644
index 0000000..a06a32b
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSChallengeStatusReceiver.h
@@ -0,0 +1,61 @@
+//
+// STDSChallengeStatusReceiver.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/20/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+@class STDSTransaction, STDSCompletionEvent, STDSRuntimeErrorEvent, STDSProtocolErrorEvent;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Implement the `STDSChallengeStatusReceiver` protocol to receive challenge status notifications at the end of the challenge process.
+ @see `STDSTransaction.doChallenge`
+ */
+@protocol STDSChallengeStatusReceiver
+
+/**
+ Called when the challenge process is completed.
+
+ @param completionEvent Information about the completion of the challenge process. @see `STDSCompletionEvent`
+ */
+- (void)transaction:(STDSTransaction *)transaction didCompleteChallengeWithCompletionEvent:(STDSCompletionEvent *)completionEvent;
+
+/**
+ Called when the user selects the option to cancel the transaction on the challenge screen.
+ */
+- (void)transactionDidCancel:(STDSTransaction *)transaction;
+
+/**
+ Called when the challenge process reaches or exceeds the timeout interval that was passed to `STDSTransaction.doChallenge`
+ */
+- (void)transactionDidTimeOut:(STDSTransaction *)transaction;
+
+/**
+ Called when the 3DS SDK receives an EMV 3-D Secure protocol-defined error message from the ACS.
+
+ @param protocolErrorEvent The error code and details. @see `STDSProtocolErrorEvent`
+ */
+- (void)transaction:(STDSTransaction *)transaction didErrorWithProtocolErrorEvent:(STDSProtocolErrorEvent *)protocolErrorEvent;
+
+/**
+ Called when the 3DS SDK encounters errors during the challenge process. These errors include all errors except those covered by `didErrorWithProtocolErrorEvent`.
+
+ @param runtimeErrorEvent The error code and details. @see `STDSRuntimeErrorEvent`
+ */
+- (void)transaction:(STDSTransaction *)transaction didErrorWithRuntimeErrorEvent:(STDSRuntimeErrorEvent *)runtimeErrorEvent;
+
+@optional
+
+/**
+ Optional method that will be called when the transaction displays a new challenge screen.
+ */
+- (void)transactionDidPresentChallengeScreen:(STDSTransaction *)transaction;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSCompletionEvent.h b/ios/platform/Stripe.framework/Headers/STDSCompletionEvent.h
new file mode 100644
index 0000000..851c71d
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSCompletionEvent.h
@@ -0,0 +1,40 @@
+//
+// STDSCompletionEvent.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/20/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSCompletionEvent` contains information about completion of the challenge process.
+ */
+@interface STDSCompletionEvent : NSObject
+
+/**
+ Designated initializer for `STDSCompletionEvent`.
+ */
+- (instancetype)initWithSDKTransactionIdentifier:(NSString *)identifier transactionStatus:(NSString *)transactionStatus NS_DESIGNATED_INITIALIZER;
+
+/**
+ `STDSCompletionEvent` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ The SDK Transaction ID.
+ */
+@property (nonatomic, readonly) NSString *sdkTransactionIdentifier;
+
+/**
+ The transaction status that was received in the final challenge response.
+ */
+@property (nonatomic, readonly) NSString *transactionStatus;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSConfigParameters.h b/ios/platform/Stripe.framework/Headers/STDSConfigParameters.h
new file mode 100644
index 0000000..4d77ba5
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSConfigParameters.h
@@ -0,0 +1,96 @@
+//
+// STDSConfigParameters.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The default group name that will be used to group additional
+ configuration parameters.
+ */
+extern NSString * const kSTDSConfigDefaultGroupName;
+
+/**
+ `STDSConfigParameters` represents additional configuration parameters
+ that can be passed to the Stripe3DS2 SDK during initialization.
+
+ There are currently no supported additional parameters and apps can
+ just pass `[STDSConfigParameters alloc] initWithStandardParameters`
+ to the `STDSThreeDS2Service` instance.
+ */
+@interface STDSConfigParameters : NSObject
+
+/**
+ Convenience initializer to get an `STDSConfigParameters` instance
+ with the default expected configuration parameters.
+ */
+- (instancetype)initWithStandardParameters;
+
+/**
+ Adds the parameter to this instance.
+
+ @param paramName The name of the parameter to add
+ @param paramValue The value of the parameter to add
+ @param paramGroup The group to which this parameter will be added. If `nil` the parameter will be added to `kSTDSConfigDefaultGroupName`
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` or `paramValue` are `nil`. @see STDSInvalidInputException
+ */
+- (void)addParameterNamed:(NSString *)paramName withValue:(NSString *)paramValue toGroup:(nullable NSString *)paramGroup;
+
+/**
+ Adds the parameter to the default group in this instance.
+
+ @param paramName The name of the parameter to add
+ @param paramValue The value of the parameter to add
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` or `paramValue` are `nil`. @see STDSInvalidInputException
+ */
+- (void)addParameterNamed:(NSString *)paramName withValue:(NSString *)paramValue;
+
+/**
+ Returns the value for `paramName` in `paramGroup` or `nil` if the parameter value is not set.
+
+ @param paramName The name of the parameter to return
+ @param paramGroup The group from which to fetch the parameter value. If `nil` will default to `kSTDSConfigDefaultGroupName`
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` is `nil`. @see STDSInvalidInputException
+ */
+- (nullable NSString *)parameterValue:(NSString *)paramName inGroup:(nullable NSString *)paramGroup;
+
+/**
+ Returns the value for `paramName` in the default group or `nil` if the parameter value is not set.
+
+ @param paramName The name of the parameter to return
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` is `nil`. @see STDSInvalidInputException
+ */
+- (nullable NSString *)parameterValue:(NSString *)paramName;
+
+/**
+ Removes the specified parameter from the group and returns the value or `nil` if the parameter was not found.
+
+ @param paramName The name of the parameter to remove
+ @param paramGroup The group from which to remove this parameter. If `nil` will default to `kSTDSConfigDefaultGroupName`
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` is `nil`. @see STDSInvalidInputException
+ */
+- (nullable NSString *)removeParameterNamed:(NSString *)paramName fromGroup:(nullable NSString *)paramGroup;
+
+/**
+ Removes the specified parameter from the default group and returns the value or `nil` if the parameter was not found.
+
+ @param paramName The name of the parameter to remove
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `paramName` is `nil`. @see STDSInvalidInputException
+ */
+- (nullable NSString *)removeParameterNamed:(NSString *)paramName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSCustomization.h b/ios/platform/Stripe.framework/Headers/STDSCustomization.h
new file mode 100644
index 0000000..516eff9
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSCustomization.h
@@ -0,0 +1,25 @@
+//
+// STDSCustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// This class provides a common set of customization parameters, used to customize elements of the UI.
+@interface STDSCustomization : NSObject
+
+/// The font to use for text.
+@property (nonatomic, nullable) UIFont *font;
+
+/// The color to use for the text.
+@property (nonatomic, nullable) UIColor *textColor;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSErrorMessage.h b/ios/platform/Stripe.framework/Headers/STDSErrorMessage.h
new file mode 100644
index 0000000..35bce4a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSErrorMessage.h
@@ -0,0 +1,108 @@
+//
+// STDSErrorMessage.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/21/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSJSONEncodable.h"
+#import "STDSJSONDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/// Error codes as defined by the 3DS2 spec.
+typedef NS_ENUM(NSInteger, STDSErrorMessageCode) {
+ /// The SDK received a message that is not an ARes, CRes, or ErrorMessage.
+ STDSErrorMessageCodeInvalidMessage = 101,
+
+ /// A required data element is missing from the network response.
+ STDSErrorMessageCodeRequiredDataElementMissing = 201,
+
+ // Critical message extension not recognised
+ STDSErrorMessageCodeUnrecognizedCriticalMessageExtension = 202,
+
+ /// A data element is not in the required format or the value is invalid.
+ STDSErrorMessageErrorInvalidDataElement = 203,
+
+ // Transaction ID not recognized
+ STDSErrorMessageErrorTransactionIDNotRecognized = 301,
+
+ /// A network response could not be decrypted or verified.
+ STDSErrorMessageErrorDataDecryptionFailure = 302,
+
+ /// The SDK timed out
+ STDSErrorMessageErrorTimeout = 402,
+};
+
+/**
+ `STDSErrorMessage` represents an error message that is returned by the ACS or to be sent to the ACS.
+ */
+@interface STDSErrorMessage : NSObject
+
+/**
+ Designated initializer for `STDSErrorMessage`.
+
+ @param errorCode The error code.
+ @param errorComponent The component that identified the error.
+ @param errorDescription Text describing the error.
+ @param errorDetails Additional error details. Optional.
+ */
+- (instancetype)initWithErrorCode:(NSString *)errorCode
+ errorComponent:(NSString *)errorComponent
+ errorDescription:(NSString *)errorDescription
+ errorDetails:(nullable NSString *)errorDetails
+ messageVersion:(NSString *)messageVersion
+ acsTransactionIdentifier:(nullable NSString *)acsTransactionIdentifier
+ errorMessageType:(NSString *)errorMessageType;
+
+/**
+ `STDSErrorMessage` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ The error code.
+ */
+@property (nonatomic, readonly) NSString *errorCode;
+
+/**
+ The 3-D Secure component that identified the error.
+ */
+@property (nonatomic, readonly) NSString *errorComponent;
+
+/**
+ Text describing the error.
+ */
+@property (nonatomic, readonly) NSString *errorDescription;
+
+/**
+ Additional error details.
+ */
+@property (nonatomic, nullable, readonly) NSString *errorDetails;
+
+/**
+ The protocol version identifier.
+ */
+@property (nonatomic, readonly) NSString *messageVersion;
+
+/**
+ The ACS transaction identifier.
+ */
+@property (nonatomic, readonly, nullable) NSString *acsTransactionIdentifier;
+
+/**
+ The message type that was identified as erroneous.
+ */
+@property (nonatomic, readonly) NSString *errorMessageType;
+
+/**
+ A representation of the `STDSErrorMessage` as an `NSError`
+ */
+- (NSError *)NSErrorValue;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSException.h b/ios/platform/Stripe.framework/Headers/STDSException.h
new file mode 100644
index 0000000..1f2c5ec
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSException.h
@@ -0,0 +1,25 @@
+//
+// STDSException.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An abstract class to represent 3DS2 SDK custom exceptions
+ */
+@interface STDSException : NSException
+
+/**
+ A description of the exception.
+ */
+@property (nonatomic, readonly) NSString *message;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSFooterCustomization.h b/ios/platform/Stripe.framework/Headers/STDSFooterCustomization.h
new file mode 100644
index 0000000..990ffd9
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSFooterCustomization.h
@@ -0,0 +1,41 @@
+//
+// STDSFooterCustomization.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 6/10/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSCustomization.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The Challenge view displays a footer with additional details that
+ expand when tapped. This object configures the appearance of that view.
+*/
+@interface STDSFooterCustomization : STDSCustomization
+
+/// The default settings.
++ (instancetype)defaultSettings;
+
+/**
+ The background color of the footer.
+ Defaults to gray.
+ */
+@property (nonatomic) UIColor *backgroundColor;
+
+/// The color of the chevron. Defaults to a dark gray.
+@property (nonatomic) UIColor *chevronColor;
+
+/// The color of the heading text. Defaults to black.
+@property (nonatomic) UIColor *headingTextColor;
+
+/// The font to use for the heading text.
+@property (nonatomic) UIFont *headingFont;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSInvalidInputException.h b/ios/platform/Stripe.framework/Headers/STDSInvalidInputException.h
new file mode 100644
index 0000000..b30d4e1
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSInvalidInputException.h
@@ -0,0 +1,21 @@
+//
+// STDSInvalidInputException.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import "STDSException.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSInvalidInputException` represents an exception that will be thrown by
+ Stripe3DS2 SDK methods that are called with invalid input arguments.
+ */
+@interface STDSInvalidInputException : STDSException
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSJSONDecodable.h b/ios/platform/Stripe.framework/Headers/STDSJSONDecodable.h
new file mode 100644
index 0000000..f93428a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSJSONDecodable.h
@@ -0,0 +1,33 @@
+//
+// STDSJSONDecodable.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/27/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STDSJSONDecodable
+
+/**
+ Initializes an instance of the class from its JSON representation.
+
+ This method recognizes two categories of errors:
+ - a required field is missing.
+ - a required field value is in valid (e.g. expected 'Y' or 'N' but received 'X').
+
+ Errors populating optional fields are ignored.
+
+ @param json The JSON dictionary that represents an object of this type
+ @param outError If there was a missing required field or invalid field value, contains an instance of NSError.
+
+ @return The object represented by the JSON dictionary. If the object could not be decoded, returns nil and populates the outError argument.
+ */
++ (nullable instancetype)decodedObjectFromJSON:(nullable NSDictionary *)json error:(NSError **)outError;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSJSONEncodable.h b/ios/platform/Stripe.framework/Headers/STDSJSONEncodable.h
new file mode 100644
index 0000000..9861a23
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSJSONEncodable.h
@@ -0,0 +1,22 @@
+//
+// STDSJSONEncodable.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/25/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STDSJSONEncodable
+
+/**
+ Returns a map of property names to their JSON representation's key value. For example, `STDSChallengeParameters` has a property called `acsTransactionID`, but the 3DS2 JSON spec expects a field called `acsTransID`. This dictionary represents a mapping from the former to the latter (in other words, [STDSChallengeParameters propertyNamesToJSONKeysMapping][@"acsTransactionID"] == @"acsTransID".)
+ */
++ (NSDictionary *)propertyNamesToJSONKeysMapping;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSJSONEncoder.h b/ios/platform/Stripe.framework/Headers/STDSJSONEncoder.h
new file mode 100644
index 0000000..7ccc07e
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSJSONEncoder.h
@@ -0,0 +1,27 @@
+//
+// STDSJSONEncoder.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/25/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSJSONEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSJSONEncoder` is a utility class to help with converting API objects into JSON
+ */
+@interface STDSJSONEncoder : NSObject
+
+/**
+ Method to convert an STDSJSONEncodable object into a JSON dictionary.
+ */
++ (NSDictionary *)dictionaryForObject:(NSObject *)object;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSLabelCustomization.h b/ios/platform/Stripe.framework/Headers/STDSLabelCustomization.h
new file mode 100644
index 0000000..af75cf3
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSLabelCustomization.h
@@ -0,0 +1,31 @@
+//
+// STDSLabelCustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import "STDSCustomization.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A customization object to use to configure the UI of a text label.
+
+ The font and textColor inherited from `STDSCustomization` configure non-heading labels.
+ */
+@interface STDSLabelCustomization : STDSCustomization
+
+/// The default settings.
++ (instancetype)defaultSettings;
+
+/// The color of the heading text. Defaults to black.
+@property (nonatomic) UIColor *headingTextColor;
+
+/// The font to use for the heading text.
+@property (nonatomic) UIFont *headingFont;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSNavigationBarCustomization.h b/ios/platform/Stripe.framework/Headers/STDSNavigationBarCustomization.h
new file mode 100644
index 0000000..18affaa
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSNavigationBarCustomization.h
@@ -0,0 +1,59 @@
+//
+// STDSNavigationBarCustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+#import
+
+#import "STDSCustomization.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A customization object to use to configure a UINavigationBar.
+
+ The font and textColor inherited from `STDSCustomization` configure the
+ title of the navigation bar, and default to nil.
+ */
+@interface STDSNavigationBarCustomization : STDSCustomization
+
+/// The default settings.
++ (instancetype)defaultSettings;
+
+/**
+ The tint color of the navigation bar background.
+ Defaults to nil.
+ */
+@property (nonatomic, nullable) UIColor *barTintColor;
+
+/**
+ The navigation bar style.
+ Defaults to UIBarStyleDefault.
+ */
+@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 *headerText;
+
+/**
+ The text to display for the button in the navigation bar.
+ Defaults to "Cancel".
+ */
+@property (nonatomic, copy) NSString *buttonText;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSNotInitializedException.h b/ios/platform/Stripe.framework/Headers/STDSNotInitializedException.h
new file mode 100644
index 0000000..317856a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSNotInitializedException.h
@@ -0,0 +1,23 @@
+//
+// STDSNotInitializedException.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 2/13/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import "Stripe3DS2.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSNotInitializedException` represents an exception that will be thrown by
+ the the Stripe3DS2 SDK if methods are called without initializing `STDSThreeDS2Service`.
+
+ @see STDSThreeDS2Service
+ */
+@interface STDSNotInitializedException : STDSException
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSProtocolErrorEvent.h b/ios/platform/Stripe.framework/Headers/STDSProtocolErrorEvent.h
new file mode 100644
index 0000000..1e3142a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSProtocolErrorEvent.h
@@ -0,0 +1,42 @@
+//
+// STDSProtocolErrorEvent.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/20/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+@class STDSErrorMessage;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSProtocolErrorEvent` contains details about erorrs received from or sent to the ACS.
+ */
+@interface STDSProtocolErrorEvent : NSObject
+
+/**
+ Designated initializer for `STDSProtocolErrorEvent`.
+ */
+- (instancetype)initWithSDKTransactionIdentifier:(NSString *)identifier errorMessage:(STDSErrorMessage *)errorMessage;
+
+/**
+ `STDSProtocolErrorEvent` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ Details about the error.
+ */
+@property (nonatomic, readonly) STDSErrorMessage *errorMessage;
+
+/**
+ The SDK Transaction Identifier.
+ */
+@property (nonatomic, readonly) NSString *sdkTransactionIdentifier;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSRuntimeErrorEvent.h b/ios/platform/Stripe.framework/Headers/STDSRuntimeErrorEvent.h
new file mode 100644
index 0000000..658cdb9
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSRuntimeErrorEvent.h
@@ -0,0 +1,53 @@
+//
+// STDSRuntimeErrorEvent.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/20/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXTERN NSString * const kSTDSRuntimeErrorCodeParsingError;
+FOUNDATION_EXTERN NSString * const kSTDSRuntimeErrorCodeEncryptionError;
+
+/**
+ `STDSRuntimeErrorEvent` contains details about run-time errors encountered during authentication.
+
+ The following are examples of run-time errors:
+ - ACS is unreachable
+ - Unparseable message
+ - Network issues
+ */
+@interface STDSRuntimeErrorEvent : NSObject
+
+/**
+ A code corresponding to the type of error this represents.
+ */
+@property (nonatomic, readonly) NSString *errorCode;
+
+/**
+ Details about the error.
+ */
+@property (nonatomic, readonly) NSString *errorMessage;
+
+/**
+ Designated initializer for `STDSRuntimeErrorEvent`.
+ */
+- (instancetype)initWithErrorCode:(NSString *)errorCode errorMessage:(NSString *)errorMessage NS_DESIGNATED_INITIALIZER;
+
+/**
+ A representation of the `STDSRuntimeErrorEvent` as an `NSError`
+ */
+- (NSError *)NSErrorValue;
+
+/**
+ `STDSRuntimeErrorEvent` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSRuntimeException.h b/ios/platform/Stripe.framework/Headers/STDSRuntimeException.h
new file mode 100644
index 0000000..5b63a2d
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSRuntimeException.h
@@ -0,0 +1,21 @@
+//
+// STDSRuntimeException.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import "STDSException.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSRuntimeException` represents an exception that will be thrown by the
+ Stripe3DS2 SDK if it encounters an internal error.
+ */
+@interface STDSRuntimeException : STDSException
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSSelectionCustomization.h b/ios/platform/Stripe.framework/Headers/STDSSelectionCustomization.h
new file mode 100644
index 0000000..a9818bb
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSSelectionCustomization.h
@@ -0,0 +1,48 @@
+//
+// STDSSelectionCustomization.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 6/11/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A customization object that configures the appearance of
+ radio buttons and checkboxes.
+ */
+@interface STDSSelectionCustomization: NSObject
+
+/// The default settings.
++ (instancetype)defaultSettings;
+
+/**
+ The primary color of the selected state.
+ Defaults to blue.
+ */
+@property (nonatomic) UIColor *primarySelectedColor;
+
+/**
+ The secondary color of the selected state (e.g. the checkmark color).
+ Defaults to white.
+ */
+@property (nonatomic) UIColor *secondarySelectedColor;
+
+/**
+ The background color displayed in the unselected state.
+ Defaults to light blue.
+ */
+@property (nonatomic) UIColor *unselectedBackgroundColor;
+
+/**
+ The color of the border drawn around the view in the unselected state.
+ Defaults to blue.
+ */
+@property (nonatomic) UIColor *unselectedBorderColor;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSStripe3DS2Error.h b/ios/platform/Stripe.framework/Headers/STDSStripe3DS2Error.h
new file mode 100644
index 0000000..2e506fe
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSStripe3DS2Error.h
@@ -0,0 +1,68 @@
+//
+// STDSStripe3DS2Error.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/27/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXPORT NSString * const STDSStripe3DS2ErrorDomain;
+
+/**
+ NSError.userInfo contains this key if we received an ErrorMessage instead of the expected response object.
+ The value of this key is the ErrorMessage.
+ */
+FOUNDATION_EXPORT NSString * const STDSStripe3DS2ErrorMessageErrorKey;
+
+/**
+ NSError.userInfo contains this key if we errored parsing JSON.
+ The value of this key is the invalid or missing field.
+ */
+FOUNDATION_EXPORT NSString * const STDSStripe3DS2ErrorFieldKey;
+
+/**
+ NSError.userInfo contains this key if we couldn't recognize critical message extension(s)
+ The value of this key is an array of identifiers.
+ */
+FOUNDATION_EXPORT NSString * const STDSStripe3DS2UnrecognizedCriticalMessageExtensionsKey;
+
+
+typedef NS_ENUM(NSInteger, STDSErrorCode) {
+
+ /// Code triggered an assertion
+ STDSErrorCodeAssertionFailed = 204,
+
+ // JSON Parsing
+ /// Received invalid or malformed data
+ STDSErrorCodeJSONFieldInvalid = 203,
+ /// Expected field missing
+ STDSErrorCodeJSONFieldMissing = 201,
+
+ /// Critical message extension not recognised
+ STDSErrorCodeUnrecognizedCriticalMessageExtension = 202,
+
+ /// Decryption or verification error
+ STDSErrorCodeDecryptionVerification = 302,
+
+ /// Error code corresponding to a `STDSRuntimeErrorEvent` for an unparseable network response
+ STDSErrorCodeRuntimeParsing = 400,
+ /// Error code corresponding to a `STDSRuntimeErrorEvent` for an error with decrypting or verifying a network response
+ STDSErrorCodeRuntimeEncryption = 401,
+
+ // Networking
+ /// We received an ErrorMessage instead of the expected response object. `userInfo[STDSStripe3DS2ErrorMessageErrorKey]` will contain the ErrorMessage object.
+ STDSErrorCodeReceivedErrorMessage = 1000,
+ /// We received an unknown message type.
+ STDSErrorCodeUnknownMessageType = 1001,
+ /// Request timed out
+ STDSErrorCodeTimeout = 1002,
+
+ /// Unknown
+ STDSErrorCodeUnknownError = 2000,
+};
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSTextFieldCustomization.h b/ios/platform/Stripe.framework/Headers/STDSTextFieldCustomization.h
new file mode 100644
index 0000000..6f2bfed
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSTextFieldCustomization.h
@@ -0,0 +1,47 @@
+//
+// STDSTextFieldCustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+#import "STDSCustomization.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A customization object to use to configure the UI of a text field.
+
+ The font and textColor inherited from `STDSCustomization` configure
+ the user input text.
+ */
+@interface STDSTextFieldCustomization : STDSCustomization
+
+/**
+ The default settings.
+
+ The default textColor is black.
+ */
++ (instancetype)defaultSettings;
+
+/// 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) UIColor *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) UIColor *placeholderTextColor;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSThreeDS2Service.h b/ios/platform/Stripe.framework/Headers/STDSThreeDS2Service.h
new file mode 100644
index 0000000..c0baa55
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSThreeDS2Service.h
@@ -0,0 +1,84 @@
+//
+// STDSThreeDS2Service.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 1/22/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+@class STDSConfigParameters;
+@class STDSTransaction;
+@class STDSUICustomization;
+@class STDSWarning;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSThreeDS2Service` is the main 3DS SDK interface and provides methods to process transactions.
+ */
+@interface STDSThreeDS2Service : NSObject
+
+/**
+ A list of warnings that may be populated once the SDK has been initialized.
+ */
+@property (nonatomic, readonly, nullable) NSArray *warnings;
+
+/**
+ Initializes the 3DS SDK instance.
+
+ This method should be called at the start of the payment stage of a transaction.
+ **Note: Until the `STDSThreeDS2Service instance is initialized, it will be unusable.**
+
+ - Performs security checks
+ - Collects device information
+
+ @param config Configuration information that will be used during initialization. @see STDSConfigParameters
+ @param locale Optional override for the locale to use in UI. If `nil`, will default to the current system locale.
+ @param uiSettings Optional custom UI settings. If `nil`, will default to `[STDSUICustomization defaultSettings]`.
+ This argument is copied; any further changes to the customization object have no effect. @see STDSUICustomization
+
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `config` is `nil` or any of `config`, `locale`, or `uiSettings` are invalid. @see STDSInvalidInputException
+ @exception STDSAlreadyInitializedException Will throw an `STDSAlreadyInitializedException` if the 3DS SDK instance has already been initialized. @see STDSSDKAlreadyInitializedException
+ @exception STDSRuntimeException Will throw an `STDSRuntimeException` if there is an internal error in the SDK. @see STDSRuntimeException
+ */
+- (void)initializeWithConfig:(STDSConfigParameters *)config
+ locale:(nullable NSLocale *)locale
+ uiSettings:(nullable STDSUICustomization *)uiSettings;
+
+/**
+ Creates and returns an instance of `STDSTransaction`.
+
+ @param directoryServerID The Directory Server identifier returned in the authentication response
+ @param protocolVersion 3DS protocol version according to which the transaction will be created. Uses the default value of 2.1.0 if nil
+
+ @exception STDSNotInitializedException Will throw an `STDSNotInitializedException` if the the `STDSThreeDS2Service` instance hasn't been initialized with a call to `initializeWithConfig:locale:uiSettings:`. @see STDSNotInitializedException
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if `directoryServerID` is not recognized or if the `protocolVersion` is not supported by this version of the SDK. @see STDSInvalidInputException
+ @exception STDSRuntimeException Will throw an `STDSRuntimeException` if there is an internal error in the SDK. @see STDSRuntimeException
+ */
+- (STDSTransaction *)createTransactionForDirectoryServer:(NSString *)directoryServerID
+ withProtocolVersion:(nullable NSString *)protocolVersion;
+
+/**
+ Creates and returns an instance of `STDSTransaction` using a custom directory server certificate.
+ Will return nil if unable to create a certificate from the provided params.
+
+ @param directoryServerID The Directory Server identifier returned in the authentication response
+ @param serverKeyID An additional authentication key used by some Directory Servers
+ @param certificateString A Base64-encoded PEM or DER formatted certificate string containing the directory server's public key
+ @param rootCertificateStrings An arry of base64-encoded PEM or DER formatted certificate strings containing the DS root certificate used for signature checks
+ @param protocolVersion 3DS protocol version according to which the transaction will be created. Uses the default value of 2.1.0 if nil
+
+ @exception STDSNotInitializedException Will throw an `STDSNotInitializedException` if the the `STDSThreeDS2Service` instance hasn't been initialized with a call to `initializeWithConfig:locale:uiSettings:`. @see STDSNotInitializedException
+ @exception STDSInvalidInputException Will throw an `STDSInvalidInputException` if the `protocolVersion` is not supported by this version of the SDK. @see STDSInvalidInputException
+ */
+- (nullable STDSTransaction *)createTransactionForDirectoryServer:(NSString *)directoryServerID
+ serverKeyID:(nullable NSString *)serverKeyID
+ certificateString:(NSString *)certificateString
+ rootCertificateStrings:(NSArray *)rootCertificateStrings
+ withProtocolVersion:(nullable NSString *)protocolVersion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSThreeDSProtocolVersion.h b/ios/platform/Stripe.framework/Headers/STDSThreeDSProtocolVersion.h
new file mode 100644
index 0000000..b4161a6
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSThreeDSProtocolVersion.h
@@ -0,0 +1,15 @@
+//
+// STDSThreeDSProtocolVersion.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 6/27/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXPORT NSString * const Stripe3DS2ProtocolVersion;
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSTransaction.h b/ios/platform/Stripe.framework/Headers/STDSTransaction.h
new file mode 100644
index 0000000..45d06e5
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSTransaction.h
@@ -0,0 +1,79 @@
+//
+// STDSTransaction.h
+// Stripe3DS2
+//
+// Created by Yuki Tokuhiro on 3/21/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+#import
+
+typedef void (^STDSTransactionVoidBlock)(void);
+
+@class STDSAuthenticationRequestParameters, STDSChallengeParameters;
+@protocol STDSChallengeStatusReceiver;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STDSTransaction` holds parameters that the 3DS Server requires to create AReq messages and to perform the Challenge Flow.
+ */
+@interface STDSTransaction : NSObject
+
+/**
+ The UI type of the presented challenge for this transaction if applicable. Will be one of
+ "none"
+ "text"
+ "single_select"
+ "multi_select"
+ "oob"
+ "html"
+ */
+@property (nonatomic, readonly, copy) NSString *presentedChallengeUIType;
+
+/**
+ Encrypts device information collected during initialization and returns it along with SDK details.
+
+ @return Encrypted device information and details about this SDK. @see STDSAuthenticationRequestParameters
+
+ @exception SDKRuntimeException Thrown if an internal error is encountered.
+ */
+- (STDSAuthenticationRequestParameters *)createAuthenticationRequestParameters;
+
+/**
+ Returns a UIViewController instance displaying the Directory Server logo and a spinner. Present this during the Authentication Request/Response.
+ */
+- (UIViewController *)createProgressViewControllerWithDidCancel:(STDSTransactionVoidBlock)didCancel;
+
+/**
+ Initiates the challenge process, displaying challenge UI as needed.
+
+ @param presentingViewController The UIViewController used to present the challenge response UIViewController
+ @param challengeParameters Details required to conduct the challenge process. @see STDSChallengeParameters
+ @param challengeStatusReceiver A callback object to receive the status of the challenge. See @STDSChallengeStatusReceiver
+ @param timeout An interval in seconds within which the challenge process will finish. Must be at least 5 minutes.
+
+ @exception STDSInvalidInputException Thrown if an argument is invalid (e.g. timeout less than 5 minutes). @see STDSInvalidInputException
+ @exception STDSSDKRuntimeException Thrown if an internal error is encountered, and if you call this method after calling `close`. @see SDKRuntimeException
+ */
+- (void)doChallengeWithViewController:(UIViewController *)presentingViewController
+ challengeParameters:(STDSChallengeParameters *)challengeParameters
+ challengeStatusReceiver:(id)challengeStatusReceiver
+ timeout:(NSTimeInterval)timeout;
+
+/**
+ Returns the version of the Stripe3DS2 SDK, e.g. @"1.0"
+ */
+- (NSString *)sdkVersion;
+
+/**
+Cleans up resources held by `STDSTransaction`. Call this when the transaction is completed, if `doChallengeWithChallengeParameters:challengeStatusReceiver:timeout` is not called.
+
+ @note Don't use this object after calling this method. Calling `doChallengeWithViewController:challengeParameters:challengeStatusReceiver:timeout` after calling this method will throw an `STDSSDKRuntimeException`
+ */
+- (void)close;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSUICustomization.h b/ios/platform/Stripe.framework/Headers/STDSUICustomization.h
new file mode 100644
index 0000000..f9da26f
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSUICustomization.h
@@ -0,0 +1,109 @@
+//
+// STDSUICustomization.h
+// Stripe3DS2
+//
+// Created by Andrew Harrison on 3/14/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+#import "STDSCustomization.h"
+#import "STDSButtonCustomization.h"
+#import "STDSNavigationBarCustomization.h"
+#import "STDSLabelCustomization.h"
+#import "STDSTextFieldCustomization.h"
+#import "STDSFooterCustomization.h"
+#import "STDSSelectionCustomization.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The `STDSUICustomization` provides configuration for UI elements.
+
+ It's important to configure this object appropriately before using it to initialize a
+ `STDSThreeDS2Service` object. `STDSThreeDS2Service` makes a copy of the customization
+ settings you provide; it ignores any subsequent changes you make to your `STDSUICustomization` instance.
+*/
+@interface STDSUICustomization: NSObject
+
+/// The default settings. See individual properties for their default values.
++ (instancetype)defaultSettings;
+
+/**
+ Provides custom settings for the UINavigationBar of all UIViewControllers the SDK display.
+ The default is `[STDSNavigationBarCustomization defaultSettings]`.
+ */
+@property (nonatomic) STDSNavigationBarCustomization *navigationBarCustomization;
+
+/**
+ Provides custom settings for labels.
+ The default is `[STDSLabelCustomization defaultSettings]`.
+ */
+@property (nonatomic) STDSLabelCustomization *labelCustomization;
+
+/**
+ Provides custom settings for text fields.
+ The default is `[STDSTextFieldCustomization defaultSettings]`.
+ */
+@property (nonatomic) STDSTextFieldCustomization *textFieldCustomization;
+
+/**
+ The primary background color of all UIViewControllers the SDK display.
+ Defaults to white.
+ */
+@property (nonatomic) UIColor *backgroundColor;
+
+/**
+ The Challenge view displays a footer with additional details. This controls the background color of that view.
+ Defaults to gray.
+ */
+@property (nonatomic) STDSFooterCustomization *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:(STDSButtonCustomization *)buttonCustomization forType:(STDSUICustomizationButtonType)buttonType;
+
+/**
+ Retrieves a button customization object for the given button type.
+
+ @param buttonType The button type to retrieve a customization object for.
+ @return A button customization object, or the default if none was set.
+ @see STDSButtonCustomization
+ */
+- (STDSButtonCustomization *)buttonCustomizationForButtonType:(STDSUICustomizationButtonType)buttonType;
+
+/**
+ Provides custom settings for radio buttons and checkboxes.
+ The default is `[STDSSelectionCustomization defaultSettings]`.
+ */
+@property (nonatomic) STDSSelectionCustomization *selectionCustomization;
+
+
+/**
+ The preferred status bar style for all UIViewControllers the SDK display.
+ Defaults to UIStatusBarStyleDefault.
+ */
+@property (nonatomic) UIStatusBarStyle preferredStatusBarStyle;
+
+#pragma mark - Progress View
+
+/**
+ The style of UIActivityIndicatorViews displayed.
+ This should contrast with `backgroundColor`. Defaults to regular on iOS 13+,
+ gray on iOS 9-12.
+ */
+@property (nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
+
+/**
+ The style of the UIBlurEffect displayed underneath the UIActivityIndicatorView.
+ Defaults to UIBlurEffectStyleDefault on iOS 10+, UIBlurEffectStyleLight on iOS 9.
+ */
+@property (nonatomic) UIBlurEffectStyle blurStyle;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STDSWarning.h b/ios/platform/Stripe.framework/Headers/STDSWarning.h
new file mode 100644
index 0000000..5f09fe7
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STDSWarning.h
@@ -0,0 +1,69 @@
+//
+// STDSWarning.h
+// Stripe3DS2
+//
+// Created by Cameron Sabol on 2/12/19.
+// Copyright © 2019 Stripe. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The `STDSWarningSeverity` enum defines the severity levels of warnings generated
+ during SDK initialization. @see STDSThreeDS2Service
+ */
+typedef NS_ENUM(NSInteger, STDSWarningSeverity) {
+ /**
+ Low severity
+ */
+ STDSWarningSeverityLow = 0,
+
+ /**
+ Medium severity
+ */
+ STDSWarningSeverityMedium,
+
+ /**
+ High severity
+ */
+ STDSWarningSeverityHigh,
+};
+
+/**
+ The `STDSWarning` class represents warnings generated by `STDSThreeDS2Service` during
+ security checks run during initialization. @see STDSThreeDS2Service
+ */
+@interface STDSWarning : NSObject
+
+/**
+ Designated initializer for `STDSWarning`.
+ */
+- (instancetype)initWithIdentifier:(NSString *)identifier
+ message:(NSString *)message
+ severity:(STDSWarningSeverity)severity NS_DESIGNATED_INITIALIZER;
+
+/**
+ `STDSWarning` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ The identifier for this warning instance.
+ */
+@property (nonatomic, readonly) NSString *identifier;
+
+/**
+ The descriptive message for this warning.
+ */
+@property (nonatomic, readonly) NSString *message;
+
+/**
+ The severity of this warning.
+ */
+@property (nonatomic, readonly) STDSWarningSeverity severity;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPAPIClient+ApplePay.h b/ios/platform/Stripe.framework/Headers/STPAPIClient+ApplePay.h
new file mode 100644
index 0000000..310903f
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAPIClient+ApplePay.h
@@ -0,0 +1,71 @@
+//
+// STPAPIClient+ApplePay.h
+// Stripe
+//
+// Created by Jack Flintermann on 12/19/14.
+//
+
+#import
+#import
+
+#import "STPAPIClient.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ STPAPIClient extensions to create Stripe Tokens, Sources, or PaymentMethods from Apple Pay PKPayment objects.
+ */
+@interface STPAPIClient (ApplePay)
+
+/**
+ Converts a PKPayment object into a Stripe token using the Stripe API.
+
+ @param payment The user's encrypted payment information as returned from a PKPaymentAuthorizationViewController. Cannot be nil.
+ @param completion The callback to run with the returned Stripe token (and any errors that may have occurred).
+ */
+- (void)createTokenWithPayment:(PKPayment *)payment
+ completion:(STPTokenCompletionBlock)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 PKPaymentAuthorizationViewController. Cannot be nil.
+ @param completion The callback to run with the returned Stripe source (and any errors that may have occurred).
+ */
+- (void)createSourceWithPayment:(PKPayment *)payment
+ completion:(STPSourceCompletionBlock)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 PKPaymentAuthorizationViewController. Cannot be nil.
+ @param completion The callback to run with the returned Stripe source (and any errors that may have occurred).
+ */
+- (void)createPaymentMethodWithPayment:(PKPayment *)payment
+ completion:(STPPaymentMethodCompletionBlock)completion;
+
+/**
+ Converts Stripe errors into the appropriate Apple Pay error, for use in `PKPaymentAuthorizationResult`. The error is displayed in the Apple Pay sheet, and the user can try again.
+
+ We can convert billing address related errors into a PKPaymentError that helpfully points to the billing address field in the Apple Pay sheet.
+ All other errors map to PKPaymentUnknownError, resulting in a generic error message in the Apple Pay sheet.
+
+ Apple Pay should prevent most card errors (e.g. invalid CVC) when you add a card to the wallet.
+
+ @param stripeError An error from the Stripe SDK.
+ @see ApplePayExampleViewController for an example of how to use this method in your Apple Pay integration.
+ */
++ (nullable NSError *)pkPaymentErrorForStripeError:(nullable NSError *)stripeError API_AVAILABLE(ios(11.0), watchos(4.0));
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+/**
+ This function should not be called directly.
+
+ It is used by the SDK when it is built as a static library to force the
+ compiler to link in category methods regardless of the integrating
+ app's compiler flags.
+ */
+void linkSTPAPIClientApplePayCategory(void);
diff --git a/ios/platform/Stripe.framework/Headers/STPAPIClient.h b/ios/platform/Stripe.framework/Headers/STPAPIClient.h
new file mode 100644
index 0000000..7018e7a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAPIClient.h
@@ -0,0 +1,498 @@
+//
+// STPAPIClient.h
+// StripeExample
+//
+// Created by Jack Flintermann on 12/18/14.
+// Copyright (c) 2014 Stripe. All rights reserved.
+//
+
+#import
+#import
+
+#import "FauxPasAnnotations.h"
+#import "STPBlocks.h"
+#import "STPFile.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The current version of this library.
+ */
+static NSString *const STPSDKVersion = @"19.0.1";
+
+@class STPBankAccount, STPBankAccountParams, STPCard, STPCardParams, STPConnectAccountParams;
+@class STPPaymentConfiguration, STPPaymentIntentParams, STPSourceParams, STPToken, STPPaymentMethodParams;
+@class STPAppInfo, STPSetupIntentConfirmParams;
+
+/**
+ A top-level class that imports the rest of the Stripe SDK.
+ */
+@interface Stripe : NSObject FAUXPAS_IGNORED_ON_LINE(UnprefixedClass);
+
+/**
+ Set your Stripe API key with this method. New instances of STPAPIClient will be initialized with this value. You should call this method as early as
+ possible in your application's lifecycle, preferably in your AppDelegate.
+
+ @param publishableKey Your publishable key, obtained from https://dashboard.stripe.com/apikeys
+ @warning Make sure not to ship your test API keys to the App Store! This will log a warning if you use your test key in a release build.
+ */
++ (void)setDefaultPublishableKey:(NSString *)publishableKey;
+
+/**
+ The current default publishable key.
+ */
++ (nullable NSString *)defaultPublishableKey;
+
+@end
+
+/**
+ A client for making connections to the Stripe API.
+ */
+@interface STPAPIClient : NSObject
+
+/**
+ A shared singleton API client.
+
+ By default, the SDK uses this instance to make API requests
+ eg in STPPaymentHandler, STPPaymentContext, STPCustomerContext, etc.
+ */
++ (instancetype)sharedClient;
+
+/**
+ Initializes an API client with the given publishable key.
+
+ @param publishableKey The publishable key to use.
+ @return An instance of STPAPIClient.
+ */
+- (instancetype)initWithPublishableKey:(NSString *)publishableKey;
+
+/**
+ The client's publishable key.
+
+ The default value is [Stripe defaultPublishableKey].
+ */
+@property (nonatomic, copy, nullable) NSString *publishableKey;
+
+/**
+ The client's configuration.
+
+ Defaults to [STPPaymentConfiguration sharedConfiguration].
+ */
+@property (nonatomic, copy) STPPaymentConfiguration *configuration;
+
+
+/**
+ In order to perform API requests on behalf of a connected account, e.g. to
+ create a Source or Payment Method on a connected account, set this property to the ID of the
+ account for which this request is being made.
+
+ @see https://stripe.com/docs/connect/authentication#authentication-via-the-stripe-account-header
+ */
+@property (nonatomic, copy, nullable) NSString *stripeAccount;
+
+/**
+ Libraries wrapping the Stripe SDK should set this, so that Stripe can contact you about future issues or critical updates.
+
+ @see https://stripe.com/docs/building-plugins#setappinfo
+ */
+@property (nonatomic, nullable) STPAppInfo *appInfo;
+
+@end
+
+#pragma mark Bank Accounts
+
+/**
+ STPAPIClient extensions to create Stripe tokens from bank accounts.
+ */
+@interface STPAPIClient (BankAccounts)
+
+/**
+ Converts an STPBankAccount object into a Stripe token using the Stripe API.
+
+ @param bankAccount The user's bank account details. Cannot be nil. @see 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 *)bankAccount completion:(__nullable STPTokenCompletionBlock)completion;
+
+@end
+
+#pragma mark Personally Identifiable Information
+
+/**
+ STPAPIClient extensions to create Stripe tokens from a personal identification number.
+ */
+@interface STPAPIClient (PII)
+
+/**
+ Converts a personal identification number into a Stripe token using the Stripe API.
+
+ @param pii The user's personal identification number. Cannot be nil. @see 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 *)pii completion:(__nullable STPTokenCompletionBlock)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 *)ssnLast4 completion:(STPTokenCompletionBlock)completion;
+
+@end
+
+#pragma mark Connect Accounts
+
+/**
+ STPAPIClient extensions for working with Connect Accounts
+ */
+@interface STPAPIClient (ConnectAccounts)
+
+
+/**
+ Converts an `STPConnectAccountParams` 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 *)account completion:(__nullable STPTokenCompletionBlock)completion;
+
+@end
+
+#pragma mark Upload
+
+/**
+ STPAPIClient extensions to upload files.
+ */
+@interface STPAPIClient (Upload)
+
+
+/**
+ Uses the Stripe file upload API to upload an image. This can be used for
+ identity verification and evidence disputes.
+
+ @param image The image to be uploaded. The maximum allowed file size is 4MB
+ for identity documents and 8MB 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 identifing
+ document or an evidence dispute.
+ @param completion The callback to run with the returned Stripe file
+ (and any errors that may have occurred).
+
+ @see https://stripe.com/docs/file-upload
+ */
+- (void)uploadImage:(UIImage *)image
+ purpose:(STPFilePurpose)purpose
+ completion:(nullable STPFileCompletionBlock)completion;
+
+@end
+
+#pragma mark Credit Cards
+
+/**
+ STPAPIClient extensions to create Stripe tokens from credit or debit cards.
+ */
+@interface STPAPIClient (CreditCards)
+
+/**
+ Converts an STPCardParams object into a Stripe token using the Stripe API.
+
+ @param card The user's card details. Cannot be nil. @see 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 *)card completion:(nullable STPTokenCompletionBlock)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 *)cvc completion:(nullable STPTokenCompletionBlock)completion;
+
+@end
+
+/**
+ Convenience methods for working with Apple Pay.
+ */
+@interface Stripe(ApplePay)
+
+/**
+ Whether or not this device is capable of using Apple Pay. This checks both
+ whether the device supports Apple Pay, as well as whether or not they have
+ stored Apple Pay cards on their device.
+
+ @param paymentRequest The return value of this method depends on the
+ `supportedNetworks` property of this payment request, which by default should be
+ `@[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkDiscover]`.
+
+ @return whether or not the user is currently able to pay with Apple Pay.
+*/
++ (BOOL)canSubmitPaymentRequest:(PKPaymentRequest *)paymentRequest;
+
+/**
+ Whether or not this can make Apple Pay payments via a card network supported
+ by Stripe.
+
+ The Stripe supported Apple Pay card networks are:
+ American Express, Visa, Mastercard, Discover.
+
+ Japanese users can enable JCB by setting `JCBPaymentNetworkSupported` to YES,
+ after they have been approved by JCB.
+
+ @return YES if the device is currently able to make Apple Pay payments via one
+ of the supported networks. NO if the user does not have a saved card of a
+ supported type, or other restrictions prevent payment (such as parental controls).
+ */
++ (BOOL)deviceSupportsApplePay;
+
+/**
+ A convenience method to build a `PKPaymentRequest` with sane default values.
+ You will still need to configure the `paymentSummaryItems` property to indicate
+ what the user is purchasing, as well as the optional `requiredShippingAddressFields`,
+ `requiredBillingAddressFields`, and `shippingMethods` 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.
+
+ @return a `PKPaymentRequest` with proper default values. Returns nil if running on < iOS8.
+ @deprecated Use `paymentRequestWithMerchantIdentifier:country:currency:` instead.
+ Apple Pay is available in many countries and currencies, and you should use
+ the appropriate values for your business.
+ */
++ (PKPaymentRequest *)paymentRequestWithMerchantIdentifier:(NSString *)merchantIdentifier __attribute__((deprecated));
+
+/**
+ A convenience method to build a `PKPaymentRequest` with sane default values.
+ You will still need to configure the `paymentSummaryItems` property to indicate
+ what the user is purchasing, as well as the optional `requiredShippingAddressFields`,
+ `requiredBillingAddressFields`, and `shippingMethods` properties to indicate
+ what contact information your application requires.
+
+ @param merchantIdentifier Your Apple Merchant ID.
+ @param countryCode The two-letter code for the country where the payment
+ will be processed. This should be the country of your Stripe account.
+ @param currencyCode The three-letter code for the currency used by this
+ payment request. Apple Pay interprets the amounts provided by the summary items
+ attached to this request as amounts in this currency.
+
+ @return a `PKPaymentRequest` with proper default values. Returns nil if running on < iOS8.
+ */
++ (PKPaymentRequest *)paymentRequestWithMerchantIdentifier:(NSString *)merchantIdentifier
+ country:(NSString *)countryCode
+ currency:(NSString *)currencyCode;
+
+/**
+ Japanese users can enable JCB for Apple Pay by setting this to `YES`, after they have been approved by JCB.
+
+ The default value is NO.
+ @note JCB is only supported on iOS 10.1+
+ */
+@property (class, nonatomic, getter=isJCBPaymentNetworkSupported) BOOL JCBPaymentNetworkSupported __attribute__((deprecated("Set additionalApplePayNetworks = @[PKPaymentNetworkJCB] instead")));
+
+/**
+ The SDK accepts Amex, Mastercard, Visa, and Discover for Apple Pay.
+ Set this property to enable other card networks in addition to these.
+
+ For example, `additionalEnabledApplePayNetworks = @[PKPaymentNetworkJCB];` enables JCB (note this requires onboarding from JCB and Stripe).
+ */
+@property (class, nonatomic, copy, nonnull) NSArray *additionalEnabledApplePayNetworks;
+
+@end
+
+#pragma mark Sources
+
+/**
+ STPAPIClient extensions for working with Source objects
+ */
+@interface STPAPIClient (Sources)
+
+/**
+ 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 `stripeAccount` property to the ID of the account.
+ @see https://stripe.com/docs/sources/connect#creating-direct-charges
+
+ @param params The details of the source to create. Cannot be nil. @see https://stripe.com/docs/api#create_source
+ @param completion The callback to run with the returned Source object, or an error.
+ */
+- (void)createSourceWithParams:(STPSourceParams *)params completion:(STPSourceCompletionBlock)completion;
+
+/**
+ Retrieves the Source object with the given ID. @see 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 *)identifier clientSecret:(NSString *)secret completion:(STPSourceCompletionBlock)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 `pending`,
+ or if the given timeout is reached and the source is still `pending`. 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 `startPolling`
+ 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 *)identifier clientSecret:(NSString *)secret timeout:(NSTimeInterval)timeout completion:(STPSourceCompletionBlock)completion NS_EXTENSION_UNAVAILABLE("Source polling is not available in extensions") DEPRECATED_MSG_ATTRIBUTE("You should poll your own backend to update based on source status change webhook events it may receive.");
+
+/**
+ Stops polling the Source object with the given ID. Note that the completion block passed to
+ `startPolling` will not be fired when `stopPolling` is called.
+
+ @param identifier The identifier of the source to be retrieved. Cannot be nil.
+ */
+- (void)stopPollingSourceWithId:(NSString *)identifier NS_EXTENSION_UNAVAILABLE("Source polling is not available in extensions") DEPRECATED_ATTRIBUTE;
+
+@end
+
+#pragma mark Payment Intents
+
+/**
+ STPAPIClient extensions for working with PaymentIntent objects.
+ */
+@interface STPAPIClient (PaymentIntents)
+
+/**
+ Retrieves the PaymentIntent object using the given secret. @see 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 *)secret
+ completion:(STPPaymentIntentCompletionBlock)completion;
+
+/**
+ Confirms the PaymentIntent object with the provided params object.
+
+ At a minimum, the params object must include the `clientSecret`.
+
+ @see https://stripe.com/docs/api#confirm_payment_intent
+
+ @note Use the `confirmPayment:withAuthenticationContext:completion:` method on `STPPaymentHandler` instead
+ of calling this method directly. It handles any authentication necessary for you. @see https://stripe.com/docs/mobile/ios/authentication
+ @param paymentIntentParams The `STPPaymentIntentParams` to pass to `/confirm`
+ @param completion The callback to run with the returned PaymentIntent object, or an error.
+ */
+- (void)confirmPaymentIntentWithParams:(STPPaymentIntentParams *)paymentIntentParams
+ completion:(STPPaymentIntentCompletionBlock)completion;
+
+@end
+
+#pragma mark Setup Intents
+
+/**
+ STPAPIClient extensions for working with SetupIntent objects.
+ */
+@interface STPAPIClient (SetupIntents)
+
+/**
+ Retrieves the SetupIntent object using the given secret. @see 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 *)secret
+ completion:(STPSetupIntentCompletionBlock)completion;
+
+/**
+ Confirms the SetupIntent object with the provided params object.
+
+ At a minimum, the params object must include the `clientSecret`.
+
+ @see https://stripe.com/docs/api/setup_intents/confirm
+
+ @note Use the `confirmSetupIntent:withAuthenticationContext:completion:` method on `STPPaymentHandler` instead
+ of calling this method directly. It handles any authentication necessary for you. @see https://stripe.com/docs/mobile/ios/authentication
+ @param setupIntentParams The `STPSetupIntentConfirmParams` to pass to `/confirm`
+ @param completion The callback to run with the returned PaymentIntent object, or an error.
+ */
+- (void)confirmSetupIntentWithParams:(STPSetupIntentConfirmParams *)setupIntentParams
+ completion:(STPSetupIntentCompletionBlock)completion;
+
+@end
+
+
+#pragma mark Payment Methods
+
+/**
+ STPAPIClient extensions for working with PaymentMethod objects.
+ */
+@interface STPAPIClient (PaymentMethods)
+
+/**
+ Creates a PaymentMethod object with the provided params object.
+
+ @see https://stripe.com/docs/api/payment_methods/create
+
+ @param paymentMethodParams The `STPPaymentMethodParams` to pass to `/v1/payment_methods`. Cannot be nil.
+ @param completion The callback to run with the returned PaymentMethod object, or an error.
+ */
+- (void)createPaymentMethodWithParams:(STPPaymentMethodParams *)paymentMethodParams
+ completion:(STPPaymentMethodCompletionBlock)completion;
+
+@end
+
+#pragma mark URL callbacks
+
+/**
+ Stripe extensions for working with URL callbacks
+ */
+@interface Stripe (STPURLCallbackHandlerAdditions)
+
+/**
+ Call this method in your app delegate whenever you receive an URL in your
+ app delegate for a Stripe callback.
+
+ For convenience, you can pass all URL's you receive in your app delegate
+ to this method first, and check the return value
+ to easily determine whether it is a callback URL that Stripe will handle
+ or if your app should process it normally.
+
+ If you are using a universal link URL, you will receive the callback in `application:continueUserActivity:restorationHandler:`
+ To learn more about universal links, see https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html
+
+ If you are using a native scheme URL, you will receive the callback in `application:openURL:options:`
+ To learn more about native url schemes, see https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW10
+
+ @param url The URL that you received in your app delegate
+
+ @return YES if the URL is expected and will be handled by Stripe. NO otherwise.
+ */
++ (BOOL)handleStripeURLCallbackWithURL:(NSURL *)url;
+
+@end
+
+#pragma mark - Deprecated
+
+/**
+ Deprecated STPAPIClient methods
+ */
+@interface STPAPIClient (Deprecated)
+
+/**
+ Initializes an API client with the given configuration.
+
+ @param configuration The configuration to use.
+ @return An instance of STPAPIClient.
+ */
+- (instancetype)initWithConfiguration:(STPPaymentConfiguration *)configuration DEPRECATED_MSG_ATTRIBUTE("This initializer previously configured publishableKey and stripeAccount via the STPPaymentConfiguration instance. This behavior is deprecated; set the STPAPIClient configuration, publishableKey, and stripeAccount properties directly on the STPAPIClient instead.");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPAPIResponseDecodable.h b/ios/platform/Stripe.framework/Headers/STPAPIResponseDecodable.h
new file mode 100644
index 0000000..046c32b
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAPIResponseDecodable.h
@@ -0,0 +1,34 @@
+//
+// STPAPIResponseDecodable.h
+// Stripe
+//
+// Created by Jack Flintermann on 10/14/15.
+// Copyright © 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+/**
+ Objects conforming to STPAPIResponseDecodable can be automatically converted
+ from a JSON dictionary that was returned from the Stripe API.
+ */
+@protocol STPAPIResponseDecodable
+
+/**
+ Parses an response from the Stripe API (in JSON format; represented as
+ an `NSDictionary`) into an instance of the class.
+
+ @param response The JSON dictionary that represents an object of this type
+
+ @return The object represented by the JSON dictionary, or nil if the object
+ could not be decoded (i.e. if one of its `requiredFields` is nil).
+ */
++ (nullable instancetype)decodedObjectFromAPIResponse:(nullable NSDictionary *)response;
+
+/**
+ 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, nonnull, copy) NSDictionary *allResponseFields;
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPAddCardViewController.h b/ios/platform/Stripe.framework/Headers/STPAddCardViewController.h
new file mode 100644
index 0000000..eac9c90
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAddCardViewController.h
@@ -0,0 +1,140 @@
+//
+// STPAddCardViewController.h
+// Stripe
+//
+// Created by Jack Flintermann on 3/23/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIClient.h"
+#import "STPAddress.h"
+#import "STPBlocks.h"
+#import "STPCoreTableViewController.h"
+#import "STPPaymentConfiguration.h"
+#import "STPTheme.h"
+#import "STPUserInformation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPAddCardViewController, STPAPIClient;
+@protocol STPAddCardViewControllerDelegate;
+
+/** This view controller contains a credit card entry form that the user can fill out. On submission, it will use the Stripe API to convert the user's card details to a Stripe token. It renders a right bar button item that submits the form, so it must be shown inside a `UINavigationController`.
+ */
+@interface STPAddCardViewController : STPCoreTableViewController
+
+/**
+ A convenience initializer; equivalent to calling `initWithConfiguration:[STPPaymentConfiguration sharedConfiguration] theme:[STPTheme defaultTheme]`.
+ */
+- (instancetype)init;
+
+/**
+ Initializes a new `STPAddCardViewController` with the provided configuration and theme. Don't forget to set the `delegate` property after initialization.
+
+ @param configuration The configuration to use (this determines the Stripe publishable key to use, the required billing address fields, whether or not to use SMS autofill, etc). @see STPPaymentConfiguration
+ @param theme The theme to use to inform the view controller's visual appearance. @see STPTheme
+ */
+- (instancetype)initWithConfiguration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme;
+
+/**
+ The view controller's delegate. This must be set before showing the view controller in order for it to work properly. @see STPAddCardViewControllerDelegate
+ */
+@property (nonatomic, weak, nullable) iddelegate;
+
+/**
+ You can set this property to pre-fill any information you've already collected from your user. @see STPUserInformation.h
+ */
+@property (nonatomic, strong, nullable) STPUserInformation *prefilledInformation;
+
+/**
+ Provide this view controller with a footer view.
+
+ When the footer view needs to be resized, it will be sent a
+ `sizeThatFits:` call. The view should respond correctly to this method in order
+ to be sized and positioned properly.
+ */
+@property (nonatomic, strong, nullable) UIView *customFooterView;
+
+/**
+ The API Client to use to make requests.
+
+ Defaults to [STPAPIClient sharedClient]
+ */
+@property (nonatomic, strong) STPAPIClient *apiClient;
+
+/**
+ Use init: or initWithConfiguration:theme:
+ */
+- (instancetype)initWithTheme:(STPTheme *)theme NS_UNAVAILABLE;
+
+/**
+ Use init: or initWithConfiguration:theme:
+ */
+- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
+ bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
+
+/**
+ Use init: or initWithConfiguration:theme:
+ */
+- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
+
+@end
+
+/**
+ An `STPAddCardViewControllerDelegate` is notified when an `STPAddCardViewController`
+ successfully creates a card token or is cancelled. It has internal error-handling
+ logic, so there's no error case to deal with.
+ */
+@protocol STPAddCardViewControllerDelegate
+
+/**
+ Called when the user cancels adding a card. You should dismiss (or pop) the
+ view controller at this point.
+
+ @param addCardViewController the view controller that has been cancelled
+ */
+- (void)addCardViewControllerDidCancel:(STPAddCardViewController *)addCardViewController;
+
+@optional
+
+/**
+ This is called when the user successfully adds a card and Stripe returns a
+ Payment Method.
+
+ You should send the PaymentMethod to your backend to store it on a customer, and then
+ call the provided `completion` block when that call is finished. If an error
+ occurs while talking to your backend, call `completion(error)`, otherwise,
+ dismiss (or pop) the view controller.
+
+ @param addCardViewController the view controller that successfully created a token
+ @param paymentMethod the Payment Method that was created. @see STPPaymentMethod
+ @param completion call this callback when you're done sending the token to your backend
+ */
+- (void)addCardViewController:(STPAddCardViewController *)addCardViewController
+ didCreatePaymentMethod:(STPPaymentMethod *)paymentMethod
+ completion:(STPErrorBlock)completion;
+
+# pragma mark - Deprecated
+
+/**
+ This method is deprecated as of v16.0.0 (https://github.com/stripe/stripe-ios/blob/master/MIGRATING.md#migrating-from-versions--1600).
+ To use this class, migrate your integration from Charges to PaymentIntents. See https://stripe.com/docs/payments/payment-intents/migration/charges#read
+ */
+- (void)addCardViewController:(STPAddCardViewController *)addCardViewController
+ didCreateToken:(STPToken *)token
+ completion:(STPErrorBlock)completion __attribute__((deprecated("Use addCardViewController:didCreatePaymentMethod:completion: instead and migrate your integration to PaymentIntents. See https://stripe.com/docs/payments/payment-intents/migration/charges#read", "addCardViewController:didCreatePaymentMethod:completion:")));
+
+/**
+ This method is deprecated as of v16.0.0 (https://github.com/stripe/stripe-ios/blob/master/MIGRATING.md#migrating-from-versions--1600).
+ To use this class, migrate your integration from Charges to PaymentIntents. See https://stripe.com/docs/payments/payment-intents/migration/charges#read
+*/
+- (void)addCardViewController:(STPAddCardViewController *)addCardViewController
+ didCreateSource:(STPSource *)source
+ completion:(STPErrorBlock)completion __attribute__((deprecated("Use addCardViewController:didCreatePaymentMethod:completion: instead and migrate your integration to PaymentIntents. See https://stripe.com/docs/payments/payment-intents/migration/charges#read", "addCardViewController:didCreatePaymentMethod:completion:")));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPAddress.h b/ios/platform/Stripe.framework/Headers/STPAddress.h
new file mode 100644
index 0000000..a4cc6d2
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAddress.h
@@ -0,0 +1,286 @@
+//
+// STPAddress.h
+// Stripe
+//
+// Created by Ben Guo on 4/13/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPFormEncodable.h"
+
+@class CNContact;
+@class STPPaymentMethodBillingDetails;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ What set of billing address information you need to collect from your user.
+
+ @note If the user is from a country that does not use zip/postal codes,
+ the user may not be asked for one regardless of this setting.
+ */
+typedef NS_ENUM(NSUInteger, STPBillingAddressFields) {
+ /**
+ No billing address information
+ */
+ STPBillingAddressFieldsNone,
+ /**
+ Just request the user's billing postal code
+ */
+ STPBillingAddressFieldsPostalCode,
+ /**
+ Request the user's full billing address
+ */
+ STPBillingAddressFieldsFull,
+
+ /**
+ Just request the user's billing name
+ */
+ STPBillingAddressFieldsName,
+ /**
+ Just request the user's billing ZIP (synonym for STPBillingAddressFieldsZip)
+ @deprecated Use STPBillingAddressFieldsPostalCode instead.
+ */
+ STPBillingAddressFieldsZip __attribute__((deprecated("Use STPBillingAddressFieldsPostalCode", "STPBillingAddressFieldsPostalCode"))) = STPBillingAddressFieldsPostalCode,
+};
+
+
+/**
+ Constants that represent different parts of a users contact/address information.
+ */
+typedef NSString * STPContactField NS_STRING_ENUM;
+
+/**
+ The contact's full physical address.
+ */
+extern STPContactField const STPContactFieldPostalAddress;
+
+/**
+ The contact's email address.
+ */
+extern STPContactField const STPContactFieldEmailAddress;
+
+/**
+ The contact's phone number.
+ */
+extern STPContactField const STPContactFieldPhoneNumber;
+
+/**
+ The contact's name.
+ */
+extern STPContactField const STPContactFieldName;
+
+/**
+ STPAddress Contains an address as represented by the Stripe API.
+ */
+@interface STPAddress : NSObject
+
+/**
+ The user's full name (e.g. "Jane Doe")
+ */
+@property (nonatomic, copy, nullable) NSString *name;
+
+/**
+ The first line of the user's street address (e.g. "123 Fake St")
+ */
+@property (nonatomic, copy, nullable) NSString *line1;
+
+/**
+ The apartment, floor number, etc of the user's street address (e.g. "Apartment 1A")
+ */
+@property (nonatomic, copy, nullable) NSString *line2;
+
+/**
+ The city in which the user resides (e.g. "San Francisco")
+ */
+@property (nonatomic, copy, nullable) NSString *city;
+
+/**
+ The state in which the user resides (e.g. "CA")
+ */
+@property (nonatomic, copy, nullable) NSString *state;
+
+/**
+ The postal code in which the user resides (e.g. "90210")
+ */
+@property (nonatomic, copy, nullable) NSString *postalCode;
+
+/**
+ The ISO country code of the address (e.g. "US")
+ */
+@property (nonatomic, copy, nullable) NSString *country;
+
+/**
+ The phone number of the address (e.g. "8885551212")
+ */
+@property (nonatomic, copy, nullable) NSString *phone;
+
+/**
+ The email of the address (e.g. "jane@doe.com")
+ */
+@property (nonatomic, copy, nullable) NSString *email;
+
+/**
+ 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 `shipping`
+ parameter when creating a charge.
+ @see 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.
+ */
++ (nullable NSDictionary *)shippingInfoForChargeWithAddress:(nullable STPAddress *)address
+ shippingMethod:(nullable PKShippingMethod *)method;
+
+/**
+ Initializes a new STPAddress with data from STPPaymentMethodBillingDetails.
+
+ @param billingDetails The STPPaymentMethodBillingDetails instance you want to populate the STPAddress from.
+ @return A new STPAddress instance with data copied from the passed in billing details.
+ */
+- (instancetype)initWithPaymentMethodBillingDetails:(STPPaymentMethodBillingDetails *)billingDetails;
+
+/**
+ Initializes a new STPAddress with data from an PassKit contact.
+
+ @param contact The PassKit contact you want to populate the STPAddress from.
+ @return A new STPAddress instance with data copied from the passed in contact.
+ */
+- (instancetype)initWithPKContact:(PKContact *)contact;
+
+/**
+ Generates a PassKit contact representation of this STPAddress.
+
+ @return A new PassKit contact with data copied from this STPAddress instance.
+ */
+- (PKContact *)PKContactValue;
+
+/**
+ Initializes a new STPAddress with a contact from the Contacts framework.
+
+ @param contact The CNContact you want to populate the STPAddress from.
+
+ @return A new STPAddress instance with data copied from the passed in contact.
+ */
+- (instancetype)initWithCNContact:(CNContact *)contact;
+
+
+/**
+ Checks if this STPAddress has the level of valid address information
+ required by the passed in setting.
+
+ @param requiredFields The required level of billing address information to
+ check against.
+
+ @return YES if this address contains at least the necessary information,
+ NO otherwise.
+ */
+- (BOOL)containsRequiredFields:(STPBillingAddressFields)requiredFields;
+
+/**
+ Checks if this STPAddress has any content (possibly invalid) in any of the
+ desired billing address fields.
+
+ Where `containsRequiredFields:` validates that this STPAddress contains valid data in
+ all of the required fields, this method checks for the existence of *any* data.
+
+ For example, if `desiredFields` is `STPBillingAddressFieldsZip`, this will check
+ if the postalCode is empty.
+
+ Note: When `desiredFields == STPBillingAddressFieldsNone`, this method always returns
+ NO.
+
+ @parameter desiredFields The billing address information the caller is interested in.
+ @return YES if there is any data in this STPAddress that's relevant for those fields.
+ */
+- (BOOL)containsContentForBillingAddressFields:(STPBillingAddressFields)desiredFields;
+
+/**
+ Checks if this STPAddress has the level of valid address information
+ required by the passed in setting.
+
+ Note: When `requiredFields == nil`, this method always returns
+ YES.
+
+ @param requiredFields The required shipping address information to check against.
+
+ @return YES if this address contains at least the necessary information,
+ NO otherwise.
+ */
+- (BOOL)containsRequiredShippingAddressFields:(nullable NSSet *)requiredFields;
+
+/**
+ Checks if this STPAddress has any content (possibly invalid) in any of the
+ desired shipping address fields.
+
+ Where `containsRequiredShippingAddressFields:` validates that this STPAddress
+ contains valid data in all of the required fields, this method checks for the
+ existence of *any* data.
+
+ Note: When `desiredFields == nil`, this method always returns
+ NO.
+
+ @parameter desiredFields The shipping address information the caller is interested in.
+ @return YES if there is any data in this STPAddress that's relevant for those fields.
+ */
+- (BOOL)containsContentForShippingAddressFields:(nullable NSSet *)desiredFields;
+
+#if !(defined(TARGET_OS_MACCATALYST) && (TARGET_OS_MACCATALYST != 0))
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+/**
+ Converts an STPBillingAddressFields enum value into the closest equivalent
+ representation of PKAddressField options
+
+ @param billingAddressFields Stripe billing address fields enum value to convert.
+ @return The closest representation of the billing address requirement as
+ a PKAddressField value.
+ */
++ (PKAddressField)applePayAddressFieldsFromBillingAddressFields:(STPBillingAddressFields)billingAddressFields;
+#pragma clang diagnostic pop
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wdeprecated"
+/**
+ Converts a set of STPContactField values into the closest equivalent
+ representation of PKAddressField options
+
+ @param contactFields Stripe contact fields values to convert.
+ @return The closest representation of the contact fields as
+ a PKAddressField value.
+ */
++ (PKAddressField)pkAddressFieldsFromStripeContactFields:(nullable NSSet *)contactFields;
+#pragma clang diagnostic pop
+
+#endif
+
+/**
+ Converts an STPBillingAddressFields enum value into the closest equivalent
+ representation of PKContactField options
+
+ @param billingAddressFields Stripe billing address fields enum value to convert.
+ @return The closest representation of the billing address requirement as
+ a PKContactField value.
+ */
++ (NSSet *)applePayContactFieldsFromBillingAddressFields:(STPBillingAddressFields)billingAddressFields API_AVAILABLE(ios(11.0));
+
+/**
+ Converts a set of STPContactField values into the closest equivalent
+ representation of PKContactField options
+
+ @param contactFields Stripe contact fields values to convert.
+ @return The closest representation of the contact fields as
+ a PKContactField value.
+ */
++ (nullable NSSet *)pkContactFieldsFromStripeContactFields:(nullable NSSet *)contactFields API_AVAILABLE(ios(11.0));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPAppInfo.h b/ios/platform/Stripe.framework/Headers/STPAppInfo.h
new file mode 100644
index 0000000..c90505d
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAppInfo.h
@@ -0,0 +1,60 @@
+//
+// STPAppInfo.h
+// StripeiOS
+//
+// Created by Yuki Tokuhiro on 6/20/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Libraries wrapping the Stripe SDK should use this object to provide information about the library, and set it
+ in on `STPAPIClient`. This information is passed to Stripe so that we can contact you about future issues or critical updates.
+ @see https://stripe.com/docs/building-plugins#setappinfo
+ */
+@interface STPAppInfo : NSObject
+
+/**
+ Initializes an instance of `STPAppInfo`.
+
+ @param name The name of your library (e.g. "MyAwesomeLibrary").
+ @param partnerId Your Stripe Partner ID (e.g. "pp_partner_1234").
+ @param version The version of your library (e.g. "1.2.34"). Optional.
+ @param url The website for your library (e.g. "https://myawesomelibrary.info"). Optional.
+ */
+- (instancetype)initWithName:(NSString *)name
+ partnerId:(NSString *)partnerId
+ version:(nullable NSString *)version
+ url:(nullable NSString *)url;
+
+/**
+ Use `initWithName:partnerId:version:url:` instead.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ The name of your library (e.g. "MyAwesomeLibrary").
+ */
+@property (nonatomic, readonly) NSString *name;
+
+/**
+ Your Stripe Partner ID (e.g. "pp_partner_1234").
+ */
+@property (nonatomic, readonly) NSString *partnerId;
+
+/**
+ The version of your library (e.g. "1.2.34").
+ */
+@property (nonatomic, nullable, readonly) NSString *version;
+
+/**
+ The website for your library (e.g. "https://myawesomelibrary.info").
+ */
+@property (nonatomic, nullable, readonly) NSString *url;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPApplePayPaymentOption.h b/ios/platform/Stripe.framework/Headers/STPApplePayPaymentOption.h
new file mode 100644
index 0000000..084c770
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPApplePayPaymentOption.h
@@ -0,0 +1,24 @@
+//
+// STPApplePayPaymentOption.h
+// Stripe
+//
+// Created by Ben Guo on 4/19/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPPaymentOption.h"
+
+/**
+ An empty class representing that the user wishes to pay via Apple Pay. This can
+ be checked on an `STPPaymentContext`, e.g:
+
+ ```
+ if ([paymentContext.selectedPaymentOption isKindOfClass:[STPApplePayPaymentOption class]]) {
+ // Don't ask the user for their card number; they want to pay with apple pay.
+ }
+ ```
+ */
+@interface STPApplePayPaymentOption : NSObject
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPAuthenticationContext.h b/ios/platform/Stripe.framework/Headers/STPAuthenticationContext.h
new file mode 100644
index 0000000..47a1d46
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPAuthenticationContext.h
@@ -0,0 +1,59 @@
+//
+// STPAuthenticationContext.h
+// Stripe
+//
+// Created by Cameron Sabol on 5/10/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+#import "STPBlocks.h"
+
+@class SFSafariViewController;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ `STPAuthenticationContext` provides information required to present authentication challenges
+ to a user.
+ */
+@protocol STPAuthenticationContext
+
+/**
+ The Stripe SDK will modally present additional view controllers on top
+ of the `authenticationPresentingViewController` when required for user
+ authentication, like in the Challenge Flow for 3DS2 transactions.
+ */
+- (UIViewController *)authenticationPresentingViewController;
+
+@optional
+
+/**
+ This method is called before presenting a UIViewController for authentication.
+
+ @note `STPPaymentHandler` will not proceed until `completion` is called.
+ */
+- (void)prepareAuthenticationContextForPresentation:(STPVoidBlock)completion;
+
+/**
+ This method is called before presenting an SFSafariViewController for web-based authentication.
+
+ Implement this method to configure the `SFSafariViewController` instance, e.g. `viewController.preferredBarTintColor = MyBarTintColor`
+
+ @note Setting the `delegate` property has no effect.
+ */
+- (void)configureSafariViewController:(SFSafariViewController *)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 *)viewController;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPBackendAPIAdapter.h b/ios/platform/Stripe.framework/Headers/STPBackendAPIAdapter.h
new file mode 100644
index 0000000..c119550
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPBackendAPIAdapter.h
@@ -0,0 +1,121 @@
+//
+// STPBackendAPIAdapter.h
+// Stripe
+//
+// Created by Jack Flintermann on 1/12/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+
+#import "STPAddress.h"
+#import "STPBlocks.h"
+#import "STPCustomer.h"
+#import "STPSourceProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPCard, STPToken;
+
+/**
+ A "bridge" from our pre-built UI (`STPPaymentContext`, `STPPaymentOptionsViewController`)
+ to your backend to fetch Customer-related information needed to power those views.
+
+ Typically, you will not need to implement this protocol yourself. You
+ should instead use `STPCustomerContext`, which implements
+ and manages retrieving and updating a Stripe customer for you.
+ @see STPCustomerContext.h
+
+ If you would prefer retrieving and updating your Stripe customer object via
+ your own backend instead of using `STPCustomerContext`, you should make your
+ application's API client conform to this interface.
+ */
+@protocol STPBackendAPIAdapter
+
+/**
+ Retrieve the customer to be displayed inside a payment context.
+
+ If you are not using STPCustomerContext:
+ On your backend, retrieve the Stripe customer associated with your currently
+ logged-in user ( https://stripe.com/docs/api#retrieve_customer ), and return
+ the raw JSON response from the Stripe API. Back in your iOS app, after you've
+ called this API, deserialize your API response into an `STPCustomer` object
+ (you can use the `STPCustomerDeserializer` class to do this).
+
+ @see STPCard
+ @param completion call this callback when you're done fetching and parsing the above information from your backend. For example, `completion(customer, nil)` (if your call succeeds) or `completion(nil, error)` if an error is returned.
+ */
+- (void)retrieveCustomer:(nullable STPCustomerCompletionBlock)completion;
+
+/**
+ Retrieves a list of Payment Methods attached to a customer.
+
+ If you are implementing your own :
+ Call the list method ( https://stripe.com/docs/api/payment_methods/lists )
+ with the Stripe customer. If this API call succeeds, call `completion(paymentMethods)`
+ with the list of PaymentMethods. Otherwise, call `completion(error)` with the error
+ that occurred.
+
+ @param completion Call this callback with the list of Payment Methods attached to the
+ customer. For example, `completion(paymentMethods)` (if your call succeeds) or
+ `completion(error)` if an error is returned.
+
+ */
+- (void)listPaymentMethodsForCustomerWithCompletion:(nullable STPPaymentMethodsCompletionBlock)completion;
+
+/**
+ Adds a Payment Method to a customer.
+
+ If you are implementing your own :
+ On your backend, retrieve the Stripe customer associated with your logged-in user.
+ Then, call the Attach method on the Payment Method with that customer's ID
+ ( https://stripe.com/docs/api/payment_methods/attach ). If this API call succeeds,
+ call `completion(nil)`. Otherwise, call `completion(error)` with the error that
+ occurred.
+
+ @param paymentMethod A valid Payment Method
+ @param completion Call this callback when you're done adding the payment method
+ to the customer on your backend. For example, `completion(nil)` (if your call succeeds)
+ or `completion(error)` if an error is returned.
+ */
+- (void)attachPaymentMethodToCustomer:(STPPaymentMethod *)paymentMethod completion:(nullable STPErrorBlock)completion;
+
+@optional
+
+/**
+ Deletes the given Payment Method from the customer.
+
+ If you are implementing your own :
+ Call the Detach method ( https://stripe.com/docs/api/payment_methods/detach )
+ on the Payment Method. If this API call succeeds, call `completion(nil)`.
+ Otherwise, call `completion(error)` with the error that occurred.
+
+ @param paymentMethod The Payment Method to delete from the customer
+ @param completion Call this callback when you're done deleting the Payment Method
+ from the customer on your backend. For example, `completion(nil)` (if your call
+ succeeds) or `completion(error)` if an error is returned.
+ */
+- (void)detachPaymentMethodFromCustomer:(STPPaymentMethod *)paymentMethod completion:(nullable STPErrorBlock)completion;
+
+/**
+ Sets the given shipping address on the customer.
+
+ If you are implementing your own :
+ On your backend, retrieve the Stripe customer associated with your logged-in user.
+ Then, call the Customer Update method ( https://stripe.com/docs/api#update_customer )
+ specifying shipping to be the given shipping address. If this API call succeeds,
+ call `completion(nil)`. Otherwise, call `completion(error)` with the error that occurred.
+
+ @param shipping The shipping address to set on the customer
+ @param completion call this callback when you're done updating the customer on
+ your backend. For example, `completion(nil)` (if your call succeeds) or
+ `completion(error)` if an error is returned.
+
+ @see https://stripe.com/docs/api#update_customer
+ */
+- (void)updateCustomerWithShippingAddress:(STPAddress *)shipping completion:(nullable STPErrorBlock)completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPBankAccount.h b/ios/platform/Stripe.framework/Headers/STPBankAccount.h
new file mode 100644
index 0000000..8b156fe
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPBankAccount.h
@@ -0,0 +1,124 @@
+//
+// STPBankAccount.h
+// Stripe
+//
+// Created by Charles Scalesse on 10/1/14.
+//
+//
+
+#import
+
+#import "STPBankAccountParams.h"
+#import "STPAPIResponseDecodable.h"
+#import "STPSourceProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Possible validation states for a bank account.
+ */
+typedef NS_ENUM(NSInteger, STPBankAccountStatus) {
+ /**
+ The account has had no activity or validation performed
+ */
+ STPBankAccountStatusNew,
+
+ /**
+ Stripe has determined this bank account exists.
+ */
+ STPBankAccountStatusValidated,
+
+ /**
+ Bank account verification has succeeded.
+ */
+ STPBankAccountStatusVerified,
+
+ /**
+ Verification for this bank account has failed.
+ */
+ STPBankAccountStatusVerificationFailed,
+
+ /**
+ A transfer sent to this bank account has failed.
+ */
+ STPBankAccountStatusErrored,
+};
+
+/**
+ Representation of a user's bank account details that have been tokenized with
+ the Stripe API.
+
+ @see https://stripe.com/docs/api#bank_accounts
+ */
+@interface STPBankAccount : NSObject
+
+/**
+ You cannot directly instantiate an `STPBankAccount`. You should only use one
+ that has been returned from an `STPAPIClient` callback.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPBankAccount. You should only use one that has been returned from an STPAPIClient callback.")));
+
+/**
+ The routing number for the bank account. This should be the ACH routing number,
+ not the wire routing number.
+ */
+@property (nonatomic, nullable, readonly) NSString *routingNumber;
+
+/**
+ Two-letter ISO code representing the country the bank account is located in.
+ */
+@property (nonatomic, readonly) NSString *country;
+
+/**
+ The default currency for the bank account.
+ */
+@property (nonatomic, readonly) NSString *currency;
+
+/**
+ The last 4 digits of the account number.
+ */
+@property (nonatomic, readonly) NSString *last4;
+
+/**
+ The name of the bank that owns the account.
+ */
+@property (nonatomic, readonly) NSString *bankName;
+
+/**
+ The name of the person or business that owns the bank account.
+ */
+@property (nonatomic, nullable, readonly) NSString *accountHolderName;
+
+/**
+ The type of entity that holds the account.
+ */
+@property (nonatomic, readonly) 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, nullable, readonly) NSString *fingerprint;
+
+/**
+ A set of key/value pairs associated with the bank account object.
+
+ @see https://stripe.com/docs/api#metadata
+ */
+@property (nonatomic, copy, nullable, readonly) NSDictionary *metadata;
+
+/**
+ The validation status of the bank account. @see STPBankAccountStatus
+ */
+@property (nonatomic, readonly) STPBankAccountStatus status;
+
+#pragma mark - Deprecated methods
+
+/**
+ The Stripe ID for the bank account.
+ */
+@property (nonatomic, readonly) NSString *bankAccountId DEPRECATED_MSG_ATTRIBUTE("Use stripeID (defined in STPSourceProtocol)");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPBankAccountParams.h b/ios/platform/Stripe.framework/Headers/STPBankAccountParams.h
new file mode 100644
index 0000000..117c973
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPBankAccountParams.h
@@ -0,0 +1,77 @@
+//
+// STPBankAccountParams.h
+// Stripe
+//
+// Created by Jack Flintermann on 10/4/15.
+// Copyright © 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+
+/**
+ The type of entity that holds a bank account.
+ */
+typedef NS_ENUM(NSInteger, STPBankAccountHolderType) {
+ /**
+ An individual holds this bank account.
+ */
+ STPBankAccountHolderTypeIndividual,
+
+ /**
+ A company holds this bank account.
+ */
+ STPBankAccountHolderTypeCompany,
+};
+
+/**
+ 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.
+
+ @see https://stripe.com/docs/api#create_bank_account_token
+ */
+@interface STPBankAccountParams : NSObject
+
+/**
+ The account number for the bank account. Currently must be a checking account.
+ */
+@property (nonatomic, copy, nullable) NSString *accountNumber;
+
+/**
+ The last 4 digits of the bank account's account number, if it's been set,
+ otherwise nil.
+ */
+@property (nonatomic, nullable, readonly) NSString *last4;
+
+/**
+ The routing number for the bank account. This should be the ACH routing number,
+ not the wire routing number.
+ */
+@property (nonatomic, copy, nullable) NSString *routingNumber;
+
+/**
+ Two-letter ISO code representing the country the bank account is located in.
+ */
+@property (nonatomic, copy, nullable) NSString *country;
+
+/**
+ The default currency for the bank account.
+ */
+@property (nonatomic, copy, nullable) NSString *currency;
+
+/**
+ The name of the person or business that owns the bank account.
+ */
+@property (nonatomic, copy, nullable) NSString *accountHolderName;
+
+/**
+ The type of entity that holds the account.
+
+ Defaults to STPBankAccountHolderTypeIndividual.
+ */
+@property (nonatomic, assign) STPBankAccountHolderType accountHolderType;
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPBankSelectionViewController.h b/ios/platform/Stripe.framework/Headers/STPBankSelectionViewController.h
new file mode 100644
index 0000000..988f57b
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPBankSelectionViewController.h
@@ -0,0 +1,92 @@
+//
+// STPBankSelectionViewController.h
+// Stripe
+//
+// Created by David Estes on 8/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+#import "STPCoreTableViewController.h"
+#import "STPFPXBankBrand.h"
+#import "STPPaymentConfiguration.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STPBankSelectionViewControllerDelegate;
+@class STPPaymentMethodParams, STPAPIClient;
+
+/**
+ The payment methods supported by STPBankSelectionViewController.
+ */
+typedef NS_ENUM(NSInteger, STPBankSelectionMethod) {
+
+ /**
+ FPX (Malaysia)
+ */
+ STPBankSelectionMethodFPX,
+
+ /**
+ An unknown payment method
+ */
+ STPBankSelectionMethodUnknown,
+};
+
+/** This view controller displays a list of banks of the specified type, allowing the user to select one to pay from.
+ Once a bank is selected, it will return a PaymentMethodParams object, which you can use to confirm a PaymentIntent
+ or inspect to obtain details about the selected bank.
+*/
+@interface STPBankSelectionViewController : STPCoreTableViewController
+
+/**
+ A convenience initializer; equivalent to calling `initWithBankMethod:bankMethod configuration:[STPPaymentConfiguration sharedConfiguration] theme:[STPTheme defaultTheme]`.
+ */
+- (instancetype)initWithBankMethod:(STPBankSelectionMethod)bankMethod;
+
+/**
+ Initializes a new `STPBankSelectionViewController` with the provided configuration and theme. Don't forget to set the `delegate` property after initialization.
+
+ @param bankMethod The user will be presented with a list of banks for this payment method. STPBankSelectionMethodFPX is currently the only supported payment method.
+ @param configuration The configuration to use. This determines the Stripe publishable key to use when querying metadata about the banks. @see STPPaymentConfiguration
+ @param theme The theme to use to inform the view controller's visual appearance. @see STPTheme
+ */
+- (instancetype)initWithBankMethod:(STPBankSelectionMethod)bankMethod
+ configuration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme;
+
+/**
+The view controller's delegate. This must be set before showing the view controller in order for it to work properly. @see STPBankSelectionViewControllerDelegate
+*/
+@property (nonatomic, weak) id delegate;
+
+/**
+ The API Client to use to make requests.
+
+ Defaults to [STPAPIClient sharedClient]
+ */
+@property (nonatomic, strong) STPAPIClient *apiClient;
+
+@end
+
+/**
+An `STPBankSelectionViewControllerDelegate` is notified when a user selects a bank.
+*/
+@protocol STPBankSelectionViewControllerDelegate
+
+/**
+This is called when the user selects a bank.
+
+You can use the returned PaymentMethodParams to confirm a PaymentIntent, or inspect
+ it to obtain details about the selected bank.
+ Once you're done, you'll want to dismiss (or pop) the view controller.
+
+@param bankViewController the view controller that created the PaymentMethodParams
+@param paymentMethodParams the PaymentMethodParams that was created. @see STPPaymentMethodParams
+*/
+- (void)bankSelectionViewController:(STPBankSelectionViewController *)bankViewController
+ didCreatePaymentMethodParams:(STPPaymentMethodParams *)paymentMethodParams;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPBlocks.h b/ios/platform/Stripe.framework/Headers/STPBlocks.h
new file mode 100644
index 0000000..4513b06
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPBlocks.h
@@ -0,0 +1,246 @@
+//
+// STPBlocks.h
+// Stripe
+//
+// Created by Jack Flintermann on 3/23/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+
+@class STP3DS2AuthenticateResponse;
+@class STPToken;
+@class STPFile;
+@class STPSource;
+@class STPCustomer;
+@protocol STPSourceProtocol;
+@class STPPaymentIntent;
+@class STPSetupIntent;
+@class STPPaymentMethod;
+@class STPIssuingCardPin;
+@class STPFPXBankStatusResponse;
+
+/**
+ These values control the labels used in the shipping info collection form.
+ */
+typedef NS_ENUM(NSUInteger, STPShippingType) {
+ /**
+ Shipping the purchase to the provided address using a third-party
+ shipping company.
+ */
+ STPShippingTypeShipping,
+ /**
+ Delivering the purchase by the seller.
+ */
+ STPShippingTypeDelivery,
+};
+
+/**
+ An enum representing the status of a shipping address validation.
+ */
+typedef NS_ENUM(NSUInteger, STPShippingStatus) {
+ /**
+ The shipping address is valid.
+ */
+ STPShippingStatusValid,
+ /**
+ The shipping address is invalid.
+ */
+ STPShippingStatusInvalid,
+};
+
+/**
+ An enum representing the status of a payment requested from the user.
+ */
+typedef NS_ENUM(NSUInteger, STPPaymentStatus) {
+ /**
+ The payment succeeded.
+ */
+ STPPaymentStatusSuccess,
+ /**
+ The payment failed due to an unforeseen error, such as the user's Internet connection being offline.
+ */
+ STPPaymentStatusError,
+ /**
+ The user cancelled the payment (for example, by hitting "cancel" in the Apple Pay dialog).
+ */
+ STPPaymentStatusUserCancellation,
+};
+
+/**
+ An empty block, called with no arguments, returning nothing.
+ */
+typedef void (^STPVoidBlock)(void);
+
+/**
+ A block that may optionally be called with an error.
+
+ @param error The error that occurred, if any.
+ */
+typedef void (^STPErrorBlock)(NSError * __nullable error);
+
+/**
+ A block that contains a boolean success param and may optionally be called with an error.
+
+ @param success Whether the task succeeded.
+ @param error The error that occurred, if any.
+ */
+typedef void (^STPBooleanSuccessBlock)(BOOL success, NSError * __nullable error);
+
+/**
+ A callback to be run with a JSON response.
+
+ @param jsonResponse The JSON response, or nil if an error occured.
+ @param error The error that occurred, if any.
+ */
+typedef void (^STPJSONResponseCompletionBlock)(NSDictionary * __nullable jsonResponse, NSError * __nullable error);
+
+/**
+ A callback to be run with a token response from the Stripe API.
+
+ @param token The Stripe token from the response. Will be nil if an error occurs. @see STPToken
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPTokenCompletionBlock)(STPToken * __nullable token, NSError * __nullable error);
+
+/**
+ A callback to be run with a source response from the Stripe API.
+
+ @param source The Stripe source from the response. Will be nil if an error occurs. @see STPSource
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPSourceCompletionBlock)(STPSource * __nullable source, NSError * __nullable error);
+
+/**
+ A callback to be run with a source or card response from the Stripe API.
+
+ @param source The Stripe source from the response. Will be nil if an error occurs. @see STPSourceProtocol
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPSourceProtocolCompletionBlock)(id __nullable source, NSError * __nullable error);
+
+/**
+ A callback to be run with a PaymentIntent response from the Stripe API.
+
+ @param paymentIntent The Stripe PaymentIntent from the response. Will be nil if an error occurs. @see STPPaymentIntent
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPPaymentIntentCompletionBlock)(STPPaymentIntent * __nullable paymentIntent, NSError * __nullable error);
+
+/**
+ A callback to be run with a PaymentIntent response from the Stripe API.
+
+ @param setupIntent The Stripe SetupIntent from the response. Will be nil if an error occurs. @see STPSetupIntent
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPSetupIntentCompletionBlock)(STPSetupIntent * __nullable setupIntent, NSError * __nullable error);
+
+/**
+ A callback to be run with a PaymentMethod response from the Stripe API.
+
+ @param paymentMethod The Stripe PaymentMethod from the response. Will be nil if an error occurs. @see STPPaymentMethod
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPPaymentMethodCompletionBlock)(STPPaymentMethod * __nullable paymentMethod, NSError * __nullable error);
+
+/**
+ A callback to be run with an array of PaymentMethods response from the Stripe API.
+
+ @param paymentMethods An array of PaymentMethod from the response. Will be nil if an error occurs. @see STPPaymentMethod
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPPaymentMethodsCompletionBlock)(NSArray *__nullable paymentMethods, NSError * __nullable error);
+
+/**
+ A callback to be run with a validation result and shipping methods for a
+ shipping address.
+
+ @param status An enum representing whether the shipping address is valid.
+ @param shippingValidationError If the shipping address is invalid, an error describing the issue with the address. If no error is given and the address is invalid, the default error message will be used.
+ @param shippingMethods The shipping methods available for the address.
+ @param selectedShippingMethod The default selected shipping method for the address.
+ */
+typedef void (^STPShippingMethodsCompletionBlock)(STPShippingStatus status, NSError * __nullable shippingValidationError, NSArray* __nullable shippingMethods, PKShippingMethod * __nullable selectedShippingMethod);
+
+/**
+ A callback to be run with a file response from the Stripe API.
+
+ @param file The Stripe file from the response. Will be nil if an error occurs. @see STPFile
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPFileCompletionBlock)(STPFile * __nullable file, NSError * __nullable error);
+
+/**
+ A callback to be run with a customer response from the Stripe API.
+
+ @param customer The Stripe customer from the response, or nil if an error occurred. @see STPCustomer
+ @param error The error returned from the response, or nil if none occurs.
+ */
+typedef void (^STPCustomerCompletionBlock)(STPCustomer * __nullable customer, NSError * __nullable error);
+
+/**
+ An enum representing the success and error states of PIN management
+ */
+typedef NS_ENUM(NSUInteger, STPPinStatus) {
+ /**
+ The verification object was already redeemed
+ */
+ STPPinSuccess,
+ /**
+ The verification object was already redeemed
+ */
+ STPPinErrorVerificationAlreadyRedeemed,
+ /**
+ The one-time code was incorrect
+ */
+ STPPinErrorVerificationCodeIncorrect,
+ /**
+ The verification object was expired
+ */
+ STPPinErrorVerificationExpired,
+ /**
+ The verification object has been attempted too many times
+ */
+ STPPinErrorVerificationTooManyAttempts,
+ /**
+ An error occured while retrieving the ephemeral key
+ */
+ STPPinEphemeralKeyError,
+ /**
+ An unknown error occured
+ */
+ STPPinUnknownError,
+};
+
+/**
+ A callback to be run with a card PIN response from the Stripe API.
+
+ @param cardPin The Stripe card PIN from the response. Will be nil if an error occurs. @see STPIssuingCardPin
+ @param status The status to help you sort between different error state, or STPPinSuccess when succesful. @see STPPinStatus for possible values.
+ @param error The error returned from the response, or nil if none occurs. @see StripeError.h for possible values.
+ */
+typedef void (^STPPinCompletionBlock)(STPIssuingCardPin * __nullable cardPin, STPPinStatus status, NSError * __nullable error);
+
+/**
+ A callback to be run with a 3DS2 authenticate response from the Stripe API.
+
+ @param authenticateResponse The Stripe AuthenticateResponse. Will be nil if an error occurs. @see STP3DS2AuthenticateResponse
+ @param error The error returned from the response, or nil if none occurs.
+ */
+typedef void (^STP3DS2AuthenticateCompletionBlock)(STP3DS2AuthenticateResponse * _Nullable authenticateResponse, NSError * _Nullable error);
+
+/**
+ A callback to be run with a response from the Stripe API containing information about the online status of FPX banks.
+
+ @param bankStatusResponse The response from Stripe containing the status of the various banks. Will be nil if an error occurs. @see STPFPXBankStatusResponse
+ @param error The error returned from the response, or nil if none occurs.
+ */
+typedef void (^STPFPXBankStatusCompletionBlock)(STPFPXBankStatusResponse * _Nullable bankStatusResponse, NSError * _Nullable error);
+
+/**
+ A block called with a payment status and an optional error.
+
+ @param error The error that occurred, if any.
+ */
+typedef void (^STPPaymentStatusBlock)(STPPaymentStatus status, NSError * __nullable error);
diff --git a/ios/platform/Stripe.framework/Headers/STPCard.h b/ios/platform/Stripe.framework/Headers/STPCard.h
new file mode 100644
index 0000000..966b2ae
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCard.h
@@ -0,0 +1,225 @@
+//
+// STPCard.h
+// Stripe
+//
+// Created by Saikat Chakrabarti on 11/2/12.
+//
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPCardBrand.h"
+#import "STPCardParams.h"
+#import "STPPaymentOption.h"
+#import "STPSourceProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The various funding sources for a payment card.
+ */
+typedef NS_ENUM(NSInteger, STPCardFundingType) {
+ /**
+ Debit card funding
+ */
+ STPCardFundingTypeDebit,
+
+ /**
+ Credit card funding
+ */
+ STPCardFundingTypeCredit,
+
+ /**
+ Prepaid card funding
+ */
+ STPCardFundingTypePrepaid,
+
+ /**
+ An other or unknown type of funding source.
+ */
+ STPCardFundingTypeOther,
+};
+
+/**
+ Representation of a user's credit card details that have been tokenized with
+ the Stripe API
+
+ @see https://stripe.com/docs/api#cards
+ */
+@interface STPCard : NSObject
+
+/**
+ You cannot directly instantiate an `STPCard`. You should only use one that has
+ been returned from an `STPAPIClient` callback.
+ */
+- (instancetype) init __attribute__((unavailable("You cannot directly instantiate an STPCard. You should only use one that has been returned from an STPAPIClient callback.")));
+
+/**
+ The last 4 digits of the card.
+ */
+@property (nonatomic, readonly) NSString *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, nullable, readonly) NSString *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) NSUInteger expMonth;
+
+/**
+ The card's expiration year.
+ */
+@property (nonatomic, readonly) NSUInteger expYear;
+
+/**
+ The cardholder's name.
+ */
+@property (nonatomic, nullable, readonly) NSString *name;
+
+/**
+ The cardholder's address.
+ */
+@property (nonatomic, readonly) STPAddress *address;
+
+/**
+ The issuer of the card.
+ */
+@property (nonatomic, readonly) STPCardBrand brand;
+
+/**
+ The funding source for the card (credit, debit, prepaid, or other)
+ */
+@property (nonatomic, readonly) STPCardFundingType funding;
+
+/**
+ Two-letter ISO code representing the issuing country of the card.
+ */
+@property (nonatomic, nullable, readonly) NSString *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, nullable, readonly) NSString *currency;
+
+/**
+ A set of key/value pairs associated with the card object.
+
+ @see https://stripe.com/docs/api#metadata
+ */
+@property (nonatomic, copy, nullable, readonly) NSDictionary *metadata;
+
+/**
+ Returns a string representation for the provided card brand;
+ i.e. `[NSString stringFromBrand:STPCardBrandVisa] == @"Visa"`.
+
+ @param brand the brand you want to convert to a string
+
+ @return A string representing the brand, suitable for displaying to a user.
+ */
++ (NSString *)stringFromBrand:(STPCardBrand)brand;
+
+/**
+ This parses a string representing a card's brand into the appropriate
+ STPCardBrand enum value,
+ i.e. `[STPCard brandFromString:@"American Express"] == STPCardBrandAmex`.
+
+ The string values themselves are specific to Stripe as listed in the Stripe API
+ documentation.
+
+ @see https://stripe.com/docs/api#card_object-brand
+
+ @param string a string representing the card's brand as returned from
+ the Stripe API
+
+ @return an enum value mapped to that string. If the string is unrecognized,
+ returns STPCardBrandUnknown.
+ */
++ (STPCardBrand)brandFromString:(NSString *)string;
+
+#pragma mark - Deprecated methods
+
+/**
+ The Stripe ID for the card.
+ */
+@property (nonatomic, readonly) NSString *cardId DEPRECATED_MSG_ATTRIBUTE("Use stripeID (defined in STPSourceProtocol)");
+
+/**
+ The first line of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressLine1 DEPRECATED_MSG_ATTRIBUTE("Use address.line1");
+
+/**
+ The second line of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressLine2 DEPRECATED_MSG_ATTRIBUTE("Use address.line2");
+
+/**
+ The city of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressCity DEPRECATED_MSG_ATTRIBUTE("Use address.city");
+
+/**
+ The state of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressState DEPRECATED_MSG_ATTRIBUTE("Use address.state");
+
+/**
+ The zip code of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressZip DEPRECATED_MSG_ATTRIBUTE("Use address.postalCode");
+
+/**
+ The country of the cardholder's address
+ */
+@property (nonatomic, nullable, readonly) NSString *addressCountry DEPRECATED_MSG_ATTRIBUTE("Use address.country");
+
+/**
+ Create an STPCard from a Stripe API response.
+
+ @param cardID The Stripe ID of the card, e.g. `card_185iQx4JYtv6MPZKfcuXwkOx`
+ @param brand The brand of the card (e.g. "Visa". To obtain this enum value
+ from a string, use `[STPCardBrand brandFromString:string]`;
+ @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 `[STPCardBrand fundingFromString:string]`.
+
+ @return an STPCard instance populated with the provided values.
+ */
+- (instancetype)initWithID:(NSString *)cardID
+ brand:(STPCardBrand)brand
+ last4:(NSString *)last4
+ expMonth:(NSUInteger)expMonth
+ expYear:(NSUInteger)expYear
+ funding:(STPCardFundingType)funding DEPRECATED_MSG_ATTRIBUTE("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
+ `STPCardFundingType` enum value,
+ i.e. `[STPCard fundingFromString:@"prepaid"] == STPCardFundingTypePrepaid`.
+
+ @param string a string representing the card's funding type as returned from
+ the Stripe API
+
+ @return an enum value mapped to that string. If the string is unrecognized,
+ returns `STPCardFundingTypeOther`.
+ */
++ (STPCardFundingType)fundingFromString:(NSString *)string DEPRECATED_ATTRIBUTE;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPCardBrand.h b/ios/platform/Stripe.framework/Headers/STPCardBrand.h
new file mode 100644
index 0000000..c6f170e
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCardBrand.h
@@ -0,0 +1,65 @@
+//
+// STPCardBrand.h
+// Stripe
+//
+// Created by Jack Flintermann on 7/24/15.
+// Copyright (c) 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+/**
+ The various card brands to which a payment card can belong.
+ */
+typedef NS_ENUM(NSInteger, STPCardBrand) {
+
+ /**
+ Visa card
+ */
+ STPCardBrandVisa,
+
+ /**
+ American Express card
+ */
+ STPCardBrandAmex,
+
+ /**
+ Mastercard card
+ */
+ STPCardBrandMasterCard,
+
+ /**
+ Discover card
+ */
+ STPCardBrandDiscover,
+
+ /**
+ JCB card
+ */
+ STPCardBrandJCB,
+
+ /**
+ Diners Club card
+ */
+ STPCardBrandDinersClub,
+
+ /**
+ UnionPay card
+ */
+ STPCardBrandUnionPay,
+
+ /**
+ An unknown card brand type
+ */
+ STPCardBrandUnknown,
+};
+
+/**
+ Returns a string representation for the provided card brand;
+ i.e. `[NSString stringFromBrand:STPCardBrandVisa] == @"Visa"`.
+
+ @param brand the brand you want to convert to a string
+
+ @return A string representing the brand, suitable for displaying to a user.
+ */
+NSString * STPStringFromCardBrand(STPCardBrand brand);
diff --git a/ios/platform/Stripe.framework/Headers/STPCardParams.h b/ios/platform/Stripe.framework/Headers/STPCardParams.h
new file mode 100644
index 0000000..e254c41
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCardParams.h
@@ -0,0 +1,109 @@
+//
+// STPCardParams.h
+// Stripe
+//
+// Created by Jack Flintermann on 10/4/15.
+// Copyright © 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+#if TARGET_OS_IPHONE
+#import "STPAddress.h"
+#endif
+
+/**
+ 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.
+
+ @see https://stripe.com/docs/api#cards
+ */
+@interface STPCardParams : NSObject
+
+/**
+ The card's number.
+ */
+@property (nonatomic, copy, nullable) NSString *number;
+
+/**
+ The last 4 digits of the card's number, if it's been set, otherwise nil.
+ */
+- (nullable NSString *)last4;
+
+/**
+ 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, nullable) NSString *cvc;
+
+/**
+ The cardholder's name.
+
+ @note Changing this property will also changing the name of the
+ param's `address` property.
+ */
+@property (nonatomic, copy, nullable) NSString *name;
+
+/**
+ The cardholder's address.
+
+ @note Setting `address` to a new value will also change the `name` property to
+ be the value of `address.name`. However, changing `address.name` directly will
+ *not* change `name`.
+ */
+@property (nonatomic, strong, nonnull) STPAddress *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, nullable) NSString *currency;
+
+
+#pragma mark - Deprecated methods
+
+/**
+ The first line of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressLine1 DEPRECATED_MSG_ATTRIBUTE("Use address.line1");
+
+/**
+ The second line of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressLine2 DEPRECATED_MSG_ATTRIBUTE("Use address.line2");
+
+/**
+ The city of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressCity DEPRECATED_MSG_ATTRIBUTE("Use address.city");
+
+/**
+ The state of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressState DEPRECATED_MSG_ATTRIBUTE("Use address.state");
+
+/**
+ The zip code of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressZip DEPRECATED_MSG_ATTRIBUTE("Use address.postalCode");
+
+/**
+ The country of the cardholder's address
+ */
+@property (nonatomic, copy, nullable) NSString *addressCountry DEPRECATED_MSG_ATTRIBUTE("Use address.country");
+
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPCardValidationState.h b/ios/platform/Stripe.framework/Headers/STPCardValidationState.h
new file mode 100644
index 0000000..d7b46b6
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCardValidationState.h
@@ -0,0 +1,37 @@
+//
+// STPCardValidationState.h
+// Stripe
+//
+// Created by Jack Flintermann on 8/7/15.
+// Copyright (c) 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+/**
+ These fields indicate whether a card field represents a valid value, invalid
+ value, or incomplete value.
+ */
+typedef NS_ENUM(NSInteger, STPCardValidationState) {
+
+ /**
+ 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,
+
+ /**
+ The field's contents are invalid. For example, an expiration date
+ of "13/42".
+ */
+ STPCardValidationStateInvalid,
+
+ /**
+ The field's contents are not currently valid, but could be by typing
+ additional characters. For example, a CVC of "1".
+ */
+ STPCardValidationStateIncomplete
+};
diff --git a/ios/platform/Stripe.framework/Headers/STPCardValidator.h b/ios/platform/Stripe.framework/Headers/STPCardValidator.h
new file mode 100644
index 0000000..27f8746
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCardValidator.h
@@ -0,0 +1,198 @@
+//
+// STPCardValidator.h
+// Stripe
+//
+// Created by Jack Flintermann on 7/15/15.
+// Copyright (c) 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPCardBrand.h"
+#import "STPCardParams.h"
+#import "STPCardValidationState.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ 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
+ */
+@interface STPCardValidator : NSObject
+
+/**
+ Returns a copy of the passed string with all non-numeric characters removed.
+ */
++ (NSString *)sanitizedNumericStringForString:(NSString *)string;
+
+/**
+Returns a copy of the passed string with all characters removed that do not exist within a postal code.
+*/
++ (NSString *)sanitizedPostalStringForString:(NSString *)string;
+
+/**
+ Whether or not the target string contains only numeric characters.
+ */
++ (BOOL)stringIsNumeric:(NSString *)string;
+
+/**
+ 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.
+
+ @return 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").
+ */
++ (STPCardValidationState)validationStateForNumber:(nullable NSString *)cardNumber
+ validatingCardBrand:(BOOL)validatingCardBrand;
+
+/**
+ 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".
+
+ @return The brand for that card number. The example parameters would
+ return STPCardBrandVisa, STPCardBrandMasterCard, and
+ STPCardBrandUnknown, respectively.
+ */
++ (STPCardBrand)brandForNumber:(NSString *)cardNumber;
+
+/**
+ 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.
+
+ @return The set of possible lengths cards associated with that brand can be.
+ */
++ (NSSet*)lengthsForCardBrand:(STPCardBrand)brand;
+
+
+/**
+ 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.
+
+ @return The maximum length card numbers associated with that brand could be.
+ */
++ (NSInteger)maxLengthForCardBrand:(STPCardBrand)brand;
+
+/**
+ 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.
+
+ @return The final fragment length card numbers associated with that brand use.
+ */
++ (NSInteger)fragmentLengthForCardBrand:(STPCardBrand)brand;
+
+/**
+ 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.
+
+ @return 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").
+ */
++ (STPCardValidationState)validationStateForExpirationMonth:(NSString *)expirationMonth;
+
+/**
+ 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 `validationStateForExpirationMonth`), this will
+ return STPCardValidationStateInvalid.
+
+ @return 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").
+ */
++ (STPCardValidationState)validationStateForExpirationYear:(NSString *)expirationYear
+ inMonth:(NSString *)expirationMonth;
+
+/**
+ 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.
+
+ @return The maximum length of CVC numbers for cards associated with that brand.
+ */
++ (NSUInteger)maxCVCLengthForCardBrand:(STPCardBrand)brand;
+
+/**
+ 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 `brandForNumber`)
+
+ @return 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.
+ */
++ (STPCardValidationState)validationStateForCVC:(NSString *)cvc
+ cardBrand:(STPCardBrand)brand;
+
+/**
+ Validates the given card details.
+
+ @param card The card details to validate.
+
+ @return STPCardValidationStateValid if all fields are valid,
+ STPCardValidationStateInvalid if any field is invalid, or
+ STPCardValidationStateIncomplete if all fields are either incomplete or valid.
+ */
++ (STPCardValidationState)validationStateForCard:(STPCardParams *)card;
+
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConfirmCardOptions.h b/ios/platform/Stripe.framework/Headers/STPConfirmCardOptions.h
new file mode 100644
index 0000000..c6b4171
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConfirmCardOptions.h
@@ -0,0 +1,28 @@
+//
+// STPConfirmCardOptions.h
+// Stripe
+//
+// Created by Cameron Sabol on 1/10/20.
+// Copyright © 2020 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Options to update a Card PaymentMethod during PaymentIntent confirmation.
+ @see https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options-card
+ */
+@interface STPConfirmCardOptions : NSObject
+
+/**
+ CVC value with which to update the Card PaymentMethod.
+ */
+@property (nonatomic, nullable, copy) NSString *cvc;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConfirmPaymentMethodOptions.h b/ios/platform/Stripe.framework/Headers/STPConfirmPaymentMethodOptions.h
new file mode 100644
index 0000000..367c8d1
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConfirmPaymentMethodOptions.h
@@ -0,0 +1,31 @@
+//
+// STPConfirmPaymentMethodOptions.h
+// Stripe
+//
+// Created by Cameron Sabol on 1/10/20.
+// Copyright © 2020 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+@class STPConfirmCardOptions;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Options to update the associated PaymentMethod during PaymentIntent confirmation.
+ @see https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-payment_method_options
+ */
+@interface STPConfirmPaymentMethodOptions : NSObject
+
+/**
+ Options to update a Card PaymentMethod.
+ @see STPConfirmCardOptions
+ */
+@property (nonatomic, nullable) STPConfirmCardOptions *cardOptions;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConnectAccountAddress.h b/ios/platform/Stripe.framework/Headers/STPConnectAccountAddress.h
new file mode 100644
index 0000000..da10e4c
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConnectAccountAddress.h
@@ -0,0 +1,69 @@
+//
+// STPConnectAccountAddress.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 8/2/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An address to use with `STPConnectAccountParams`.
+ */
+@interface STPConnectAccountAddress : NSObject
+
+/**
+ City, district, suburb, town, or village.
+
+ For addresses in Japan: City or ward.
+ */
+@property (nonatomic, copy, nullable) NSString *city;
+
+/**
+ Two-letter country code (ISO 3166-1 alpha-2).
+
+ @see https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
+ */
+@property (nonatomic, copy, nullable) NSString *country;
+
+/**
+ Address line 1 (e.g., street, PO Box, or company name).
+
+ For addresses in Japan: Block or building number.
+ */
+@property (nonatomic, copy, nullable) NSString *line1;
+
+/**
+ Address line 2 (e.g., apartment, suite, unit, or building).
+
+ For addresses in Japan: Building details.
+ */
+@property (nonatomic, copy, nullable) NSString *line2;
+
+/**
+ ZIP or postal code.
+ */
+@property (nonatomic, copy, nullable) NSString *postalCode;
+
+/**
+ State, county, province, or region.
+
+ For addresses in Japan: Prefecture.
+ */
+@property (nonatomic, copy, nullable) NSString *state;
+
+/**
+ Town or cho-me.
+
+ This property only applies to Japanese addresses.
+ */
+@property (nonatomic, copy, nullable) NSString *town;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConnectAccountCompanyParams.h b/ios/platform/Stripe.framework/Headers/STPConnectAccountCompanyParams.h
new file mode 100644
index 0000000..ed15f69
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConnectAccountCompanyParams.h
@@ -0,0 +1,92 @@
+//
+// STPConnectAccountCompanyParams.h
+// StripeiOS
+//
+// Created by Yuki Tokuhiro on 8/2/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPConnectAccountAddress.h"
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Information about the company or business to use with `STPConnectAccountParams`.
+
+ @see https://stripe.com/docs/api/tokens/create_account#create_account_token-account-company
+ */
+@interface STPConnectAccountCompanyParams : NSObject
+
+/**
+ The company’s primary address.
+ */
+@property (nonatomic, strong) STPConnectAccountAddress *address;
+
+/**
+ The Kana variation of the company’s primary address (Japan only).
+ */
+@property (nonatomic, nullable) STPConnectAccountAddress *kanaAddress;
+
+/**
+ The Kanji variation of the company’s primary address (Japan only).
+ */
+@property (nonatomic, nullable) STPConnectAccountAddress *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, nullable) NSNumber *directorsProvided;
+
+/**
+ The company’s legal name.
+ */
+@property (nonatomic, copy, nullable) NSString *name;
+
+/**
+ The Kana variation of the company’s legal name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *kanaName;
+
+/**
+ The Kanji variation of the company’s legal name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *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, nullable) NSNumber *ownersProvided;
+
+/**
+ The company’s phone number (used for verification).
+ */
+@property (nonatomic, copy, nullable) NSString *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, nullable) NSString *taxID;
+
+/**
+ The jurisdiction in which the taxID is registered (Germany-based companies only).
+ */
+@property (nonatomic, copy, nullable) NSString *taxIDRegistrar;
+
+/**
+ The VAT number of the company.
+ */
+@property (nonatomic, copy, nullable) NSString *vatID;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConnectAccountIndividualParams.h b/ios/platform/Stripe.framework/Headers/STPConnectAccountIndividualParams.h
new file mode 100644
index 0000000..c2b342c
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConnectAccountIndividualParams.h
@@ -0,0 +1,189 @@
+//
+// STPConnectAccountIndividualParams.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 8/2/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPConnectAccountAddress.h"
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPConnectAccountIndividualVerification, STPConnectAccountVerificationDocument;
+
+/**
+ Information about the person represented by the account for use with `STPConnectAccountParams`.
+
+ @see https://stripe.com/docs/api/tokens/create_account#create_account_token-account-individual
+ */
+@interface STPConnectAccountIndividualParams : NSObject
+
+/**
+ The individual’s primary address.
+ */
+@property (nonatomic, nullable) STPConnectAccountAddress *address;
+
+/**
+ The Kana variation of the the individual’s primary address (Japan only).
+ */
+@property (nonatomic, nullable) STPConnectAccountAddress *kanaAddress;
+
+/**
+ The Kanji variation of the the individual’s primary address (Japan only).
+ */
+@property (nonatomic, nullable) STPConnectAccountAddress *kanjiAddress;
+
+/**
+ The individual’s date of birth.
+
+ Must include `day`, `month`, and `year`, and only those fields are used.
+ */
+@property (nonatomic, copy, nullable) NSDateComponents *dateOfBirth;
+
+/**
+ The individual's email address.
+ */
+@property (nonatomic, copy, nullable) NSString *email;
+
+/**
+ The individual’s first name.
+ */
+@property (nonatomic, copy, nullable) NSString *firstName;
+
+/**
+ The Kana variation of the the individual’s first name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *kanaFirstName;
+
+/**
+ The Kanji variation of the individual’s first name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *kanjiFirstName;
+
+/**
+ The individual’s gender
+
+ International regulations require either “male” or “female”.
+ */
+@property (nonatomic, copy, nullable) NSString *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 created with Stripe.js (see https://stripe.com/docs/stripe-js/reference#collecting-pii-data).
+ */
+@property (nonatomic, copy, nullable) NSString *idNumber;
+
+/**
+ The individual’s last name.
+ */
+@property (nonatomic, copy, nullable) NSString *lastName;
+
+/**
+ The Kana varation of the individual’s last name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *kanaLastName;
+
+/**
+ The Kanji varation of the individual’s last name (Japan only).
+ */
+@property (nonatomic, copy, nullable) NSString *kanjiLastName;
+
+/**
+ The individual’s maiden name.
+ */
+@property (nonatomic, copy, nullable) NSString *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, nullable) NSDictionary *metadata;
+
+/**
+ The individual’s phone number.
+ */
+@property (nonatomic, copy, nullable) NSString *phone;
+
+/**
+ The last four digits of the individual’s Social Security Number (U.S. only).
+ */
+@property (nonatomic, copy, nullable) NSString *ssnLast4;
+
+/**
+ The individual’s verification document information.
+ */
+@property (nonatomic, strong, nullable) STPConnectAccountIndividualVerification *verification;
+
+@end
+
+#pragma mark -
+
+/**
+ The individual’s verification document information for use with `STPConnectAccountIndividualParams`.
+ */
+@interface STPConnectAccountIndividualVerification: NSObject
+
+/**
+ An identifying document, either a passport or local ID card.
+ */
+@property (nonatomic, strong, nullable) STPConnectAccountVerificationDocument *document;
+
+@end
+
+#pragma mark -
+
+/**
+ An identifying document, either a passport or local ID card for use with `STPConnectAccountIndividualVerification`.
+ */
+@interface STPConnectAccountVerificationDocument: NSObject
+
+/**
+ The back of an ID returned by a file upload with a `purpose` value of `identity_document`.
+
+ @see https://stripe.com/docs/api/files/create for file uploads
+ */
+@property (nonatomic, copy, nullable) NSString *back;
+
+/**
+ The front of an ID returned by a file upload with a `purpose` value of `identity_document`.
+
+ @see https://stripe.com/docs/api/files/create for file uploads
+ */
+@property (nonatomic, copy, nullable) NSString *front;
+
+@end
+
+#pragma mark - Date of Birth
+
+/**
+ An individual's date of birth.
+
+ See https://stripe.com/docs/api/tokens/create_account#create_account_token-account-individual-dob
+ */
+@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;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPConnectAccountParams.h b/ios/platform/Stripe.framework/Headers/STPConnectAccountParams.h
new file mode 100644
index 0000000..c0ee0d0
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPConnectAccountParams.h
@@ -0,0 +1,117 @@
+//
+// STPConnectAccountParams.h
+// Stripe
+//
+// Created by Daniel Jackson on 1/4/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+/**
+ The business type of the Connect account.
+ */
+typedef NS_ENUM(NSInteger, STPConnectAccountBusinessType) {
+ /**
+ This Connect account represents an individual.
+ */
+ STPConnectAccountBusinessTypeIndividual,
+
+ /**
+ This Connect account represents a company.
+ */
+ STPConnectAccountBusinessTypeCompany
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPConnectAccountIndividualParams;
+@class STPConnectAccountCompanyParams;
+
+/**
+ Parameters for creating a Connect Account token.
+
+ @see https://stripe.com/docs/api/tokens/create_account
+ */
+@interface STPConnectAccountParams : NSObject
+
+/**
+ Optional boolean indicating that the Terms Of Service were shown to the user &
+ the user accepted them.
+ */
+@property (nonatomic, nullable, readonly) NSNumber *tosShownAndAccepted;
+
+/**
+ The business type.
+ */
+@property (nonatomic, readonly) STPConnectAccountBusinessType businessType;
+
+/**
+ Information about the individual represented by the account.
+
+ */
+@property (nonatomic, nullable, readonly) STPConnectAccountIndividualParams *individual;
+
+/**
+ Information about the company or business.
+ */
+@property (nonatomic, nullable, readonly) STPConnectAccountCompanyParams *company;
+
+/**
+ `STPConnectAccountParams` cannot be directly instantiated.
+ */
+- (instancetype)init __attribute__((unavailable("Cannot be directly instantiated")));
+
+/**
+ Initialize `STPConnectAccountParams` with tosShownAndAccepted = YES
+
+ This method cannot be called with `wasAccepted == NO`, guarded by a `NSParameterAssert()`.
+
+ Use this init method if you want to set the `tosShownAndAccepted` parameter. If you
+ don't, use the `initWithIndividual:` 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 `STPConnectAccountIndividualParams`.
+ */
+- (instancetype)initWithTosShownAndAccepted:(BOOL)wasAccepted
+ individual:(STPConnectAccountIndividualParams *)individual;
+
+/**
+ Initialize `STPConnectAccountParams` with tosShownAndAccepted = YES
+
+ This method cannot be called with `wasAccepted == NO`, guarded by a `NSParameterAssert()`.
+
+ Use this init method if you want to set the `tosShownAndAccepted` parameter. If you
+ don't, use the `initWithCompany:` 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 `STPConnectAccountCompanyParams`.
+ */
+- (instancetype)initWithTosShownAndAccepted:(BOOL)wasAccepted
+ company:(STPConnectAccountCompanyParams *)company;
+
+/**
+ Initialize `STPConnectAccountParams` with the provided `individual` dictionary.
+
+ @param individual Information about the person represented by the account
+
+ This init method cannot change the `tosShownAndAccepted` parameter. Use
+ `initWithTosShownAndAccepted:individual:` instead if you need to do that.
+ */
+- (instancetype)initWithIndividual:(STPConnectAccountIndividualParams *)individual;
+
+/**
+ Initialize `STPConnectAccountParams` with the provided `company` dictionary.
+
+ @param company Information about the company or business
+
+ This init method cannot change the `tosShownAndAccepted` parameter. Use
+ `initWithTosShownAndAccepted:company:` instead if you need to do that.
+ */
+- (instancetype)initWithCompany:(STPConnectAccountCompanyParams *)company;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPCoreScrollViewController.h b/ios/platform/Stripe.framework/Headers/STPCoreScrollViewController.h
new file mode 100644
index 0000000..ea8e833
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCoreScrollViewController.h
@@ -0,0 +1,21 @@
+//
+// STPCoreScrollViewController.h
+// Stripe
+//
+// Created by Brian Dorfman on 1/6/17.
+// Copyright © 2017 Stripe, Inc. All rights reserved.
+//
+
+#import "STPCoreViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This is the base class for all Stripe scroll view controllers. It is intended
+ for use only by Stripe classes, you should not subclass it yourself in your app.
+ */
+@interface STPCoreScrollViewController : STPCoreViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPCoreTableViewController.h b/ios/platform/Stripe.framework/Headers/STPCoreTableViewController.h
new file mode 100644
index 0000000..683c20a
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCoreTableViewController.h
@@ -0,0 +1,24 @@
+//
+// STPCoreTableViewController.h
+// Stripe
+//
+// Created by Brian Dorfman on 1/6/17.
+// Copyright © 2017 Stripe, Inc. All rights reserved.
+//
+
+#import "STPCoreScrollViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This is the base class for all Stripe scroll view controllers. It is intended
+ for use only by Stripe classes, you should not subclass it yourself in your app.
+
+ It inherits from STPCoreScrollViewController and changes the type of the
+ created scroll view to UITableView, as well as other shared table view logic.
+ */
+@interface STPCoreTableViewController : STPCoreScrollViewController
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPCoreViewController.h b/ios/platform/Stripe.framework/Headers/STPCoreViewController.h
new file mode 100644
index 0000000..49dacac
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCoreViewController.h
@@ -0,0 +1,54 @@
+//
+// STPCoreViewController.h
+// Stripe
+//
+// Created by Brian Dorfman on 1/6/17.
+// Copyright © 2017 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+@class STPTheme;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This is the base class for all Stripe view controllers. It is intended for use
+ only by Stripe classes, you should not subclass it yourself in your app.
+
+ It theming, back/cancel button management, and other shared logic for
+ Stripe view controllers.
+ */
+@interface STPCoreViewController : UIViewController
+
+/**
+ A convenience initializer; equivalent to calling `initWithTheme:[STPTheme defaultTheme]`.
+ */
+- (instancetype)init;
+
+
+/**
+ Initializes a new view controller with the specified theme
+
+ @param theme The theme to use to inform the view controller's visual appearance. @see STPTheme
+ */
+- (instancetype)initWithTheme:(STPTheme *)theme NS_DESIGNATED_INITIALIZER;
+
+
+/**
+ Passes through to the default UIViewController behavior for this initializer,
+ and then also sets the default theme as in `init`
+ */
+- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
+ bundle:(nullable NSBundle *)nibBundleOrNil NS_DESIGNATED_INITIALIZER;
+
+/**
+ Passes through to the default UIViewController behavior for this initializer,
+ and then also sets the default theme as in `init`
+ */
+- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff --git a/ios/platform/Stripe.framework/Headers/STPCustomer.h b/ios/platform/Stripe.framework/Headers/STPCustomer.h
new file mode 100644
index 0000000..95901c5
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCustomer.h
@@ -0,0 +1,102 @@
+//
+// STPCustomer.h
+// Stripe
+//
+// Created by Jack Flintermann on 6/9/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPAPIResponseDecodable.h"
+#import "STPSourceProtocol.h"
+
+@class STPAddress;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An `STPCustomer` represents a deserialized Customer object from the Stripe API.
+ You shouldn't need to instantiate an `STPCustomer` – you should instead use
+ `STPCustomerContext` to manage retrieving and updating a customer.
+ */
+@interface STPCustomer : NSObject
+
+/**
+ Initialize a customer object with the provided values.
+
+ @param stripeID The ID of the customer, e.g. `cus_abc`
+ @param defaultSource The default source of the customer, such as an `STPCard` object. Can be nil.
+ @param sources All of the customer's payment sources. This might be an empty array.
+
+ @return an instance of STPCustomer
+ */
++ (instancetype)customerWithStripeID:(NSString *)stripeID
+ defaultSource:(nullable id)defaultSource
+ sources:(NSArray> *)sources;
+
+/**
+ The Stripe ID of the customer, e.g. `cus_1234`
+ */
+@property (nonatomic, readonly, copy) NSString *stripeID;
+
+/**
+ The default source used to charge the customer.
+ */
+@property (nonatomic, readonly, nullable) id defaultSource;
+
+/**
+ The available payment sources the customer has (this may be an empty array).
+ */
+@property (nonatomic, readonly) NSArray> *sources;
+
+/**
+ The customer's shipping address.
+ */
+@property (nonatomic, readonly, nullable) STPAddress *shippingAddress;
+
+@end
+
+/**
+ Use `STPCustomerDeserializer` to convert a response from the Stripe API into an `STPCustomer` object. `STPCustomerDeserializer` expects the JSON response to be in the exact same format as the Stripe API.
+ */
+@interface STPCustomerDeserializer : NSObject
+
+/**
+ Initialize a customer deserializer. The `data`, `urlResponse`, and `error`
+ parameters are intended to be passed from an `NSURLSessionDataTask` callback.
+ After it has been initialized, you can inspect the `error` and `customer`
+ properties to see if the deserialization was successful. If `error` is nil,
+ `customer` will be non-nil (and vice versa).
+
+ @param data An `NSData` object representing encoded JSON for a Customer object
+ @param urlResponse The URL response obtained from the `NSURLSessionTask`
+ @param error Any error that occurred from the URL session task (if this
+ is non-nil, the `error` property will be set to this value after initialization).
+ */
+- (instancetype)initWithData:(nullable NSData *)data
+ urlResponse:(nullable NSURLResponse *)urlResponse
+ error:(nullable NSError *)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 `customer` parameter will be present after initialization;
+ otherwise `error` will be present.
+
+ @param json a JSON dictionary.
+ */
+- (instancetype)initWithJSONResponse:(id)json;
+
+/**
+ If a customer was successfully parsed from the response, it will be set here. Otherwise, this value wil be nil (and the `error` property will explain what went wrong).
+ */
+@property (nonatomic, readonly, nullable) STPCustomer *customer;
+
+/**
+ If the deserializer failed to parse a customer, this property will explain why (and the `customer` property will be nil).
+ */
+@property (nonatomic, readonly, nullable) NSError *error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPCustomerContext.h b/ios/platform/Stripe.framework/Headers/STPCustomerContext.h
new file mode 100644
index 0000000..e6135e2
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPCustomerContext.h
@@ -0,0 +1,80 @@
+//
+// STPCustomerContext.h
+// Stripe
+//
+// Created by Ben Guo on 5/2/17.
+// Copyright © 2017 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPBackendAPIAdapter.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STPCustomerEphemeralKeyProvider;
+@class STPEphemeralKey, STPEphemeralKeyManager, STPAPIClient;
+
+/**
+ An `STPCustomerContext` retrieves and updates a Stripe customer and their attached
+ payment methods using an ephemeral key, a short-lived API key scoped to a specific
+ customer object. If your current user logs out of your app and a new user logs in,
+ be sure to either create a new instance of `STPCustomerContext` or clear the current
+ instance's cache. On your backend, be sure to create and return a
+ new ephemeral key for the Customer object associated with the new user.
+ */
+@interface STPCustomerContext : NSObject
+
+/**
+ Initializes a new `STPCustomerContext` with the specified key provider.
+ Upon initialization, a CustomerContext will fetch a new ephemeral key from
+ your backend and use it to prefetch the customer object specified in the key.
+ Subsequent customer and payment method retrievals (e.g. by `STPPaymentContext`)
+ will return the prefetched customer / attached payment methods immediately if
+ its age does not exceed 60 seconds.
+
+ @param keyProvider The key provider the customer context will use.
+ @return the newly-instantiated customer context.
+ */
+- (instancetype)initWithKeyProvider:(id)keyProvider;
+
+/**
+Initializes a new `STPCustomerContext` with the specified key provider.
+Upon initialization, a CustomerContext will fetch a new ephemeral key from
+your backend and use it to prefetch the customer object specified in the key.
+Subsequent customer and payment method retrievals (e.g. by `STPPaymentContext`)
+will return the prefetched customer / attached payment methods immediately if
+its age does not exceed 60 seconds.
+
+@param keyProvider The key provider the customer context will use.
+@param apiClient The API Client to use to make requests.
+@return the newly-instantiated customer context.
+*/
+- (instancetype)initWithKeyProvider:(id)keyProvider apiClient:(STPAPIClient *)apiClient;
+
+
+/**
+ `STPCustomerContext` will cache its customer object and associated payment methods
+ for up to 60 seconds. If your current user logs out of your app and a new user logs
+ in, be sure to either call this method or create a new instance of `STPCustomerContext`.
+ On your backend, be sure to create and return a new ephemeral key for the
+ customer object associated with the new user.
+ */
+- (void)clearCache;
+
+/**
+ By default, `STPCustomerContext` will filter Apple Pay when it retrieves
+ Payment Methods. Apple Pay payment methods should generally not be re-used and
+ shouldn't be offered to customers as a new payment method (Apple Pay payment
+ methods may only be re-used for subscriptions).
+
+ If you are using `STPCustomerContext` to back your own UI and would like to
+ disable Apple Pay filtering, set this property to YES.
+
+ Note: If you are using `STPPaymentContext`, you should not change this property.
+ */
+@property (nonatomic, assign) BOOL includeApplePayPaymentMethods;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPEphemeralKeyProvider.h b/ios/platform/Stripe.framework/Headers/STPEphemeralKeyProvider.h
new file mode 100644
index 0000000..0215729
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPEphemeralKeyProvider.h
@@ -0,0 +1,82 @@
+//
+// STPEphemeralKeyProvider.h
+// Stripe
+//
+// Created by Ben Guo on 5/9/17.
+// Copyright © 2017 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPBlocks.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPEphemeralKey;
+
+/**
+ You should make your application's API client conform to this interface.
+ It provides a way for Stripe utility classes to request a new ephemeral key from
+ your backend, which it will use to retrieve and update Stripe API objects.
+ */
+@protocol STPCustomerEphemeralKeyProvider
+/**
+ Creates a new ephemeral key for retrieving and updating a Stripe customer.
+ On your backend, you should create a new ephemeral key for the Stripe customer
+ associated with your user, and return the raw JSON response from the Stripe API.
+ For an example Ruby implementation of this API, refer to our example backend:
+ https://github.com/stripe/example-ios-backend/blob/v18.1.0/web.rb
+
+ Back in your iOS app, once you have a response from this API, call the provided
+ completion block with the JSON response, or an error if one occurred.
+
+ @param apiVersion The Stripe API version to use when creating a key.
+ You should pass this parameter to your backend, and use it to set the API version
+ in your key creation request. Passing this version parameter ensures that the
+ Stripe SDK can always parse the ephemeral key response from your server.
+ @param completion Call this callback when you're done fetching a new ephemeral
+ key from your backend. For example, `completion(json, nil)` (if your call succeeds)
+ or `completion(nil, error)` if an error is returned.
+ */
+- (void)createCustomerKeyWithAPIVersion:(NSString *)apiVersion completion:(STPJSONResponseCompletionBlock)completion;
+@end
+
+/**
+ You should make your application's API client conform to this interface.
+ It provides a way for Stripe utility classes to request a new ephemeral key from
+ your backend, which it will use to retrieve and update Stripe API objects.
+ */
+@protocol STPIssuingCardEphemeralKeyProvider
+/**
+ Creates a new ephemeral key for retrieving and updating a Stripe Issuing Card.
+ On your backend, you should create a new ephemeral key for your logged-in user's
+ primary Issuing Card, and return the raw JSON response from the Stripe API.
+ For an example Ruby implementation of this API, refer to our example backend:
+ https://github.com/stripe/example-ios-backend/blob/v18.1.0/web.rb
+
+ Back in your iOS app, once you have a response from this API, call the provided
+ completion block with the JSON response, or an error if one occurred.
+
+ @param apiVersion The Stripe API version to use when creating a key.
+ You should pass this parameter to your backend, and use it to set the API version
+ in your key creation request. Passing this version parameter ensures that the
+ Stripe SDK can always parse the ephemeral key response from your server.
+ @param completion Call this callback when you're done fetching a new ephemeral
+ key from your backend. For example, `completion(json, nil)` (if your call succeeds)
+ or `completion(nil, error)` if an error is returned.
+ */
+- (void)createIssuingCardKeyWithAPIVersion:(NSString *)apiVersion completion:(STPJSONResponseCompletionBlock)completion;
+@end
+
+/**
+ You should make your application's API client conform to this interface.
+ It provides a way for Stripe utility classes to request a new ephemeral key from
+ your backend, which it will use to retrieve and update Stripe API objects.
+ @deprecated use `STPCustomerEphemeralKeyProvider` or `STPIssuingCardEphemeralKeyProvider`
+depending on the type of key that will be fetched.
+ */
+__attribute__ ((deprecated("STPEphemeralKeyProvider has been renamed to STPCustomerEphemeralKeyProvider", "STPCustomerEphemeralKeyProvider")))
+@protocol STPEphemeralKeyProvider
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPFPXBankBrand.h b/ios/platform/Stripe.framework/Headers/STPFPXBankBrand.h
new file mode 100644
index 0000000..9b04ccf
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPFPXBankBrand.h
@@ -0,0 +1,151 @@
+//
+// STPFPXBankBrand.h
+// StripeiOS
+//
+// Created by David Estes on 8/8/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+/**
+ The various bank brands available for FPX payments.
+ */
+typedef NS_ENUM(NSInteger, STPFPXBankBrand) {
+
+ /**
+ Maybank2U
+ */
+ STPFPXBankBrandMaybank2U,
+
+ /**
+ CIMB Clicks
+ */
+ STPFPXBankBrandCIMB,
+
+ /**
+ Public Bank
+ */
+ STPFPXBankBrandPublicBank,
+
+ /**
+ RHB Bank
+ */
+ STPFPXBankBrandRHB,
+
+ /**
+ Hong Leong Bank
+ */
+ STPFPXBankBrandHongLeongBank,
+
+ /**
+ AmBank
+ */
+ STPFPXBankBrandAmbank,
+
+ /**
+ Affin Bank
+ */
+ STPFPXBankBrandAffinBank,
+
+ /**
+ Alliance Bank
+ */
+ STPFPXBankBrandAllianceBank,
+
+ /**
+ Bank Islam
+ */
+ STPFPXBankBrandBankIslam,
+
+ /**
+ Bank Muamalat
+ */
+ STPFPXBankBrandBankMuamalat,
+
+ /**
+ Bank Rakyat
+ */
+ STPFPXBankBrandBankRakyat,
+
+ /**
+ BSN
+ */
+ STPFPXBankBrandBSN,
+
+ /**
+ HSBC BANK
+ */
+ STPFPXBankBrandHSBC,
+
+ /**
+ KFH
+ */
+ STPFPXBankBrandKFH,
+
+ /**
+ Maybank2E
+ */
+ STPFPXBankBrandMaybank2E,
+
+ /**
+ OCBC Bank
+ */
+ STPFPXBankBrandOcbc,
+
+ /**
+ Standard Chartered
+ */
+ STPFPXBankBrandStandardChartered,
+
+ /**
+ UOB Bank
+ */
+ STPFPXBankBrandUOB,
+
+ /**
+ An unknown bank
+ */
+ STPFPXBankBrandUnknown,
+};
+
+/**
+ Returns a string representation for the provided bank brand;
+ i.e. `[NSString stringFromBrand:STPCardBrandUob] == @"UOB Bank"`.
+
+ @param brand The brand you want to convert to a string
+
+ @return A string representing the brand, suitable for displaying to a user.
+ */
+NSString * STPStringFromFPXBankBrand(STPFPXBankBrand brand);
+
+/**
+ Returns a bank brand provided a string representation identifying a bank brand;
+ i.e. `STPFPXBankBrandFromIdentifier(@"uob") == STPCardBrandUob`.
+
+ @param identifier The identifier for the brand
+
+ @return The STPFPXBankBrand enum value
+ */
+STPFPXBankBrand STPFPXBankBrandFromIdentifier(NSString *identifier);
+
+/**
+ Returns a string representation identifying the provided bank brand;
+ i.e. `STPIdentifierFromFPXBankBrand(STPCardBrandUob) == @"uob"`.
+
+ @param brand The brand you want to convert to a string
+
+ @return A string representing the brand, suitable for using with the Stripe API.
+ */
+NSString * STPIdentifierFromFPXBankBrand(STPFPXBankBrand brand);
+
+/**
+ Returns the code identifying the provided bank brand in the FPX status API;
+ i.e. `STPIdentifierFromFPXBankBrand(STPCardBrandUob) == @"UOB0226"`.
+
+ @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
+
+ @return A string representing the brand, suitable for checking against the FPX status API.
+ */
+NSString * STPBankCodeFromFPXBankBrand(STPFPXBankBrand brand, BOOL isBusiness);
diff --git a/ios/platform/Stripe.framework/Headers/STPFakeAddPaymentPassViewController.h b/ios/platform/Stripe.framework/Headers/STPFakeAddPaymentPassViewController.h
new file mode 100644
index 0000000..bbc7925
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPFakeAddPaymentPassViewController.h
@@ -0,0 +1,30 @@
+//
+// STPFakeAddPaymentPassViewController.h
+// Stripe
+//
+// Created by Jack Flintermann on 9/28/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+This class is a piece of fake UI that is intended to mimic `PKAddPaymentPassViewController`. That class is restricted to apps with a special entitlement from Apple, and as such can be difficult to build and test against. This class implements the same public API as `PKAddPaymentPassViewController`, and can be used to develop against the Stripe API in *testmode only*. (Obviously it will not actually place cards into the user's Apple Pay wallet either.) When it's time to go to production, you may simply replace all references to `STPFakeAddPaymentPassViewController` in your app with `PKAddPaymentPassViewController` and it will continue to function. For more information on developing against this API, please see https://stripe.com/docs/issuing/cards/digital-wallets .
+ */
+@interface STPFakeAddPaymentPassViewController : UIViewController
+
+/// @see PKAddPaymentPassViewController
++ (BOOL)canAddPaymentPass;
+
+/// @see PKAddPaymentPassViewController
+- (nullable instancetype)initWithRequestConfiguration:(PKAddPaymentPassRequestConfiguration *)configuration
+ delegate:(nullable id)delegate NS_DESIGNATED_INITIALIZER;
+/// @see PKAddPaymentPassViewController
+@property (nonatomic, weak, nullable) id delegate;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPFile.h b/ios/platform/Stripe.framework/Headers/STPFile.h
new file mode 100644
index 0000000..cde4fbc
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPFile.h
@@ -0,0 +1,77 @@
+//
+// STPFile.h
+// Stripe
+//
+// Created by Charles Scalesse on 11/30/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The purpose of the uploaded file.
+
+ @see https://stripe.com/docs/file-upload
+ */
+typedef NS_ENUM(NSInteger, STPFilePurpose) {
+
+ /**
+ Identity document file
+ */
+ STPFilePurposeIdentityDocument,
+
+ /**
+ Dispute evidence file
+ */
+ STPFilePurposeDisputeEvidence,
+
+ /**
+ A file of unknown purpose type
+ */
+ STPFilePurposeUnknown,
+};
+
+/**
+ Representation of a file upload object in the Stripe API.
+
+ @see https://stripe.com/docs/api#file_uploads
+ */
+@interface STPFile : NSObject
+
+/**
+ The token for this file.
+ */
+@property (nonatomic, readonly) NSString *fileId;
+
+/**
+ The date this file was created.
+ */
+@property (nonatomic, readonly) NSDate *created;
+
+/**
+ The purpose of this file. This can be either an identifing document or an evidence dispute.
+ @see https://stripe.com/docs/file-upload
+ */
+@property (nonatomic, readonly) STPFilePurpose purpose;
+
+/**
+ The file size in bytes.
+ */
+@property (nonatomic, readonly) NSNumber *size;
+
+/**
+ The file type. This can be "jpg", "png", or "pdf".
+ */
+@property (nonatomic, readonly) NSString *type;
+
+/**
+ Returns the string value for a purpose.
+ */
++ (nullable NSString *)stringFromPurpose:(STPFilePurpose)purpose;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPFormEncodable.h b/ios/platform/Stripe.framework/Headers/STPFormEncodable.h
new file mode 100644
index 0000000..873f9a0
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPFormEncodable.h
@@ -0,0 +1,39 @@
+//
+// STPFormEncodable.h
+// Stripe
+//
+// Created by Jack Flintermann on 10/14/15.
+// Copyright © 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ 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.
+ */
+@protocol STPFormEncodable
+
+/**
+ 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 `propertyNamesToFormFieldNamesMapping` below.
+ */
++ (nullable NSString *)rootObjectName;
+
+/**
+ 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 `expMonth`, but the Stripe API expects a field called `exp_month`. This dictionary represents a mapping from the former to the latter (in other words, [STPCardParams propertyNamesToFormFieldNamesMapping][@"expMonth"] == @"exp_month".)
+ */
++ (NSDictionary *)propertyNamesToFormFieldNamesMapping;
+
+/**
+ 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:
+ STPCardParams *cardParams = [STPCardParams new];
+ // add card values
+ cardParams.additionalAPIParameters = @{@"test_field": @"example_value"};
+ [[STPAPIClient sharedClient] createTokenWithCard:cardParams completion:...];
+ */
+@property (nonatomic, readwrite, copy) NSDictionary *additionalAPIParameters;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPImageLibrary.h b/ios/platform/Stripe.framework/Headers/STPImageLibrary.h
new file mode 100644
index 0000000..ed2878e
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPImageLibrary.h
@@ -0,0 +1,104 @@
+//
+// STPImages.h
+// Stripe
+//
+// Created by Jack Flintermann on 6/30/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import
+#import "STPFPXBankBrand.h"
+#import "STPCardBrand.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This class lets you access card icons used by the Stripe SDK. All icons are 32 x 20 points.
+ */
+@interface STPImageLibrary : NSObject
+
+/**
+ An icon representing Apple Pay.
+ */
++ (UIImage *)applePayCardImage;
+
+/**
+ An icon representing American Express.
+ */
++ (UIImage *)amexCardImage;
+
+/**
+ An icon representing Diners Club.
+ */
++ (UIImage *)dinersClubCardImage;
+
+/**
+ An icon representing Discover.
+ */
++ (UIImage *)discoverCardImage;
+
+/**
+ An icon representing JCB.
+ */
++ (UIImage *)jcbCardImage;
+
+/**
+ An icon representing Mastercard.
+ */
++ (UIImage *)masterCardCardImage;
+
+/**
+ An icon representing UnionPay.
+ */
++ (UIImage *)unionPayCardImage;
+
+/**
+ An icon representing Visa.
+ */
++ (UIImage *)visaCardImage;
+
+/**
+ An icon to use when the type of the card is unknown.
+ */
++ (UIImage *)unknownCardCardImage;
+
+/**
+ This returns the appropriate icon for the specified card brand.
+ */
++ (UIImage *)brandImageForCardBrand:(STPCardBrand)brand;
+
+/**
+This returns the appropriate icon for the specified bank brand.
+*/
++ (UIImage *)brandImageForFPXBankBrand:(STPFPXBankBrand)brand;
+
+/**
+ An icon representing FPX.
+ */
++ (UIImage *)fpxLogo;
+
+/**
+ A large branding image for FPX.
+ */
++ (UIImage *)largeFpxLogo;
+
+/**
+ This returns the appropriate icon for the specified card brand as a
+ single color template that can be tinted
+ */
++ (UIImage *)templatedBrandImageForCardBrand:(STPCardBrand)brand;
+
+/**
+ This returns a small icon indicating the CVC location for the given card brand.
+ */
++ (UIImage *)cvcImageForCardBrand:(STPCardBrand)brand;
+
+/**
+ This returns a small icon indicating a card number error for the given card brand.
+ */
++ (UIImage *)errorImageForCardBrand:(STPCardBrand)brand;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPIntentAction.h b/ios/platform/Stripe.framework/Headers/STPIntentAction.h
new file mode 100644
index 0000000..9abb7e5
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPIntentAction.h
@@ -0,0 +1,81 @@
+//
+// STPIntentAction.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 6/27/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+@class STPIntentActionRedirectToURL, STPIntentActionRedirectToURL;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Types of next actions for `STPPaymentIntent` and `STPSetupIntent`.
+
+ You shouldn't need to inspect this yourself; `STPPaymentHandler` will handle any next actions for you.
+ */
+typedef NS_ENUM(NSUInteger, STPIntentActionType) {
+
+ /**
+ This is an unknown action, that's been added since the SDK
+ was last updated.
+ Update your SDK, or use the `nextAction.allResponseFields`
+ for custom handling.
+ */
+ STPIntentActionTypeUnknown,
+
+ /**
+ The payment intent needs to be authorized by the user. We provide
+ `STPPaymentHandler` to handle the url redirections necessary.
+ */
+ STPIntentActionTypeRedirectToURL,
+
+ /**
+ The payment intent requires additional action handled by `STPPaymentHandler`.
+ */
+ STPIntentActionTypeUseStripeSDK,
+
+};
+
+/**
+ Next action details for `STPPaymentIntent` and `STPSetupIntent`.
+
+ This is a container for the various types that are available.
+ Check the `type` to see which one it is, and then use the related
+ property for the details necessary to handle it.
+ */
+@interface STPIntentAction : NSObject
+
+/**
+ You cannot directly instantiate an `STPIntentAction`.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPIntentAction.")));
+
+/**
+ 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) STPIntentActionType type;
+
+/**
+ The details for authorizing via URL, when `type == STPIntentActionRedirectToURL`
+ */
+@property (nonatomic, strong, nullable, readonly) STPIntentActionRedirectToURL *redirectToURL;
+
+#pragma mark - Deprecated
+
+/**
+ The details for authorizing via URL, when `type == STPIntentActionTypeRedirectToURL`
+
+ @deprecated Use `redirectToURL` instead.
+ */
+@property (nonatomic, strong, nullable, readonly) STPIntentActionRedirectToURL *authorizeWithURL __attribute__((deprecated("Use `redirectToURL` instead", "redirectToURL")));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPIntentActionRedirectToURL.h b/ios/platform/Stripe.framework/Headers/STPIntentActionRedirectToURL.h
new file mode 100644
index 0000000..97e9052
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPIntentActionRedirectToURL.h
@@ -0,0 +1,38 @@
+//
+// STPIntentActionRedirectToURL.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 6/27/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains instructions for authenticating a payment by redirecting your customer to another page or application.
+ */
+@interface STPIntentActionRedirectToURL : NSObject
+
+/**
+ You cannot directly instantiate an `STPIntentActionRedirectToURL`.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPIntentActionRedirectToURL.")));
+
+/**
+ The URL you must redirect your customer to in order to authenticate the payment.
+ */
+@property (nonatomic, readonly) NSURL *url;
+
+/**
+ The return URL that'll be redirected back to when the user is done
+ authenticating.
+ */
+@property (nonatomic, nullable, readonly) NSURL *returnURL;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPIssuingCardPin.h b/ios/platform/Stripe.framework/Headers/STPIssuingCardPin.h
new file mode 100644
index 0000000..073005e
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPIssuingCardPin.h
@@ -0,0 +1,36 @@
+//
+// STPIssuingCardPin.h
+// Stripe
+//
+// Created by Arnaud Cavailhez on 4/29/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Information related to a Stripe Issuing card, including the PIN
+ */
+@interface STPIssuingCardPin : NSObject
+
+/**
+ You cannot directly instantiate an `STPIssuingCardPin`.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPIssuingCardPin")));
+
+/**
+ The PIN for the card
+ */
+@property (nonatomic, nullable, readonly) NSString *pin;
+
+/**
+ If the PIN failed to be created, this error might be present
+ */
+@property (nonatomic, nullable, readonly) NSDictionary *error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPKlarnaLineItem.h b/ios/platform/Stripe.framework/Headers/STPKlarnaLineItem.h
new file mode 100644
index 0000000..c8b917f
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPKlarnaLineItem.h
@@ -0,0 +1,74 @@
+//
+// STPKlarnaLineItem.h
+// Stripe
+//
+// Created by David Estes on 11/19/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The type of the Klarna line item.
+*/
+typedef NS_ENUM(NSUInteger, STPKlarnaLineItemType) {
+ /**
+ The line item for a product
+ */
+ STPKlarnaLineItemTypeSKU,
+ /**
+ The line item for taxes
+ */
+ STPKlarnaLineItemTypeTax,
+ /**
+ The line item for shipping costs
+ */
+ STPKlarnaLineItemTypeShipping
+};
+
+/**
+ An object representing a line item in a Klarna source.
+ @see https://stripe.com/docs/sources/klarna#create-source
+ */
+
+@interface STPKlarnaLineItem : NSObject
+
+/**
+ The line item's type. One of `sku` (for a product), `tax` (for taxes), or `shipping` (for shipping costs).
+ */
+@property (nonatomic) STPKlarnaLineItemType itemType;
+
+/**
+ The human-readable description for the line item.
+ */
+@property (nonatomic, copy) NSString *itemDescription;
+
+/**
+ The quantity to display for this line item.
+ */
+@property (nonatomic, copy) NSNumber *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, copy) NSNumber *totalAmount;
+
+/**
+Initialize this `STPKlarnaLineItem` 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.
+
+*/
+- (instancetype)initWithItemType:(STPKlarnaLineItemType)itemType itemDescription:(NSString *)itemDescription quantity:(NSNumber *)quantity totalAmount:(NSNumber *)totalAmount;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPMandateCustomerAcceptanceParams.h b/ios/platform/Stripe.framework/Headers/STPMandateCustomerAcceptanceParams.h
new file mode 100644
index 0000000..075eb89
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPMandateCustomerAcceptanceParams.h
@@ -0,0 +1,46 @@
+//
+// STPMandateCustomerAcceptanceParams.h
+// Stripe
+//
+// Created by Cameron Sabol on 10/17/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+@class STPMandateOnlineParams;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The type of customer acceptance information included with the Mandate.
+ */
+typedef NS_ENUM(NSInteger, STPMandateCustomerAcceptanceType) {
+ /// A Mandate that was accepted online.
+ STPMandateCustomerAcceptanceTypeOnline,
+
+ /// A Mandate that was accepted offline.
+ STPMandateCustomerAcceptanceTypeOffline,
+};
+
+/**
+ An object that contains details about the customer acceptance of the Mandate. @see https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data-customer_acceptance
+ */
+@interface STPMandateCustomerAcceptanceParams : NSObject
+
+/**
+ The type of customer acceptance information included with the Mandate.
+ */
+@property (nonatomic) STPMandateCustomerAcceptanceType type;
+
+/**
+ If this is a Mandate accepted online, this object contains details about the online acceptance.
+ @note If `type == STPMandateCustomerAcceptanceTypeOnline`, this value must be non-nil.
+ */
+@property (nonatomic, nullable) STPMandateOnlineParams *onlineParams;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPMandateDataParams.h b/ios/platform/Stripe.framework/Headers/STPMandateDataParams.h
new file mode 100644
index 0000000..5c182b7
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPMandateDataParams.h
@@ -0,0 +1,29 @@
+//
+// STPMandateDataParams.h
+// Stripe
+//
+// Created by Cameron Sabol on 10/17/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+@class STPMandateCustomerAcceptanceParams;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This object contains details about the Mandate to create. @see https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data
+ */
+@interface STPMandateDataParams : NSObject
+
+/**
+ Details about the customer acceptance of the Mandate.
+ */
+@property (nonatomic) STPMandateCustomerAcceptanceParams *customerAcceptance;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPMandateOnlineParams.h b/ios/platform/Stripe.framework/Headers/STPMandateOnlineParams.h
new file mode 100644
index 0000000..c400354
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPMandateOnlineParams.h
@@ -0,0 +1,32 @@
+//
+// STPMandateOnlineParams.h
+// Stripe
+//
+// Created by Cameron Sabol on 10/17/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains details about a Mandate accepted online. @see https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data-customer_acceptance-online
+ */
+@interface STPMandateOnlineParams : NSObject
+
+/**
+ The IP address from which the Mandate was accepted by the customer.
+ */
+@property (nonatomic, copy) NSString *ipAddress;
+
+/**
+ The user agent of the browser from which the Mandate was accepted by the customer.
+ */
+@property (nonatomic, copy) NSString *userAgent;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentActivityIndicatorView.h b/ios/platform/Stripe.framework/Headers/STPPaymentActivityIndicatorView.h
new file mode 100644
index 0000000..41cb610
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentActivityIndicatorView.h
@@ -0,0 +1,32 @@
+//
+// STPPaymentActivityIndicatorView.h
+// Stripe
+//
+// Created by Jack Flintermann on 5/12/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+/**
+ This class can be used wherever you'd use a `UIActivityIndicatorView` and is intended to have a similar API. It renders as a spinning circle with a gap in it, similar to what you see in the App Store app or in the Apple Pay dialog when making a purchase. To change its color, set the `tintColor` property.
+ */
+@interface STPPaymentActivityIndicatorView : UIView
+
+/**
+ Tell the view to start or stop spinning. If `hidesWhenStopped` is true, it will fade in/out if animated is true.
+ */
+- (void)setAnimating:(BOOL)animating
+ animated:(BOOL)animated;
+
+/**
+ Whether or not the view is animating.
+ */
+@property (nonatomic) BOOL animating;
+
+/**
+ If true, the view will hide when it is not spinning. Default is true.
+ */
+@property (nonatomic) BOOL hidesWhenStopped;
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentCardTextField.h b/ios/platform/Stripe.framework/Headers/STPPaymentCardTextField.h
new file mode 100644
index 0000000..d6b5c35
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentCardTextField.h
@@ -0,0 +1,399 @@
+//
+// STPPaymentCardTextField.h
+// Stripe
+//
+// Created by Jack Flintermann on 7/16/15.
+// Copyright (c) 2015 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPPaymentMethodCard.h"
+
+@class STPPaymentCardTextField, STPPaymentMethodCardParams;
+@protocol STPPaymentCardTextFieldDelegate;
+
+/**
+ STPPaymentCardTextField is a text field with similar properties to UITextField,
+ but specialized for collecting credit/debit card information. It manages
+ multiple UITextFields under the hood to collect this information. It's
+ designed to fit on a single line, and from a design perspective can be used
+ anywhere a UITextField would be appropriate.
+ */
+IB_DESIGNABLE
+@interface STPPaymentCardTextField : UIControl
+
+/**
+ @see STPPaymentCardTextFieldDelegate
+ */
+@property (nonatomic, weak, nullable) IBOutlet id delegate;
+
+/**
+ The font used in each child field. Default is [UIFont systemFontOfSize:18].
+
+ Set this property to nil to reset to the default.
+ */
+@property (nonatomic, copy, null_resettable) UIFont *font UI_APPEARANCE_SELECTOR;
+
+/**
+ The text color to be used when entering valid text. Default is [UIColor labelColor].
+
+ Set this property to nil to reset to the default.
+ */
+@property (nonatomic, copy, null_resettable) UIColor *textColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The text color to be used when the user has entered invalid information,
+ such as an invalid card number.
+
+ Default is [UIColor redColor]. Set this property to nil to reset to the default.
+ */
+@property (nonatomic, copy, null_resettable) UIColor *textErrorColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The text placeholder color used in each child field.
+
+ This will also set the color of the card placeholder icon.
+
+ Default is [UIColor systemGray2Color]. Set this property to nil to reset to the default.
+ */
+@property (nonatomic, copy, null_resettable) UIColor *placeholderColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The placeholder for the card number field.
+
+ Default is @"4242424242424242".
+
+ If this is set to something that resembles a card number, it will automatically
+ format it as such (in other words, you don't need to add spaces to this string).
+ */
+@property (nonatomic, copy, nullable) IBInspectable NSString *numberPlaceholder;
+
+/**
+ The placeholder for the expiration field. Defaults to @"MM/YY".
+ */
+@property (nonatomic, copy, nullable) IBInspectable NSString *expirationPlaceholder;
+
+/**
+ The placeholder for the cvc field. Defaults to @"CVC".
+ */
+@property (nonatomic, copy, nullable) IBInspectable NSString *cvcPlaceholder;
+
+/**
+ The placeholder for the postal code field. Defaults to @"ZIP" for United States
+ or @"Postal" for all other country codes.
+ */
+@property (nonatomic, copy, nullable) IBInspectable NSString *postalCodePlaceholder;
+
+/**
+ The cursor color for the field.
+
+ This is a proxy for the view's tintColor property, exposed for clarity only
+ (in other words, calling setCursorColor is identical to calling setTintColor).
+ */
+@property (nonatomic, copy, null_resettable) UIColor *cursorColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The border color for the field.
+
+ Can be nil (in which case no border will be drawn).
+
+ Default is [UIColor systemGray2Color].
+ */
+@property (nonatomic, copy, nullable) UIColor *borderColor UI_APPEARANCE_SELECTOR;
+
+/**
+ The width of the field's border.
+
+ Default is 1.0.
+ */
+@property (nonatomic, assign) CGFloat borderWidth UI_APPEARANCE_SELECTOR;
+
+/**
+ The corner radius for the field's border.
+
+ Default is 5.0.
+ */
+@property (nonatomic, assign) CGFloat cornerRadius UI_APPEARANCE_SELECTOR;
+
+/**
+ The keyboard appearance for the field.
+
+ Default is UIKeyboardAppearanceDefault.
+ */
+@property (nonatomic, assign) UIKeyboardAppearance keyboardAppearance UI_APPEARANCE_SELECTOR;
+
+/**
+ This behaves identically to setting the inputView for each child text field.
+ */
+@property (nonatomic, strong, nullable) UIView *inputView;
+
+/**
+ This behaves identically to setting the inputAccessoryView for each child text field.
+ */
+@property (nonatomic, strong, nullable) UIView *inputAccessoryView;
+
+/**
+The curent brand image displayed in the receiver.
+ */
+@property (nonatomic, nullable, readonly) UIImage *brandImage;
+
+/**
+ Whether or not the form currently contains a valid card number,
+ expiration date, CVC, and postal code (if required).
+
+ @see STPCardValidator
+ */
+@property (nonatomic, readonly) BOOL isValid;
+
+/**
+ Enable/disable selecting or editing the field. Useful when submitting card details to Stripe.
+ */
+@property(nonatomic, getter=isEnabled) BOOL enabled;
+
+/**
+ The current card number displayed by the field.
+
+ May or may not be valid, unless `isValid` is true, in which case it is guaranteed
+ to be valid.
+ */
+@property (nonatomic, readonly, nullable) NSString *cardNumber;
+
+/**
+ The current expiration month displayed by the field (1 = January, etc).
+
+ May or may not be valid, unless `isValid` is true, in which case it is
+ guaranteed to be valid.
+ */
+@property (nonatomic, readonly) NSUInteger expirationMonth;
+
+/**
+ The current expiration month displayed by the field, as a string. T
+
+ This may or may not be a valid entry (i.e. "0") unless `isValid` is true.
+ It may be also 0-prefixed (i.e. "01" for January).
+ */
+@property (nonatomic, readonly, nullable) NSString *formattedExpirationMonth;
+
+/**
+ The current expiration year displayed by the field, modulo 100
+ (e.g. the year 2015 will be represented as 15).
+
+ May or may not be valid, unless `isValid` is true, in which case it is
+ guaranteed to be valid.
+ */
+@property (nonatomic, readonly) NSUInteger expirationYear;
+
+/**
+ The current expiration year displayed by the field, as a string.
+
+ This is a 2-digit year (i.e. "15"), and may or may not be a valid entry
+ unless `isValid` is true.
+ */
+@property (nonatomic, readonly, nullable) NSString *formattedExpirationYear;
+
+/**
+ The current card CVC displayed by the field.
+
+ May or may not be valid, unless `isValid` is true, in which case it
+ is guaranteed to be valid.
+ */
+@property (nonatomic, readonly, nullable) NSString *cvc;
+
+/**
+ The current card ZIP or postal code displayed by the field.
+ */
+@property (nonatomic, readonly, nullable) NSString *postalCode;
+
+/**
+ Controls if a postal code entry field can be displayed to the user.
+
+ Default is YES.
+
+ If YES, the type of code entry shown is controlled by the set `countryCode`
+ value. Some country codes may result in no postal code entry being shown if
+ those countries do not commonly use postal codes.
+
+ If NO, no postal code entry will ever be displayed.
+ */
+@property (nonatomic, assign, readwrite) BOOL postalCodeEntryEnabled;
+
+
+/**
+ The two-letter ISO country code that corresponds to the user's billing address.
+
+ If `postalCodeEntryEnabled` is YES, this controls which type of entry is allowed.
+ If `postalCodeEntryEnabled` is NO, this property currently has no effect.
+
+ If set to nil and postal code entry is enabled, the country from the user's current
+ locale will be filled in. Otherwise the specific country code set will be used.
+
+ By default this will fetch the user's current country code from NSLocale.
+ */
+@property (nonatomic, copy, nullable) NSString *countryCode;
+
+/**
+ Convenience property for creating an `STPPaymentMethodCardParams` from the currently entered information
+ or programmatically setting the field's contents. For example, if you're using another library
+ to scan your user's credit card with a camera, you can assemble that data into an `STPPaymentMethodCardParams`
+ object and set this property to that object to prefill the fields you've collected.
+
+ Accessing this property returns a *copied* `cardParams`. The only way to change properties in this
+ object is to make changes to a `STPPaymentMethodCardParams` you own (retrieved from this text field if desired),
+ and then set this property to the new value.
+ */
+@property (nonatomic, copy, readwrite, nonnull) STPPaymentMethodCardParams *cardParams;
+
+/**
+ Causes the text field to begin editing. Presents the keyboard.
+
+ @return Whether or not the text field successfully began editing.
+ @see UIResponder
+ */
+- (BOOL)becomeFirstResponder;
+
+/**
+ Causes the text field to stop editing. Dismisses the keyboard.
+
+ @return Whether or not the field successfully stopped editing.
+ @see UIResponder
+ */
+- (BOOL)resignFirstResponder;
+
+/**
+ Resets all of the contents of all of the fields. If the field is currently being edited, the number field will become selected.
+ */
+- (void)clear;
+
+/**
+ Returns the cvc image used for a card brand.
+ Override this method in a subclass if you would like to provide custom images.
+ @param cardBrand The brand of card entered.
+ @return The cvc image used for a card brand.
+ */
++ (nullable UIImage *)cvcImageForCardBrand:(STPCardBrand)cardBrand;
+
+/**
+ Returns the brand image used for a card brand.
+ Override this method in a subclass if you would like to provide custom images.
+ @param cardBrand The brand of card entered.
+ @return The brand image used for a card brand.
+ */
++ (nullable UIImage *)brandImageForCardBrand:(STPCardBrand)cardBrand;
+
+/**
+ Returns the error image used for a card brand.
+ Override this method in a subclass if you would like to provide custom images.
+ @param cardBrand The brand of card entered.
+ @return The error image used for a card brand.
+ */
++ (nullable UIImage *)errorImageForCardBrand:(STPCardBrand)cardBrand;
+
+/**
+ Returns the rectangle in which the receiver draws its brand image.
+ @param bounds The bounding rectangle of the receiver.
+ @return the rectangle in which the receiver draws its brand image.
+ */
+- (CGRect)brandImageRectForBounds:(CGRect)bounds;
+
+/**
+ Returns the rectangle in which the receiver draws the text fields.
+ @param bounds The bounding rectangle of the receiver.
+ @return The rectangle in which the receiver draws the text fields.
+ */
+- (CGRect)fieldsRectForBounds:(CGRect)bounds;
+
+@end
+
+/**
+ This protocol allows a delegate to be notified when a payment text field's
+ contents change, which can in turn be used to take further actions depending
+ on the validity of its contents.
+ */
+@protocol STPPaymentCardTextFieldDelegate
+@optional
+/**
+ Called when either the card number, expiration, or CVC changes. At this point,
+ one can call `isValid` on the text field to determine, for example,
+ whether or not to enable a button to submit the form. Example:
+
+ - (void)paymentCardTextFieldDidChange:(STPPaymentCardTextField *)textField {
+ self.paymentButton.enabled = textField.isValid;
+ }
+
+ @param textField the text field that has changed
+ */
+- (void)paymentCardTextFieldDidChange:(nonnull STPPaymentCardTextField *)textField;
+
+
+/**
+ Called when editing begins in the text field as a whole.
+
+ After receiving this callback, you will always also receive a callback for which
+ specific subfield of the view began editing.
+ */
+- (void)paymentCardTextFieldDidBeginEditing:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Notification that the user pressed the `return` key after completely filling
+ out the STPPaymentCardTextField with data that passes validation.
+
+ The Stripe SDK is going to `resignFirstResponder` on the `STPPaymentCardTextField`
+ to dismiss the keyboard after this delegate method returns, however if your app wants
+ to do something more (ex: move first responder to another field), this is a good
+ opportunity to do that.
+
+ This is delivered *before* the corresponding `paymentCardTextFieldDidEndEditing:`
+
+ @param textField The STPPaymentCardTextField that was being edited when the user pressed return
+ */
+- (void)paymentCardTextFieldWillEndEditingForReturn:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing ends in the text field as a whole.
+
+ This callback is always preceded by an callback for which
+ specific subfield of the view ended its editing.
+ */
+- (void)paymentCardTextFieldDidEndEditing:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing begins in the payment card field's number field.
+ */
+- (void)paymentCardTextFieldDidBeginEditingNumber:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing ends in the payment card field's number field.
+ */
+- (void)paymentCardTextFieldDidEndEditingNumber:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing begins in the payment card field's CVC field.
+ */
+- (void)paymentCardTextFieldDidBeginEditingCVC:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing ends in the payment card field's CVC field.
+ */
+- (void)paymentCardTextFieldDidEndEditingCVC:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing begins in the payment card field's expiration field.
+ */
+- (void)paymentCardTextFieldDidBeginEditingExpiration:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing ends in the payment card field's expiration field.
+ */
+- (void)paymentCardTextFieldDidEndEditingExpiration:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing begins in the payment card field's ZIP/postal code field.
+ */
+- (void)paymentCardTextFieldDidBeginEditingPostalCode:(nonnull STPPaymentCardTextField *)textField;
+
+/**
+ Called when editing ends in the payment card field's ZIP/postal code field.
+ */
+- (void)paymentCardTextFieldDidEndEditingPostalCode:(nonnull STPPaymentCardTextField *)textField;
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentConfiguration.h b/ios/platform/Stripe.framework/Headers/STPPaymentConfiguration.h
new file mode 100644
index 0000000..22718a0
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentConfiguration.h
@@ -0,0 +1,141 @@
+//
+// STPPaymentConfiguration.h
+// Stripe
+//
+// Created by Jack Flintermann on 5/18/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPBackendAPIAdapter.h"
+#import "STPPaymentOption.h"
+#import "STPTheme.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An `STPPaymentConfiguration` represents all the options you can set or change
+ around a payment.
+
+ You provide an `STPPaymentConfiguration` object to your `STPPaymentContext`
+ when making a charge. The configuration generally has settings that
+ will not change from payment to payment and thus is reusable, while the context
+ is specific to a single particular payment instance.
+ */
+@interface STPPaymentConfiguration : NSObject
+
+/**
+ This is a convenience singleton configuration that uses the default values for
+ every property
+ */
++ (instancetype)sharedConfiguration;
+
+/**
+ An enum value representing which payment options you will accept from your user
+ in addition to credit cards.
+
+ The default value is `STPPaymentOptionTypeDefault`, which includes only Apple Pay.
+ */
+@property (nonatomic, assign, readwrite) STPPaymentOptionType additionalPaymentOptions;
+
+/**
+ The billing address fields the user must fill out when prompted for their
+ payment details. These fields will all be present on the returned PaymentMethod from
+ Stripe.
+
+ The default value is `STPBillingAddressFieldsPostalCode`.
+
+ @see https://stripe.com/docs/api/payment_methods/create#create_payment_method-billing_details
+ */
+@property (nonatomic, assign, readwrite) STPBillingAddressFields requiredBillingAddressFields;
+
+/**
+ The shipping address fields the user must fill out when prompted for their
+ shipping info. Set to nil if shipping address is not required.
+
+ The default value is nil.
+ */
+@property (nonatomic, copy, nullable, readwrite) NSSet *requiredShippingAddressFields;
+
+/**
+ Whether the user should be prompted to verify prefilled shipping information.
+
+ The default value is YES.
+ */
+@property (nonatomic, assign, readwrite) BOOL verifyPrefilledShippingAddress;
+
+/**
+ The type of shipping for this purchase. This property sets the labels displayed
+ when the user is prompted for shipping info, and whether they should also be
+ asked to select a shipping method.
+
+ The default value is STPShippingTypeShipping.
+ */
+@property (nonatomic, assign, readwrite) STPShippingType shippingType;
+
+/**
+ The set of countries supported when entering an address. This property accepts
+ a set of ISO 2-character country codes.
+
+ The default value is all known countries. Setting this property will limit
+ the available countries to your selected set.
+ */
+@property (nonatomic, copy, null_resettable, readwrite) NSSet *availableCountries;
+
+/**
+ The name of your company, for displaying to the user during payment flows. For
+ example, when using Apple Pay, the payment sheet's final line item will read
+ "PAY {companyName}".
+
+ The default value is the name of your iOS application which is derived from the
+ `kCFBundleNameKey` of `[NSBundle mainBundle]`.
+ */
+@property (nonatomic, copy, readwrite) NSString *companyName;
+
+/**
+ The Apple Merchant Identifier to use during Apple Pay transactions. To create
+ one of these, see our guide at https://stripe.com/docs/mobile/apple-pay . You
+ must set this to a valid identifier in order to automatically enable Apple Pay.
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *appleMerchantIdentifier;
+
+/**
+ Determines whether or not the user is able to delete payment options
+
+ This is only relevant to the `STPPaymentOptionsViewController` which, if
+ enabled, will allow the user to delete payment options by tapping the "Edit"
+ button in the navigation bar or by swiping left on a payment option and tapping
+ "Delete". Currently, the user is not allowed to delete the selected payment
+ option but this may change in the future.
+
+ Default value is YES but will only work if `STPPaymentOptionsViewController` is
+ initialized with a `STPCustomerContext` either through the `STPPaymentContext`
+ or directly as an init parameter.
+ */
+@property (nonatomic, assign, readwrite) BOOL canDeletePaymentOptions;
+
+#pragma mark - Deprecated
+
+/**
+ If you used [STPPaymentConfiguration sharedConfiguration].publishableKey, use [STPAPIClient sharedClient].publishableKey instead. The SDK uses [STPAPIClient sharedClient] to make API requests by default.
+
+ Your Stripe publishable key
+
+ @see https://dashboard.stripe.com/account/apikeys
+ */
+@property (nonatomic, copy, readwrite) NSString *publishableKey DEPRECATED_MSG_ATTRIBUTE("If you used [STPPaymentConfiguration sharedConfiguration].publishableKey, use [STPAPIClient sharedClient].publishableKey instead. If you passed a STPPaymentConfiguration instance to an SDK component, create an STPAPIClient, set publishableKey on it, and set the SDK component's APIClient property.");
+
+/**
+ If you used [STPPaymentConfiguration sharedConfiguration].stripeAccount, use [STPAPIClient sharedClient].stripeAccount instead. The SDK uses [STPAPIClient sharedClient] to make API requests by default.
+
+ In order to perform API requests on behalf of a connected account, e.g. to
+ create charges for a connected account, set this property to the ID of the
+ account for which this request is being made.
+
+ @see https://stripe.com/docs/payments/payment-intents/use-cases#connected-accounts
+ */
+@property (nonatomic, copy, nullable) NSString *stripeAccount DEPRECATED_MSG_ATTRIBUTE("If you used [STPPaymentConfiguration sharedConfiguration].stripeAccount, use [STPAPIClient sharedClient].stripeAccount instead. If you passed a STPPaymentConfiguration instance to an SDK component, create an STPAPIClient, set stripeAccount on it, and set the SDK component's APIClient property.");;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentContext.h b/ios/platform/Stripe.framework/Headers/STPPaymentContext.h
new file mode 100644
index 0000000..1cbed35
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentContext.h
@@ -0,0 +1,432 @@
+//
+// STPPaymentContext.h
+// Stripe
+//
+// Created by Jack Flintermann on 4/20/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+
+#import
+#import
+
+#import "STPAddress.h"
+#import "STPAuthenticationContext.h"
+#import "STPBlocks.h"
+#import "STPPaymentConfiguration.h"
+#import "STPPaymentOption.h"
+#import "STPPaymentResult.h"
+#import "STPUserInformation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPPaymentContext, STPAPIClient, STPTheme, STPCustomerContext;
+@protocol STPBackendAPIAdapter, STPPaymentOption, STPPaymentContextDelegate;
+
+/**
+ An `STPPaymentContext` keeps track of all of the state around a payment. It will manage fetching a user's saved payment methods, tracking any information they select, and prompting them for required additional information before completing their purchase. It can be used to power your application's "payment confirmation" page with just a few lines of code.
+
+ `STPPaymentContext` also provides a unified interface to multiple payment methods - for example, you can write a single integration to accept both credit card payments and Apple Pay.
+
+ `STPPaymentContext` saves information about a user's payment methods to a Stripe customer object, and requires an `STPCustomerContext` to manage retrieving and modifying the customer.
+ */
+@interface STPPaymentContext : NSObject
+
+/**
+ This is a convenience initializer; it is equivalent to calling
+ `initWithCustomerContext:customerContext
+ configuration:[STPPaymentConfiguration sharedConfiguration]
+ theme:[STPTheme defaultTheme]`.
+
+ @param customerContext The customer context the payment context will use to fetch
+ and modify its Stripe customer. @see STPCustomerContext.h
+ @return the newly-instantiated payment context
+ */
+- (instancetype)initWithCustomerContext:(STPCustomerContext *)customerContext;
+
+/**
+ Initializes a new Payment Context with the provided customer context, configuration,
+ and theme. After this class is initialized, you should also make sure to set its
+ `delegate` and `hostViewController` properties.
+
+ @param customerContext The customer context the payment context will use to fetch
+ and modify its Stripe customer. @see STPCustomerContext.h
+ @param configuration The configuration for the payment context to use. This
+ lets you set your Stripe publishable API key, required billing address fields, etc.
+ @see STPPaymentConfiguration.h
+ @param theme The theme describing the visual appearance of all UI
+ that the payment context automatically creates for you. @see STPTheme.h
+ @return the newly-instantiated payment context
+ */
+- (instancetype)initWithCustomerContext:(STPCustomerContext *)customerContext
+ configuration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme;
+
+/**
+ Note: Instead of providing your own backend API adapter, we recommend using
+ `STPCustomerContext`, which will manage retrieving and updating a
+ Stripe customer for you. @see STPCustomerContext.h
+
+ This is a convenience initializer; it is equivalent to calling
+ `initWithAPIAdapter:apiAdapter configuration:[STPPaymentConfiguration sharedConfiguration] theme:[STPTheme defaultTheme]`.
+ */
+- (instancetype)initWithAPIAdapter:(id)apiAdapter;
+
+/**
+ Note: Instead of providing your own backend API adapter, we recommend using
+ `STPCustomerContext`, which will manage retrieving and updating a
+ Stripe customer for you. @see STPCustomerContext.h
+
+ Initializes a new Payment Context with the provided API adapter and configuration.
+ After this class is initialized, you should also make sure to set its `delegate`
+ and `hostViewController` properties.
+
+ @param apiAdapter The API adapter the payment context will use to fetch and
+ modify its contents. You need to make a class conforming to this protocol that
+ talks to your server. @see STPBackendAPIAdapter.h
+ @param configuration The configuration for the payment context to use. This lets
+ you set your Stripe publishable API key, required billing address fields, etc.
+ @see STPPaymentConfiguration.h
+ @param theme The theme describing the visual appearance of all UI that
+ the payment context automatically creates for you. @see STPTheme.h
+
+ @return the newly-instantiated payment context
+ */
+- (instancetype)initWithAPIAdapter:(id)apiAdapter
+ configuration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme;
+
+/**
+ Note: Instead of providing your own backend API adapter, we recommend using
+ `STPCustomerContext`, which will manage retrieving and updating a
+ Stripe customer for you. @see STPCustomerContext.h
+
+ The API adapter the payment context will use to fetch and modify its contents.
+ You need to make a class conforming to this protocol that talks to your server.
+ @see STPBackendAPIAdapter.h
+ */
+@property (nonatomic, readonly) id apiAdapter;
+
+/**
+ The configuration for the payment context to use internally. @see STPPaymentConfiguration.h
+ */
+@property (nonatomic, readonly) STPPaymentConfiguration *configuration;
+
+/**
+ The visual appearance that will be used by any views that the context generates. @see STPTheme.h
+ */
+@property (nonatomic, readonly) STPTheme *theme;
+
+/**
+ If you've already collected some information from your user, you can set it here and it'll be automatically filled out when possible/appropriate in any UI that the payment context creates.
+ */
+@property (nonatomic, strong, nullable) STPUserInformation *prefilledInformation;
+
+/**
+ The view controller that any additional UI will be presented on. If you have a "checkout view controller" in your app, that should be used as the host view controller.
+ */
+@property (nonatomic, weak, nullable) UIViewController *hostViewController;
+
+/**
+ This delegate will be notified when the payment context's contents change. @see STPPaymentContextDelegate
+ */
+@property (nonatomic, weak, nullable) id delegate;
+
+/**
+ Whether or not the payment context is currently loading information from the network.
+ */
+@property (nonatomic, readonly) BOOL loading;
+
+/**
+ @note This is no longer recommended as of v18.3.0 - the SDK automatically saves the Stripe ID of the last selected
+ payment method using NSUserDefaults and displays it as the default pre-selected option. You can override this behavior
+ by setting this property.
+
+ The Stripe ID of a payment method to display as the default pre-selected option.
+
+ @note Set this property immediately after initializing STPPaymentContext, or call `retryLoading` afterwards.
+ */
+@property (nonatomic, copy, nullable) NSString *defaultPaymentMethod;
+
+/**
+ The user's currently selected payment option. May be nil.
+ */
+@property (nonatomic, readonly, nullable) id selectedPaymentOption;
+
+/**
+ The available payment options the user can choose between. May be nil.
+ */
+@property (nonatomic, readonly, nullable) NSArray> *paymentOptions;
+
+/**
+ The user's currently selected shipping method. May be nil.
+ */
+@property (nonatomic, readonly, nullable) PKShippingMethod *selectedShippingMethod;
+
+/**
+ An array of STPShippingMethod objects that describe the supported shipping methods. May be nil.
+ */
+@property (nonatomic, readonly, nullable) NSArray *shippingMethods;
+
+/**
+ The user's shipping address. May be nil.
+ If you've already collected a shipping address from your user, you may
+ prefill it by setting a shippingAddress in PaymentContext's prefilledInformation.
+ When your user enters a new shipping address, PaymentContext will save it to
+ the current customer object. When PaymentContext loads, if you haven't
+ manually set a prefilled value, any shipping information saved on the customer
+ will be used to prefill the shipping address form. Note that because your
+ customer's email may not be the same as the email provided with their shipping
+ info, PaymentContext will not prefill the shipping form's email using your
+ customer's email.
+
+ You should not rely on the shipping information stored on the Stripe customer
+ for order fulfillment, as your user may change this information if they make
+ multiple purchases. We recommend adding shipping information when you create
+ a charge (which can also help prevent fraud), or saving it to your own
+ database. https://stripe.com/docs/api/payment_intents/create#create_payment_intent-shipping
+
+ Note: by default, your user will still be prompted to verify a prefilled
+ shipping address. To change this behavior, you can set
+ `verifyPrefilledShippingAddress` to NO in your `STPPaymentConfiguration`.
+ */
+@property (nonatomic, readonly, nullable) STPAddress *shippingAddress;
+
+/**
+ The amount of money you're requesting from the user, in the smallest currency
+ unit for the selected currency. For example, to indicate $10 USD, use 1000
+ (i.e. 1000 cents). For more information, see https://stripe.com/docs/api/payment_intents/create#create_payment_intent-amount
+
+ @note This value must be present and greater than zero in order for Apple Pay
+ to be automatically enabled.
+
+ @note You should only set either this or `paymentSummaryItems`, not both.
+ The other will be automatically calculated on demand using your `paymentCurrency`.
+ */
+@property (nonatomic) NSInteger paymentAmount;
+
+/**
+ The three-letter currency code for the currency of the payment (i.e. USD, GBP,
+ JPY, etc). Defaults to "USD".
+
+ @note Changing this property may change the return value of `paymentAmount`
+ or `paymentSummaryItems` (whichever one you didn't directly set yourself).
+ */
+@property (nonatomic, copy) NSString *paymentCurrency;
+
+/**
+ The two-letter country code for the country where the payment will be processed.
+ You should set this to the country your Stripe account is in. Defaults to "US".
+
+ @note Changing this property will change the `countryCode` of your Apple Pay
+ payment requests.
+ @see PKPaymentRequest for more information.
+ */
+@property (nonatomic, copy) NSString *paymentCountry;
+
+/**
+ If you support Apple Pay, you can optionally set the PKPaymentSummaryItems
+ you want to display here instead of using `paymentAmount`. Note that the
+ grand total (the amount of the last summary item) must be greater than zero.
+ If not set, a single summary item will be automatically generated using
+ `paymentAmount` and your configuration's `companyName`.
+ @see PKPaymentRequest for more information
+
+ @note You should only set either this or `paymentAmount`, not both.
+ The other will be automatically calculated on demand using your `paymentCurrency.`
+ */
+@property (nonatomic, copy) NSArray *paymentSummaryItems;
+
+/**
+ The presentation style used for all view controllers presented modally by the context.
+ Since custom transition styles are not supported, you should set this to either
+ `UIModalPresentationFullScreen`, `UIModalPresentationPageSheet`, or `UIModalPresentationFormSheet`.
+ The default value is `UIModalPresentationFullScreen`.
+ */
+@property (nonatomic, assign) UIModalPresentationStyle modalPresentationStyle;
+
+/**
+ The mode to use when displaying the title of the navigation bar in all view
+ controllers presented by the context. The default value is `automatic`,
+ which causes the title to use the same styling as the previously displayed
+ navigation item (if the view controller is pushed onto the `hostViewController`).
+
+ If the `prefersLargeTitles` property of the `hostViewController`'s navigation bar
+ is false, this property has no effect and the navigation item's title is always
+ displayed as a small title.
+
+ If the view controller is presented modally, `automatic` and
+ `never` always result in a navigation bar with a small title.
+ */
+@property (nonatomic, assign) UINavigationItemLargeTitleDisplayMode largeTitleDisplayMode NS_AVAILABLE_IOS(11_0);
+
+/**
+ A view that will be placed as the footer of the payment options selection
+ view controller.
+
+ When the footer view needs to be resized, it will be sent a
+ `sizeThatFits:` call. The view should respond correctly to this method in order
+ to be sized and positioned properly.
+ */
+@property (nonatomic, strong) UIView *paymentOptionsViewControllerFooterView;
+
+/**
+ A view that will be placed as the footer of the add card view controller.
+
+ When the footer view needs to be resized, it will be sent a
+ `sizeThatFits:` call. The view should respond correctly to this method in order
+ to be sized and positioned properly.
+ */
+@property (nonatomic, strong) UIView *addCardViewControllerFooterView;
+
+/**
+ The API Client to use to make requests.
+
+ Defaults to [STPAPIClient sharedClient]
+ */
+@property (nonatomic, strong) STPAPIClient *apiClient;
+
+/**
+ If `paymentContext:didFailToLoadWithError:` is called on your delegate, you
+ can in turn call this method to try loading again (if that hasn't been called,
+ calling this will do nothing). If retrying in turn fails, `paymentContext:didFailToLoadWithError:`
+ will be called again (and you can again call this to keep retrying, etc).
+ */
+- (void)retryLoading;
+
+/**
+ This creates, configures, and appropriately presents an `STPPaymentOptionsViewController`
+ on top of the payment context's `hostViewController`. It'll be dismissed automatically
+ when the user is done selecting their payment method.
+
+ @note This method will do nothing if it is called while STPPaymentContext is
+ already showing a view controller or in the middle of requesting a payment.
+ */
+- (void)presentPaymentOptionsViewController;
+
+/**
+ This creates, configures, and appropriately pushes an `STPPaymentOptionsViewController`
+ onto the navigation stack of the context's `hostViewController`. It'll be popped
+ automatically when the user is done selecting their payment method.
+
+ @note This method will do nothing if it is called while STPPaymentContext is
+ already showing a view controller or in the middle of requesting a payment.
+ */
+- (void)pushPaymentOptionsViewController;
+
+/**
+ This creates, configures, and appropriately presents a view controller for
+ collecting shipping address and shipping method on top of the payment context's
+ `hostViewController`. It'll be dismissed automatically when the user is done
+ entering their shipping info.
+
+ @note This method will do nothing if it is called while STPPaymentContext is
+ already showing a view controller or in the middle of requesting a payment.
+ */
+- (void)presentShippingViewController;
+
+/**
+ This creates, configures, and appropriately pushes a view controller for
+ collecting shipping address and shipping method onto the navigation stack of
+ the context's `hostViewController`. It'll be popped automatically when the
+ user is done entering their shipping info.
+
+ @note This method will do nothing if it is called while STPPaymentContext is
+ already showing a view controller, or in the middle of requesting a payment.
+ */
+- (void)pushShippingViewController;
+
+/**
+ Requests payment from the user. This may need to present some supplemental UI
+ to the user, in which case it will be presented on the payment context's
+ `hostViewController`. For instance, if they've selected Apple Pay as their
+ payment method, calling this method will show the payment sheet. If the user
+ has a card on file, this will use that without presenting any additional UI.
+ After this is called, the `paymentContext:didCreatePaymentResult:completion:`
+ and `paymentContext:didFinishWithStatus:error:` methods will be called on the
+ context's `delegate`.
+
+ @note This method will do nothing if it is called while STPPaymentContext is
+ already showing a view controller, or in the middle of requesting a payment.
+ */
+- (void)requestPayment;
+
+@end
+
+/**
+ Implement `STPPaymentContextDelegate` to get notified when a payment context changes, finishes, encounters errors, etc. In practice, if your app has a "checkout screen view controller", that is a good candidate to implement this protocol.
+ */
+@protocol STPPaymentContextDelegate
+
+/**
+ Called when the payment context encounters an error when fetching its initial set of data. A few ways to handle this are:
+ - If you're showing the user a checkout page, dismiss the checkout page when this is called and present the error to the user.
+ - Present the error to the user using a `UIAlertController` with two buttons: Retry and Cancel. If they cancel, dismiss your UI. If they Retry, call `retryLoading` on the payment context.
+
+ To make it harder to get your UI into a bad state, this won't be called until the context's `hostViewController` has finished appearing.
+
+ @param paymentContext the payment context that encountered the error
+ @param error the error that was encountered
+ */
+- (void)paymentContext:(STPPaymentContext *)paymentContext didFailToLoadWithError:(NSError *)error;
+
+/**
+ This is called every time the contents of the payment context change. When this is called, you should update your app's UI to reflect the current state of the payment context. For example, if you have a checkout page with a "selected payment method" row, you should update its payment method with `paymentContext.selectedPaymentOption.label`. If that checkout page has a "buy" button, you should enable/disable it depending on the result of `[paymentContext isReadyForPayment]`.
+
+ @param paymentContext the payment context that changed
+ */
+- (void)paymentContextDidChange:(STPPaymentContext *)paymentContext;
+
+/**
+ Inside this method, you should make a call to your backend API to make a PaymentIntent with that Customer + payment method, and invoke the `completion` block when that is done.
+
+ @param paymentContext The context that succeeded
+ @param paymentResult Information associated with the payment that you can pass to your server. You should go to your backend API with this payment result and use the PaymentIntent API to complete the payment. See https://stripe.com/docs/mobile/ios/standard#submit-payment-intents. Once that's done call the `completion` block with any error that occurred (or none, if the payment succeeded). @see STPPaymentResult.h
+ @param completion Call this block when you're done creating a payment intent (or subscription, etc) on your backend. If it succeeded, call `completion(STPPaymentStatusSuccess, nil)`. If it failed with an error, call `completion(STPPaymentStatusError, error)`. If the user canceled, call `completion(STPPaymentStatusUserCancellation, nil)`.
+ */
+- (void)paymentContext:(STPPaymentContext *)paymentContext
+didCreatePaymentResult:(STPPaymentResult *)paymentResult
+ completion:(STPPaymentStatusBlock)completion;
+
+/**
+ This is invoked by an `STPPaymentContext` when it is finished. This will be called after the payment is done and all necessary UI has been dismissed. You should inspect the returned `status` and behave appropriately. For example: if it's `STPPaymentStatusSuccess`, show the user a receipt. If it's `STPPaymentStatusError`, inform the user of the error. If it's `STPPaymentStatusUserCancellation`, do nothing.
+
+ @param paymentContext The payment context that finished
+ @param status The status of the payment - `STPPaymentStatusSuccess` if it succeeded, `STPPaymentStatusError` if it failed with an error (in which case the `error` parameter will be non-nil), `STPPaymentStatusUserCancellation` if the user canceled the payment.
+ @param error An error that occurred, if any.
+ */
+- (void)paymentContext:(STPPaymentContext *)paymentContext
+ didFinishWithStatus:(STPPaymentStatus)status
+ error:(nullable NSError *)error;
+
+@optional
+
+/**
+ Inside this method, you should verify that you can ship to the given address.
+ You should call the completion block with the results of your validation
+ and the available shipping methods for the given address. If you don't implement
+ this method, the user won't be prompted to select a shipping method and all
+ addresses will be valid. If you call the completion block with nil or an
+ empty array of shipping methods, the user won't be prompted to select a
+ shipping method.
+
+ @note If a user updates their shipping address within the Apple Pay dialog,
+ this address will be anonymized. For example, in the US, it will only include the
+ city, state, and zip code. The payment context will have the user's complete
+ shipping address by the time `paymentContext:didFinishWithStatus:error` is
+ called.
+
+ @param paymentContext The context that updated its shipping address
+ @param address The current shipping address
+ @param completion Call this block when you're done validating the shipping
+ address and calculating available shipping methods. If you call the completion
+ block with nil or an empty array of shipping methods, the user won't be prompted
+ to select a shipping method.
+ */
+- (void)paymentContext:(STPPaymentContext *)paymentContext
+didUpdateShippingAddress:(STPAddress *)address
+ completion:(STPShippingMethodsCompletionBlock)completion;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentHandler.h b/ios/platform/Stripe.framework/Headers/STPPaymentHandler.h
new file mode 100644
index 0000000..6fb355e
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentHandler.h
@@ -0,0 +1,213 @@
+//
+// STPPaymentHandler.h
+// StripeiOS
+//
+// Created by Cameron Sabol on 5/10/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPAPIClient;
+@class STPPaymentIntent;
+@class STPPaymentIntentParams;
+@class STPSetupIntent;
+@class STPSetupIntentConfirmParams;
+@class STPThreeDSCustomizationSettings;
+@protocol STPAuthenticationContext;
+
+/**
+ `STPPaymentHandlerActionStatus` represents the possible outcomes of requesting an action by `STPPaymentHandler`. An action could be confirming and/or handling the next action for a PaymentIntent.
+ */
+typedef NS_ENUM(NSInteger, STPPaymentHandlerActionStatus) {
+ /**
+ The action succeeded.
+ */
+ STPPaymentHandlerActionStatusSucceeded,
+
+ /**
+ The action was cancelled by the cardholder/user.
+ */
+ STPPaymentHandlerActionStatusCanceled,
+
+ /**
+ The action failed. See the error code for more details.
+ */
+ STPPaymentHandlerActionStatusFailed,
+} NS_SWIFT_NAME(STPPaymentHandler.ActionStatus);
+
+/**
+ The error domain for errors in `STPPaymentHandler`.
+ */
+FOUNDATION_EXPORT NSString * const STPPaymentHandlerErrorDomain;
+
+/**
+ Error codes generated by `STPPaymentHandler`
+ */
+typedef NS_ERROR_ENUM(STPPaymentHandlerErrorDomain, STPPaymentHandlerErrorCode) {
+ /**
+ Indicates that the action requires an authentication method not recognized or supported by the SDK.
+ */
+ STPPaymentHandlerUnsupportedAuthenticationErrorCode NS_SWIFT_NAME(unsupportedAuthentication),
+
+ /**
+ Attach a payment method to the PaymentIntent or SetupIntent before using `STPPaymentHandler`.
+ */
+ STPPaymentHandlerRequiresPaymentMethodErrorCode NS_SWIFT_NAME(requiresPaymentMethod),
+
+ /**
+ The PaymentIntent or SetupIntent status cannot be resolved by `STPPaymentHandler`.
+ */
+ STPPaymentHandlerIntentStatusErrorCode NS_SWIFT_NAME(intentStatus),
+
+ /**
+ The action timed out.
+ */
+ STPPaymentHandlerTimedOutErrorCode NS_SWIFT_NAME(timedOut),
+
+ /**
+ There was an error in the Stripe3DS2 SDK.
+ */
+ STPPaymentHandlerStripe3DS2ErrorCode NS_SWIFT_NAME(stripe3DS2),
+
+ /**
+ The transaction did not authenticate (e.g. user entered the wrong code).
+ */
+ STPPaymentHandlerNotAuthenticatedErrorCode NS_SWIFT_NAME(notAuthenticated),
+
+ /**
+ `STPPaymentHandler` does not support concurrent actions.
+ */
+ STPPaymentHandlerNoConcurrentActionsErrorCode NS_SWIFT_NAME(noConcurrentActions),
+
+ /**
+ Payment requires a valid `STPAuthenticationContext`. Make sure your presentingViewController isn't already presenting.
+ */
+ STPPaymentHandlerRequiresAuthenticationContextErrorCode NS_SWIFT_NAME(requiresAuthenticationContext),
+
+ /**
+ There was an error confirming the Intent.
+
+ Inspect the `paymentIntent.lastPaymentError` or `setupIntent.lastSetupError` property.
+ */
+ STPPaymentHandlerPaymentErrorCode NS_SWIFT_NAME(payment),
+
+ /**
+ 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 `STPPaymentHandler`.
+ */
+ STPPaymentHandlerInvalidClientSecret NS_SWIFT_NAME(invalidClientSecret),
+
+} NS_SWIFT_NAME(STPPaymentHandlerError);
+
+
+/**
+ Completion block typedef for use in `STPPaymentHandler` methods for Payment Intents.
+ */
+typedef void (^STPPaymentHandlerActionPaymentIntentCompletionBlock)(STPPaymentHandlerActionStatus status, STPPaymentIntent * _Nullable paymentIntent, NSError * _Nullable error);
+
+/**
+ Completion block typedef for use in `STPPaymentHandler` methods for Setup Intents.
+ */
+typedef void (^STPPaymentHandlerActionSetupIntentCompletionBlock)(STPPaymentHandlerActionStatus status, STPSetupIntent * _Nullable setupIntent, NSError * _Nullable error);
+
+/**
+ `STPPaymentHandler` 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).
+
+ @see https://stripe.com/docs/mobile/ios/authentication
+ */
+NS_EXTENSION_UNAVAILABLE("STPPaymentHandler is not available in extensions")
+@interface STPPaymentHandler : NSObject
+
+/**
+ The globally shared instance of `STPPaymentHandler`.
+ */
++ (instancetype)sharedHandler;
+
+/**
+ `STPPaymentHandler` should not be directly initialized.
+ */
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ By default `sharedHandler` initializes with [STPAPIClient sharedClient].
+ */
+@property (nonatomic) STPAPIClient *apiClient;
+
+/**
+ Customizable settings to use when performing 3DS2 authentication.
+
+ Note: Configure this before calling any methods.
+ Defaults to `[STPThreeDSCustomizationSettings defaultSettings]`.
+ */
+@property (nonatomic) STPThreeDSCustomizationSettings *threeDSCustomizationSettings;
+
+/**
+ Confirms the PaymentIntent with the provided parameters and handles any `nextAction` required
+ to authenticate the PaymentIntent.
+
+ Call this method if you are using automatic confirmation. @see https://stripe.com/docs/payments/payment-intents/ios
+
+ @param paymentParams The params used to confirm the PaymentIntent. Note that this method overrides the value of `paymentParams.useStripeSDK` to `@YES`.
+ @param authenticationContext The authentication context used to authenticate the payment.
+ @param completion The completion block. If the status returned is `STPPaymentHandlerActionStatusSucceeded`, the PaymentIntent status will always be either STPPaymentIntentStatusSucceeded or STPPaymentIntentStatusRequiresCapture if you are using manual capture. In the latter case, capture the PaymentIntent to complete the payment.
+ */
+- (void)confirmPayment:(STPPaymentIntentParams *)paymentParams
+withAuthenticationContext:(id)authenticationContext
+ completion:(STPPaymentHandlerActionPaymentIntentCompletionBlock)completion
+NS_SWIFT_NAME(confirmPayment(withParams:authenticationContext:completion:));
+
+/**
+ Handles any `nextAction` required to authenticate the PaymentIntent.
+
+ Call this method if you are using manual confirmation. @see https://stripe.com/docs/payments/payment-intents/ios
+
+ @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 `STPPaymentHandlerActionStatusSucceeded`, the PaymentIntent status will always be either STPPaymentIntentStatusSucceeded, or STPPaymentIntentStatusRequiresConfirmation, or STPPaymentIntentStatusRequiresCapture if you are using manual capture. In the latter two cases, confirm or capture the PaymentIntent on your backend to complete the payment.
+ */
+- (void)handleNextActionForPayment:(NSString *)paymentIntentClientSecret
+ withAuthenticationContext:(id)authenticationContext
+ returnURL:(nullable NSString *)returnURL
+ completion:(STPPaymentHandlerActionPaymentIntentCompletionBlock)completion
+NS_SWIFT_NAME(handleNextAction(forPayment:authenticationContext:returnURL:completion:));
+
+/**
+ Confirms the SetupIntent with the provided parameters and handles any `nextAction` required
+ to authenticate the SetupIntent.
+
+ @see https://stripe.com/docs/payments/cards/saving-cards#saving-card-without-payment
+
+ @param setupIntentConfirmParams The params used to confirm the SetupIntent. Note that this method overrides the value of `setupIntentConfirmParams.useStripeSDK` to `@YES`.
+ @param authenticationContext The authentication context used to authenticate the SetupIntent.
+ @param completion The completion block. If the status returned is `STPPaymentHandlerActionStatusSucceeded`, the SetupIntent status will always be STPSetupIntentStatusSucceeded.
+ */
+- (void)confirmSetupIntent:(STPSetupIntentConfirmParams *)setupIntentConfirmParams
+ withAuthenticationContext:(id)authenticationContext
+ completion:(STPPaymentHandlerActionSetupIntentCompletionBlock)completion
+NS_SWIFT_NAME(confirmSetupIntent(withParams:authenticationContext:completion:));
+
+/**
+ Handles any `nextAction` 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 `STPPaymentHandlerActionStatusSucceeded`, the SetupIntent status will always be STPSetupIntentStatusSucceeded.
+ */
+- (void)handleNextActionForSetupIntent:(NSString *)setupIntentClientSecret
+ withAuthenticationContext:(id)authenticationContext
+ returnURL:(nullable NSString *)returnURL
+ completion:(STPPaymentHandlerActionSetupIntentCompletionBlock)completion
+NS_SWIFT_NAME(handleNextAction(forSetupIntent:authenticationContext:returnURL:completion:));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntent.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntent.h
new file mode 100644
index 0000000..0e2462f
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntent.h
@@ -0,0 +1,138 @@
+//
+// STPPaymentIntent.h
+// Stripe
+//
+// Created by Daniel Jackson on 6/27/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPPaymentIntentEnums.h"
+#import "STPPaymentMethodEnums.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPIntentAction, STPPaymentIntentLastPaymentError;
+
+/**
+ A PaymentIntent tracks the process of collecting a payment from your customer.
+
+ @see https://stripe.com/docs/api#payment_intents
+ @see https://stripe.com/docs/payments/dynamic-authentication
+ */
+@interface STPPaymentIntent : NSObject
+
+/**
+ You cannot directly instantiate an `STPPaymentIntent`. You should only use one that
+ has been returned from an `STPAPIClient` callback.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPPaymentIntent. You should only use one that has been returned from an STPAPIClient callback.")));
+
+/**
+ The Stripe ID of the PaymentIntent.
+ */
+@property (nonatomic, readonly) NSString *stripeId;
+
+/**
+ The client secret used to fetch this PaymentIntent
+ */
+@property (nonatomic, readonly) NSString *clientSecret;
+
+/**
+ Amount intended to be collected by this PaymentIntent.
+ */
+@property (nonatomic, readonly) NSNumber *amount;
+
+/**
+ If status is `STPPaymentIntentStatusCanceled`, when the PaymentIntent was canceled.
+ */
+@property (nonatomic, nullable, readonly) NSDate *canceledAt;
+
+/**
+ Capture method of this PaymentIntent
+ */
+@property (nonatomic, readonly) STPPaymentIntentCaptureMethod captureMethod;
+
+/**
+ Confirmation method of this PaymentIntent
+ */
+@property (nonatomic, readonly) STPPaymentIntentConfirmationMethod confirmationMethod;
+
+/**
+ When the PaymentIntent was created.
+ */
+@property (nonatomic, nullable, readonly) NSDate *created;
+
+/**
+ The currency associated with the PaymentIntent.
+ */
+@property (nonatomic, readonly) NSString *currency;
+
+/**
+ The `description` field of the PaymentIntent.
+ An arbitrary string attached to the object. Often useful for displaying to users.
+ */
+@property (nonatomic, nullable, readonly) NSString *stripeDescription;
+
+/**
+ Whether or not this PaymentIntent was created in livemode.
+ */
+@property (nonatomic, readonly) BOOL livemode;
+
+/**
+ If `status == STPPaymentIntentStatusRequiresAction`, this
+ property contains the next action to take for this PaymentIntent.
+*/
+@property (nonatomic, nullable, readonly) STPIntentAction *nextAction;
+
+/**
+ Email address that the receipt for the resulting payment will be sent to.
+ */
+@property (nonatomic, nullable, readonly) NSString *receiptEmail;
+
+/**
+ The Stripe ID of the Source used in this PaymentIntent.
+ */
+@property (nonatomic, nullable, readonly) NSString *sourceId;
+
+/**
+ The Stripe ID of the PaymentMethod used in this PaymentIntent.
+ */
+@property (nonatomic, nullable, readonly) NSString *paymentMethodId;
+
+/**
+ Status of the PaymentIntent
+ */
+@property (nonatomic, readonly) STPPaymentIntentStatus status;
+
+/**
+ The list of payment method types (e.g. `@[@(STPPaymentMethodTypeCard)]`) that this PaymentIntent is allowed to use.
+ */
+@property (nonatomic, nullable, readonly) NSArray *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) STPPaymentIntentSetupFutureUsage setupFutureUsage;
+
+/**
+ The payment error encountered in the previous PaymentIntent confirmation.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentIntentLastPaymentError *lastPaymentError;
+
+#pragma mark - Deprecated
+
+/**
+ If `status == STPPaymentIntentStatusRequiresAction`, this
+ property contains the next source action to take for this PaymentIntent.
+
+ @deprecated Use nextAction instead
+ */
+@property (nonatomic, nullable, readonly) STPIntentAction *nextSourceAction __attribute__((deprecated("Use nextAction instead", "nextAction")));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentAction.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentAction.h
new file mode 100644
index 0000000..0cbf495
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentAction.h
@@ -0,0 +1,21 @@
+//
+// STPPaymentIntentAction.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/8/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPIntentAction.h"
+
+/**
+ Action details for an STPPaymentIntent. This is a container for
+ the various types that are available. Check the `type` to see which one
+ it is, and then use the related property for the details necessary to handle it.
+
+ @deprecated Use `STPIntentAction` instead.
+ */
+__attribute__((deprecated("Use STPIntentAction instead", "STPIntentAction")))
+typedef STPIntentAction STPPaymentIntentAction;
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentActionRedirectToURL.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentActionRedirectToURL.h
new file mode 100644
index 0000000..6303354
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentActionRedirectToURL.h
@@ -0,0 +1,19 @@
+//
+// STPPaymentIntentActionRedirectToURL.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/8/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPIntentActionRedirectToURL.h"
+
+/**
+ Contains instructions for authenticating a payment by redirecting your customer to another page or application.
+
+ @deprecated Use `STPIntentActionRedirectToURL` instead.
+ */
+__attribute__((deprecated("Use STPIntentActionRedirectToURL instead", "STPIntentActionRedirectToURL")))
+typedef STPIntentActionRedirectToURL STPPaymentIntentActionRedirectToURL;
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentEnums.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentEnums.h
new file mode 100644
index 0000000..56bd804
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentEnums.h
@@ -0,0 +1,188 @@
+//
+// STPPaymentIntentEnums.h
+// Stripe
+//
+// Created by Daniel Jackson on 6/27/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import "STPIntentAction.h"
+
+/**
+ Status types for an STPPaymentIntent
+ */
+typedef NS_ENUM(NSInteger, STPPaymentIntentStatus) {
+ /**
+ Unknown status
+ */
+ STPPaymentIntentStatusUnknown,
+
+ /**
+ This PaymentIntent requires a PaymentMethod or Source
+ */
+ STPPaymentIntentStatusRequiresPaymentMethod,
+
+ /**
+ This PaymentIntent requires a Source
+ @deprecated Use STPPaymentIntentStatusRequiresPaymentMethod instead.
+ */
+ STPPaymentIntentStatusRequiresSource __attribute__((deprecated("Use STPPaymentIntentStatusRequiresPaymentMethod", "STPPaymentIntentStatusRequiresPaymentMethod"))) = STPPaymentIntentStatusRequiresPaymentMethod,
+
+ /**
+ This PaymentIntent needs to be confirmed
+ */
+ STPPaymentIntentStatusRequiresConfirmation,
+
+ /**
+ The selected PaymentMethod or Source requires additional authentication steps.
+ Additional actions found via `next_action`
+ */
+ STPPaymentIntentStatusRequiresAction,
+
+ /**
+ The selected Source requires additional authentication steps.
+ Additional actions found via `next_source_action`
+ @deprecated Use STPPaymentIntentStatusRequiresAction instead.
+ */
+ STPPaymentIntentStatusRequiresSourceAction __attribute__((deprecated("Use STPPaymentIntentStatusRequiresAction", "STPPaymentIntentStatusRequiresAction"))) = STPPaymentIntentStatusRequiresAction,
+
+ /**
+ Stripe is processing this PaymentIntent
+ */
+ STPPaymentIntentStatusProcessing,
+
+ /**
+ The payment has succeeded
+ */
+ STPPaymentIntentStatusSucceeded,
+
+ /**
+ Indicates the payment must be captured, for STPPaymentIntentCaptureMethodManual
+ */
+ STPPaymentIntentStatusRequiresCapture,
+
+ /**
+ This PaymentIntent was canceled and cannot be changed.
+ */
+ STPPaymentIntentStatusCanceled,
+};
+
+/**
+ Capture methods for a STPPaymentIntent
+ */
+typedef NS_ENUM(NSInteger, STPPaymentIntentCaptureMethod) {
+ /**
+ Unknown capture method
+ */
+ STPPaymentIntentCaptureMethodUnknown,
+
+ /**
+ The PaymentIntent will be automatically captured
+ */
+ STPPaymentIntentCaptureMethodAutomatic,
+
+ /**
+ The PaymentIntent must be manually captured once it has the status
+ `STPPaymentIntentStatusRequiresCapture`
+ */
+ STPPaymentIntentCaptureMethodManual,
+};
+
+/**
+ Confirmation methods for a STPPaymentIntent
+ */
+typedef NS_ENUM(NSInteger, STPPaymentIntentConfirmationMethod) {
+ /**
+ Unknown confirmation method
+ */
+ STPPaymentIntentConfirmationMethodUnknown,
+
+ /**
+ Confirmed via publishable key
+ */
+ STPPaymentIntentConfirmationMethodPublishable,
+
+ /**
+ Confirmed via secret key
+ */
+ STPPaymentIntentConfirmationMethodSecret,
+};
+
+/**
+ 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.
+
+ @see https://stripe.com/docs/api/payment_intents/object#payment_intent_object-setup_future_usage
+ */
+typedef NS_ENUM(NSInteger, STPPaymentIntentSetupFutureUsage) {
+
+ /**
+ Unknown value. Update your SDK, or use `allResponseFields` for custom handling.
+ */
+ STPPaymentIntentSetupFutureUsageUnknown,
+
+ /**
+ No value was provided.
+ */
+ STPPaymentIntentSetupFutureUsageNone,
+
+ /**
+ Indicates you intend to only reuse the payment method when the customer is in your checkout flow.
+ */
+ STPPaymentIntentSetupFutureUsageOnSession,
+
+ /**
+ Indicates you intend to reuse the payment method when the customer may or may not be in your checkout flow.
+ */
+ STPPaymentIntentSetupFutureUsageOffSession,
+};
+
+#pragma mark - Deprecated
+
+/**
+ Types of Actions from a `STPPaymentIntent`, when the payment intent
+ status is `STPPaymentIntentStatusRequiresAction`.
+ */
+__attribute__((deprecated("Use STPIntentActionType instead", "STPIntentActionType")))
+typedef NS_ENUM(NSUInteger, STPPaymentIntentActionType) {
+ /**
+ This is an unknown action, that's been added since the SDK
+ was last updated.
+ Update your SDK, or use the `nextAction.allResponseFields`
+ for custom handling.
+ */
+ STPPaymentIntentActionTypeUnknown __attribute__((deprecated("Use STPIntentActionTypeUnknown instead", "STPIntentActionTypeUnknown"))) = STPIntentActionTypeUnknown,
+
+ /**
+ The payment intent needs to be authorized by the user. We provide
+ `STPRedirectContext` to handle the url redirections necessary.
+ */
+ STPPaymentIntentActionTypeRedirectToURL __attribute__((deprecated("Use STPIntentActionTypeRedirectToURL instead", "STPIntentActionTypeRedirectToURL"))) = STPIntentActionTypeRedirectToURL,
+};
+
+/**
+ Types of Source Actions from a `STPPaymentIntent`, when the payment intent
+ status is `STPPaymentIntentStatusRequiresSourceAction`.
+
+ @deprecated Use`STPPaymentIntentActionType` instead.
+ */
+__attribute__((deprecated("Use STPIntentActionType instead", "STPIntentActionType")))
+typedef NS_ENUM(NSUInteger, STPPaymentIntentSourceActionType) {
+ /**
+ This is an unknown source action, that's been added since the SDK
+ was last updated.
+ Update your SDK, or use the `nextSourceAction.allResponseFields`
+ for custom handling.
+ */
+ STPPaymentIntentSourceActionTypeUnknown __attribute__((deprecated("Use STPIntentActionTypeUnknown instead", "STPIntentActionTypeUnknown"))) = STPIntentActionTypeUnknown,
+
+ /**
+ The payment intent needs to be authorized by the user. We provide
+ `STPRedirectContext` to handle the url redirections necessary.
+ */
+ STPPaymentIntentSourceActionTypeAuthorizeWithURL __attribute__((deprecated("Use STPIntentActionTypeRedirectToURL instead", "STPIntentActionTypeRedirectToURL"))) = STPIntentActionTypeRedirectToURL,
+};
+
+
+
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentLastPaymentError.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentLastPaymentError.h
new file mode 100644
index 0000000..5fe5944
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentLastPaymentError.h
@@ -0,0 +1,125 @@
+//
+// STPPaymentIntentLastPaymentError.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 8/8/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+@class STPPaymentMethod;
+
+/**
+ The type of the error represented by `STPPaymentIntentLastPaymentError`.
+
+ Some STPPaymentIntentLastPaymentError properties are only populated for certain error types.
+ */
+typedef NS_ENUM(NSUInteger, STPPaymentIntentLastPaymentErrorType) {
+ /**
+ An unknown error type.
+ */
+ STPPaymentIntentLastPaymentErrorTypeUnknown,
+
+ /**
+ An error connecting to Stripe's API.
+ */
+ STPPaymentIntentLastPaymentErrorTypeAPIConnection,
+
+ /**
+ An error with the Stripe API.
+ */
+ STPPaymentIntentLastPaymentErrorTypeAPI,
+
+ /**
+ A failure to authenticate your customer.
+ */
+ STPPaymentIntentLastPaymentErrorTypeAuthentication,
+
+ /**
+ 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 `declineCode` property for the decline code. The `message` property contains a message you can show to your users.
+ */
+ STPPaymentIntentLastPaymentErrorTypeCard,
+
+ /**
+ Keys for idempotent requests can only be used with the same parameters they were first used with.
+ */
+ STPPaymentIntentLastPaymentErrorTypeIdempotency,
+
+ /**
+ Invalid request errors. Typically, this is because your request has invalid parameters.
+ */
+ STPPaymentIntentLastPaymentErrorTypeInvalidRequest,
+
+ /**
+ Too many requests hit the API too quickly.
+ */
+ STPPaymentIntentLastPaymentErrorTypeRateLimit,
+};
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A value for `code` indicating the provided payment method failed authentication.
+ */
+extern NSString *const STPPaymentIntentLastPaymentErrorCodeAuthenticationFailure;
+
+/**
+ The payment error encountered in the previous PaymentIntent confirmation.
+
+ @see https://stripe.com/docs/api/payment_intents/object#payment_intent_object-last_payment_error
+ */
+@interface STPPaymentIntentLastPaymentError : NSObject
+
+/**
+ For some errors that could be handled programmatically, a short string indicating the error code reported.
+
+ @see https://stripe.com/docs/error-codes
+ */
+@property (nonatomic, nullable, readonly) NSString *code;
+
+/**
+ For card (`STPPaymentIntentLastPaymentErrorTypeCard`) errors resulting from a card issuer decline,
+ a short string indicating the card issuer’s reason for the decline if they provide one.
+
+ @see https://stripe.com/docs/declines#issuer-declines
+ */
+@property (nonatomic, nullable, readonly) NSString *declineCode;
+
+/**
+ A URL to more information about the error code reported.
+
+ @see https://stripe.com/docs/error-codes
+ */
+@property (nonatomic, readonly) NSString *docURL;
+
+/**
+ A human-readable message providing more details about the error.
+ For card (`STPPaymentIntentLastPaymentErrorTypeCard`) errors, these messages can be shown to your users.
+ */
+@property (nonatomic, readonly) NSString *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, nullable, readonly) NSString *param;
+
+/**
+ The PaymentMethod object for errors returned on a request involving a PaymentMethod.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethod *paymentMethod;
+
+/**
+ The type of error.
+ */
+@property (nonatomic, readonly) STPPaymentIntentLastPaymentErrorType type;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams+Utilities.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams+Utilities.h
new file mode 100644
index 0000000..ba31d24
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams+Utilities.h
@@ -0,0 +1,26 @@
+//
+// STPPaymentIntentParams+Utilities.h
+// Stripe
+//
+// Created by Cameron Sabol on 12/17/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import "STPPaymentIntentParams.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Utility methods for dealing `STPPaymentIntentParams`.
+ */
+@interface STPPaymentIntentParams (Utilities)
+
+/**
+ Verifies whether the provided client secret matches the expected format.
+ Does NOT validate that the client secret represents an actual object in an account.
+ */
++ (BOOL)isClientSecretValid:(NSString *)clientSecret;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams.h
new file mode 100644
index 0000000..13a1ac3
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentParams.h
@@ -0,0 +1,165 @@
+//
+// STPPaymentIntentParams.h
+// Stripe
+//
+// Created by Daniel Jackson on 7/3/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPConfirmPaymentMethodOptions,
+STPMandateDataParams,
+STPSourceParams,
+STPPaymentMethodParams,
+STPPaymentResult;
+
+/**
+ 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:
+
+ - created during confirmation, by passing in a `STPPaymentMethodParams` or `STPSourceParams` object in the `paymentMethodParams` or `sourceParams` field
+ - a pre-existing PaymentMethod or Source can be associated by passing its id in the `paymentMethodId` or `sourceId` field
+ - or already set via your backend, either when creating or updating the PaymentIntent
+
+ @see https://stripe.com/docs/api#confirm_payment_intent
+ */
+@interface STPPaymentIntentParams : NSObject
+
+/**
+ Initialize this `STPPaymentIntentParams` with a `clientSecret`, which is the only required
+ field.
+
+ @param clientSecret the client secret for this PaymentIntent
+ */
+- (instancetype)initWithClientSecret:(NSString *)clientSecret;
+
+/**
+ The Stripe id of the PaymentIntent, extracted from the clientSecret.
+ */
+@property (nonatomic, copy, nullable, readonly) NSString *stripeId;
+
+/**
+ The client secret of the PaymentIntent. Required
+ */
+@property (nonatomic, copy) NSString *clientSecret;
+
+/**
+ Provide a supported `STPPaymentMethodParams` object, and Stripe will create a
+ PaymentMethod during PaymentIntent confirmation.
+
+ @note alternative to `paymentMethodId`
+ */
+@property (nonatomic, strong, nullable) STPPaymentMethodParams *paymentMethodParams;
+
+/**
+ Provide an already created PaymentMethod's id, and it will be used to confirm the PaymentIntent.
+
+ @note alternative to `paymentMethodParams`
+ */
+@property (nonatomic, copy, nullable) NSString *paymentMethodId;
+
+/**
+ Provide an STPPaymentResult from STPPaymentContext, and this will populate
+ the proper field (either paymentMethodId or paymentMethodParams) for your PaymentMethod.
+ */
+- (void)configureWithPaymentResult:(STPPaymentResult *)paymentResult;
+
+/**
+ Provide a supported `STPSourceParams` object into here, and Stripe will create a Source
+ during PaymentIntent confirmation.
+
+ @note alternative to `sourceId`
+ */
+@property (nonatomic, strong, nullable) STPSourceParams *sourceParams;
+
+/**
+ Provide an already created Source's id, and it will be used to confirm the PaymentIntent.
+
+ @note alternative to `sourceParams`
+ */
+@property (nonatomic, copy, nullable) NSString *sourceId;
+
+/**
+ Email address that the receipt for the resulting payment will be sent to.
+ */
+@property (nonatomic, copy, nullable) NSString *receiptEmail;
+
+/**
+ `@YES` 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 `nil`
+ */
+@property (nonatomic, strong, nullable) NSNumber *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, nullable) NSString *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.
+
+ @see STPPaymentIntentSetupFutureUsage for more details on what values you can provide.
+ */
+@property (nonatomic, nullable) NSNumber *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, nullable) NSNumber *useStripeSDK;
+
+/**
+ Details about the Mandate to create.
+ @note If this value is null and the `self.paymentMethod.type == STPPaymentMethodTypeSEPADebit && self.mandate == nil`, the SDK will set this to an internal value indicating that the mandate data should be inferred from the current context.
+ */
+@property (nonatomic, nullable) STPMandateDataParams *mandateData;
+
+/**
+ The ID of the Mandate to be used for this payment.
+ */
+@property (nonatomic, nullable) NSString *mandate;
+
+/**
+ Options to update the associated PaymentMethod during confirmation.
+ @see STPPaymentMethodOptions
+ */
+@property (nonatomic, nullable) STPConfirmPaymentMethodOptions *paymentMethodOptions;
+
+/**
+ 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 `returnURL` and deprecated.
+ */
+@property (nonatomic, copy, nullable) NSString *returnUrl __attribute__((deprecated("returnUrl has been renamed to returnURL", "returnURL")));
+
+
+/**
+ `@YES` 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 `nil`
+
+ This property has been renamed to `savePaymentMethod` and deprecated.
+ */
+@property (nonatomic, strong, nullable) NSNumber *saveSourceToCustomer __attribute__((deprecated("saveSourceToCustomer has been renamed to savePaymentMethod", "saveSourceToCustomer")));
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceAction.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceAction.h
new file mode 100644
index 0000000..659aa4b
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceAction.h
@@ -0,0 +1,22 @@
+//
+// STPPaymentIntentSourceAction.h
+// Stripe
+//
+// Created by Daniel Jackson on 11/7/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPPaymentIntentAction.h"
+
+/**
+ Source Action details for an STPPaymentIntent. This is a container for
+ the various types that are available. Check the `type` to see which one
+ it is, and then use the related property for the details necessary to handle
+ it.
+
+ @deprecated Use `STPPaymentIntentAction` instead.
+ */
+__attribute__((deprecated("Use STPIntentAction instead", "STPIntentAction")))
+typedef STPIntentAction STPPaymentIntentSourceAction;
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceActionAuthorizeWithURL.h b/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceActionAuthorizeWithURL.h
new file mode 100644
index 0000000..fde9e75
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentIntentSourceActionAuthorizeWithURL.h
@@ -0,0 +1,21 @@
+//
+// STPPaymentIntentSourceActionAuthorizeWithURL.h
+// Stripe
+//
+// Created by Daniel Jackson on 11/7/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPIntentActionRedirectToURL.h"
+
+/**
+ The `STPPaymentIntentSourceAction` details when type is `STPPaymentIntentSourceActionTypeAuthorizeWithURL`.
+
+ These are created & owned by the containing `STPPaymentIntent`.
+
+ @deprecated Use `STPIntentActionRedirectToURL` instead.
+ */
+__attribute__((deprecated("Use STPIntentActionRedirectToURL instead", "STPIntentActionRedirectToURL")))
+typedef STPIntentActionRedirectToURL STPPaymentIntentSourceActionAuthorizeWithURL;
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethod.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethod.h
new file mode 100644
index 0000000..aa325ab
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethod.h
@@ -0,0 +1,96 @@
+//
+// STPPaymentMethod.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPPaymentMethodEnums.h"
+#import "STPPaymentOption.h"
+
+@class STPPaymentMethodBillingDetails,
+STPPaymentMethodCard,
+STPPaymentMethodCardPresent,
+STPPaymentMethodFPX,
+STPPaymentMethodiDEAL,
+STPPaymentMethodSEPADebit;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ PaymentMethod objects represent your customer's payment instruments. They can be used with PaymentIntents to collect payments.
+
+ @see https://stripe.com/docs/api/payment_methods
+ */
+@interface STPPaymentMethod : NSObject
+
+/**
+ Unique identifier for the object.
+ */
+@property (nonatomic, readonly) NSString *stripeId;
+
+/**
+ Time at which the object was created. Measured in seconds since the Unix epoch.
+ */
+@property (nonatomic, nullable, readonly) NSDate *created;
+
+/**
+ `YES` if the object exists in live mode or the value `NO` 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 `STPPaymentMethodTypeCard`, the `card` property is also populated.
+ */
+@property (nonatomic, readonly) STPPaymentMethodType type;
+
+/**
+ Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodBillingDetails *billingDetails;
+
+/**
+ If this is a card PaymentMethod (ie `self.type == STPPaymentMethodTypeCard`), this contains additional details.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCard *card;
+
+/**
+ If this is a iDEAL PaymentMethod (ie `self.type == STPPaymentMethodTypeiDEAL`), this contains additional details.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodiDEAL *iDEAL;
+
+/**
+ If this is an FPX PaymentMethod (ie `self.type == STPPaymentMethodTypeFPX`), this contains additional details.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodFPX *fpx;
+
+/**
+ If this is a card present PaymentMethod (ie `self.type == STPPaymentMethodTypeCardPresent`), this contains additional details.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCardPresent *cardPresent;
+
+/**
+ If this is a SEPA Debit PaymentMethod (ie `self.type == STPPaymentMethodTypeSEPADebit`), this contains additional details.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodSEPADebit *sepaDebit;
+
+/**
+ The ID of the Customer to which this PaymentMethod is saved. Nil when the PaymentMethod has not been saved to a Customer.
+ */
+@property (nonatomic, nullable, readonly) NSString *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.
+
+ @see https://stripe.com/docs/api#metadata
+ */
+@property (nonatomic, nullable, readonly) NSDictionary *metadata;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodAddress.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodAddress.h
new file mode 100644
index 0000000..1ba9d60
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodAddress.h
@@ -0,0 +1,60 @@
+//
+// STPPaymentMethodAddress.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class STPAddress;
+
+/**
+ The billing address, a property on `STPPaymentMethodBillingDetails`
+ */
+@interface STPPaymentMethodAddress : NSObject
+
+/**
+ City/District/Suburb/Town/Village.
+*/
+@property (nonatomic, copy, nullable, readwrite) NSString *city;
+
+/**
+ 2-letter country code.
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *country;
+
+/**
+ Address line 1 (Street address/PO Box/Company name).
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *line1;
+
+/**
+ Address line 2 (Apartment/Suite/Unit/Building).
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *line2;
+
+/**
+ ZIP or postal code.
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *postalCode;
+
+/**
+ State/County/Province/Region.
+ */
+@property (nonatomic, copy, nullable, readwrite) NSString *state;
+
+/**
+ Convenience initializer for creating a STPPaymentMethodAddress from an STPAddress.
+ */
+- (instancetype)initWithAddress:(STPAddress *)address;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodBillingDetails.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodBillingDetails.h
new file mode 100644
index 0000000..5343562
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodBillingDetails.h
@@ -0,0 +1,47 @@
+//
+// STPPaymentMethodBillingDetails.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPFormEncodable.h"
+
+@class STPPaymentMethodAddress;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Billing information associated with a `STPPaymentMethod` that may be used or required by particular types of payment methods.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-billing_details
+ */
+@interface STPPaymentMethodBillingDetails : NSObject
+
+/**
+ Billing address.
+ */
+@property (nonatomic, strong, nullable) STPPaymentMethodAddress *address;
+
+/**
+ Email address.
+ */
+@property (nonatomic, copy, nullable) NSString *email;
+
+/**
+ Full name.
+ */
+@property (nonatomic, copy, nullable) NSString *name;
+
+/**
+ Billing phone number (including extension).
+ */
+@property (nonatomic, copy, nullable) NSString *phone;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCard.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCard.h
new file mode 100644
index 0000000..97bab80
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCard.h
@@ -0,0 +1,92 @@
+//
+// STPPaymentMethodCard.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+#import "STPCardBrand.h"
+
+@class STPPaymentMethodThreeDSecureUsage, STPPaymentMethodCardChecks, STPPaymentMethodCardWallet;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains details about a user's credit card.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-card
+ */
+@interface STPPaymentMethodCard : NSObject
+
+/**
+ You cannot directly instantiate an `STPPaymentMethodCard`. You should only use one that is part of an existing `STPPaymentMethod` object.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPPaymentMethodCard. You should only use one that is part of an existing STPPaymentMethod object.")));
+
+/**
+ The issuer of the card.
+ */
+@property (nonatomic, readonly) STPCardBrand brand;
+
+/**
+ Checks on Card address and CVC if provided.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCardChecks *checks;
+
+/**
+ Two-letter ISO code representing the country of the card.
+ */
+@property (nonatomic, nullable, readonly) NSString *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, nullable, readonly) NSString *funding;
+
+/**
+ The last four digits of the card.
+ */
+@property (nonatomic, nullable, readonly) NSString *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, nullable, readonly) NSString *fingerprint;
+
+/**
+ Contains details on how this Card maybe be used for 3D Secure authentication.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodThreeDSecureUsage *threeDSecureUsage;
+
+/**
+ If this Card is part of a Card Wallet, this contains the details of the Card Wallet.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCardWallet *wallet;
+
+/**
+ Returns a string representation for the provided card brand;
+ i.e. `[NSString stringFromBrand:STPCardBrandVisa] == @"Visa"`.
+
+ @param brand the brand you want to convert to a string
+
+ @return A string representing the brand, suitable for displaying to a user.
+ */
++ (NSString *)stringFromBrand:(STPCardBrand)brand;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardChecks.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardChecks.h
new file mode 100644
index 0000000..fd427b9
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardChecks.h
@@ -0,0 +1,74 @@
+//
+// STPPaymentMethodCardChecks.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The result of a check on a Card address or CVC.
+ */
+typedef NS_ENUM(NSUInteger, STPPaymentMethodCardCheckResult) {
+ /**
+ The check passed.
+ */
+ STPPaymentMethodCardCheckResultPass,
+
+ /**
+ The check failed.
+ */
+ STPPaymentMethodCardCheckResultFailed,
+
+ /**
+ The check is unavailable.
+ */
+ STPPaymentMethodCardCheckResultUnavailable,
+
+ /**
+ The value was not checked.
+ */
+ STPPaymentMethodCardCheckResultUnchecked,
+
+ /**
+ Represents an unknown or null value.
+ */
+ STPPaymentMethodCardCheckResultUnknown,
+};
+
+/**
+ Checks on Card address and CVC.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-checks
+ */
+@interface STPPaymentMethodCardChecks : NSObject
+
+/**
+ You cannot directly instantiate an `STPPaymentMethodCardChecks`.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPPaymentMethodCardChecks.")));
+
+/**
+ If a address line1 was provided, results of the check.
+ */
+@property (nonatomic, readonly) STPPaymentMethodCardCheckResult addressLine1Check;
+
+/**
+ If a address postal code was provided, results of the check.
+ */
+@property (nonatomic, readonly) STPPaymentMethodCardCheckResult addressPostalCodeCheck;
+
+/**
+ If a CVC was provided, results of the check.
+ */
+@property (nonatomic, readonly) STPPaymentMethodCardCheckResult cvcCheck;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardParams.h
new file mode 100644
index 0000000..947c358
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardParams.h
@@ -0,0 +1,60 @@
+//
+// STPPaymentMethodCardParams.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/6/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+@class STPCardParams;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The user's card details.
+ */
+@interface STPPaymentMethodCardParams : NSObject
+
+/**
+ 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.
+ */
+- (instancetype)initWithCardSourceParams:(STPCardParams *)cardSourceParams;
+
+/**
+ The card number, as a string without any separators. Ex. @"4242424242424242"
+ */
+@property (nonatomic, copy, nullable) NSString *number;
+
+/**
+ Number representing the card's expiration month. Ex. @1
+ */
+@property (nonatomic, nullable) NSNumber *expMonth;
+
+/**
+ Two- or four-digit number representing the card's expiration year.
+ */
+@property (nonatomic, nullable) NSNumber *expYear;
+
+/**
+ For backwards compatibility, you can alternatively set this as a Stripe token (e.g., for apple pay)
+ */
+@property (nonatomic, copy, nullable) NSString *token;
+
+/**
+ Card security code. It is highly recommended to always include this value.
+ */
+@property (nonatomic, copy, nullable) NSString *cvc;
+
+/**
+The last 4 digits of the card.
+*/
+@property (nonatomic, readonly, nullable) NSString *last4;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardPresent.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardPresent.h
new file mode 100644
index 0000000..a49b464
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardPresent.h
@@ -0,0 +1,22 @@
+//
+// STPPaymentMethodCardPresent.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/11/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Details about the Card Present payment method
+ */
+@interface STPPaymentMethodCardPresent : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWallet.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWallet.h
new file mode 100644
index 0000000..ddb0224
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWallet.h
@@ -0,0 +1,82 @@
+//
+// STPPaymentMethodCardWallet.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+@class STPPaymentMethodCardWalletVisaCheckout, STPPaymentMethodCardWalletMasterpass;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ The type of Card Wallet.
+ */
+typedef NS_ENUM(NSUInteger, STPPaymentMethodCardWalletType) {
+
+ /**
+ Amex Express Checkout
+ */
+ STPPaymentMethodCardWalletTypeAmexExpressCheckout,
+
+ /**
+ Apple Pay
+ */
+ STPPaymentMethodCardWalletTypeApplePay,
+
+ /**
+ Google Pay
+ */
+ STPPaymentMethodCardWalletTypeGooglePay,
+
+ /**
+ Masterpass
+ */
+ STPPaymentMethodCardWalletTypeMasterpass,
+
+ /**
+ Samsung Pay
+ */
+ STPPaymentMethodCardWalletTypeSamsungPay,
+
+ /**
+ Visa Checkout
+ */
+ STPPaymentMethodCardWalletTypeVisaCheckout,
+
+ /**
+ An unknown Card Wallet type.
+ */
+ STPPaymentMethodCardWalletTypeUnknown,
+};
+
+/**
+ A Card Wallet.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-wallet
+ */
+@interface STPPaymentMethodCardWallet : NSObject
+
+/**
+ The type of the Card Wallet. A matching property is populated if the type is `STPPaymentMethodCardWalletTypeMasterpass` or `STPPaymentMethodCardWalletTypeVisaCheckout` containing additional information specific to the Card Wallet type.
+ */
+@property (nonatomic, readonly) STPPaymentMethodCardWalletType type;
+
+/**
+ Contains additional Masterpass information, if the type of the Card Wallet is `STPPaymentMethodCardWalletTypeMasterpass`
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCardWalletMasterpass *masterpass;
+
+/**
+ Contains additional Visa Checkout information, if the type of the Card Wallet is `STPPaymentMethodCardWalletTypeVisaCheckout`
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodCardWalletVisaCheckout *visaCheckout;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletMasterpass.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletMasterpass.h
new file mode 100644
index 0000000..a383df8
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletMasterpass.h
@@ -0,0 +1,46 @@
+//
+// STPPaymentMethodCardWalletMasterpass.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+@class STPPaymentMethodAddress;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A Masterpass Card Wallet
+
+ @see https://stripe.com/docs/masterpass
+ */
+@interface STPPaymentMethodCardWalletMasterpass : NSObject
+
+/**
+ 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, nullable, readonly) NSString *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, nullable, readonly) NSString *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, nullable, readonly) STPPaymentMethodAddress *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, nullable, readonly) STPPaymentMethodAddress *shippingAddress;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletVisaCheckout.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletVisaCheckout.h
new file mode 100644
index 0000000..7a50b21
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodCardWalletVisaCheckout.h
@@ -0,0 +1,46 @@
+//
+// STPPaymentMethodCardWalletVisaCheckout.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+@class STPPaymentMethodAddress;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ A Visa Checkout Card Wallet
+
+ @see https://stripe.com/docs/visa-checkout
+ */
+@interface STPPaymentMethodCardWalletVisaCheckout : NSObject
+
+/**
+ 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, nullable, readonly) NSString *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, nullable, readonly) NSString *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, nullable, readonly) STPPaymentMethodAddress *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, nullable, readonly) STPPaymentMethodAddress *shippingAddress;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodEnums.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodEnums.h
new file mode 100644
index 0000000..a31a251
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodEnums.h
@@ -0,0 +1,42 @@
+//
+// STPPaymentMethodEnums.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/12/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+/**
+ The type of the PaymentMethod.
+ */
+typedef NS_ENUM(NSUInteger, STPPaymentMethodType) {
+ /**
+ A card payment method.
+ */
+ STPPaymentMethodTypeCard,
+
+ /**
+ An iDEAL payment method.
+ */
+ STPPaymentMethodTypeiDEAL,
+
+ /**
+ An FPX payment method.
+ */
+ STPPaymentMethodTypeFPX,
+
+ /**
+ A card present payment method.
+ */
+ STPPaymentMethodTypeCardPresent,
+
+ /**
+ A SEPA Debit payment method.
+ */
+ STPPaymentMethodTypeSEPADebit,
+
+ /**
+ An unknown type.
+ */
+ STPPaymentMethodTypeUnknown,
+};
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPX.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPX.h
new file mode 100644
index 0000000..a5d0063
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPX.h
@@ -0,0 +1,30 @@
+//
+// STPPaymentMethodFPX.h
+// Stripe
+//
+// Created by David Estes on 7/30/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An FPX Payment Method.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-fpx
+ */
+@interface STPPaymentMethodFPX : NSObject
+
+/**
+ The customer’s bank identifier code.
+ */
+@property (nonatomic, nullable, readonly) NSString *bankIdentifierCode;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPXParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPXParams.h
new file mode 100644
index 0000000..1e5d028
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodFPXParams.h
@@ -0,0 +1,40 @@
+//
+// STPPaymentMethodFPXParams.h
+// Stripe
+//
+// Created by David Estes on 7/30/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+#import "STPFPXBankBrand.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An object representing parameters used to create an FPX Payment Method
+ */
+@interface STPPaymentMethodFPXParams : NSObject
+
+/**
+ The customer's bank. Required.
+ */
+@property (nonatomic, assign) STPFPXBankBrand bank;
+
+/**
+ The raw underlying bank string sent to the server.
+
+ Generally you should use `bank` 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 `STPFPXBankBrand` enum.
+
+ Setting this to a value not known by the SDK causes `bank` to
+ return `STPFPXBankBrandUnknown`
+ */
+@property (nonatomic, copy, nullable) NSString *rawBankString;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodParams.h
new file mode 100644
index 0000000..b884c5f
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodParams.h
@@ -0,0 +1,134 @@
+//
+// STPPaymentMethodParams.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/6/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+#import "STPPaymentMethodEnums.h"
+#import "STPPaymentOption.h"
+
+@class STPPaymentMethod,
+STPPaymentMethodBillingDetails,
+STPPaymentMethodCardParams,
+STPPaymentMethodFPXParams,
+STPPaymentMethodiDEALParams,
+STPPaymentMethodSEPADebitParams;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An object representing parameters used to create a PaymentMethod object.
+
+ @note To create a PaymentMethod from an Apple Pay PKPaymentToken, see `STPAPIClient createPaymentMethodWithPayment:completion:`
+
+ @see https://stripe.com/docs/api/payment_methods/create
+ */
+@interface STPPaymentMethodParams : NSObject
+
+/**
+ The type of payment method. The associated property will contain additional information (e.g. `type == STPPaymentMethodTypeCard` means `card` should also be populated).
+ */
+@property (nonatomic, readonly) STPPaymentMethodType type;
+
+/**
+ The raw underlying type string sent to the server.
+
+ Generally you should use `type` 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 `STPPaymentMethodType` enum.
+
+ Setting this to a value not known by the SDK causes `type` to
+ return `STPPaymentMethodTypeUnknown`
+ */
+@property (nonatomic, copy) NSString *rawTypeString;
+
+/**
+ Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods.
+ */
+@property (nonatomic, strong, nullable) STPPaymentMethodBillingDetails *billingDetails;
+
+/**
+ If this is a card PaymentMethod, this contains the user’s card details.
+ */
+@property (nonatomic, strong, nullable) STPPaymentMethodCardParams *card;
+
+/**
+ If this is a iDEAL PaymentMethod, this contains details about user's bank.
+ */
+@property (nonatomic, nullable) STPPaymentMethodiDEALParams *iDEAL;
+
+/**
+ If this is a FPX PaymentMethod, this contains details about user's bank.
+ */
+@property (nonatomic, nullable) STPPaymentMethodFPXParams *fpx;
+
+/**
+ If this is a SEPA Debit PaymentMethod, this contains details about the bank to debit.
+ */
+@property (nonatomic, nullable) STPPaymentMethodSEPADebitParams *sepaDebit;
+
+/**
+ 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, nullable) NSDictionary *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.
+ */
++ (STPPaymentMethodParams *)paramsWithCard:(STPPaymentMethodCardParams *)card
+ billingDetails:(nullable STPPaymentMethodBillingDetails *)billingDetails
+ metadata:(nullable NSDictionary *)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.
+ */
++ (STPPaymentMethodParams *)paramsWithiDEAL:(STPPaymentMethodiDEALParams *)iDEAL
+ billingDetails:(nullable STPPaymentMethodBillingDetails *)billingDetails
+ metadata:(nullable NSDictionary *)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.
+ */
++ (STPPaymentMethodParams *)paramsWithFPX:(STPPaymentMethodFPXParams *)fpx
+ billingDetails:(nullable STPPaymentMethodBillingDetails *)billingDetails
+ metadata:(nullable NSDictionary *)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 `billingDetails.name` is required for SEPA Debit PaymentMethods.
+ @param metadata Additional information to attach to the PaymentMethod.
+ */
++ (nullable STPPaymentMethodParams *)paramsWithSEPADebit:(STPPaymentMethodSEPADebitParams *)sepaDebit
+ billingDetails:(STPPaymentMethodBillingDetails *)billingDetails
+ metadata:(nullable NSDictionary *)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 STPPaymentMethodParams *)paramsWithSingleUsePaymentMethod:(STPPaymentMethod *)paymentMethod;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebit.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebit.h
new file mode 100644
index 0000000..d4ff4b3
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebit.h
@@ -0,0 +1,60 @@
+//
+// STPPaymentMethodSEPADebit.h
+// StripeiOS
+//
+// Created by Cameron Sabol on 10/7/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+A SEPA Debit Payment Method.
+
+@see https://stripe.com/docs/api/payment_methods/object#payment_method_object-sepa_debit
+*/
+@interface STPPaymentMethodSEPADebit : NSObject
+
+/**
+You cannot directly instantiate an `STPPaymentMethodSEPADebit`.
+You should only use one that is part of an existing `STPPaymentMethod` object.
+*/
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ The last 4 digits of the account number.
+ */
+@property (nonatomic, nullable, readonly) NSString *last4;
+
+/**
+ The account's bank code.
+ */
+@property (nonatomic, nullable, readonly) NSString *bankCode;
+
+/**
+ The account's branch code
+ */
+@property (nonatomic, nullable, readonly) NSString *branchCode;
+
+/**
+ Two-letter ISO code representing the country of the bank account.
+ */
+@property (nonatomic, nullable, readonly) NSString *country;
+
+/**
+ The account's fingerprint.
+ */
+@property (nonatomic, nullable, readonly) NSString *fingerprint;
+
+/**
+ The reference of the mandate accepted by your customer. @see https://stripe.com/docs/api/sources/create#create_source-mandate
+ */
+@property (nonatomic, nullable, readonly) NSString *mandate;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebitParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebitParams.h
new file mode 100644
index 0000000..88fcd52
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodSEPADebitParams.h
@@ -0,0 +1,27 @@
+//
+// STPPaymentMethodSEPADebitParams.h
+// StripeiOS
+//
+// Created by Cameron Sabol on 10/7/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+An object representing parameters used to create a SEPA Debit Payment Method
+*/
+@interface STPPaymentMethodSEPADebitParams : NSObject
+
+/**
+ The IBAN number for the bank account you wish to debit. Required.
+ */
+@property (nonatomic, nullable, copy) NSString *iban;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodThreeDSecureUsage.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodThreeDSecureUsage.h
new file mode 100644
index 0000000..f89aed9
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodThreeDSecureUsage.h
@@ -0,0 +1,32 @@
+//
+// STPPaymentMethodThreeDSecureUsage.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/5/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Contains details on how an `STPPaymentMethodCard` maybe be used for 3D Secure authentication.
+ */
+@interface STPPaymentMethodThreeDSecureUsage : NSObject
+
+/**
+ You cannot directly instantiate an `STPPaymentMethodThreeDSecureUsage`.
+ */
+- (instancetype)init __attribute__((unavailable("You cannot directly instantiate an STPPaymentMethodThreeDSecureUsage.")));
+
+/**
+ `YES` if 3D Secure is supported on this card.
+ */
+@property (nonatomic, readonly) BOOL supported;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEAL.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEAL.h
new file mode 100644
index 0000000..5317220
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEAL.h
@@ -0,0 +1,35 @@
+//
+// STPPaymentMethodiDEAL.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPAPIResponseDecodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An iDEAL Payment Method.
+
+ @see https://stripe.com/docs/api/payment_methods/object#payment_method_object-ideal
+ */
+@interface STPPaymentMethodiDEAL : NSObject
+
+/**
+ The customer’s bank.
+ */
+@property (nonatomic, nullable, readonly) NSString *bankName;
+
+/**
+ The Bank Identifier Code of the customer’s bank.
+ */
+@property (nonatomic, nullable, readonly) NSString *bankIdentifierCode;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEALParams.h b/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEALParams.h
new file mode 100644
index 0000000..cf463b1
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentMethodiDEALParams.h
@@ -0,0 +1,27 @@
+//
+// STPPaymentMethodiDEALParams.h
+// Stripe
+//
+// Created by Yuki Tokuhiro on 3/9/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPFormEncodable.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ An object representing parameters used to create an iDEAL Payment Method
+ */
+@interface STPPaymentMethodiDEALParams : NSObject
+
+/**
+ The customer’s bank.
+ */
+@property (nonatomic, nullable, copy) NSString *bankName;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentOption.h b/ios/platform/Stripe.framework/Headers/STPPaymentOption.h
new file mode 100644
index 0000000..2540571
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentOption.h
@@ -0,0 +1,87 @@
+//
+// STPPaymentOption.h
+// Stripe
+//
+// Created by Ben Guo on 4/19/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ This represents all of the payment methods available to your user when
+ configuring an `STPPaymentContext`. This is in addition to card payments, which
+ are always enabled.
+ */
+typedef NS_OPTIONS(NSUInteger, STPPaymentOptionType) {
+ /**
+ Don't allow any payment methods except for cards.
+ */
+ STPPaymentOptionTypeNone = 0,
+
+ /**
+ The user is allowed to pay with Apple Pay if it's configured and available
+ on their device.
+ */
+ STPPaymentOptionTypeApplePay = 1 << 0,
+
+ /**
+ The user is allowed to pay with FPX.
+ */
+ STPPaymentOptionTypeFPX = 1 << 1,
+
+ /**
+ The user is allowed to use the default payment methods to pay.
+ */
+ STPPaymentOptionTypeAll __attribute__((deprecated("use STPPaymentOptionTypeDefault instead"))) = STPPaymentOptionTypeApplePay,
+ STPPaymentOptionTypeDefault = STPPaymentOptionTypeApplePay
+};
+
+/**
+ This protocol represents a payment method that a user can select and use to
+ pay.
+
+ The classes that conform to it and are supported by the UI:
+
+ - `STPApplePay`, which represents that the user wants to pay with
+ Apple Pay
+ - `STPPaymentMethod`. Only `STPPaymentMethod.type == STPPaymentMethodTypeCard` and
+`STPPaymentMethod.type == STPPaymentMethodTypeFPX` are supported by `STPPaymentContext`
+ and `STPPaymentOptionsViewController`
+ - `STPPaymentMethodParams`. This should be used with non-reusable payment method, such
+ as FPX and iDEAL. Instead of reaching out to Stripe to create a PaymentMethod, you can
+ pass an STPPaymentMethodParams directly to Stripe when confirming a PaymentIntent.
+
+ @note card-based Sources, Cards, and FPX support this protocol for use
+ in a custom integration.
+ */
+@protocol STPPaymentOption
+
+/**
+ A small (32 x 20 points) logo image representing the payment method. For
+ example, the Visa logo for a Visa card, or the Apple Pay logo.
+ */
+@property (nonatomic, strong, readonly) UIImage *image;
+
+/**
+ A small (32 x 20 points) logo image representing the payment method that can be
+ used as template for tinted icons.
+ */
+@property (nonatomic, strong, readonly) UIImage *templateImage;
+
+/**
+ A string describing the payment method, such as "Apple Pay" or "Visa 4242".
+ */
+@property (nonatomic, strong, readonly) NSString *label;
+
+/**
+ Describes whether this payment option may be used multiple times. If it is not reusable,
+ the payment method must be discarded after use.
+ */
+@property (nonatomic, readonly, getter=isReusable) BOOL reusable;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentOptionsViewController.h b/ios/platform/Stripe.framework/Headers/STPPaymentOptionsViewController.h
new file mode 100644
index 0000000..d2769fe
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentOptionsViewController.h
@@ -0,0 +1,229 @@
+//
+// STPPaymentOptionsViewController.h
+// Stripe
+//
+// Created by Jack Flintermann on 1/12/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+#import "STPBackendAPIAdapter.h"
+#import "STPCoreViewController.h"
+#import "STPPaymentConfiguration.h"
+#import "STPPaymentOption.h"
+#import "STPUserInformation.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STPPaymentOption, STPPaymentOptionsViewControllerDelegate;
+@class STPPaymentContext, STPPaymentOptionsViewController, STPCustomerContext, STPAPIClient;
+
+/**
+ This view controller presents a list of payment method options to the user,
+ which they can select between. They can also add credit cards to the list.
+
+ It must be displayed inside a `UINavigationController`, so you can either
+ create a `UINavigationController` with an `STPPaymentOptionsViewController`
+ as the `rootViewController` and then present the `UINavigationController`,
+ or push a new `STPPaymentOptionsViewController` onto an existing
+ `UINavigationController`'s stack. You can also have `STPPaymentContext` do this
+ for you automatically, by calling `presentPaymentOptionsViewController`
+ or `pushPaymentOptionsViewController` on it.
+ */
+@interface STPPaymentOptionsViewController : STPCoreViewController
+
+/**
+ The delegate for the view controller.
+
+ The delegate receives callbacks when the user selects a method or cancels,
+ and is responsible for dismissing the payments methods view controller when
+ it is finished.
+ */
+@property (nonatomic, nullable, weak, readonly) iddelegate;
+
+/**
+ Creates a new payment methods view controller.
+
+ @param paymentContext A payment context to power the view controller's view.
+ The payment context will in turn use its backend API adapter to fetch the
+ information it needs from your application.
+
+ @return an initialized view controller.
+ */
+- (instancetype)initWithPaymentContext:(STPPaymentContext *)paymentContext;
+
+/**
+ Initializes a new payment methods view controller without using a
+ payment context.
+
+ @param configuration The configuration to use to determine what types of
+ payment method to offer your user. @see STPPaymentConfiguration.h
+
+ @param theme The theme to inform the appearance of the UI.
+ @param customerContext The customer context the view controller will use to
+ fetch and modify its Stripe customer
+ @param delegate A delegate that will be notified when the payment
+ methods view controller's selection changes.
+
+ @return an initialized view controller.
+ */
+- (instancetype)initWithConfiguration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme
+ customerContext:(STPCustomerContext *)customerContext
+ delegate:(id)delegate;
+
+/**
+ Note: Instead of providing your own backend API adapter, we recommend using
+ `STPCustomerContext`, which will manage retrieving and updating a
+ Stripe customer for you. @see STPCustomerContext.h
+
+ Initializes a new payment methods view controller without using
+ a payment context.
+
+ @param configuration The configuration to use to determine what types of
+ payment method to offer your user.
+ @param theme The theme to inform the appearance of the UI.
+ @param apiAdapter The API adapter to use to retrieve a customer's stored
+ payment methods and save new ones.
+ @param delegate A delegate that will be notified when the payment methods
+ view controller's selection changes.
+ */
+- (instancetype)initWithConfiguration:(STPPaymentConfiguration *)configuration
+ theme:(STPTheme *)theme
+ apiAdapter:(id)apiAdapter
+ delegate:(id)delegate;
+
+/**
+ If you've already collected some information from your user, you can set it
+ here and it'll be automatically filled out when possible/appropriate in any UI
+ that the payment context creates.
+*/
+@property (nonatomic, strong, nullable) STPUserInformation *prefilledInformation;
+
+/**
+ @note This is no longer recommended as of v18.3.0 - the SDK automatically saves the Stripe ID of the last selected
+ payment method using NSUserDefaults and displays it as the default pre-selected option. You can override this behavior
+ by setting this property.
+
+ The Stripe ID of a payment method to display as the default pre-selected option.
+
+ @note Setting this after the view controller's view has loaded has no effect.
+ */
+@property (nonatomic, copy, nullable) NSString *defaultPaymentMethod;
+
+/**
+ A view that will be placed as the footer of the view controller when it is
+ showing a list of saved payment methods to select from.
+
+ When the footer view needs to be resized, it will be sent a
+ `sizeThatFits:` call. The view should respond correctly to this method in order
+ to be sized and positioned properly.
+ */
+@property (nonatomic, strong) UIView *paymentOptionsViewControllerFooterView;
+
+/**
+ A view that will be placed as the footer of the view controller when it is
+ showing the add card view.
+
+ When the footer view needs to be resized, it will be sent a
+ `sizeThatFits:` call. The view should respond correctly to this method in order
+ to be sized and positioned properly.
+ */
+@property (nonatomic, strong) UIView *addCardViewControllerFooterView;
+
+/**
+ The API Client to use to make requests.
+
+ Defaults to [STPAPIClient sharedClient]
+ */
+@property (nonatomic, strong) STPAPIClient *apiClient;
+
+/**
+ If you're pushing `STPPaymentOptionsViewController` onto an existing
+ `UINavigationController`'s stack, you should use this method to dismiss it,
+ since it may have pushed an additional add card view controller onto the
+ navigation controller's stack.
+
+ @param completion The callback to run after the view controller is dismissed.
+ You may specify nil for this parameter.
+ */
+- (void)dismissWithCompletion:(nullable STPVoidBlock)completion;
+
+/**
+ Use one of the initializers declared in this interface.
+ */
+- (instancetype)initWithTheme:(STPTheme *)theme NS_UNAVAILABLE;
+
+/**
+ Use one of the initializers declared in this interface.
+ */
+- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
+ bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
+
+/**
+ Use one of the initializers declared in this interface.
+ */
+- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE;
+
+@end
+
+#pragma mark - STPPaymentOptionsViewControllerDelegate
+
+/**
+ An `STPPaymentOptionsViewControllerDelegate` responds when a user selects a
+ payment option from (or cancels) an `STPPaymentOptionsViewController`. In both
+ of these instances, you should dismiss the view controller (either by popping
+ it off the navigation stack, or dismissing it).
+ */
+@protocol STPPaymentOptionsViewControllerDelegate
+
+/**
+ This is called when the view controller encounters an error fetching the user's
+ payment options from its API adapter. You should dismiss the view controller
+ when this is called.
+
+ @param paymentOptionsViewController the view controller in question
+ @param error the error that occurred
+ */
+- (void)paymentOptionsViewController:(STPPaymentOptionsViewController *)paymentOptionsViewController
+ didFailToLoadWithError:(NSError *)error;
+
+/**
+ This is called when the user selects or adds a payment method, so it will often
+ be called immediately after calling `paymentOptionsViewController:didSelectPaymentOption:`.
+ You should dismiss the view controller when this is called.
+
+ @param paymentOptionsViewController the view controller that has finished
+ */
+- (void)paymentOptionsViewControllerDidFinish:(STPPaymentOptionsViewController *)paymentOptionsViewController;
+
+/**
+ This is called when the user taps "cancel".
+ You should dismiss the view controller when this is called.
+
+ @param paymentOptionsViewController the view controller that has finished
+ */
+- (void)paymentOptionsViewControllerDidCancel:(STPPaymentOptionsViewController *)paymentOptionsViewController;
+
+@optional
+/**
+ This is called when the user either makes a selection, or adds a new card.
+ This will be triggered after the view controller loads with the user's current
+ selection (if they have one) and then subsequently when they change their
+ choice. You should use this callback to update any necessary UI in your app
+ that displays the user's currently selected payment method. You should *not*
+ dismiss the view controller at this point, instead do this in
+ `paymentOptionsViewControllerDidFinish:`. `STPPaymentOptionsViewController`
+ will also call the necessary methods on your API adapter, so you don't need to
+ call them directly during this method.
+
+ @param paymentOptionsViewController the view controller in question
+ @param paymentOption the selected payment method
+ */
+- (void)paymentOptionsViewController:(STPPaymentOptionsViewController *)paymentOptionsViewController
+ didSelectPaymentOption:(id)paymentOption;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPaymentResult.h b/ios/platform/Stripe.framework/Headers/STPPaymentResult.h
new file mode 100644
index 0000000..4ef6ef8
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPaymentResult.h
@@ -0,0 +1,48 @@
+//
+// STPPaymentResult.h
+// Stripe
+//
+// Created by Jack Flintermann on 1/15/16.
+// Copyright © 2016 Stripe, Inc. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol STPPaymentOption;
+@class STPPaymentMethod;
+@class STPPaymentMethodParams;
+
+/**
+ When you're using `STPPaymentContext` to request your user's payment details, this is the object that will be returned to your application when they've successfully made a payment.
+ See https://stripe.com/docs/mobile/ios/standard#submit-payment-intents.
+ */
+@interface STPPaymentResult : NSObject
+
+/**
+ The payment method that the user has selected. This may come from a variety of different payment methods, such as an Apple Pay payment or a stored credit card. @see STPPaymentMethod.h
+ If paymentMethod is nil, paymentMethodParams will be populated instead.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethod *paymentMethod;
+
+/**
+ The parameters for a payment method that the user has selected. This is
+ populated for non-reusable payment methods, such as FPX and iDEAL. @see STPPaymentMethodParams.h
+ If paymentMethodParams is nil, paymentMethod will be populated instead.
+ */
+@property (nonatomic, nullable, readonly) STPPaymentMethodParams *paymentMethodParams;
+
+/**
+ The STPPaymentOption that was used to initialize this STPPaymentResult, either an STPPaymentMethod or an STPPaymentMethodParams.
+ */
+@property (nonatomic, nonnull, readonly) id paymentOption;
+
+/**
+ Initializes the payment result with a given payment option. This is invoked by `STPPaymentContext` internally; you shouldn't have to call it directly.
+ */
+- (instancetype)initWithPaymentOption:(id)paymentOption;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/platform/Stripe.framework/Headers/STPPinManagementService.h b/ios/platform/Stripe.framework/Headers/STPPinManagementService.h
new file mode 100644
index 0000000..969bc2d
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPinManagementService.h
@@ -0,0 +1,49 @@
+//
+// STPAPIClient+PinManagement.h
+// Stripe
+//
+// Created by Arnaud Cavailhez on 4/29/19.
+// Copyright © 2019 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import "STPAPIClient.h"
+#import "STPEphemeralKeyProvider.h"
+
+/**
+ STPAPIClient extensions to manage PIN on Stripe Issuing cards
+ */
+@interface STPPinManagementService : NSObject
+
+/**
+ The API Client to use to make requests.
+
+ Defaults to [STPAPIClient sharedClient]
+ */
+@property (nonatomic, strong) STPAPIClient *apiClient;
+
+/**
+ Create a STPPinManagementService, you must provide an implementation of STPIssuingCardEphemeralKeyProvider
+ */
+- (instancetype)initWithKeyProvider:(id)keyProvider;
+
+/**
+ Retrieves a PIN number for a given card,
+ this call is asynchronous, implement the completion block to receive the updates
+ */
+- (void)retrievePin:(NSString *) cardId
+ verificationId:(NSString *) verificationId
+ oneTimeCode:(NSString *) oneTimeCode
+ completion:(STPPinCompletionBlock) completion;
+
+/**
+ Updates a PIN number for a given card,
+ this call is asynchronous, implement the completion block to receive the updates
+ */
+- (void)updatePin:(NSString *) cardId
+ newPin:(NSString *) newPin
+ verificationId:(NSString *) verificationId
+ oneTimeCode:(NSString *) oneTimeCode
+ completion:(STPPinCompletionBlock) completion;
+
+@end
diff --git a/ios/platform/Stripe.framework/Headers/STPPushProvisioningContext.h b/ios/platform/Stripe.framework/Headers/STPPushProvisioningContext.h
new file mode 100644
index 0000000..eacf0b3
--- /dev/null
+++ b/ios/platform/Stripe.framework/Headers/STPPushProvisioningContext.h
@@ -0,0 +1,59 @@
+//
+// STPPushProvisioningContext.h
+// Stripe
+//
+// Created by Jack Flintermann on 9/27/18.
+// Copyright © 2018 Stripe, Inc. All rights reserved.
+//
+
+#import
+#import