Skip to content

PassKit watchOS xcode9 beta1

Vincent Dondain edited this page Jun 5, 2017 · 2 revisions

#PassKit.framework

diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKConstants.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKConstants.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKConstants.h	2017-02-23 02:24:54.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKConstants.h	2017-05-25 00:43:10.000000000 -0400
@@ -10,51 +10,57 @@
 #ifndef PKCONSTANTS_H
 #define PKCONSTANTS_H
 
-
 typedef NSString * PKEncryptionScheme NS_STRING_ENUM;
-extern PKEncryptionScheme const PKEncryptionSchemeECC_V2 NS_AVAILABLE_IOS(9_0);
-extern PKEncryptionScheme const PKEncryptionSchemeRSA_V2 NS_AVAILABLE_IOS(10_0);
+extern PKEncryptionScheme const PKEncryptionSchemeECC_V2 API_AVAILABLE(ios(9.0));
+extern PKEncryptionScheme const PKEncryptionSchemeRSA_V2 API_AVAILABLE(ios(10.0));
 
 typedef NSString * PKPaymentNetwork NS_EXTENSIBLE_STRING_ENUM;
-extern PKPaymentNetwork const PKPaymentNetworkAmex NS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkCarteBancaire NS_AVAILABLE_IOS(10_3) __WATCHOS_AVAILABLE(3.2);
-extern PKPaymentNetwork const PKPaymentNetworkChinaUnionPay NS_AVAILABLE_IOS(9_2) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkDiscover NS_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkInterac NS_AVAILABLE_IOS(9_2) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkMasterCard NS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkPrivateLabel NS_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkVisa NS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
-extern PKPaymentNetwork const PKPaymentNetworkJCB NS_AVAILABLE_IOS(10_1) __WATCHOS_AVAILABLE(3.1);
-extern PKPaymentNetwork const PKPaymentNetworkSuica NS_AVAILABLE_IOS(10_1) __WATCHOS_AVAILABLE(3.1);
-extern PKPaymentNetwork const PKPaymentNetworkQuicPay NS_AVAILABLE_IOS(10_3) __WATCHOS_AVAILABLE(3.2);
-extern PKPaymentNetwork const PKPaymentNetworkIDCredit NS_AVAILABLE_IOS(10_3) __WATCHOS_AVAILABLE(3.2);
+extern PKPaymentNetwork const PKPaymentNetworkAmex API_AVAILABLE(ios(8.0), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkCarteBancaire API_AVAILABLE(ios(10.3), watchos(3.2));
+extern PKPaymentNetwork const PKPaymentNetworkChinaUnionPay API_AVAILABLE(ios(9.2), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkDiscover API_AVAILABLE(ios(9.0), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkIDCredit API_AVAILABLE(ios(10.3), watchos(3.2));
+extern PKPaymentNetwork const PKPaymentNetworkInterac API_AVAILABLE(ios(9.2), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkJCB API_AVAILABLE(ios(10.1), watchos(3.1));
+extern PKPaymentNetwork const PKPaymentNetworkMasterCard API_AVAILABLE(ios(8.0), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkPrivateLabel API_AVAILABLE(ios(9.0), watchos(3.0));
+extern PKPaymentNetwork const PKPaymentNetworkQuicPay API_AVAILABLE(ios(10.3), watchos(3.2));
+extern PKPaymentNetwork const PKPaymentNetworkSuica API_AVAILABLE(ios(10.1), watchos(3.1));
+extern PKPaymentNetwork const PKPaymentNetworkVisa API_AVAILABLE(ios(8.0), watchos(3.0));
+
+typedef NSString * PKContactField NS_STRING_ENUM;
+extern PKContactField const PKContactFieldPostalAddress API_AVAILABLE(ios(11.0), watchos(4.0));
+extern PKContactField const PKContactFieldEmailAddress  API_AVAILABLE(ios(11.0), watchos(4.0));
+extern PKContactField const PKContactFieldPhoneNumber   API_AVAILABLE(ios(11.0), watchos(4.0));
+extern PKContactField const PKContactFieldName          API_AVAILABLE(ios(11.0), watchos(4.0));
+extern PKContactField const PKContactFieldPhoneticName  API_AVAILABLE(ios(11.0), watchos(4.0));
+
 
 typedef NS_ENUM(NSInteger, PKPaymentAuthorizationStatus) {
     PKPaymentAuthorizationStatusSuccess, // Merchant auth'd (or expects to auth) the transaction successfully.
     PKPaymentAuthorizationStatusFailure, // Merchant failed to auth the transaction.
 
-    PKPaymentAuthorizationStatusInvalidBillingPostalAddress,  // Supplied billing address is insufficient or otherwise invalid
-    PKPaymentAuthorizationStatusInvalidShippingPostalAddress, // Supplied postal address is insufficient or otherwise invalid
-    PKPaymentAuthorizationStatusInvalidShippingContact,       // Supplied contact information is insufficient or otherwise invalid
-
-    PKPaymentAuthorizationStatusPINRequired NS_ENUM_AVAILABLE_IOS(9_2),  // Transaction requires PIN entry.
-    PKPaymentAuthorizationStatusPINIncorrect NS_ENUM_AVAILABLE_IOS(9_2), // PIN was not entered correctly, retry.
-    PKPaymentAuthorizationStatusPINLockout NS_ENUM_AVAILABLE_IOS(9_2)    // PIN retry limit exceeded.
-
-} NS_ENUM_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
+    PKPaymentAuthorizationStatusInvalidBillingPostalAddress API_DEPRECATED("Use PKPaymentAuthorizationResult with PKPaymentAuthorizationStatusFailure and include the result of -paymentBillingAddressInvalidErrorWithKey:localizedDescription: in the errors array.", ios(8.0, 11.0), watchos(3.0, 4.0)),  // Supplied billing address is insufficient or otherwise invalid
+    PKPaymentAuthorizationStatusInvalidShippingPostalAddress API_DEPRECATED("Use PKPaymentAuthorizationResult with PKPaymentAuthorizationStatusFailure and include the result of -paymentShippingAddressInvalidErrorWithKey:localizedDescription: in the errors array.", ios(8.0, 11.0), watchos(3.0, 4.0)), // Supplied postal address is insufficient or otherwise invalid
+    PKPaymentAuthorizationStatusInvalidShippingContact API_DEPRECATED("Use PKPaymentAuthorizationResult with PKPaymentAuthorizationStatusFailure and include the result of -paymentContactInvalidErrorWithContactField:localizedDescription: in the errors array.", ios(8.0, 11.0), watchos(3.0, 4.0)), // Supplied contact information is insufficient or otherwise invalid
+
+    PKPaymentAuthorizationStatusPINRequired API_AVAILABLE(ios(9.2), watchos(3.0)),  // Transaction requires PIN entry.
+    PKPaymentAuthorizationStatusPINIncorrect API_AVAILABLE(ios(9.2), watchos(3.0)), // PIN was not entered correctly, retry.
+    PKPaymentAuthorizationStatusPINLockout API_AVAILABLE(ios(9.2), watchos(3.0)),    // PIN retry limit exceeded.
+} API_AVAILABLE(ios(8.0), watchos(3.0));
 
 typedef NS_ENUM(NSInteger, PKPaymentButtonStyle) {
     PKPaymentButtonStyleWhite = 0,
     PKPaymentButtonStyleWhiteOutline,
     PKPaymentButtonStyleBlack
-} NS_ENUM_AVAILABLE_IOS(8_3);
+} API_AVAILABLE(ios(8.3), watchos(3.0));
 
 typedef NS_ENUM(NSInteger, PKPaymentButtonType) {
     PKPaymentButtonTypePlain = 0,
     PKPaymentButtonTypeBuy,
-    PKPaymentButtonTypeSetUp NS_ENUM_AVAILABLE_IOS(9_0),
-    PKPaymentButtonTypeInStore NS_ENUM_AVAILABLE_IOS(10_0),
-    PKPaymentButtonTypeDonate NS_ENUM_AVAILABLE_IOS(10_2)
-} NS_ENUM_AVAILABLE_IOS(8_3);
+    PKPaymentButtonTypeSetUp API_AVAILABLE(ios(9.0), watchos(3.0)),
+    PKPaymentButtonTypeInStore API_AVAILABLE(ios(10.0), watchos(3.0)),
+    PKPaymentButtonTypeDonate  API_AVAILABLE(ios(10.2), watchos(3.2))
+} API_AVAILABLE(ios(8.3), watchos(3.0));
 
 #endif // PKCONSTANTS_H
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKContact.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKContact.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKContact.h	2017-02-23 02:24:54.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKContact.h	2017-05-30 02:28:10.000000000 -0400
@@ -5,16 +5,26 @@
 //
 
 #import <Foundation/Foundation.h>
+
+#if !TARGET_OS_TV
 #import <Contacts/Contacts.h>
+#endif
 
-NS_CLASS_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(9.0), watchos(3.0))
 @interface PKContact : NSObject
 
 @property (nonatomic, strong, nullable) NSPersonNameComponents *name;
 
+#if TARGET_OS_TV
+@property (nonatomic, strong, nullable) id postalAddress;
+@property (nonatomic, strong, nullable) id phoneNumber;
+#else
 @property (nonatomic, strong, nullable) CNPostalAddress *postalAddress;
-@property (nonatomic, strong, nullable) NSString        *emailAddress;
 @property (nonatomic, strong, nullable) CNPhoneNumber   *phoneNumber;
+#endif
+
+@property (nonatomic, strong, nullable) NSString        *emailAddress;
+
 
 // This property is now deprecated. Use the -subLocality property on [PKContact -postalAddress] instead
 @property (nonatomic, retain, nullable) NSString        *supplementarySubLocality API_DEPRECATED("Use subLocality and subAdministrativeArea on -postalAddress instead", ios(9.2, 10.3), watchos(3.0, 3.2));
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKError.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKError.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKError.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKError.h	2017-05-30 02:28:10.000000000 -0400
@@ -8,15 +8,60 @@
 #ifndef __PKERROR_H
 #define __PKERROR_H
 
-// Domain for NSError
-extern NSString * const PKPassKitErrorDomain NS_AVAILABLE_IOS(6_0);
+#import <PassKit/PKConstants.h>
 
-typedef NS_ENUM(NSInteger, PKPassKitErrorCode) {
+NS_ASSUME_NONNULL_BEGIN
+
+// PKPassKitErrorDomain is used for generic errors with PassKit, such as
+// adding or removing passes from the user's pass library. PassKit returns these errors to you.
+extern NSString * const PKPassKitErrorDomain API_AVAILABLE(ios(6.0), watchos(3.0));
+
+
+typedef NS_ERROR_ENUM(PKPassKitErrorDomain, PKPassKitErrorCode) {
     PKUnknownError = -1,
     PKInvalidDataError = 1,
     PKUnsupportedVersionError,
     PKInvalidSignature,
     PKNotEntitledError
-} NS_AVAILABLE_IOS(6_0);
+} API_AVAILABLE(ios(6.0), watchos(3.0));
+
+
+// PKPaymentErrorDomain is used for errors with in-app or web payments.
+// You create your own PKPaymentErrors and return them to indicate problems with a purchase
+extern NSString * const PKPaymentErrorDomain API_AVAILABLE(ios(11.0), watchos(4.0));
+
+typedef NS_ERROR_ENUM(PKPaymentErrorDomain, PKPaymentErrorCode) {
+    PKPaymentUnknownError = -1,                        // there was an unknown error processing the payment. The user should try again.
+    PKPaymentShippingContactInvalidError = 1,          // the user's contact information has an error. Use the PKPaymentErrorKeys in the userInfo to detail the problem.
+    PKPaymentBillingContactInvalidError,               // the user's billing contact information has an error. Use the PKPaymentErrorKeys in the userInfo to detail the problem.
+    PKPaymentShippingAddressUnserviceableError,         // the user's shipping address is otherwise valid but not serviceable. For example, the address is in Canada and you only ship to the United States, or you don't deliver to PO Boxes.
+    
+} API_AVAILABLE(ios(11.0), watchos(4.0));
+
+typedef NSString * PKPaymentErrorKey NS_STRING_ENUM;
+extern PKPaymentErrorKey const PKPaymentErrorContactFieldUserInfoKey  API_AVAILABLE(ios(11.0), watchos(4.0)); // a PKContactField the error relates to. Use with PKPaymentShippingContactInvalidError
+extern PKPaymentErrorKey const PKPaymentErrorPostalAddressUserInfoKey API_AVAILABLE(ios(11.0), watchos(4.0)); // if the error relates to PKContactFieldPostalAddress you may set the specific key here
+
+@interface NSError (PKError)
+
+// Convenience method to create a payment contact error with the supplied field
+// You may optionally provide a localized description to be displayed to the user.
+// Available display space for descriptions may be limited, so you should keep your messages concise
++ (NSError *)paymentContactInvalidErrorWithContactField:(PKContactField)field
+                                   localizedDescription:(nullable NSString *)localizedDescription API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// Convenience method to create a payment shipping address error with the supplied CNPostalAddressKey and description
++ (NSError *)paymentShippingAddressInvalidErrorWithKey:(NSString *)postalAddressKey
+                                  localizedDescription:(nullable NSString *)localizedDescription API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// Convenience method to create a payment billing address error with the supplied CNPostalAddressKey and description
++ (NSError *)paymentBillingAddressInvalidErrorWithKey:(NSString *)postalAddressKey
+                                 localizedDescription:(nullable NSString *)localizedDescription API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// Convenience method to create a payment shipping address service error with the supplied description
++ (NSError *)paymentShippingAddressUnserviceableErrorWithLocalizedDescription:(nullable NSString *)localizedDescription API_AVAILABLE(ios(11.0), watchos(4.0));
+
+@end
 
+NS_ASSUME_NONNULL_END
 #endif // __PKERROR_H
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKLabeledValue.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKLabeledValue.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKLabeledValue.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKLabeledValue.h	2017-05-30 02:28:10.000000000 -0400
@@ -8,7 +8,8 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-NS_CLASS_AVAILABLE_IOS(10_1) @interface PKLabeledValue : NSObject
+API_AVAILABLE(ios(10.1))
+@interface PKLabeledValue : NSObject
 
 - (instancetype)initWithLabel:(NSString *)label
                         value:(NSString *)value NS_DESIGNATED_INITIALIZER;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPass.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPass.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPass.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPass.h	2017-05-30 02:28:10.000000000 -0400
@@ -14,7 +14,7 @@
     PKPassTypeBarcode,
     PKPassTypePayment,
     PKPassTypeAny = ~(NSUInteger)0
-} NS_ENUM_AVAILABLE_IOS(8_0);
+} API_AVAILABLE(ios(8.0), watchos(3.0));
 
 @class PKPaymentPass;
 
@@ -27,8 +27,8 @@
 
 - (instancetype)initWithData:(NSData *)data error:(NSError **)error;
 
-@property (nonatomic, assign, readonly) PKPassType           passType NS_AVAILABLE_IOS(8_0);
-@property (nonatomic, readonly, nullable) PKPaymentPass      *paymentPass NS_AVAILABLE_IOS(8_0);
+@property (nonatomic, assign, readonly) PKPassType           passType API_AVAILABLE(ios(8.0), watchos(3.0));
+@property (nonatomic, readonly, nullable) PKPaymentPass      *paymentPass API_AVAILABLE(ios(8.0), watchos(3.0));
 
 @property (nonatomic, copy, readonly) NSString               *serialNumber;
 @property (nonatomic, copy, readonly) NSString               *passTypeIdentifier;
@@ -43,12 +43,12 @@
 @property (nonatomic, copy, readonly) NSString               *localizedDescription; // e.g. "SFO -> LHR"
 @property (nonatomic, copy, readonly) NSString               *organizationName; // e.g. "Great Airways"
 @property (nonatomic, copy, readonly, nullable) NSDate       *relevantDate; // may be useful for sorting
-@property (nonatomic, copy, readonly, nullable) NSDictionary *userInfo NS_AVAILABLE_IOS(7_0);
+@property (nonatomic, copy, readonly, nullable) NSDictionary *userInfo API_AVAILABLE(ios(7.0), watchos(3.0));
 
 @property (nonatomic, copy, readonly, nullable) NSURL *passURL; // open to view pass in Wallet app
 
-@property (nonatomic, assign, readonly, getter=isRemotePass)   BOOL       remotePass NS_AVAILABLE_IOS(9_0);
-@property (nonatomic, copy, readonly)                          NSString   *deviceName NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, assign, readonly, getter=isRemotePass)   BOOL       remotePass API_AVAILABLE(ios(9.0), watchos(3.0));
+@property (nonatomic, copy, readonly)                          NSString   *deviceName API_AVAILABLE(ios(9.0), watchos(3.0));
 
 - (nullable id)localizedValueForFieldKey:(NSString *)key; // IBOutlet-like; allows access to field data from pass file format
 
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPassLibrary.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPassLibrary.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPassLibrary.h	2017-02-17 21:37:59.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPassLibrary.h	2017-05-25 07:49:06.000000000 -0400
@@ -15,7 +15,7 @@
     PKPassLibraryDidAddPasses,
     PKPassLibraryShouldReviewPasses,
     PKPassLibraryDidCancelAddPasses,
-} NS_ENUM_AVAILABLE_IOS(7_0);
+} API_AVAILABLE(ios(7.0), watchos(3.0));
 
 
 typedef NS_ENUM(NSUInteger, PKAutomaticPassPresentationSuppressionResult) {
@@ -24,35 +24,35 @@
     PKAutomaticPassPresentationSuppressionResultDenied,             // Suppression was denied due to lack of entitlement
     PKAutomaticPassPresentationSuppressionResultCancelled,          // Suppression was cancelled before the response handler was fired
     PKAutomaticPassPresentationSuppressionResultSuccess             // Suppression of automatic pass presentation was successful
-} __WATCHOS_PROHIBITED NS_ENUM_AVAILABLE_IOS(9_0);
+} __WATCHOS_PROHIBITED API_AVAILABLE(ios(9.0));
 
 typedef NSUInteger PKSuppressionRequestToken;
 
-NS_CLASS_AVAILABLE_IOS(6_0)
+API_AVAILABLE(ios(6.0), watchos(3.0))
 @interface PKPassLibrary : NSObject
 
 // The library is not available on iPad in 6.0.
-+ (BOOL)isPassLibraryAvailable NS_AVAILABLE_IOS(6_0);
++ (BOOL)isPassLibraryAvailable API_AVAILABLE(ios(6.0), watchos(3.0));
 
 // These methods may be used to temporarily disable the automatic presentation of passes when a device encounters a contactless field.
 // Use of these methods require an entitlement. Otherwise, requesting will always return a PKAutomaticPassPresentationSuppressionResultDenied as the result.
-+ (PKSuppressionRequestToken)requestAutomaticPassPresentationSuppressionWithResponseHandler:(void(^)(PKAutomaticPassPresentationSuppressionResult result))responseHandler __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(9_0) NS_EXTENSION_UNAVAILABLE("Not available to extensions");
-+ (void)endAutomaticPassPresentationSuppressionWithRequestToken:(PKSuppressionRequestToken)requestToken __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(9_0) NS_EXTENSION_UNAVAILABLE("Not available to extensions");
-+ (BOOL)isSuppressingAutomaticPassPresentation __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(9_0) NS_EXTENSION_UNAVAILABLE("Not available to extensions");
++ (PKSuppressionRequestToken)requestAutomaticPassPresentationSuppressionWithResponseHandler:(void(^)(PKAutomaticPassPresentationSuppressionResult result))responseHandler API_AVAILABLE(ios(9.0)) __WATCHOS_PROHIBITED NS_EXTENSION_UNAVAILABLE("Not available to extensions");
++ (void)endAutomaticPassPresentationSuppressionWithRequestToken:(PKSuppressionRequestToken)requestToken API_AVAILABLE(ios(9.0)) __WATCHOS_PROHIBITED NS_EXTENSION_UNAVAILABLE("Not available to extensions");
++ (BOOL)isSuppressingAutomaticPassPresentation API_AVAILABLE(ios(9.0)) __WATCHOS_PROHIBITED NS_EXTENSION_UNAVAILABLE("Not available to extensions");
 
 // If device supports adding payment passes, this method will return YES. Otherwise, NO will be returned.
-+ (BOOL)isPaymentPassActivationAvailable NS_DEPRECATED_IOS(8_0, 9_0, "Use -[PKPassLibrary isPaymentPassActivationAvailable] instead");
++ (BOOL)isPaymentPassActivationAvailable API_DEPRECATED("Use -[PKPassLibrary isPaymentPassActivationAvailable] instead", ios(8.0, 9.0));
 
 // If this pass library supports activating payment passes, this method will return YES. Otherwise, NO will be returned.
-- (BOOL)isPaymentPassActivationAvailable NS_AVAILABLE_IOS(9_0);
+- (BOOL)isPaymentPassActivationAvailable API_AVAILABLE(ios(9.0));
 
 // These return only local passes the process is entitled to access.
 - (NSArray<PKPass *> *)passes;
 - (nullable PKPass *)passWithPassTypeIdentifier:(NSString *)identifier serialNumber:(NSString *)serialNumber;
-- (NSArray<PKPass *> *)passesOfType:(PKPassType)passType NS_AVAILABLE_IOS(8_0);
+- (NSArray<PKPass *> *)passesOfType:(PKPassType)passType API_AVAILABLE(ios(8.0), watchos(3.0));
 
 // This returns the remote payment passes from attached devices
-- (NSArray<PKPaymentPass *> *)remotePaymentPasses NS_AVAILABLE_IOS(9_0);
+- (NSArray<PKPaymentPass *> *)remotePaymentPasses API_AVAILABLE(ios(9.0));
 
 - (void)removePass:(PKPass *)pass;
 
@@ -69,32 +69,32 @@
 // as a PKPassLibraryAddPassesStatus. If PKPassLibraryPassesPresentReview is returned, you must present a PKAddPassesViewController
 // initialized with the passes so that the user may review and add the passes manually. The completion handler for this method is
 // called on an arbitrary queue - dispatch to the main queue if you're presenting UI.
-- (void)addPasses:(NSArray<PKPass *> *)passes withCompletionHandler:(nullable void(^)(PKPassLibraryAddPassesStatus status))completion NS_AVAILABLE_IOS(7_0);
+- (void)addPasses:(NSArray<PKPass *> *)passes withCompletionHandler:(nullable void(^)(PKPassLibraryAddPassesStatus status))completion API_AVAILABLE(ios(7.0), watchos(3.0));
 
 // Opens the card setup flow (in Wallet on iPhone, Settings on iPad). Use this to direct a user to card setup directly from your app.
-- (void)openPaymentSetup __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(8_3);
+- (void)openPaymentSetup API_AVAILABLE(ios(8.3)) __WATCHOS_PROHIBITED;
 
 // Presents the pass for use above the current application. The pass must already be in the pass library for this to have effect.
-- (void)presentPaymentPass:(PKPaymentPass *)pass __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(10_0);
+- (void)presentPaymentPass:(PKPaymentPass *)pass API_AVAILABLE(ios(10.0)) __WATCHOS_PROHIBITED;
 
 // Returns YES if either the current device or an attached device both supports adding payment passes and does not already contain
 // a payment pass with the supplied primary account identifier.
-- (BOOL)canAddPaymentPassWithPrimaryAccountIdentifier:(NSString *)primaryAccountIdentifier NS_AVAILABLE_IOS(9_0);
+- (BOOL)canAddPaymentPassWithPrimaryAccountIdentifier:(NSString *)primaryAccountIdentifier API_AVAILABLE(ios(9.0));
 
 // If the library can add Felica passes, this method will return YES. Otherwise, NO will be returned.
-- (BOOL)canAddFelicaPass NS_AVAILABLE_IOS(10_1) __WATCHOS_AVAILABLE(3.1);
+- (BOOL)canAddFelicaPass API_AVAILABLE(ios(10.1), watchos(3.1));
 
 // These methods may be utilized to activate a payment pass that is provisioned but currently in the inactive state, by providing
 // either a cryptographic OTP, or an activation code.
-- (void)activatePaymentPass:(PKPaymentPass *)paymentPass withActivationData:(NSData *)activationData completion:(nullable void(^)(BOOL success, NSError* error))completion __WATCHOS_PROHIBITED NS_AVAILABLE_IOS(8_0);
-- (void)activatePaymentPass:(PKPaymentPass *)paymentPass withActivationCode:(NSString *)activationCode completion:(nullable void(^)(BOOL success, NSError* error))completion __WATCHOS_PROHIBITED NS_DEPRECATED_IOS(8_0, 9_0, "Use activatePaymentPass:withActivationData:completion: instead");
+- (void)activatePaymentPass:(PKPaymentPass *)paymentPass withActivationData:(NSData *)activationData completion:(nullable void(^)(BOOL success, NSError* error))completion API_AVAILABLE(ios(8.0)) __WATCHOS_PROHIBITED;
+- (void)activatePaymentPass:(PKPaymentPass *)paymentPass withActivationCode:(NSString *)activationCode completion:(nullable void(^)(BOOL success, NSError* error))completion API_DEPRECATED("Use activatePaymentPass:withActivationData:completion: instead", ios(8.0, 9.0)) __WATCHOS_PROHIBITED;
 @end
 
 // This notification is issued by a library instance, with that instance as the sender.  If there are no instantiated library objects,
 // no notifications. There are no guarantees about what thread or queue these come in on.
 typedef NSString * PKPassLibraryNotificationName NS_EXTENSIBLE_STRING_ENUM;
-extern PKPassLibraryNotificationName const PKPassLibraryDidChangeNotification NS_AVAILABLE_IOS(6_0);
-extern PKPassLibraryNotificationName const PKPassLibraryRemotePaymentPassesDidChangeNotification NS_AVAILABLE_IOS(9_0);
+extern PKPassLibraryNotificationName const PKPassLibraryDidChangeNotification API_AVAILABLE(ios(6.0), watchos(3.0));
+extern PKPassLibraryNotificationName const PKPassLibraryRemotePaymentPassesDidChangeNotification API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // Entries in user info dictionary for PKPassLibraryDidChangeNotification.
 // - PKPassLibraryAddedPassesUserInfoKey is the key for an array of passes
@@ -102,11 +102,11 @@
 // - PKPassLibraryRemovedPassInfosUserInfoKey is the key for an array of dictionaries, each of which has keys
 //   PKPassLibraryPassTypeIdentifierUserInfoKey and PKPassLibrarySerialNumberUserInfoKey mapping to strings.
 typedef NSString * PKPassLibraryNotificationKey NS_STRING_ENUM;
-extern PKPassLibraryNotificationKey const PKPassLibraryAddedPassesUserInfoKey NS_AVAILABLE_IOS(6_0);
-extern PKPassLibraryNotificationKey const PKPassLibraryReplacementPassesUserInfoKey NS_AVAILABLE_IOS(6_0);
-extern PKPassLibraryNotificationKey const PKPassLibraryRemovedPassInfosUserInfoKey NS_AVAILABLE_IOS(6_0);
+extern PKPassLibraryNotificationKey const PKPassLibraryAddedPassesUserInfoKey API_AVAILABLE(ios(6.0), watchos(3.0));
+extern PKPassLibraryNotificationKey const PKPassLibraryReplacementPassesUserInfoKey API_AVAILABLE(ios(6.0), watchos(3.0));
+extern PKPassLibraryNotificationKey const PKPassLibraryRemovedPassInfosUserInfoKey API_AVAILABLE(ios(6.0), watchos(3.0));
 
-extern PKPassLibraryNotificationKey const PKPassLibraryPassTypeIdentifierUserInfoKey NS_AVAILABLE_IOS(6_0);
-extern PKPassLibraryNotificationKey const PKPassLibrarySerialNumberUserInfoKey NS_AVAILABLE_IOS(6_0);
+extern PKPassLibraryNotificationKey const PKPassLibraryPassTypeIdentifierUserInfoKey API_AVAILABLE(ios(6.0), watchos(3.0));
+extern PKPassLibraryNotificationKey const PKPassLibrarySerialNumberUserInfoKey API_AVAILABLE(ios(6.0), watchos(3.0));
 
 NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPayment.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPayment.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPayment.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPayment.h	2017-05-30 02:28:10.000000000 -0400
@@ -16,7 +16,7 @@
 // have a PKPaymentToken which contains a payment credential encrypted to the merchant
 // identifier specified in the request, and when requested, the user's shipping address
 // and chosen shipping method.
-NS_CLASS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKPayment : NSObject
 
 // A PKPaymentToken which contains an encrypted payment credential.
@@ -26,20 +26,20 @@
 // constrained to those specified in the requiredBillingAddressFields property of the original
 // PKPaymentRequest object.  This property is only set when the application has set
 // the requiredBillingAddressFields property of the PKPaymentRequest.
-@property (nonatomic, strong, readonly, nullable) PKContact *billingContact NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, strong, readonly, nullable) PKContact *billingContact API_AVAILABLE(ios(9.0), watchos(3.0));
 
 #if TARGET_OS_IOS
-@property (nonatomic, assign, readonly, nullable) ABRecordRef billingAddress NS_DEPRECATED_IOS(8_0, 9_0, "Use billingContact instead") __WATCHOS_PROHIBITED;
+@property (nonatomic, assign, readonly, nullable) ABRecordRef billingAddress API_DEPRECATED("Use billingContact instead", ios(8.0, 9.0)) __WATCHOS_PROHIBITED;
 #endif // TARGET_OS_IOS
 
 // The full shipping address that the user selected for this transaction.  Fields are
 // constrained to those specified in the requiredShippingAddressFields property of the original
 // PKPaymentRequest object.  This property is only set when the application has set
 // the requiredShippingAddressFields property of the PKPaymentRequest.
-@property (nonatomic, strong, readonly, nullable) PKContact *shippingContact NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, strong, readonly, nullable) PKContact *shippingContact API_AVAILABLE(ios(9.0), watchos(3.0));
 
 #if TARGET_OS_IOS
-@property (nonatomic, assign, readonly, nullable) ABRecordRef shippingAddress NS_DEPRECATED_IOS(8_0, 9_0, "Use shippingContact instead") __WATCHOS_PROHIBITED;
+@property (nonatomic, assign, readonly, nullable) ABRecordRef shippingAddress API_DEPRECATED("Use shippingContact instead", ios(8.0, 9.0)) __WATCHOS_PROHIBITED;
 #endif // TARGET_OS_IOS
 
 // The shipping method that the user chose.  This property is only set when the
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentAuthorizationController.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentAuthorizationController.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentAuthorizationController.h	2016-09-29 00:44:12.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentAuthorizationController.h	2017-05-30 02:28:10.000000000 -0400
@@ -16,12 +16,24 @@
 @class PKPaymentMethod;
 @class PKShippingMethod;
 @class PKPaymentSummaryItem;
+@class PKPaymentAuthorizationResult;
 @class PKPaymentAuthorizationController;
+@class PKPaymentRequestPaymentMethodUpdate;
+@class PKPaymentRequestShippingMethodUpdate;
+@class PKPaymentRequestShippingContactUpdate;
 
 @protocol PKPaymentAuthorizationControllerDelegate <NSObject>
 
 @required
 
+// Sent to the delegate when payment authorization is finished.  This may occur when
+// the user cancels the request, or after the PKPaymentAuthorizationStatus parameter of the
+// paymentAuthorizationController:didAuthorizePayment:completion: has been shown to the user.
+//
+// The delegate is responsible for dismissing and releasing the controller in this method.
+- (void)paymentAuthorizationControllerDidFinish:(PKPaymentAuthorizationController *)controller;
+
+
 // Sent to the delegate after the user has acted on the payment request.  The application
 // should inspect the payment to determine whether the payment request was authorized.
 //
@@ -31,18 +43,13 @@
 // by submitting the payment credential to a processing gateway for payment authorization.
 - (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
                    didAuthorizePayment:(PKPayment *)payment
-                            completion:(void (^)(PKPaymentAuthorizationStatus status))completion;
-
-
-// Sent to the delegate when payment authorization is finished.  This may occur when
-// the user cancels the request, or after the PKPaymentAuthorizationStatus parameter of the
-// paymentAuthorizationController:didAuthorizePayment:completion: has been shown to the user.
-//
-// The delegate is responsible for dismissing and releasing the controller in this method.
-- (void)paymentAuthorizationControllerDidFinish:(PKPaymentAuthorizationController *)controller;
+                               handler:(void (^)(PKPaymentAuthorizationResult *result))completion API_AVAILABLE(ios(11.0), watchos(4.0));
 
 @optional
 
+- (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
+                   didAuthorizePayment:(PKPayment *)payment
+                            completion:(void (^)(PKPaymentAuthorizationStatus status))completion API_DEPRECATED("Use paymentAuthorizationController:didAuthorizePayment:handler: instead to provide more granular errors", ios(10.0, 11.0), watchos(3.0, 4.0));
 
 // Sent to the delegate before the payment is authorized, but after the user has authenticated using
 // the side button. Optional.
@@ -60,27 +67,43 @@
 // until it has invoked the completion block.
 - (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
                didSelectShippingMethod:(PKShippingMethod *)shippingMethod
-                            completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray<PKPaymentSummaryItem *> *summaryItems))completion;
+                               handler:(void (^)(PKPaymentRequestShippingMethodUpdate *requestUpdate))completion API_AVAILABLE(ios(11.0), watchos(4.0));
 
 - (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
               didSelectShippingContact:(PKContact *)contact
-                            completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray<PKShippingMethod *> *shippingMethods,
-                                                 NSArray<PKPaymentSummaryItem *> *summaryItems))completion;
+                               handler:(void (^)(PKPaymentRequestShippingContactUpdate *requestUpdate))completion API_AVAILABLE(ios(11.0), watchos(4.0));
+
 
 // Sent when the user has selected a new payment card.  Use this delegate callback if you need to
 // update the summary items in response to the card type changing (for example, applying credit card surcharges)
 //
 // The delegate will receive no further callbacks except paymentAuthorizationControllerDidFinish:
 // until it has invoked the completion block.
+
+- (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
+                didSelectPaymentMethod:(PKPaymentMethod *)paymentMethod
+                               handler:(void (^)(PKPaymentRequestPaymentMethodUpdate *requestUpdate))completion API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// These delegate methods are deprecated and have been replaced with new callbacks that allow more granular
+// and comprehensive errors to be surfaced to users
+- (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
+               didSelectShippingMethod:(PKShippingMethod *)shippingMethod
+                            completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray<PKPaymentSummaryItem *> *summaryItems))completion API_DEPRECATED("Use paymentAuthorizationController:didSelectShippingMethod:handler: instead to provide more granular errors", ios(10.0, 11.0), watchos(3.0, 4.0));
+
+- (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
+              didSelectShippingContact:(PKContact *)contact
+                            completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray<PKShippingMethod *> *shippingMethods,
+                                                 NSArray<PKPaymentSummaryItem *> *summaryItems))completion API_DEPRECATED("Use paymentAuthorizationController:didSelectShippingContact:handler: instead to provide more granular errors", ios(10.0, 11.0), watchos(3.0, 4.0));
+
 - (void)paymentAuthorizationController:(PKPaymentAuthorizationController *)controller
                 didSelectPaymentMethod:(PKPaymentMethod *)paymentMethod
-                            completion:(void (^)(NSArray<PKPaymentSummaryItem *> *summaryItems))completion;
+                            completion:(void (^)(NSArray<PKPaymentSummaryItem *> *summaryItems))completion API_DEPRECATED("Use paymentAuthorizationController:didSelectPaymentMethod:handler: instead to provide more granular errors", ios(10.0, 11.0), watchos(3.0, 4.0));
 
 @end
 
 // PKPaymentAuthorizationController prompts the user to authorize a PKPaymentRequest, funding the
 // payment amount with a valid payment card.
-__WATCHOS_AVAILABLE(3.0) __IOS_AVAILABLE(10.0)
+API_AVAILABLE(ios(10.0), watchos(3.0))
 @interface PKPaymentAuthorizationController : NSObject
 
 // Determine whether this device can process payment requests.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentMethod.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentMethod.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentMethod.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentMethod.h	2017-05-30 02:28:10.000000000 -0400
@@ -13,7 +13,7 @@
 @class PKPaymentPass;
 
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(9.0), watchos(3.0))
 @interface PKPaymentMethod : NSObject
 
 typedef NS_ENUM(NSUInteger, PKPaymentMethodType) {
@@ -22,7 +22,7 @@
     PKPaymentMethodTypeCredit,
     PKPaymentMethodTypePrepaid,
     PKPaymentMethodTypeStore
-} NS_ENUM_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0);
+} API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // A string describing the instrument that's suitable for display
 // This property will be nil prior to the user authorizing the payment
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentPass.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentPass.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentPass.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentPass.h	2017-05-30 02:28:10.000000000 -0400
@@ -18,10 +18,10 @@
     PKPaymentPassActivationStateActivating,
     PKPaymentPassActivationStateSuspended,
     PKPaymentPassActivationStateDeactivated
-} NS_ENUM_AVAILABLE_IOS(8_0);
+} API_AVAILABLE(ios(8.0), watchos(3.0));
 
 
-NS_CLASS_AVAILABLE_IOS(8_0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKPaymentPass : PKPass
 
 @property (nonatomic, copy, readonly) NSString *primaryAccountIdentifier;
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequest.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequest.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequest.h	2017-02-17 21:38:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequest.h	2017-05-25 00:43:10.000000000 -0400
@@ -25,7 +25,7 @@
     PKMerchantCapabilityEMV                                  = 1UL << 1,   // Merchant supports EMV
     PKMerchantCapabilityCredit NS_ENUM_AVAILABLE_IOS(9_0) = 1UL << 2,   // Merchant supports credit
     PKMerchantCapabilityDebit  NS_ENUM_AVAILABLE_IOS(9_0) = 1UL << 3    // Merchant supports debit
-} NS_ENUM_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
+} API_AVAILABLE(ios(8.0), watchos(3.0));
 
 typedef NS_OPTIONS(NSUInteger, PKAddressField) {
     PKAddressFieldNone                               = 0UL,      // No address fields required.
@@ -34,26 +34,26 @@
     PKAddressFieldEmail                              = 1UL << 2,
     PKAddressFieldName NS_ENUM_AVAILABLE_IOS(8_3) = 1UL << 3,
     PKAddressFieldAll                                = (PKAddressFieldPostalAddress|PKAddressFieldPhone|PKAddressFieldEmail|PKAddressFieldName)
-} NS_ENUM_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0);
+} API_DEPRECATED("Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields", ios(8.0, 11.0), watchos(3.0, 4.0));
 
 typedef NS_ENUM(NSUInteger, PKShippingType) {
     PKShippingTypeShipping,
     PKShippingTypeDelivery,
     PKShippingTypeStorePickup,
     PKShippingTypeServicePickup
-} NS_ENUM_AVAILABLE_IOS(8_3) __WATCHOS_AVAILABLE(3.0);
+}  API_AVAILABLE(ios(8.3), watchos(3.0));
 
 typedef NS_ENUM(NSUInteger, PKPaymentSummaryItemType) {
     PKPaymentSummaryItemTypeFinal,      // The payment summary item's amount is known to be correct
     PKPaymentSummaryItemTypePending     // The payment summary item's amount is estimated or unknown - e.g, a taxi fare
-} NS_ENUM_AVAILABLE_IOS(9_0) __WATCHOS_AVAILABLE(3.0);
+}  API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // PKPaymentSummaryItem Defines a line-item for a payment such as tax, shipping, or discount.
-NS_CLASS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKPaymentSummaryItem : NSObject
 
 + (instancetype)summaryItemWithLabel:(NSString *)label amount:(NSDecimalNumber *)amount;
-+ (instancetype)summaryItemWithLabel:(NSString *)label amount:(NSDecimalNumber *)amount type:(PKPaymentSummaryItemType)type NS_AVAILABLE_IOS(9_0);
++ (instancetype)summaryItemWithLabel:(NSString *)label amount:(NSDecimalNumber *)amount type:(PKPaymentSummaryItemType)type API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // A short localized description of the item, e.g. "Tax" or "Gift Card".
 @property (nonatomic, copy) NSString *label;
@@ -64,12 +64,12 @@
 
 // Defaults to PKPaymentSummaryItemTypeFinal
 // Set to PKPaymentSummaryItemTypePending if the amount of the item is not known at this time
-@property (nonatomic, assign) PKPaymentSummaryItemType type NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, assign) PKPaymentSummaryItemType type API_AVAILABLE(ios(9.0), watchos(3.0));
 
 @end
 
 // Defines a shipping method for delivering physical goods.
-NS_CLASS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKShippingMethod : PKPaymentSummaryItem
 
 // Application-defined unique identifier for this shipping method.  The application will receive this
@@ -85,11 +85,11 @@
 // PKPaymentRequest defines an application's request to produce a payment instrument for the
 // purchase of goods and services. It encapsulates information about the selling party's payment
 // processing capabilities, an amount to pay, and the currency code.
-NS_CLASS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKPaymentRequest : NSObject
 
 // The payment networks and platforms supported for in-app payment
-+ (NSArray<PKPaymentNetwork> *)availableNetworks NS_AVAILABLE_IOS(10_0) __WATCHOS_AVAILABLE(3.0);
++ (NSArray<PKPaymentNetwork> *)availableNetworks API_AVAILABLE(ios(10.0), watchos(3.0));
 
 // Identifies the merchant, as previously agreed with Apple.  Must match one of the merchant
 // identifiers in the application's entitlement.
@@ -112,36 +112,48 @@
 // Currency code for this payment.
 @property (nonatomic, copy) NSString *currencyCode;
 
-// Indicates which billing address fields the merchant requires in order to process a transaction.
-// The default is PKAddressFieldNone.
-@property (nonatomic, assign) PKAddressField requiredBillingAddressFields;
+// Indicates which billing contact fields the merchant requires in order to process a transaction.
+// Currently only postal address may be requested for billing contact. For all other fields use -requiredShippingContactFields
+@property (nonatomic, strong) NSSet<PKContactField> *requiredBillingContactFields API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// Indicates which billing address fields are required. The default is PKAddressFieldNone.
+// This property is deprecated and should not be used.
+@property (nonatomic, assign) PKAddressField requiredBillingAddressFields API_DEPRECATED_WITH_REPLACEMENT("requiredBillingContactFields", ios(8.0, 11.0), watchos(2.0, 4.0));
 
 // If the merchant already has a billing address on file, set it here.
-@property (nonatomic, strong, nullable) PKContact *billingContact NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, strong, nullable) PKContact *billingContact API_AVAILABLE(ios(9.0), watchos(3.0));
 
-// Indicates which shipping address fields the merchant requires in order to process a transaction.
-// The default is PKAddressFieldNone.
-@property (nonatomic, assign) PKAddressField requiredShippingAddressFields;
+// Indicates which shipping contact fields the merchant requires in order to process a transactions
+//
+@property (nonatomic, strong) NSSet<PKContactField> *requiredShippingContactFields API_AVAILABLE(ios(11.0), watchos(4.0));
+
+// Indicates which shipping address fields are required. The default is PKAddressFieldNone.
+// This property is deprecated and should not be used
+@property (nonatomic, assign) PKAddressField requiredShippingAddressFields API_DEPRECATED_WITH_REPLACEMENT("requiredShippingContactFields", ios(8.0, 11.0), watchos(2.0, 4.0));
 
 // If the merchant already has a shipping address on file, set it here.
-@property (nonatomic, strong, nullable) PKContact *shippingContact NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, strong, nullable) PKContact *shippingContact API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // Shipping methods supported by the merchant.
 @property (nonatomic, copy, nullable) NSArray<PKShippingMethod *> *shippingMethods;
 
 // Indicates the display mode for the shipping (e.g, "Pick Up", "Ship To", "Deliver To"). Localized.
 // The default is PKShippingTypeShipping
-@property (nonatomic, assign) PKShippingType shippingType NS_AVAILABLE_IOS(8_3);
+@property (nonatomic, assign) PKShippingType shippingType API_AVAILABLE(ios(8.3), watchos(3.0));
 
 // Optional merchant-supplied information about the payment request.  Examples of this are an order
 // or cart identifier.  It will be signed and included in the resulting PKPaymentToken.
 @property (nonatomic, copy, nullable) NSData *applicationData;
 
+// Set of two-letter ISO 3166 country codes. When provided will filter the selectable payment passes to those
+// issued in the supported countries.
+@property (nonatomic, copy, nullable) NSSet<NSString *> *supportedCountries API_AVAILABLE(ios(11.0), watchos(4.0));
+
 #if TARGET_OS_IOS
 // These properties have been deprecated and should not be used.
-@property (nonatomic, assign, nullable) ABRecordRef shippingAddress __WATCHOS_PROHIBITED NS_DEPRECATED_IOS(8_0, 9_0, "ABRecordRef has been deprecated, and does not support all available address properties. You should migrate to shippingContact.");
+@property (nonatomic, assign, nullable) ABRecordRef shippingAddress __WATCHOS_PROHIBITED API_DEPRECATED("ABRecordRef has been deprecated, and does not support all available address properties. You should migrate to shippingContact.", ios(8.0, 9.0));
 
-@property (nonatomic, assign, nullable) ABRecordRef billingAddress __WATCHOS_PROHIBITED NS_DEPRECATED_IOS(8_0, 9_0, "ABRecordRef has been deprecated, and does not support all available address properties. You should migrate to billingContact.");
+@property (nonatomic, assign, nullable) ABRecordRef billingAddress __WATCHOS_PROHIBITED API_DEPRECATED("ABRecordRef has been deprecated, and does not support all available address properties. You should migrate to billingContact.", ios(8.0, 9.0));
 #endif
 
 @end
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequestStatus.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequestStatus.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequestStatus.h	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentRequestStatus.h	2017-05-30 02:28:10.000000000 -0400
@@ -0,0 +1,70 @@
+//
+//  PKPaymentRequestStatus.h
+//
+//  Copyright © 2016 Apple, Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <PassKit/PKConstants.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class PKShippingMethod;
+@class PKPaymentSummaryItem;
+
+API_AVAILABLE(ios(11.0), watchos(4.0))
+@interface PKPaymentAuthorizationResult : NSObject
+
+- (instancetype)initWithStatus:(PKPaymentAuthorizationStatus)status
+                        errors:(nullable NSArray<NSError *> *)errors NS_DESIGNATED_INITIALIZER;
+
+// The status of the payment
+@property (nonatomic, assign) PKPaymentAuthorizationStatus status;
+
+// Any errors that applied. These errors will be displayed to the user to correct.
+// Errors should be ordered from most to least serious.
+// See PKError for specific NSError keys to use to enable rich error handling.
+@property (null_resettable, nonatomic, copy) NSArray<NSError *> *errors;
+
+@end
+
+API_AVAILABLE(ios(11.0), watchos(4.0))
+@interface PKPaymentRequestUpdate : NSObject
+
+- (instancetype)initWithPaymentSummaryItems:(NSArray<PKPaymentSummaryItem *> *)paymentSummaryItems NS_DESIGNATED_INITIALIZER;
+
+// The status of the payment request update. Set PKPaymentAuthorizationStatusSuccess for a successful update,
+// and PKPaymentAuthorizationStatusFailure if you were unable to process the required changes.
+// PKPaymentAuthorizationStatusSuccess by default
+@property (nonatomic, assign) PKPaymentAuthorizationStatus status;
+
+// The new payment summary items to update the payment request with
+@property (nonatomic, copy) NSArray<PKPaymentSummaryItem *> *paymentSummaryItems;
+
+@end
+
+API_AVAILABLE(ios(11.0), watchos(4.0))
+@interface PKPaymentRequestShippingContactUpdate : PKPaymentRequestUpdate
+
+// You may optionally supply errors here. 
+// See PKError for specific NSError keys to use.
+- (instancetype)initWithErrors:(nullable NSArray<NSError *> *)errors
+           paymentSummaryItems:(NSArray<PKPaymentSummaryItem *> *)paymentSummaryItems
+               shippingMethods:(NSArray<PKShippingMethod *> *)shippingMethods NS_DESIGNATED_INITIALIZER;
+
+@property (nonatomic, copy) NSArray<PKShippingMethod *> *shippingMethods;
+@property (null_resettable, nonatomic, copy) NSArray<NSError *> *errors;
+
+@end
+
+API_AVAILABLE(ios(11.0), watchos(4.0))
+@interface PKPaymentRequestShippingMethodUpdate : PKPaymentRequestUpdate
+
+@end
+
+API_AVAILABLE(ios(11.0), watchos(4.0))
+@interface PKPaymentRequestPaymentMethodUpdate : PKPaymentRequestUpdate
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentToken.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentToken.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentToken.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKPaymentToken.h	2017-05-30 02:28:10.000000000 -0400
@@ -10,18 +10,18 @@
 
 // Contains the user's payment credentials, encrypted to the merchant.
 NS_ASSUME_NONNULL_BEGIN
-NS_CLASS_AVAILABLE_IOS(8_0) __WATCHOS_AVAILABLE(3.0)
+API_AVAILABLE(ios(8.0), watchos(3.0))
 @interface PKPaymentToken : NSObject
 
 // Describes the properties of the underlying payment instrument selected to fund the payment
-@property (nonatomic, strong, readonly) PKPaymentMethod *paymentMethod NS_AVAILABLE_IOS(9_0);
+@property (nonatomic, strong, readonly) PKPaymentMethod *paymentMethod API_AVAILABLE(ios(9.0), watchos(3.0));
 
 // A string that describes the payment instrument the user has selected to fund the payment.
 // Suitable for display, e.g. "Amex 1234".
-@property (nonatomic, copy, readonly) NSString *paymentInstrumentName NS_DEPRECATED_IOS(8_0, 9_0, "Use paymentMethod instead") __WATCHOS_PROHIBITED;
+@property (nonatomic, copy, readonly) NSString *paymentInstrumentName API_DEPRECATED("Use paymentMethod instead", ios(8.0, 9.0)) __WATCHOS_PROHIBITED;
 
 // Payment network for the card that funds the payment.
-@property (nonatomic, copy, readonly) NSString *paymentNetwork NS_DEPRECATED_IOS(8_0, 9_0, "Use paymentMethod instead") __WATCHOS_PROHIBITED;
+@property (nonatomic, copy, readonly) NSString *paymentNetwork API_DEPRECATED("Use paymentMethod instead", ios(8.0, 9.0)) __WATCHOS_PROHIBITED;
 
 // A string that describes a globally unique identifier for this transaction that can be used
 // for receipt purposes.
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKSuicaPassProperties.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKSuicaPassProperties.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKSuicaPassProperties.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PKSuicaPassProperties.h	2017-05-30 02:28:11.000000000 -0400
@@ -12,7 +12,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-NS_CLASS_AVAILABLE_IOS(10_1) __WATCHOS_AVAILABLE(3.1)
+API_AVAILABLE(ios(10.1), watchos(3.1))
 @interface PKSuicaPassProperties : NSObject
 
 /// Properties for a given pass, or nil if the pass doesn’t support the set of properties being requested
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.apinotes /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.apinotes
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.apinotes	1969-12-31 19:00:00.000000000 -0500
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.apinotes	2017-05-30 02:28:09.000000000 -0400
@@ -0,0 +1,53 @@
+---
+Name: PassKit
+Protocols:
+- Name: PKPaymentAuthorizationControllerDelegate
+  Methods:
+  - Selector: 'paymentAuthorizationController:didSelectShippingMethod:completion:'
+    SwiftName: paymentAuthorizationController(_:didSelectShippingMethod:completion:)
+    MethodKind: Instance
+  - Selector: 'paymentAuthorizationController:didSelectPaymentMethod:completion:'
+    SwiftName: paymentAuthorizationController(_:didSelectPaymentMethod:completion:)
+    MethodKind: Instance
+  - Selector: 'paymentAuthorizationController:didSelectShippingMethod:handler:'
+    SwiftName: paymentAuthorizationController(_:didSelectShippingMethod:handler:)
+    MethodKind: Instance
+  - Selector: 'paymentAuthorizationController:didSelectPaymentMethod:handler:'
+    SwiftName: paymentAuthorizationController(_:didSelectPaymentMethod:handler:)
+    MethodKind: Instance
+Classes:
+- Name: PKAddPassButton
+  Methods:
+  - Selector: 'addPassButtonWithStyle:'
+    MethodKind: Class
+    Availability: nonswift
+    AvailabilityMsg: "prefer 'init'"
+- Name: PKPaymentButton
+  Methods:
+  - Selector: 'buttonWithType:style:'
+    MethodKind: Class
+    Availability: nonswift
+    AvailabilityMsg: "prefer 'init'"
+Tags:
+- Name: PKPassKitErrorCode
+  NSErrorDomain: PKPassKitErrorDomain
+- Name: PKPaymentErrorCode
+  NSErrorDomain: PKPaymentErrorDomain
+SwiftVersions:
+- Version: 3
+  Classes:
+  - Name: PKPaymentAuthorizationViewController
+    Methods:
+    - Selector: "initWithPaymentRequest:"
+      MethodKind: Instance
+      NullabilityOfRet: N
+  - Name: PKAddPassButton
+    Methods:
+    - Selector: 'addPassButtonWithStyle:'
+      MethodKind: Class
+      Availability: available
+  - Name: PKPaymentButton
+    Methods:
+    - Selector: 'buttonWithType:style:'
+      MethodKind: Class
+      Availability: available
diff -ruN /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.h /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.h
--- /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.h	2016-10-06 17:52:32.000000000 -0400
+++ /Applications/Xcode9-beta1.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/System/Library/Frameworks/PassKit.framework/Headers/PassKit.h	2017-05-30 02:28:11.000000000 -0400
@@ -21,6 +21,9 @@
 #if __has_include(<PassKit/PKPaymentRequest.h>)
 #import <PassKit/PKPaymentRequest.h>
 #endif
+#if __has_include(<PassKit/PKPaymentRequestStatus.h>)
+#import <PassKit/PKPaymentRequestStatus.h>
+#endif
 #if __has_include(<PassKit/PKPayment.h>)
 #import <PassKit/PKPayment.h>
 #endif
Clone this wiki locally