Skip to content

CloudKit iOS xcode15.0 b1

Manuel de la Pena edited this page Aug 22, 2023 · 3 revisions

#CloudKit.framework https://github.com/xamarin/xamarin-macios/pull/18786

diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAcceptSharesOperation.h	2023-05-19 21:55:44
@@ -29,7 +29,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^perShareCompletionBlock)(CKShareMetadata *shareMetadata, CKShare * _Nullable acceptedShare, NSError * _Nullable error)
-CK_SWIFT_DEPRECATED("Use perShareResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use perShareResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 /*! @abstract This block is called when the operation completes.
  *
@@ -40,7 +40,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^acceptSharesCompletionBlock)(NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use acceptSharesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use acceptSharesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAllowedSharingOptions.h	2023-05-19 21:55:44
@@ -35,6 +35,7 @@
 
 API_AVAILABLE(macos(13.0), ios(16.0))
 API_UNAVAILABLE(tvos, watchos)
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4))
 @interface CKAllowedSharingOptions : NSObject <NSSecureCoding, NSCopying>
 - (instancetype)initWithAllowedParticipantPermissionOptions:(CKSharingParticipantPermissionOption)allowedParticipantPermissionOptions allowedParticipantAccessOptions:(CKSharingParticipantAccessOption)allowedParticipantAccessOptions;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKAsset.h	2023-05-19 21:55:43
@@ -10,6 +10,8 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKAsset : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -19,7 +21,7 @@
 - (instancetype)initWithFileURL:(NSURL *)fileURL;
 
 /*! Local file URL where fetched records are cached and saved records originate from. */
-@property (nonatomic, readonly, copy, nullable) NSURL *fileURL;
+@property (atomic, readonly, copy, nullable) NSURL *fileURL;
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2023-03-09 23:50:23
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKContainer.h	2023-05-19 22:14:14
@@ -30,6 +30,7 @@
  *  Each of these handlers and blocks is invoked on a non-main serial queue.  The receiver is responsible for handling the message on a different queue or thread if it is required.
  */
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
 NS_SWIFT_SENDABLE
 @interface CKContainer : NSObject
 
@@ -117,7 +118,7 @@
 
 typedef NS_OPTIONS(NSUInteger, CKApplicationPermissions) {
     /*! Allows the user's record in CloudKit to be discoverable via the user's email address */
-    CKApplicationPermissionUserDiscoverability         = 1 << 0,
+    CKApplicationPermissionUserDiscoverability API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.0, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0)) = 1 << 0,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 /*! @enum CKApplicationPermissionStatus
@@ -131,14 +132,14 @@
     CKApplicationPermissionStatusCouldNotComplete      = 1,
     CKApplicationPermissionStatusDenied                = 2,
     CKApplicationPermissionStatusGranted               = 3,
-} API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
+} API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
 
-typedef void(^CKApplicationPermissionBlock)(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error);
+typedef void(^CKApplicationPermissionBlock)(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
 
 @interface CKContainer (ApplicationPermission)
 
-- (void)statusForApplicationPermission:(CKApplicationPermissions)applicationPermission completionHandler:(NS_SWIFT_SENDABLE CKApplicationPermissionBlock)completionHandler NS_SWIFT_ASYNC_NAME(applicationPermissionStatus(for:));
-- (void)requestApplicationPermission:(CKApplicationPermissions)applicationPermission completionHandler:(NS_SWIFT_SENDABLE CKApplicationPermissionBlock)completionHandler;
+- (void)statusForApplicationPermission:(CKApplicationPermissions)applicationPermission completionHandler:(NS_SWIFT_SENDABLE CKApplicationPermissionBlock)completionHandler NS_SWIFT_ASYNC_NAME(applicationPermissionStatus(for:)) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.0, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
+- (void)requestApplicationPermission:(CKApplicationPermissions)applicationPermission completionHandler:(NS_SWIFT_SENDABLE CKApplicationPermissionBlock)completionHandler API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.0, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0));
 
 @end
 
@@ -154,25 +155,25 @@
  *
  *  @discussion @c CKDiscoverAllUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this methods
  */
-- (void)discoverAllIdentitiesWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKUserIdentity *> * _Nullable userIdentities, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0)) API_UNAVAILABLE(tvos) NS_SWIFT_ASYNC_NAME(allUserIdentitiesFromContacts());
+- (void)discoverAllIdentitiesWithCompletionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKUserIdentity *> * _Nullable userIdentities, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(allUserIdentitiesFromContacts()) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), watchos(3.0, 10.0)) API_UNAVAILABLE(tvos);
 
 /*! @abstract Fetches the user identity that corresponds to the given email address.
  *
  *  @discussion Only users who have opted-in to user discoverability will have their identities returned by this method.  If a user with the inputted email exists in iCloud, but has not opted-in to user discoverability, this method completes with a nil @c userInfo.  @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
  */
-- (void)discoverUserIdentityWithEmailAddress:(NSString *)email completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) NS_SWIFT_ASYNC_NAME(userIdentity(forEmailAddress:));
+- (void)discoverUserIdentityWithEmailAddress:(NSString *)email completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(userIdentity(forEmailAddress:)) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), tvos(10.0, 17.0), watchos(3.0, 10.0));
 
 /*! @abstract Fetches the user identity that corresponds to the given phone number.
  *
  *  @discussion Only users who have opted-in to user discoverability will have their identities returned by this method.  If a user with the inputted phone number exists in iCloud, but has not opted-in to user discoverability, this method completes with a nil @c userInfo.  @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
  */
-- (void)discoverUserIdentityWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) NS_SWIFT_ASYNC_NAME(userIdentity(forPhoneNumber:));
+- (void)discoverUserIdentityWithPhoneNumber:(NSString *)phoneNumber completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(userIdentity(forPhoneNumber:)) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), tvos(10.0, 17.0), watchos(3.0, 10.0));
 
 /*! @abstract Fetches the user identity that corresponds to the given user record id.
  *
  *  @discussion Only users who have opted-in to user discoverability will have their identities returned by this method.  If a user has not opted-in to user discoverability, this method completes with a nil @c userInfo.  @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
  */
-- (void)discoverUserIdentityWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) NS_SWIFT_ASYNC_NAME(userIdentity(forUserRecordID:));
+- (void)discoverUserIdentityWithUserRecordID:(CKRecordID *)userRecordID completionHandler:(void (NS_SWIFT_SENDABLE ^)(CKUserIdentity * _Nullable_result userInfo, NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(userIdentity(forUserRecordID:)) API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), tvos(10.0, 17.0), watchos(3.0, 10.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2023-03-09 19:24:14
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDatabase.h	2023-05-19 21:55:44
@@ -20,6 +20,7 @@
 } API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
 NS_SWIFT_SENDABLE
 @interface CKDatabase : NSObject
 - (instancetype)init NS_UNAVAILABLE;
@@ -50,7 +51,7 @@
  *  Queries that do not specify a @c zoneID will perform a query across all zones in the database.
  */
 - (void)performQuery:(CKQuery *)query inZoneWithID:(nullable CKRecordZoneID *)zoneID completionHandler:(void (NS_SWIFT_SENDABLE ^)(NSArray<CKRecord *> * _Nullable results, NSError * _Nullable error))completionHandler
-CK_SWIFT_DEPRECATED("renamed to fetch(withQuery:inZoneWith:desiredKeys:resultsLimit:completionHandler:)", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("renamed to fetch(withQuery:inZoneWith:desiredKeys:resultsLimit:completionHandler:)", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 #pragma mark Record Zone Convenience Methods
 /*! @c CKFetchRecordZonesOperation and @c CKModifyRecordZonesOperation are the more configurable, @c CKOperation -based alternatives to these methods */
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDefines.h	2023-05-19 21:55:45
@@ -43,4 +43,10 @@
     #define CK_SUBCLASSING_RESTRICTED __attribute__((__objc_subclassing_restricted__))
 #endif
 
+
+#ifndef CK_SUBCLASSING_DEPRECATED
+    #define CK_SUBCLASSING_DEPRECATED // we can't actually emit a warning, but heed this annotation anyway!
+#endif // CK_SUBCLASSING_DEPRECATED
+
+
 NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverAllUserIdentitiesOperation.h	2023-05-19 21:55:44
@@ -19,7 +19,7 @@
  *
  *  @discussion This operation scales linearly with the number of email addresses and phone numbers in the device's address book.  It may take some time to complete.
  */
-API_AVAILABLE(macos(10.12), ios(10.0), watchos(3.0))
+API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), watchos(3.0, 10.0))
 API_UNAVAILABLE(tvos)
 @interface CKDiscoverAllUserIdentitiesOperation : CKOperation
 
@@ -41,7 +41,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^discoverAllUserIdentitiesCompletionBlock)(NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use discoverAllUserIdentitiesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use discoverAllUserIdentitiesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKDiscoverUserIdentitiesOperation.h	2023-05-19 21:55:44
@@ -13,7 +13,7 @@
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
-API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+API_DEPRECATED("No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.", macos(10.12, 14.0), ios(10.0, 17.0), tvos(10.0, 17.0), watchos(3.0, 10.0))
 @interface CKDiscoverUserIdentitiesOperation : CKOperation
 
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
@@ -37,7 +37,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^discoverUserIdentitiesCompletionBlock)(NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use discoverUserIdentitiesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use discoverUserIdentitiesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h	2023-03-09 19:09:11
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchDatabaseChangesOperation.h	2023-05-19 22:26:55
@@ -87,7 +87,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchDatabaseChangesCompletionBlock)(CKServerChangeToken * _Nullable serverChangeToken, BOOL moreComing, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchDatabaseChangesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchDatabaseChangesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h	2023-03-09 19:24:14
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZoneChangesOperation.h	2023-05-19 22:26:55
@@ -70,7 +70,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^recordZoneChangeTokensUpdatedBlock)(CKRecordZoneID *recordZoneID, CKServerChangeToken * _Nullable serverChangeToken, NSData * _Nullable clientChangeTokenData);
-@property (nonatomic, copy, nullable) void (^recordZoneFetchCompletionBlock)(CKRecordZoneID *recordZoneID, CKServerChangeToken * _Nullable serverChangeToken, NSData * _Nullable clientChangeTokenData, BOOL moreComing, NSError * _Nullable recordZoneError) CK_SWIFT_DEPRECATED("Use recordZoneFetchResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+@property (nonatomic, copy, nullable) void (^recordZoneFetchCompletionBlock)(CKRecordZoneID *recordZoneID, CKServerChangeToken * _Nullable serverChangeToken, NSData * _Nullable clientChangeTokenData, BOOL moreComing, NSError * _Nullable recordZoneError) CK_SWIFT_DEPRECATED("Use recordZoneFetchResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 /*! @abstract This block is called when the operation completes.
  *
@@ -80,7 +80,7 @@
  *  This block may share mutable state with other blocks assigned to this operation, but any such mutable state
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
-@property (nonatomic, copy, nullable) void (^fetchRecordZoneChangesCompletionBlock)(NSError * _Nullable operationError) CK_SWIFT_DEPRECATED("Use fetchRecordZoneChangesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+@property (nonatomic, copy, nullable) void (^fetchRecordZoneChangesCompletionBlock)(NSError * _Nullable operationError) CK_SWIFT_DEPRECATED("Use fetchRecordZoneChangesResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
@@ -95,6 +95,7 @@
 
 
 API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKFetchRecordZoneChangesConfiguration : NSObject <NSSecureCoding, NSCopying>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordZonesOperation.h	2023-05-19 21:55:43
@@ -40,7 +40,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchRecordZonesCompletionBlock)(NSDictionary<CKRecordZoneID *, CKRecordZone *> * _Nullable recordZonesByZoneID, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchRecordZonesResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchRecordZonesResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchRecordsOperation.h	2023-05-19 21:55:44
@@ -45,7 +45,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^perRecordCompletionBlock)(CKRecord * _Nullable record, CKRecordID * _Nullable recordID, NSError * _Nullable error)
-CK_SWIFT_DEPRECATED("Use perRecordResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use perRecordResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 
 /*! @abstract This block is called when the operation completes.
@@ -58,7 +58,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchRecordsCompletionBlock)(NSDictionary<CKRecordID * , CKRecord *> * _Nullable recordsByRecordID, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchRecordsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchRecordsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareMetadataOperation.h	2023-05-19 21:55:44
@@ -59,7 +59,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchShareMetadataCompletionBlock)(NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchShareMetadataResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchShareMetadataResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchShareParticipantsOperation.h	2023-05-19 21:55:44
@@ -45,7 +45,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchShareParticipantsCompletionBlock)(NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchShareParticipantsResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchShareParticipantsResultBlock instead", macos(10.12, 12.0), ios(10.0, 15.0), tvos(10.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchSubscriptionsOperation.h	2023-05-19 21:55:43
@@ -40,7 +40,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^fetchSubscriptionCompletionBlock)(NSDictionary<CKSubscriptionID, CKSubscription *> * _Nullable subscriptionsBySubscriptionID, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use fetchSubscriptionsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(6.0, 8.0));
+CK_SWIFT_DEPRECATED("Use fetchSubscriptionsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(6.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKFetchWebAuthTokenOperation.h	2023-05-19 21:55:43
@@ -29,7 +29,7 @@
  *  This block may share mutable state with other blocks assigned to this operation, but any such mutable state
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
-@property (nonatomic, copy, nullable) void (^fetchWebAuthTokenCompletionBlock)(NSString * _Nullable webAuthToken, NSError * _Nullable operationError) CK_SWIFT_DEPRECATED("Use fetchWebAuthTokenResultBlock instead", macos(10.11, 12.0), ios(9.2, 15.0), tvos(9.1, 15.0), watchos(3.0, 8.0));
+@property (nonatomic, copy, nullable) void (^fetchWebAuthTokenCompletionBlock)(NSString * _Nullable webAuthToken, NSError * _Nullable operationError) CK_SWIFT_DEPRECATED("Use fetchWebAuthTokenResultBlock instead", macos(10.11, 12.0), ios(9.2, 15.0), tvos(9.1, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKLocationSortDescriptor.h	2023-05-19 21:55:43
@@ -7,12 +7,13 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 @class CLLocation;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
-NS_SWIFT_SENDABLE
 @interface CKLocationSortDescriptor : NSSortDescriptor <NSSecureCoding>
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h	2023-03-09 23:53:30
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordZonesOperation.h	2023-05-19 21:55:44
@@ -46,7 +46,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^modifyRecordZonesCompletionBlock)(NSArray<CKRecordZone *> * _Nullable savedRecordZones, NSArray<CKRecordZoneID *> * _Nullable deletedRecordZoneIDs, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use modifyRecordZonesResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use modifyRecordZonesResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2023-03-09 19:24:14
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKModifyRecordsOperation.h	2023-05-19 21:55:44
@@ -112,7 +112,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^modifyRecordsCompletionBlock)(NSArray<CKRecord *> * _Nullable savedRecords, NSArray<CKRecordID *> * _Nullable deletedRecordIDs, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use modifyRecordsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use modifyRecordsResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2023-03-09 19:13:43
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKNotification.h	2023-05-19 22:10:20
@@ -16,25 +16,52 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on swift(4.2)
 @interface CKNotificationID : NSObject <NSCopying, NSSecureCoding>
 @end
 
-/*! @enum CKNotificationType
- *
- *  @constant CKNotificationTypeQuery Generated by @c CKQuerySubscriptions
- *  @constant CKNotificationTypeRecordZone Generated by @c CKRecordZoneSubscriptions
- *  @constant CKNotificationTypeReadNotification Indicates a notification that a client had previously marked as read
- *  @constant CKNotificationTypeDatabase Generated by @c CKDatabaseSubscriptions
- */
 typedef NS_ENUM(NSInteger, CKNotificationType) {
+    /// Generated by `CKQuerySubscription`s
     CKNotificationTypeQuery            = 1,
+
+    /// Generated by `CKRecordZoneSubscription`s
     CKNotificationTypeRecordZone       = 2,
+
+    /// Indicates a notification that a client had previously marked as read
     CKNotificationTypeReadNotification = 3,
+
+    /// Generated by `CKDatabaseSubscription`s
     CKNotificationTypeDatabase         API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 4,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
+/// Pushes from CloudKit servers contain both CloudKit-specific and APS-specific information.
+/// APS-specific information includes elements like alerts, badges, sounds, categories, etc.
+/// When receiving a push from CloudKit servers, the push may be delivered via multiple API flows.
+/// The flow(s) chosen will depend on the type of push requested (e.g. via the `CKSubscription`
+/// that triggered it and its configured `notificationInfo`).
+///
+/// Pushes with UI elements (alerts, badges, sounds):
+/// These pushes are delivered via the `UserNotifications` framework, in the form of a `UNNotification`
+/// Applications should use the `UserNotifications` framework to interact with the UI elements of this push.
+/// Applications may create a `CKNotification` from a `UNNotification` in their `UNUserNotificationCenterDelegate`:
+///
+///     func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification) async -> UNNotificationPresentationOptions {
+///         let ckNotification = CKNotification(fromRemoteNotificationDictionary: notification.request.content.userInfo)
+///     }
+///
+/// Pushes with `content-available`:
+/// These pushes are delivered via an application delegate, in the form of a remote notification.
+/// For example: `UIApplicationDelegate.application(_:didReceiveRemoteNotification:) async`
+/// Applications do not need to interact with any UI element in the push payload argument, that's intended to be handled via the `UserNotifications` flow
+/// (a push with both UI elements and `content-available` will be delivered via both API flows)
+/// Applications may create a `CKNotification` from the remote notification in their `UIApplicationDelegate`:
+///
+///     func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) async -> UIBackgroundFetchResult {
+///         let ckNotification = CKNotification(fromRemoteNotificationDictionary: userInfo)
+///     }
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
 NS_SWIFT_SENDABLE
 @interface CKNotification : NSObject
 
@@ -43,69 +70,47 @@
 
 + (nullable instancetype)notificationFromRemoteNotificationDictionary:(NSDictionary *)notificationDictionary;
 
-/*! When you instantiate a CKNotification from a remote notification dictionary, you will get back a concrete
- subclass defined below.  Use notificationType to avoid -isKindOfClass: checks */
+/// When you instantiate a `CKNotification` from a remote notification dictionary, you will get back a concrete
+/// subclass defined below.  Use `notificationType` to avoid `as?` or `-isKindOfClass:` checks.
 @property (nonatomic, readonly, assign) CKNotificationType notificationType;
 
 @property (nonatomic, readonly, copy, nullable) CKNotificationID *notificationID;
 
 @property (nonatomic, readonly, copy, nullable) NSString *containerIdentifier;
 
-/*! The user recordID of the owner of the subscription for which this notification was generated */
+/// The user `recordID` of the owner of the subscription for which this notification was generated
 @property (nonatomic, readonly, copy, nullable) CKRecordID *subscriptionOwnerUserRecordID API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
 
-/*! @abstract Whether or not the notification fully represents what the server wanted to send.
- *
- *  @discussion Push notifications have a limited size.  In some cases, CloudKit servers may not be able to send you a full @c CKNotification's worth of info in one push.  In those cases, isPruned returns YES.  The order in which we'll drop properties is defined in each @c CKNotification subclass below.
- *  The @c CKNotification can be obtained in full via a @c CKFetchNotificationChangesOperation
- */
+/// Whether or not the notification fully represents what the server wanted to send.
+///
+/// Push notifications have a limited size.  In some cases, CloudKit servers may not be able to send you a full `CKNotification`'s worth of info in one push.
+/// In those cases, `isPruned` returns `true`.
+/// The order in which properties are dropped from a push notification is defined in each `CKNotification` subclass below.
 @property (nonatomic, readonly, assign) BOOL isPruned;
 
+/// The ID of the subscription that caused this notification to fire.
+@property (nonatomic, readonly, copy, nullable) CKSubscriptionID subscriptionID API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0));
 
-/*! @discussion
- *  These keys are parsed out of the 'aps' payload from a remote notification dictionary.
- *  On tvOS, alerts, badges, sounds, and categories are not handled in push notifications.
- */
+@end
 
-/*! Optional alert string to display in a push notification. */
+API_DEPRECATED_BEGIN("Interact with UI elements of a CloudKit-server-generated push message via UserNotifications.framework", macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0))
+@interface CKNotification (DeprecatedAPSProperties)
 @property (nonatomic, readonly, copy, nullable) NSString *alertBody __TVOS_PROHIBITED;
-/*! Instead of a raw alert string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
 @property (nonatomic, readonly, copy, nullable) NSString *alertLocalizationKey __TVOS_PROHIBITED;
-/*! A list of field names to take from the matching record that is used as substitution variables in a formatted alert string. */
 @property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *alertLocalizationArgs __TVOS_PROHIBITED;
-
-/*! Optional title of the alert to display in a push notification. */
-@property (nonatomic, readonly, copy, nullable) NSString *title API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-/*! Instead of a raw title string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
-@property (nonatomic, readonly, copy, nullable) NSString *titleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-/*! A list of field names to take from the matching record that is used as substitution variables in a formatted title string. */
-@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *titleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-
-/*! Optional subtitle of the alert to display in a push notification. */
-@property (nonatomic, readonly, copy, nullable) NSString *subtitle API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-/*! Instead of a raw subtitle string, you may optionally specify a key for a localized string in your app's Localizable.strings file. */
-@property (nonatomic, readonly, copy, nullable) NSString *subtitleLocalizationKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-/*! A list of field names to take from the matching record that is used as substitution variables in a formatted subtitle string. */
-@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *subtitleLocalizationArgs API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) __TVOS_PROHIBITED;
-
-
-/*! A key for a localized string to be used as the alert action in a modal style notification. */
+@property (nonatomic, readonly, copy, nullable) NSString *title __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
+@property (nonatomic, readonly, copy, nullable) NSString *titleLocalizationKey __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
+@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *titleLocalizationArgs __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
+@property (nonatomic, readonly, copy, nullable) NSString *subtitle __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
+@property (nonatomic, readonly, copy, nullable) NSString *subtitleLocalizationKey __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
+@property (nonatomic, readonly, copy, nullable) NSArray<NSString *> *subtitleLocalizationArgs __TVOS_PROHIBITED API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0));
 @property (nonatomic, readonly, copy, nullable) NSString *alertActionLocalizationKey __TVOS_PROHIBITED;
-/*! The name of an image in your app bundle to be used as the launch image when launching in response to the notification. */
 @property (nonatomic, readonly, copy, nullable) NSString *alertLaunchImage __TVOS_PROHIBITED;
-
-/*! The number to display as the badge of the application icon */
 @property (nonatomic, readonly, copy, nullable) NSNumber *badge API_AVAILABLE(tvos(10.0));
-/*! The name of a sound file in your app bundle to play upon receiving the notification. */
 @property (nonatomic, readonly, copy, nullable) NSString *soundName __TVOS_PROHIBITED;
-
-/*! The ID of the subscription that caused this notification to fire */
-@property (nonatomic, readonly, copy, nullable) CKSubscriptionID subscriptionID API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0));
-
-/*! The category for user-initiated actions in the notification */
-@property (nonatomic, readonly, copy, nullable) NSString *category API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0)) __TVOS_PROHIBITED;
-
+@property (nonatomic, readonly, copy, nullable) NSString *category __TVOS_PROHIBITED API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0));
 @end
+API_DEPRECATED_END // macos(10.10, 14.0), ios(8.0, 17.0), tvos(9.0, 17.0), watchos(3.0, 10.0))
 
 typedef NS_ENUM(NSInteger, CKQueryNotificationReason) {
     CKQueryNotificationReasonRecordCreated = 1,
@@ -113,41 +118,40 @@
     CKQueryNotificationReasonRecordDeleted,
 } API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-/*! @class CKQueryNotification
- *
- *  @discussion @c notificationType == @c CKNotificationTypeQuery
- *  When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
- *  - notificationID
- *  - badge
- *  - alertLocalizationKey
- *  - alertLocalizationArgs
- *  - alertBody
- *  - alertActionLocalizationKey
- *  - alertLaunchImage
- *  - soundName
- *  - content-available
- *  - desiredKeys
- *  - queryNotificationReason
- *  - recordID
- *  - containerIdentifier
- *  - subscriptionOwnerUserRecordID
- *  - titleLocalizationKey
- *  - titleLocalizationArgs
- *  - title
- *  - subtitleLocalizationKey
- *  - subtitleLocalizationArgs
- *  - subtitle
- */
+/// A notification generated by a `CKQuerySubscription`
+///
+/// `notificationType` == `.query`
+/// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
+/// - notificationID
+/// - badge
+/// - alertLocalizationKey
+/// - alertLocalizationArgs
+/// - alertBody
+/// - alertActionLocalizationKey
+/// - alertLaunchImage
+/// - soundName
+/// - content-available
+/// - desiredKeys
+/// - queryNotificationReason
+/// - recordID
+/// - containerIdentifier
+/// - subscriptionOwnerUserRecordID
+/// - titleLocalizationKey
+/// - titleLocalizationArgs
+/// - title
+/// - subtitleLocalizationKey
+/// - subtitleLocalizationArgs
+/// - subtitle
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 NS_SWIFT_SENDABLE
 @interface CKQueryNotification : CKNotification
 
 @property (nonatomic, readonly, assign) CKQueryNotificationReason queryNotificationReason;
 
-/*! @abstract A set of key->value pairs for creates and updates.
- *
- *  @discussion You request the server fill out this property via the @c desiredKeys property of @c CKNotificationInfo
- */
+/// A set of key->value pairs for creates and updates.
+///
+/// You request the server fill out this property via the `desiredKeys` property of `CKSubscription.NotificationInfo`
 @property (nonatomic, readonly, copy, nullable) NSDictionary<NSString *, NS_SWIFT_SENDABLE id> *recordFields;
 
 @property (nonatomic, readonly, copy, nullable) CKRecordID *recordID;
@@ -157,31 +161,30 @@
 @end
 
 
-/*! @class CKRecordZoneNotification
- *
- *  @discussion @c notificationType == @c CKNotificationTypeRecordZone
- *  When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
- *  - notificationID
- *  - badge
- *  - alertLocalizationKey
- *  - alertLocalizationArgs
- *  - alertBody
- *  - alertActionLocalizationKey
- *  - alertLaunchImage
- *  - soundName
- *  - content-available
- *  - recordZoneID
- *  - containerIdentifier
- *  - subscriptionOwnerUserRecordID
- *  - titleLocalizationKey
- *  - titleLocalizationArgs
- *  - title
- *  - subtitleLocalizationKey
- *  - subtitleLocalizationArgs
- *  - subtitle
- */
-
+/// A notification generated by a `CKRecordZoneSubscription`
+///
+/// `notificationType` == `.recordZone`
+/// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
+/// - notificationID
+/// - badge
+/// - alertLocalizationKey
+/// - alertLocalizationArgs
+/// - alertBody
+/// - alertActionLocalizationKey
+/// - alertLaunchImage
+/// - soundName
+/// - content-available
+/// - recordZoneID
+/// - containerIdentifier
+/// - subscriptionOwnerUserRecordID
+/// - titleLocalizationKey
+/// - titleLocalizationArgs
+/// - title
+/// - subtitleLocalizationKey
+/// - subtitleLocalizationArgs
+/// - subtitle
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 NS_SWIFT_SENDABLE
 @interface CKRecordZoneNotification : CKNotification
 
@@ -192,30 +195,29 @@
 @end
 
 
-/*! @class CKDatabaseNotification
- *
- *  @discussion @c notificationType == @c CKNotificationTypeDatabase
- *  When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
- *  - notificationID
- *  - badge
- *  - alertLocalizationKey
- *  - alertLocalizationArgs
- *  - alertBody
- *  - alertActionLocalizationKey
- *  - alertLaunchImage
- *  - soundName
- *  - content-available
- *  - containerIdentifier
- *  - subscriptionOwnerUserRecordID
- *  - titleLocalizationKey
- *  - titleLocalizationArgs
- *  - title
- *  - subtitleLocalizationKey
- *  - subtitleLocalizationArgs
- *  - subtitle
- */
-
+/// A notification generated by a `CKDatabaseSubscription`
+///
+/// `notificationType` == `.database`
+/// When properties must be dropped (see @c isPruned), here's the order of importance.  The most important properties are first, they'll be the last ones to be dropped.
+/// - notificationID
+/// - badge
+/// - alertLocalizationKey
+/// - alertLocalizationArgs
+/// - alertBody
+/// - alertActionLocalizationKey
+/// - alertLaunchImage
+/// - soundName
+/// - content-available
+/// - containerIdentifier
+/// - subscriptionOwnerUserRecordID
+/// - titleLocalizationKey
+/// - titleLocalizationArgs
+/// - title
+/// - subtitleLocalizationKey
+/// - subtitleLocalizationArgs
+/// - subtitle
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 NS_SWIFT_SENDABLE
 @interface CKDatabaseNotification : CKNotification
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h	2023-03-09 19:13:43
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperation.h	2023-05-19 21:55:44
@@ -68,6 +68,7 @@
  *  = allow cellular access
  */
 API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKOperationConfiguration : NSObject
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	2023-03-09 19:16:59
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKOperationGroup.h	2023-05-19 22:09:54
@@ -47,6 +47,7 @@
  *  You associate @c CKOperationGroup s with@c  CKOperation s by setting the @c CKOperation.group property.  Create a new @c CKOperationGroup instance for each distinct user action.
  */
 API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKOperationGroup : NSObject <NSSecureCoding>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQuery.h	2023-05-19 21:55:44
@@ -30,6 +30,8 @@
  * Any other class as an argument will result in an error when executing the query.
  */
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKQuery : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -39,8 +41,8 @@
 /*! Use @code [NSPredicate predicateWithValue:YES] / NSPredicate(value: true) @endcode if you want to query for all records of a given type. */
 - (instancetype)initWithRecordType:(CKRecordType)recordType predicate:(NSPredicate *)predicate NS_DESIGNATED_INITIALIZER;
 
-@property (nonatomic, readonly, copy) CKRecordType recordType;
-@property (nonatomic, readonly, copy) NSPredicate *predicate;
+@property (atomic, readonly, copy) CKRecordType recordType;
+@property (atomic, readonly, copy) NSPredicate *predicate;
 
 @property (atomic, copy, nullable) NSArray<NSSortDescriptor *> *sortDescriptors;
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h	2023-03-09 19:17:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKQueryOperation.h	2023-05-19 22:09:54
@@ -16,6 +16,7 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKQueryCursor : NSObject <NSCopying, NSSecureCoding>
 - (instancetype)init NS_UNAVAILABLE;
@@ -89,7 +90,7 @@
  *  should not be concurrently used outside of blocks assigned to this operation.
  */
 @property (nonatomic, copy, nullable) void (^queryCompletionBlock)(CKQueryCursor * _Nullable cursor, NSError * _Nullable operationError)
-CK_SWIFT_DEPRECATED("Use queryResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0));
+CK_SWIFT_DEPRECATED("Use queryResultBlock instead", macos(10.10, 12.0), ios(8.0, 15.0), tvos(9.0, 15.0), watchos(3.0, 8.0), xros(1.0, 1.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecord.h	2023-05-19 22:14:13
@@ -23,14 +23,30 @@
 /*! Use this constant for the recordType parameter when fetching User Records. */
 CK_EXTERN CKRecordType const CKRecordTypeUserRecord API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
-/*! Use these keys in queries to match on the record's parent or share reference */
+/*! For use in queries to match on record properties.  Matches `record.recordID`.  Value is a `CKRecordID` */
+CK_EXTERN CKRecordFieldKey const CKRecordRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+
+/*! For use in queries to match on record properties.  Matches `record.creatorUserRecordID`.  Value is a `CKRecordID` */
+CK_EXTERN CKRecordFieldKey const CKRecordCreatorUserRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+/*! For use in queries to match on record properties.  Matches `record.creationDate`.  Value is a `NSDate` */
+CK_EXTERN CKRecordFieldKey const CKRecordCreationDateKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+
+/*! For use in queries to match on record properties.  Matches `record.lastModifiedUserRecordID`.  Value is a `CKRecordID` */
+CK_EXTERN CKRecordFieldKey const CKRecordLastModifiedUserRecordIDKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+/*! For use in queries to match on record properties.  Matches `record.modificationDate`.  Value is a `NSDate` */
+CK_EXTERN CKRecordFieldKey const CKRecordModificationDateKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) NS_REFINED_FOR_SWIFT;
+
+/*! For use in queries to match on record properties.  Matches `record.parent` */
 CK_EXTERN CKRecordFieldKey const CKRecordParentKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+/*! For use in queries to match on record properties.  Matches `record.share` */
 CK_EXTERN CKRecordFieldKey const CKRecordShareKey API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 @protocol CKRecordValue <NSObject>
 @end
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKRecord : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -42,19 +58,19 @@
 - (instancetype)initWithRecordType:(CKRecordType)recordType recordID:(CKRecordID *)recordID;
 - (instancetype)initWithRecordType:(CKRecordType)recordType zoneID:(CKRecordZoneID *)zoneID;
 
-@property (nonatomic, readonly, copy) CKRecordType recordType;
-@property (nonatomic, readonly, copy) CKRecordID *recordID;
+@property (atomic, readonly, copy) CKRecordType recordType;
+@property (atomic, readonly, copy) CKRecordID *recordID;
 
 /*! Change tags are updated by the server to a unique value every time a record is modified.  A different change tag necessarily means that the contents of the record are different. */
-@property (nonatomic, readonly, copy, nullable) NSString *recordChangeTag;
+@property (atomic, readonly, copy, nullable) NSString *recordChangeTag;
 
 /*! This is a User Record recordID, identifying the user that created this record. */
-@property (nonatomic, readonly, copy, nullable) CKRecordID *creatorUserRecordID;
-@property (nonatomic, readonly, copy, nullable) NSDate *creationDate;
+@property (atomic, readonly, copy, nullable) CKRecordID *creatorUserRecordID;
+@property (atomic, readonly, copy, nullable) NSDate *creationDate;
 
 /*! This is a User Record recordID, identifying the user that last modified this record. */
-@property (nonatomic, readonly, copy, nullable) CKRecordID *lastModifiedUserRecordID;
-@property (nonatomic, readonly, copy, nullable) NSDate *modificationDate;
+@property (atomic, readonly, copy, nullable) CKRecordID *lastModifiedUserRecordID;
+@property (atomic, readonly, copy, nullable) NSDate *modificationDate;
 
 /*! @discussion In addition to @c objectForKey: and @c setObject:forKey:, dictionary-style subscripting (@c record[key] and @code record[key] = value @endcode) can be used to get and set values.
  *  Acceptable value object classes are:
@@ -69,6 +85,8 @@
  *
  *  Any other classes will result in an exception with name @c NSInvalidArgumentException.
  *
+ *  Whenever possible, value objects will be copied when set on a record.
+ *
  *  Field keys starting with '_' are reserved. Attempting to set a key prefixed with a '_' will result in an error.
  *
  *  Key names roughly match C variable name restrictions. They must begin with an ASCII letter and can contain ASCII letters and numbers and the underscore character.
@@ -130,7 +148,7 @@
  *
  *  Whenever possible, it is suggested that you construct your parent hierarchies such that you will only need to share the topmost record of that hierarchy.
  */
-@property (nonatomic, readonly, copy, nullable) CKReference *share API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+@property (atomic, readonly, copy, nullable) CKReference *share API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /*! @abstract Use a parent reference to teach CloudKit about the hierarchy of your records.
  *
@@ -143,7 +161,7 @@
  *  You are encouraged to set up the @c parent relationships as part of normal record saves, even if you're not planning on sharing records at this time.
  *  This allows you to share and unshare a hierarchy of records at a later date by only modifying the "top level" record, setting or clearing its @c share reference.
  */
-@property (nonatomic, copy, nullable) CKReference *parent API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
+@property (atomic, copy, nullable) CKReference *parent API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
 
 /*! Convenience wrappers around creating a @c CKReference to a parent record. The resulting @c CKReference will have @code referenceAction = CKReferenceActionNone @endcode */
 - (void)setParentReferenceFromRecord:(nullable CKRecord *)parentRecord API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0));
@@ -187,13 +205,13 @@
 @end
 
 API_AVAILABLE(macos(10.11), ios(9.0), watchos(3.0))
-@interface CKRecord(CKRecordKeyValueSettingConformance) <CKRecordKeyValueSetting>
+@interface CKRecord (CKRecordKeyValueSettingConformance) <CKRecordKeyValueSetting>
 
 /*! Any values set here will be locally encrypted before being saved to the server and locally decrypted when fetched from the server. Encryption and decryption is handled by the CloudKit framework.
  * Key material necessary for decryption are available to the owner of the record, as well as any users that can access this record via a CKShare.
  * All CKRecordValue types can be set here except CKAsset and CKReference.
  */
-@property (nonatomic, readonly, copy) id<CKRecordKeyValueSetting> encryptedValues API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+@property (atomic, readonly, copy) NS_SWIFT_SENDABLE id<CKRecordKeyValueSetting> encryptedValues API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
                                                                                                      
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordID.h	2023-05-19 21:55:43
@@ -7,11 +7,14 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 @class CKRecordZoneID;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 NS_SWIFT_SENDABLE
 @interface CKRecordID : NSObject <NSSecureCoding, NSCopying>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZone.h	2023-05-19 21:55:43
@@ -27,6 +27,8 @@
 CK_EXTERN NSString * const CKRecordZoneDefaultName API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0));
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKRecordZone : NSObject <NSSecureCoding, NSCopying>
 
 + (CKRecordZone *)defaultRecordZone;
@@ -36,10 +38,10 @@
 - (instancetype)initWithZoneName:(NSString *)zoneName;
 - (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID;
 
-@property (nonatomic, readonly, copy) CKRecordZoneID *zoneID;
+@property (atomic, readonly, copy) CKRecordZoneID *zoneID;
 
 /*! Capabilities on locally-created record zones are not valid until the record zone is saved. Capabilities on record zones fetched from the server are valid. */
-@property (nonatomic, readonly, assign) CKRecordZoneCapabilities capabilities;
+@property (atomic, readonly, assign) CKRecordZoneCapabilities capabilities;
 
 /*! @discussion The share property on a record zone will only be set on zones fetched from the server and only if a
  * corresponding zone-wide share record for the zone exists on the server.
@@ -49,7 +51,7 @@
  *  Zone-wide sharing is only supported in zones with the @c CKRecordZoneCapabilityZoneWideSharing sharing capability.
  *  You cannot share a zone if it already contains shared records.
  */
-@property (nonatomic, readonly, copy, nullable) CKReference *share API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+@property (atomic, readonly, copy, nullable) CKReference *share API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKRecordZoneID.h	2023-05-19 21:55:44
@@ -7,9 +7,12 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKRecordZoneID : NSObject <NSSecureCoding, NSCopying>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKReference.h	2023-05-19 21:55:44
@@ -7,6 +7,8 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 @class CKRecord, CKRecordID, CKAsset;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
@@ -22,6 +24,7 @@
 
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 NS_SWIFT_SENDABLE
 @interface CKReference : NSObject <NSSecureCoding, NSCopying>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKServerChangeToken.h	2023-05-19 21:55:43
@@ -10,6 +10,7 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
 NS_SWIFT_SENDABLE
 @interface CKServerChangeToken : NSObject <NSCopying, NSSecureCoding>
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2023-03-09 23:53:28
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShare.h	2023-05-19 22:26:54
@@ -37,6 +37,8 @@
  */
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKShare : CKRecord <NSSecureCoding, NSCopying>
 
 /*! When saving a newly created CKShare, you must save the share and its rootRecord in the same CKModifyRecordsOperation batch. */
@@ -64,23 +66,23 @@
  *  Changing the public permission to @c CKShareParticipantPermissionReadOnly or @c CKShareParticipantPermissionReadWrite will result in all pending participants being removed.  Already-accepted participants will remain on the share.
  *  Changing the public permission to @c CKShareParticipantPermissionNone will result in all participants being removed from the share.  You may subsequently choose to call @c addParticipant: before saving the share, those participants will be added to the share.
  */
-@property (nonatomic, assign) CKShareParticipantPermission publicPermission;
+@property (atomic, assign) CKShareParticipantPermission publicPermission;
 
 /*! @abstract A URL that can be used to invite participants to this share.
  *
  *  @discussion Only available after share record has been saved to the server.  This url is stable, and is tied to the rootRecord.  That is, if you share a rootRecord, delete the share, and re-share the same rootRecord via a newly created share, that newly created share's url will be identical to the prior share's url
  */
-@property (nonatomic, readonly, copy, nullable) NSURL *URL;
+@property (atomic, readonly, copy, nullable) NSURL *URL;
 
 /*! @abstract All participants on the share that the current user has permissions to see.
  *
  *  @discussion At the minimum that will include the owner and the current user.
  */
-@property (nonatomic, readonly, copy) NSArray<CKShareParticipant *> *participants;
+@property (atomic, readonly, copy) NSArray<CKShareParticipant *> *participants;
 
 /*! Convenience methods for fetching special users from the participant array */
-@property (nonatomic, readonly, copy) CKShareParticipant *owner;
-@property (nonatomic, readonly, copy, nullable) CKShareParticipant *currentUserParticipant;
+@property (atomic, readonly, copy) CKShareParticipant *owner;
+@property (atomic, readonly, copy, nullable) CKShareParticipant *currentUserParticipant;
 
 /*! @discussion If a participant with a matching userIdentity already exists, then that existing participant's properties will be updated; no new participant will be added.
  *  In order to modify the list of participants, a share must have publicPermission set to @c CKShareParticipantPermissionNone.  That is, you cannot mix-and-match private users and public users in the same share.
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareMetadata.h	2023-05-19 21:55:44
@@ -5,6 +5,7 @@
 //  Copyright © 2016 Apple Inc. All rights reserved.
 //
 
+#import <CloudKit/CKDefines.h>
 #import <CloudKit/CKShareParticipant.h>
 
 @class CKShare, CKRecord, CKRecordID;
@@ -12,24 +13,26 @@
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKShareMetadata : NSObject <NSCopying, NSSecureCoding>
 
-@property (nonatomic, readonly, copy) NSString *containerIdentifier;
-@property (nonatomic, readonly, copy) CKShare *share;
-@property (nonatomic, readonly, copy, nullable) CKRecordID *hierarchicalRootRecordID API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
+@property (atomic, readonly, copy) NSString *containerIdentifier;
+@property (atomic, readonly, copy) CKShare *share;
+@property (atomic, readonly, copy, nullable) CKRecordID *hierarchicalRootRecordID API_AVAILABLE(macos(12.0), ios(15.0), tvos(15.0), watchos(8.0));
 
 /*! These properties reflect the participant properties of the user invoking CKFetchShareMetadataOperation */
-@property (nonatomic, readonly, assign) CKShareParticipantRole participantRole API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
-@property (nonatomic, readonly, assign) CKShareParticipantAcceptanceStatus participantStatus;
-@property (nonatomic, readonly, assign) CKShareParticipantPermission participantPermission;
+@property (atomic, readonly, assign) CKShareParticipantRole participantRole API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
+@property (atomic, readonly, assign) CKShareParticipantAcceptanceStatus participantStatus;
+@property (atomic, readonly, assign) CKShareParticipantPermission participantPermission;
 
-@property (nonatomic, readonly, copy) CKUserIdentity *ownerIdentity;
+@property (atomic, readonly, copy) CKUserIdentity *ownerIdentity;
 
 /*! This is only present if the share metadata was returned from a CKFetchShareMetadataOperation with shouldFetchRootRecord set to YES */  
-@property (nonatomic, readonly, copy, nullable) CKRecord *rootRecord;
+@property (atomic, readonly, copy, nullable) CKRecord *rootRecord;
 
-@property (nonatomic, readonly, assign) CKShareParticipantType participantType API_DEPRECATED_WITH_REPLACEMENT("participantRole", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
-@property (nonatomic, readonly, copy) CKRecordID *rootRecordID API_DEPRECATED_WITH_REPLACEMENT("hierarchicalRootRecordID", macos(10.12, 13.0), ios(10.0, 16.0), tvos(10.0, 16.0), watchos(3.0, 9.0));
+@property (atomic, readonly, assign) CKShareParticipantType participantType API_DEPRECATED_WITH_REPLACEMENT("participantRole", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
+@property (atomic, readonly, copy) CKRecordID *rootRecordID API_DEPRECATED_WITH_REPLACEMENT("hierarchicalRootRecordID", macos(10.12, 13.0), ios(10.0, 16.0), tvos(10.0, 16.0), watchos(3.0, 9.0));
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKShareParticipant.h	2023-05-19 21:55:44
@@ -48,24 +48,26 @@
 } API_DEPRECATED_WITH_REPLACEMENT("CKShareParticipantRole", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKShareParticipant : NSObject <NSSecureCoding, NSCopying>
 
 /*! Use @c CKFetchShareParticipantsOperation to create a @c CKShareParticipant object */
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
 
-@property (nonatomic, readonly, copy) CKUserIdentity *userIdentity;
+@property (atomic, readonly, copy) CKUserIdentity *userIdentity;
 
 /*! The default participant role is @c CKShareParticipantRolePrivateUser. */
-@property (nonatomic, assign) CKShareParticipantRole role API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
+@property (atomic, assign) CKShareParticipantRole role API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0));
 
 /*! The default participant type is @c CKShareParticipantTypePrivateUser. */
-@property (nonatomic, assign) CKShareParticipantType type API_DEPRECATED_WITH_REPLACEMENT("role", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
+@property (atomic, assign) CKShareParticipantType type API_DEPRECATED_WITH_REPLACEMENT("role", macos(10.12, 10.14), ios(10.0, 12.0), tvos(10.0, 12.0), watchos(3.0, 5.0));
 
-@property (nonatomic, readonly, assign) CKShareParticipantAcceptanceStatus acceptanceStatus;
+@property (atomic, readonly, assign) CKShareParticipantAcceptanceStatus acceptanceStatus;
 
 /*! The default permission for a new participant is @c CKShareParticipantPermissionReadOnly. */
-@property (nonatomic, assign) CKShareParticipantPermission permission;
+@property (atomic, assign) CKShareParticipantPermission permission;
 
 @end
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h	2023-03-09 19:09:11
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSubscription.h	2023-05-19 22:26:55
@@ -23,6 +23,8 @@
 typedef NSString *CKSubscriptionID;
 
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0))
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKSubscription : NSObject <NSSecureCoding, NSCopying>
 
 - (instancetype)init NS_UNAVAILABLE;
@@ -54,17 +56,19 @@
  *  @discussion @c CKQuerySubscriptions are not supported in a @c sharedCloudDatabase
  */
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(6.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
+// NS_SWIFT_SENDABLE on macos(14.0), ios(17.0), tvos(17.0), watchos(10.0)
 @interface CKQuerySubscription : CKSubscription <NSSecureCoding, NSCopying>
 
-- (instancetype)initWithRecordType:(CKRecordType)recordType predicate:(NSPredicate *)predicate options:(CKQuerySubscriptionOptions)querySubscriptionOptions;
+- (instancetype)initWithRecordType:(CKRecordType)recordType predicate:(NSPredicate *)predicate options:(CKQuerySubscriptionOptions)querySubscriptionOptions API_DEPRECATED_WITH_REPLACEMENT("initWithRecordType:predicate:subscriptionID:options:", macos(10.12, 10.12), ios(10.0, 10.0), tvos(10.0, 10.0), watchos(6.0, 6.0));
 - (instancetype)initWithRecordType:(CKRecordType)recordType predicate:(NSPredicate *)predicate subscriptionID:(CKSubscriptionID)subscriptionID options:(CKQuerySubscriptionOptions)querySubscriptionOptions NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
 
 /*! The record type that this subscription watches */
-@property (nonatomic, readonly, copy) CKRecordType recordType;
+@property (atomic, readonly, copy) CKRecordType recordType;
 
 /*! A predicate that determines when the subscription fires. */
-@property (nonatomic, readonly, copy) NSPredicate *predicate;
+@property (atomic, readonly, copy) NSPredicate *predicate;
 
 /*! Optional property.  If set, a query subscription is scoped to only record changes in the indicated zone.
  *  Query Subscriptions that do not specify a @c zoneID are scoped to record changes across all zones in the database.
@@ -78,7 +82,7 @@
  *  @c CKQuerySubscriptionOptionsFiresOnRecordUpdate, or
  *  @c CKQuerySubscriptionOptionsFiresOnRecordDeletion must be specified or an @c NSInvalidArgumentException will be thrown.
  */
-@property (nonatomic, readonly, assign) CKQuerySubscriptionOptions querySubscriptionOptions;
+@property (atomic, readonly, assign) CKQuerySubscriptionOptions querySubscriptionOptions;
 
 @end
 
@@ -91,10 +95,11 @@
  *  @c CKRecordZoneSubscriptions are not supported in a @c sharedCloudDatabase
  */
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(6.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKRecordZoneSubscription : CKSubscription <NSSecureCoding, NSCopying>
 
-- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID;
+- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID API_DEPRECATED_WITH_REPLACEMENT("initWithZoneID:subscriptionID:", macos(10.12, 10.12), ios(10.0, 10.0), tvos(10.0, 10.0), watchos(6.0, 6.0));
 - (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID subscriptionID:(CKSubscriptionID)subscriptionID NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
 
@@ -113,10 +118,11 @@
  *  @discussion @c CKDatabaseSubscription is only supported in the Private and Shared databases.
  */
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(6.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKDatabaseSubscription : CKSubscription <NSSecureCoding, NSCopying>
 
-- (instancetype)init;
+- (instancetype)init API_DEPRECATED_WITH_REPLACEMENT("initWithSubscriptionID:", macos(10.12, 10.12), ios(10.0, 10.0), tvos(10.0, 10.0), watchos(6.0, 6.0));
 + (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
 - (instancetype)initWithSubscriptionID:(CKSubscriptionID)subscriptionID NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
@@ -135,6 +141,7 @@
  *  On tvOS, alerts, badges, sounds, and categories are not handled in push notifications. However, CKSubscriptions remain available to help you avoid polling the server.
  */
 API_AVAILABLE(macos(10.10), ios(8.0), watchos(6.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKNotificationInfo : NSObject <NSSecureCoding, NSCopying>
 
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngine.h	2023-05-19 22:14:14
@@ -0,0 +1,345 @@
+//
+//  CKSyncEngine.h
+//  CloudKit
+//
+//  Copyright © 2018 Apple Inc. All rights reserved.
+//
+
+#import <CloudKit/CKDefines.h>
+#import <CloudKit/CKSyncEngineRecordZoneChangeBatch.h>
+
+@class CKDatabase, CKOperationGroup, CKRecord, CKRecordID, CKRecordZone, CKRecordZoneID, CKSyncEngineConfiguration, CKSyncEngineEvent, CKSyncEngineFetchChangesOptions, CKSyncEngineSendChangesOptions, CKSyncEngineSendChangesContext, CKSyncEngineState, CKSyncEngineStateSerialization;
+@protocol CKSyncEngineDelegate;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// `CKSyncEngine` encapsulates the logic of syncing data with a CloudKit database.
+///
+/// Syncing with CloudKit involves many moving pieces.
+/// Apps need to schedule syncs, create and batch operations, subscribe to database changes,
+/// listen for push notifications, store sync state, handle a multitude of errors, and more.
+/// `CKSyncEngine` is designed to encapsulate this logic in a higher-level API.
+///
+/// # Start Your Sync Engine
+///
+/// Generally, you should initialize your `CKSyncEngine` soon after your process launches.
+/// The sync engine will perform work in the background on your behalf, and it needs to be initialized
+/// so that it can properly listen for push notifications and handle scheduled sync tasks.
+///
+/// When initializing your sync engine, you need to provide an object conforming to the ``CKSyncEngineDelegate`` protocol.
+/// This protocol is the main method of communication between the sync engine and your app.
+/// You also need to provide your last known version of the ``CKSyncEngine/State/Serialization``.
+/// See ``CKSyncEngine/State`` and ``Event/StateUpdate`` for more details on the sync engine state.
+///
+/// Note that before using `CKSyncEngine` in your app, you need to add the CloudKit and remote notification capabilities.
+///
+/// # Sending Changes to the Server
+///
+/// In order to send changes to the server, you first need to tell the sync engine you have pending changes to send.
+/// You can do this by adding pending changes to the sync engine's ``CKSyncEngine/state`` property.
+///
+/// When you add pending changes to the state, the sync engine will schedule a task to sync.
+/// When the sync task runs, the sync engine will start sending changes to the server.
+/// The sync engine will automatically send database changes from ``State/pendingDatabaseChanges``, but you need to provide the record zone changes yourself.
+/// In order to send record zone changes, you need to return them from ``CKSyncEngineDelegate/nextRecordZoneChangeBatch(_:syncEngine:)``.
+///
+/// When the sync engine finishes sending a batch of changes to the server,
+/// your `CKSyncEngineDelegate` will receive ``Event/sentDatabaseChanges(_:)`` and ``Event/sentRecordZoneChanges(_:)`` events.
+/// These events will notify you of the success or failure of the changes you tried to send.
+///
+/// At a high level, sending changes to the server happens with the following order of operations:
+///
+/// 1. You add pending changes to ``CKSyncEngine/state``.
+/// 2. You receive ``Event/willSendChanges(_:)`` in ``CKSyncEngineDelegate/handleEvent(_:syncEngine:)``
+/// 3. If there are pending database changes, the sync engine sends the next batch.
+/// 4. If any database changes were sent, your delegate receives``Event/sentDatabaseChanges(_:)``.
+/// 5. Repeat from step 3 until all pending database changes are sent, then move on to record zone changes in step 6.
+/// 6. The sync engine asks for the next batch of record zone changes by calling ``CKSyncEngineDelegate/nextRecordZoneChangeBatchToSend(_:syncEngine:)``.
+/// 7. The sync engine sends the next record zone change batch to the server.
+/// 8. If any record zone changes were sent, your delegate receives ``Event/sentRecordZoneChanges(_:)``.
+/// 9. If you added any pending database changes during steps 6-8, the sync engine repeats from step 3. Otherwise, it repeats from step 6.
+/// 10. When all pending changes are sent, your delegate receives ``Event/didSendChanges(_:)``.
+///
+/// # Fetching Changes from the Server
+///
+/// The sync engine will automatically listen for remote notifications, and it will fetch changes from the server when necessary.
+/// Generally, you'll receive events in this order:
+///
+/// 1. Your delegate receives ``Event/willFetchChanges(_:)``.
+/// 2. If there are new database changes to fetch, you receive batches of them in ``Event/fetchedDatabaseChanges(_:)`` events.
+/// 3. If there are new record zone changes to fetch, you will receive ``Event/willFetchRecordZoneChanges(_:)`` for each zone that has new changes.
+/// 4. The sync engine fetches record zone changes and gives you batches of them in ``Event/fetchedRecordZoneChanges(_:)`` events.
+/// 5. Your delegate receives ``Event/didFetchRecordZoneChanges(_:)`` for each zone that had changes to fetch.
+/// 6. Your delegate receives ``Event/didFetchChanges(_:)``, indicating that sync engine has finished fetching changes.
+///
+/// # Sync Scheduling
+///
+/// ## Automatic sync
+///
+/// By default, the sync engine will automatically schedule sync tasks on your behalf.
+/// If the user is signed in, the device has a network connection, and the system is generally in a good state, these scheduled syncs will happen relatively quickly.
+/// However, if the device has no network, is low on power, or is otherwise under a heavy load, these automatic syncs might be delayed.
+/// Similarly, if the user isn't signed in to an account, the sync engine won't perform any sync tasks at all.
+///
+/// ## Manual sync
+///
+/// Generally, you should rely on this automatic sync behavior, but there may be some cases where you want to manually trigger a sync.
+/// For example, if you have a pull-to-refresh UI, you can call ``CKSyncEngine/fetchChanges(_:)`` to tell the sync engine to fetch immediately.
+/// Or if you want to provide some sort of "backup now" button, you can call ``CKSyncEngine/sendChanges(_:)`` to send to the server immediately.
+///
+/// ### Testing
+///
+/// These manual sync functions might also be useful during automated testing.
+/// When writing automated tests, you can turn off automatic sync via ``CKSyncEngine/Configuration/automaticallySync``.
+/// Then, you'll have complete control over the ordering of sync events.
+/// This allows you to interject behavior in the sync flow and simulate specific sequences of events.
+///
+/// # Error Handling
+///
+/// There are some transient errors that the sync engine will handle automatically behind the scenes.
+/// The sync engine will retry the operations for these transient errors automatically when it makes sense to do so.
+/// Specifically, the sync engine will handle the following errors on your behalf:
+///
+/// * ``CKErrorCode/notAuthenticated``
+/// * ``CKErrorCode/accountTemporarilyUnavailable``
+/// * ``CKErrorCode/networkFailure``
+/// * ``CKErrorCode/networkUnavailable``
+/// * ``CKErrorCode/requestRateLimited``
+/// * ``CKErrorCode/serviceUnavailable``
+/// * ``CKErrorCode/zoneBusy``
+///
+/// When the sync engine encounters one of these errors, it will wait for the system to be in a good state and try again.
+/// For example, if the server sends back a `.requestRateLimited` error, the sync engine will respect this throttle and try again after the retry-after time.
+///
+/// `CKSyncEngine` will _not_ handle errors that require application-specific logic.
+/// For example, if you try to save a record and get a ``CKErrorCode/serverRecordChanged``, you need to handle that error yourself.
+/// There are plenty of errors that the sync engine cannot handle on your behalf, see ``CKErrorCode`` for a list of all the possible errors.
+///
+/// # Accounts
+///
+/// `CKSyncEngine` monitors for account status, and it will only sync if there's an account signed in.
+/// Because of this, you can initialize your `CKSyncEngine` at any time, regardless of account status.
+/// If there is no account, or if the user disabled sync in settings, the sync engine will stay dormant in the background.
+/// Once an account is available, the sync engine will start syncing automatically.
+///
+/// It will also listen for when the user signs in or out of their account.
+/// When it notices an account change, it will send an ``Event/accountChange(_:)`` to your delegate.
+/// It's your responsibility to react appropriately to this change and update your local persistence.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngine : NSObject
+
+/// Initializes a `CKSyncEngine` with the given configuration.
+/// See properties on ``CKSyncEngineConfiguration`` for more details on all the options.
+- (instancetype)initWithConfiguration:(CKSyncEngineConfiguration *)configuration NS_SWIFT_NAME(init(_:));
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// The database this sync engine will sync with.
+@property (atomic, readonly, strong) CKDatabase *database;
+
+/// A collection of state properties used to efficiently manage sync engine operation.
+/// See ``CKSyncEngineState`` for more details.
+@property (atomic, readonly, strong) CKSyncEngineState *state;
+
+#pragma mark - Fetching and Sending
+
+/// Fetches changes from the server immediately, bypassing the system scheduler.
+///
+/// By default, the sync engine will automatically fetch changes from the server for you, and you should not have to call this function.
+/// However, you can call this if for some reason you need to ensure all changes have been fetched from the server before proceeding.
+/// For example, you might use this in your tests to simulate specific sync scenarios.
+///
+/// Fetching changes from the server might result in some events being posted to your delegate via `handleEvent`.
+/// For example, you might receive a `CKSyncEngineWillFetchChangesEvent` or `CKSyncEngineWillFetchChangesEvent`.
+/// This will not complete until all the relevant events have been handled by your delegate.
+- (void)fetchChangesWithCompletionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable error))completionHandler;
+
+/// Fetches changes from the server with the specified options.
+/// See ``fetchChangesWithCompletionHandler:`` for more information.
+- (void)fetchChangesWithOptions:(CKSyncEngineFetchChangesOptions *)options completionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(fetchChanges(_:)) NS_SWIFT_NAME(fetchChanges(_:completionHandler:));
+
+/// Sends any pending changes to the server immediately, bypassing the system scheduler.
+///
+/// By default, the sync engine will automatically send changes to the server for you, and you should not have to call this function.
+/// However, you can call this if for some reason you need to ensure all changes have been sent to the server before proceeding.
+/// For example, you might consider using this in your tests to simulate specific sync scenarios.
+///
+/// Sending changes to the server might result in some events being posted to your delegate via `handleEvent`.
+/// For example, you might receive a `CKSyncEngineWillSendChangesEvent` or `CKSyncEngineDidSendChangesEvent`.
+/// This function will not return until all the relevant events have been handled by your delegate.
+- (void)sendChangesWithCompletionHandler:(nullable void (^)(NSError * _Nullable error))completionHandler;
+
+/// Sends pending changes to the server with the specified options.
+/// See discussion in ``sendChangesWithCompletionHandler:`` for more information.
+- (void)sendChangesWithOptions:(CKSyncEngineSendChangesOptions *)options completionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(NSError * _Nullable error))completionHandler NS_SWIFT_ASYNC_NAME(sendChanges(_:)) NS_SWIFT_NAME(sendChanges(_:completionHandler:));
+
+/// Cancels any currently executing or pending sync operations.
+///
+/// Note that cancellation does not happen synchronously, and it's possible some in-flight operations will succeed.
+- (void)cancelOperationsWithCompletionHandler:(nullable void (NS_SWIFT_SENDABLE ^)(void))completionHandler;
+
+@end
+
+#pragma mark - Delegate
+
+/// An interface by which `CKSyncEngine` communicates with your application.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+@protocol CKSyncEngineDelegate <NSObject>
+
+/// Called when an event occurs during the sync engine's operation.
+///
+/// This is how you receive updates about local state changes, fetched changes, sent changes, and more.
+/// See ``CKSyncEngineEventType`` and ``CKSyncEngineEvent`` for all the possible events that might be posted.
+///
+/// ## Event ordering
+///
+/// Events will be given to your delegate serially.
+/// You will not receive the next event until you have returned from this function for the previous event.
+- (void)syncEngine:(CKSyncEngine *)syncEngine handleEvent:(CKSyncEngineEvent *)event NS_SWIFT_NAME(syncEngine(_:handleEvent:));
+
+/// Called to get the next batch of record zone changes to send to the server.
+///
+/// The sync engine will call this function when it's about to to send changes to the server.
+/// This might happen during an automatically scheduled sync or as a result of you calling `sendChanges`.
+/// Provide the next batch of record zone changes to send by returning them from this function.
+///
+/// Once the sync engine starts sending changes, it will continue until there are no more pending changes to send.
+/// You can return `nil` to indicate that you have no more pending changes for now.
+/// The next time the sync engine tries to sync, it will call this again to get any new pending changes.
+///
+/// ## Sending changes for specific zones
+///
+/// When you call `sendChanges` for a specific set of zone IDs, you should make sure to only send changes for those zones.
+/// You can do this by checking the `zoneIDs` property on ``CKSyncEngineSendChangesContext/options``.
+///
+/// For example, you might have some code like this:
+///
+/// ```objc
+/// - (CKSyncEngineRecordZoneChangeBatch *)syncEngine:(CKSyncEngine *)syncEngine nextRecordZoneChangeBatchForContext:(CKSyncEngineSendChangesContext *)context {
+///     NSArray<CKRecordZoneID *> *zoneIDs = context.options.zoneIDs;
+///
+///     NSArray<CKSyncEnginePendingRecordZoneChange *> *pendingChangesToSave = syncEngine.state.pendingRecordZoneChanges;
+///     if (zoneIDs != nil) {
+///         NSMutableArray<CKSyncEnginePendingRecordZoneChange *> *filteredChanges = [NSMutableArray new];
+///         for (CKSyncEnginePendingRecordZoneChange *pendingChange in pendingChangesToSave) {
+///             if ([zoneIDs containsObject:pendingChange.recordID.zoneID]) {
+///                 [filteredChanges addObject:pendingChange];
+///             }
+///         }
+///         pendingChangesToSave = filteredChanges;
+///     }
+///
+///     CKSyncEngineRecordZoneChangeBatch *batch = [[CKSyncEngineRecordZoneChangeBatch alloc] initWithPendingChanges:pendingChangesToSave recordProvider:^CKRecord * _Nullable(CKRecordID *recordID) {
+///         return [self recordToSaveForRecordID:recordID];
+///     }];
+///
+///     return batch;
+/// }
+/// ```
+- (nullable CKSyncEngineRecordZoneChangeBatch *)syncEngine:(CKSyncEngine *)syncEngine nextRecordZoneChangeBatchForContext:(CKSyncEngineSendChangesContext *)context NS_SWIFT_NAME(syncEngine(_:nextRecordZoneChangeBatch:));
+
+@optional
+
+/// Called to determine whether the sync engine should fetch changes for a particular zone.
+///
+/// The default implementation always returns true, so the sync engine will fetch changes for all zones by default.
+/// If you don't want it to fetch changes for a particular zone, you can return false for that zone.
+///
+/// This function will be called any time the sync engine is about to fetch changes.
+- (BOOL)syncEngine:(CKSyncEngine *)syncEngine shouldFetchChangesForZoneID:(CKRecordZoneID *)zoneID NS_SWIFT_NAME(syncEngine(_:shouldFetchChanges:));
+
+@end
+
+#pragma mark - Misc
+
+/// A set of options to use when fetching changes from the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFetchChangesOptions : NSObject
+
+/// The scope of zone IDs in which to fetch changes.
+/// For example, if you only want to fetch changes for a particular zone, you can set the zone ID here.
+/// If this is `nil`, then the request will include all zones.
+@property (nullable, nonatomic, copy) NSArray<CKRecordZoneID *> *zoneIDs;
+
+/// The operation group to use for the underlying operations when fetching changes.
+///
+/// You might set an operation group with a particular name in order to help you analyze telemetry in the CloudKit Console.
+@property (nonatomic, strong) CKOperationGroup *operationGroup;
+
+/// Initializes a new set of request options with the given zone IDs and operation group.
+/// 
+/// If no operation group is specified, a default one will be used.
+- (instancetype)initWithZoneIDs:(nullable NSArray<CKRecordZoneID *> *)zoneIDs
+                 operationGroup:(nullable CKOperationGroup *)operationGroup;
+
+@end
+
+/// A set of options to use when sending changes to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineSendChangesOptions : NSObject
+
+/// The scope of zone IDs in which to send changes.
+/// 
+/// For example, if you only want to send changes for a particular zone, you can set the zone ID here.
+/// If this is `nil`, then this will send changes for all zones.
+@property (nullable, nonatomic, copy) NSArray<CKRecordZoneID *> *zoneIDs;
+
+/// The operation group to use for the underlying operations when sending changes.
+///
+/// You might set an operation group with a particular name in order to help you analyze telemetry in the CloudKit Console.
+@property (nonatomic, strong) CKOperationGroup *operationGroup;
+
+/// Initializes a new set of request options with the given zone IDs and operation group.
+/// 
+/// If no operation group is specified, a default one will be used.
+- (instancetype)initWithZoneIDs:(nullable NSArray<CKRecordZoneID *> *)zoneIDs
+                 operationGroup:(nullable CKOperationGroup *)operationGroup;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEngineSyncReason) {
+
+    /// This sync was scheduled automatically by the sync engine.
+    CKSyncEngineSyncReasonScheduled,
+
+    /// This sync was requested manually by calling `fetchChanges` or `sendChanges`.
+    CKSyncEngineSyncReasonManual,
+};
+
+/// The context of an attempt to send changes to the server.
+///
+/// The sync engine might attempt to send changes to the server for many reasons.
+/// For example, if you call `sendChanges`, it'll try to send changes immediately.
+/// Or if you add pending changes to the state, it'll schedule a sync and send changes when the scheduler task runs.
+/// This object represents one of those attempts to send changes.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineSendChangesContext : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// The reason why the sync engine is attempting to send changes.
+@property (nonatomic, readonly) CKSyncEngineSyncReason reason;
+
+/// The options being used for this attempt to send changes.
+@property (nonatomic, readonly) CKSyncEngineSendChangesOptions *options;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineConfiguration.h	2023-05-19 21:55:44
@@ -0,0 +1,79 @@
+//
+//  CKSyncEngineConfiguration.h
+//  CloudKit
+//
+//  Copyright © 2020 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <CloudKit/CKSubscription.h>
+
+@class CKDatabase, CKSyncEngineStateSerialization;
+@protocol CKSyncEngineDelegate;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineConfiguration : NSObject
+
+- (instancetype)initWithDatabase:(CKDatabase *)database
+              stateSerialization:(nullable CKSyncEngineStateSerialization *)stateSerialization
+                        delegate:(id<CKSyncEngineDelegate>)delegate;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// The database for this sync engine to sync with.
+///
+/// You can have multiple instances of `CKSyncEngine` in the same process, each targeting a different database.
+/// For example, you might have one for your private database and one for your shared database.
+///
+/// It's also technically possible to have multiple instances of `CKSyncEngine` for the same `CKDatabase`.
+/// This isn't recommended for production code, but it can be helpful for testing your `CKSyncEngine` integration.
+/// For example, you might make multiple `CKSyncEngine` instances to simulate multiple devices syncing back and forth.
+@property (atomic, strong) CKDatabase *database;
+
+/// The state serialization you last received in a `CKSyncEngineStateUpdateEvent`.
+///
+/// If this is the first time ever initializing your `CKSyncEngine`, you can provide `nil`.
+@property (nullable, atomic, copy) CKSyncEngineStateSerialization *stateSerialization;
+
+/// Your implementation of `CKSyncEngineDelegate`.
+@property (atomic, weak) id<CKSyncEngineDelegate> delegate;
+
+/// Whether or not the sync engine should automatically sync on your behalf.
+///
+/// If true, then the sync engine will automatically sync using the system scheduler. This is the default value.
+/// When you add pending changes to the state, the sync engine will automatically schedule a sync task to send changes.
+/// When it receives a notification about new changes on the server, it will automatically schedule a sync task to fetch changes.
+/// It will also automatically re-schedule sync tasks for retryable errors such as network failures or server throttles.
+///
+/// If `automaticallySync` is off, then the sync engine will not perform any operations unless you tell it to do so via `fetchChanges` or `sendChanges`.
+///
+/// Most applications likely want to enable automatic syncing during normal use.
+/// However, you might want to disable it if you have specific requirements for when you want to sync.
+/// For example, if you want to sync only once per day, you can turn off automatic sync and manually call `fetchChanges` and `sendChanges` once per day.
+///
+/// You might also disable automatic sync when writing automated tests for your integration with `CKSyncEngine`.
+/// This way, you can have fine grained control over exactly when the sync engine fetches or sends changes.
+/// This allows you to simulate edge cases and deterministically test your logic around scenarios like conflict resolution and error handling.
+@property (atomic, assign) BOOL automaticallySync;
+
+/// An optional override for the sync engine's default database subscription ID.
+/// Use this for backward compatibility with a previous CloudKit sync implementation.
+///
+/// By default, `CKSyncEngine` will create its own `CKDatabaseSubscription` with its own subscription ID.
+/// If you're migrating to `CKSyncEngine` from a custom CloudKit sync implementation, you can specify your previous subscription ID here.
+/// This allows your `CKSyncEngine` integration to be backward compatible with previous versions of your app.
+///
+/// >Note: `CKSyncEngine` will automatically attempt to discover any previous database subscriptions,
+/// but you can be more explicit by giving the subscription ID through this configuration option.
+@property (nullable, atomic, copy) CKSubscriptionID subscriptionID;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineEvent.h	2023-05-19 22:26:54
@@ -0,0 +1,455 @@
+//
+//  CKSyncEngineEvent.h
+//  CloudKit
+//
+//  Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CloudKit/CKRecord.h>
+
+@class CKRecordZone, CKRecordZoneID, CKSyncEngineFailedRecordSave, CKSyncEngineFailedZoneSave, CKSyncEngineFetchedRecordDeletion, CKSyncEngineFetchedZoneDeletion, CKSyncEngineSendChangesContext, CKSyncEngineStateSerialization;
+@class CKSyncEngineStateUpdateEvent, CKSyncEngineAccountChangeEvent, CKSyncEngineFetchedDatabaseChangesEvent, CKSyncEngineFetchedRecordZoneChangesEvent, CKSyncEngineSentDatabaseChangesEvent, CKSyncEngineSentRecordZoneChangesEvent, CKSyncEngineWillFetchChangesEvent, CKSyncEngineWillFetchRecordZoneChangesEvent, CKSyncEngineDidFetchRecordZoneChangesEvent, CKSyncEngineDidFetchChangesEvent, CKSyncEngineWillSendChangesEvent, CKSyncEngineDidSendChangesEvent;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// An event that occurs during the operation of a `CKSyncEngine`.
+/// See ``CKSyncEngineEvent`` for more details.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEngineEventType) {
+
+    //
+    // Local State Changes
+    //
+    
+    /// The sync engine state was updated. You should persist it locally.
+    CKSyncEngineEventTypeStateUpdate,
+    
+    /// The user signed in or out of their account.
+    CKSyncEngineEventTypeAccountChange,
+    
+    //
+    // Fetched Changes
+    //
+    
+    /// The sync engine fetched new database changes from the server.
+    CKSyncEngineEventTypeFetchedDatabaseChanges,
+    
+    /// The sync engine fetched new record zone changes from the server.
+    CKSyncEngineEventTypeFetchedRecordZoneChanges,
+    
+    //
+    // Sent Changes
+    //
+    
+    /// The sync engine sent a batch of database changes to the server.
+    CKSyncEngineEventTypeSentDatabaseChanges,
+    
+    /// The sync engine sent a batch of record zone changes to the server.
+    CKSyncEngineEventTypeSentRecordZoneChanges,
+    
+    //
+    // Fetch Changes Lifecycle
+    //
+    
+    /// The sync engine is about to fetch changes from the server.
+    CKSyncEngineEventTypeWillFetchChanges,
+    
+    /// The sync engine is about to fetch record zone changes from the server for a specific zone.
+    CKSyncEngineEventTypeWillFetchRecordZoneChanges,
+    
+    /// The sync engine finished fetching record zone changes from the server for a specific zone.
+    CKSyncEngineEventTypeDidFetchRecordZoneChanges,
+    
+    /// The sync engine finished fetching changes from the server.
+    CKSyncEngineEventTypeDidFetchChanges,
+    
+    //
+    // Send Changes Lifecycle
+    //
+    
+    /// The sync engine is about to send changes to the server.
+    CKSyncEngineEventTypeWillSendChanges,
+    
+    /// The sync engine finished sending changes to the server.
+    CKSyncEngineEventTypeDidSendChanges,
+};
+
+/// An event that occurs during the operation of a `CKSyncEngine`.
+///
+/// While syncing, `CKSyncEngine` posts several different types of events.
+/// Each event has an associated struct value with details describing the nature of the event.
+///
+/// At a high level, the sync engine events can be grouped into a few different categories:
+///
+/// ## Local state changes
+///
+/// - ``CKSyncEngineStateUpdateEvent``
+/// - ``CKSyncEngineAccountChangeEvent``
+///
+/// ## Fetched changes
+///
+/// - ``CKSyncEngineFetchedDatabaseChangesEvent``
+/// - ``CKSyncEngineFetchedRecordZoneChangesEvent``
+///
+/// ## Sent changes
+///
+/// - ``CKSyncEngineSentDatabaseChangesEvent``
+/// - ``CKSyncEngineSentRecordZoneChangesEvent``
+///
+/// ## Fetch changes lifecycle
+///
+/// - ``CKSyncEngineWillFetchChangesEvent``
+/// - ``CKSyncEngineWillFetchRecordZoneChangesEvent``
+/// - ``CKSyncEngineDidFetchRecordZoneChangesEvent``
+/// - ``CKSyncEngineDidFetchChangesEvent``
+///
+/// ## Send changes lifecycle
+///
+/// - ``CKSyncEngineWillSendChangesEvent``
+/// - ``CKSyncEngineDidSendChangesEvent``
+///
+/// See the documentation for each event struct for more details about when and why an event might be posted.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineEvent : NSObject
+
+@property (atomic, assign, readonly) CKSyncEngineEventType type;
+
+// Helpers to cast an event to the proper subclass.
+// These will crash if used for the wrong event type.
+@property (nonatomic, readonly) CKSyncEngineStateUpdateEvent *stateUpdateEvent;
+@property (nonatomic, readonly) CKSyncEngineAccountChangeEvent *accountChangeEvent;
+@property (nonatomic, readonly) CKSyncEngineFetchedDatabaseChangesEvent *fetchedDatabaseChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineFetchedRecordZoneChangesEvent *fetchedRecordZoneChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineSentDatabaseChangesEvent *sentDatabaseChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineSentRecordZoneChangesEvent *sentRecordZoneChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineWillFetchChangesEvent *willFetchChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineWillFetchRecordZoneChangesEvent *willFetchRecordZoneChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineDidFetchRecordZoneChangesEvent *didFetchRecordZoneChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineDidFetchChangesEvent *didFetchChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineWillSendChangesEvent *willSendChangesEvent;
+@property (nonatomic, readonly) CKSyncEngineDidSendChangesEvent *didSendChangesEvent;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+/// The sync engine state was updated, and you should persist it locally.
+///
+/// In order to function properly and efficiently, `CKSyncEngine` tracks some state internally.
+/// When the sync engine state changes, it will give you the latest serialized version in a `CKSyncEngineStateUpdateEvent`.
+/// This event will happen occasionally when the sync engine modifies the state internally during normal sync operation.
+/// This event will also happen when you change the state yourself.
+///
+/// The sync engine does not persist this state to disk, so you need to persist it in alongside your own local data.
+/// The next time your process launches, use this latest state serialization in ``CKSyncEngineConfiguration/stateSerialization`` to initialize your sync engine.
+///
+/// This state is directly tied to the changes you fetch and send with the sync engine.
+/// You should ensure that any changes fetched prior to receiving this state are also persisted alongside this state.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineStateUpdateEvent : CKSyncEngineEvent
+    
+@property (nonatomic, readonly, copy) CKSyncEngineStateSerialization *stateSerialization;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEngineAccountChangeType) {
+    
+    /// The user signed in to an account.
+    ///
+    /// If you already have data stored locally, you have a few options:
+    ///
+    /// - Merge the local data with the newly-signed-in account's data.
+    /// - Keep the local data separate from cloud-synced data (e.g. a separate "local account").
+    /// - Delete the local data.
+    /// - Prompt the user to make the decision.
+    CKSyncEngineAccountChangeTypeSignIn,
+    
+    /// The user signed out of their account.
+    ///
+    /// You should delete any locally-stored data for the previous account.
+    CKSyncEngineAccountChangeTypeSignOut,
+    
+    /// The user switched from one account to another.
+    /// This might happen if the user signs out and in to a new account while your application is quit.
+    ///
+    /// You should delete any locally-stored data for the previous account.
+    CKSyncEngineAccountChangeTypeSwitchAccounts,
+};
+
+/// The user signed in or out of their account.
+///
+/// The sync engine automatically listens for account changes, and it will send this event when the user signs in or out.
+/// It's your responsibility to react appropriately to this change and update your local persistence.
+///
+/// When the logged-in account changes, the sync engine will reset its internal state under the hood.
+/// This means that it will clear any pending database or record zone changes that you may have added.
+///
+/// Note that it's possible the account changes multiple times while your app is quit.
+/// If this happens, you will only receive one account change event representing the transition between the last known state and the current state.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineAccountChangeEvent : CKSyncEngineEvent
+
+/// The type of account change that occurred.
+@property (nonatomic, readonly) CKSyncEngineAccountChangeType changeType;
+
+/// The user record ID for the previous user.
+///
+/// If the user just signed in, this will be `nil`.
+/// If the user signed out or switched accounts, this will be the old account.
+@property (nullable, nonatomic, readonly, copy) CKRecordID *previousUser;
+
+/// The user record ID for the current user.
+///
+/// If the user just signed in or switched accounts, this will be the new user record ID.
+/// If the user signed out, this will be `nil`.
+@property (nullable, nonatomic, readonly, copy) CKRecordID *currentUser;
+
+@end
+
+/// A batch of database changes was fetched from the server.
+///
+/// If there are a lot of new changes on the server, then you might receive many of these events in a row.
+///
+/// The ordering of fetched changes is not guaranteed, but changes will typically be fetched from oldest to newest.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFetchedDatabaseChangesEvent : CKSyncEngineEvent
+
+@property (nonatomic, readonly, copy) NSArray<CKRecordZone *> *modifications;
+@property (nonatomic, readonly, copy) NSArray<CKSyncEngineFetchedZoneDeletion *> *deletions;
+
+@end
+
+/// A batch of record zone changes was fetched from the server.
+///
+/// If there are a lot of new changes on the server, then you might receive many of these events in a row.
+///
+/// The ordering of fetched changes is not guaranteed, but changes will typically be fetched from oldest to newest.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFetchedRecordZoneChangesEvent : CKSyncEngineEvent
+
+@property (nonatomic, readonly, copy) NSArray<CKRecord *> *modifications;
+@property (nonatomic, readonly, copy) NSArray<CKSyncEngineFetchedRecordDeletion *> *deletions;
+
+@end
+
+/// The sync engine finished sending a batch of database changes to the server.
+///
+/// If a change failed, try to resolve the issue causing the error and make the change again if necessary.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineSentDatabaseChangesEvent : CKSyncEngineEvent
+
+@property (nonatomic, readonly, copy) NSArray<CKRecordZone *> *savedZones;
+@property (nonatomic, readonly, copy) NSArray<CKSyncEngineFailedZoneSave *> *failedZoneSaves;
+
+@property (nonatomic, readonly, copy) NSArray<CKRecordZoneID *> *deletedZoneIDs;
+@property (nonatomic, readonly, copy) NSDictionary<CKRecordZoneID *, NSError *> *failedZoneDeletes;
+
+@end
+
+/// The sync engine finished sending a batch of record zone changes to the server.
+///
+/// If a record save succeeded, you should encode the system fields of this record to use the next time you save. See `encodeSystemFields` on `CKRecord`.
+///
+/// If a record deletion succeeded, you should remove any local system fields for that record.
+///
+/// If the record change failed, try to resolve the issue causing the error and save the record again if necessary.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineSentRecordZoneChangesEvent : CKSyncEngineEvent
+
+@property (nonatomic, readonly, copy) NSArray<CKRecord *> *savedRecords;
+@property (nonatomic, readonly, copy) NSArray<CKSyncEngineFailedRecordSave *> *failedRecordSaves;
+
+@property (nonatomic, readonly, copy) NSArray<CKRecordID *> *deletedRecordIDs;
+@property (nonatomic, readonly, copy) NSDictionary<CKRecordID *, NSError *> *failedRecordDeletes;
+
+@end
+
+/// The sync engine is about to fetch changes from the server.
+///
+/// This might be a good signal to prepare your local data store for incoming changes if necessary.
+/// The changes themselves will be delivered via `CKSyncEngineFetchedDatabaseChanges` and `CKSyncEngineFetchedRecordZoneChangesEvent`.
+///
+/// Note that this event might not always occur every time you call `fetchChanges`.
+/// For example, if you call `fetchChanges` concurrently while the engine is already fetching changes, this event might not be sent.
+/// Similarly, if there's no logged-in account, the engine might short-circuit the call to `fetchChanges`, and this event won't be sent.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineWillFetchChangesEvent : CKSyncEngineEvent
+@end
+
+/// The sync engine is about to fetch record zone changes from the server for a specific zone.
+///
+/// This might be a good signal to prepare your local data store for incoming changes if necessary.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineWillFetchRecordZoneChangesEvent : CKSyncEngineEvent
+    
+@property (nonatomic, readonly, copy) CKRecordZoneID *zoneID;
+
+@end
+
+/// The sync engine finished fetching record zone changes from the server for a specific zone.
+///
+/// This might be a good signal to perform any post-processing tasks on a per-zone basis if necessary.
+///
+/// You should receive one `CKSyncEngineDidFetchRecordZoneChangesEvent` for each `CKSyncEngineWillFetchRecordZoneChangesEvent`.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineDidFetchRecordZoneChangesEvent : CKSyncEngineEvent
+
+@property (nonatomic, readonly, copy) CKRecordZoneID *zoneID;
+@property (nullable, nonatomic, readonly, copy) NSError *error;
+
+@end
+
+/// The sync engine finished fetching changes from the server.
+///
+/// This might be a good signal to perform any post-processing tasks required after persisting fetched changes to disk.
+///
+/// You should receive one `CKSyncEngineDidFetchChangesEvent` for each `CKSyncEngineWillFetchChangesEvent`.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineDidFetchChangesEvent : CKSyncEngineEvent
+@end
+
+/// The sync engine is about to send changes to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineWillSendChangesEvent : CKSyncEngineEvent
+    
+@property (nonatomic, readonly) CKSyncEngineSendChangesContext *context;
+
+@end
+
+/// The sync engine finished sending changes to the server.
+///
+/// You should receive one `CKSyncEngineDidSendChangesEvent` for every `CKSyncEngineWillSendChangesEvent`.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineDidSendChangesEvent : CKSyncEngineEvent
+    
+@property (nonatomic, readonly) CKSyncEngineSendChangesContext *context;
+
+@end
+
+#pragma mark - Data
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFetchedRecordDeletion : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, copy) CKRecordID *recordID;
+@property (nonatomic, readonly, copy) CKRecordType recordType;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEngineZoneDeletionReason) {
+    /// A deletion from your software.
+    CKSyncEngineZoneDeletionReasonDeleted,
+    
+    /// A deletion from the user via the iCloud storage UI.
+    /// This is an indication that the user wanted all data deleted, so local cached data should be wiped and not re-uploaded to the server.
+    CKSyncEngineZoneDeletionReasonPurged,
+
+    /// The user chose to reset all encrypted data for their account.
+    /// This is an indication that the user had to reset encrypted data during account recovery, so local cached data should be re-uploaded to the server to minimize data loss.
+    CKSyncEngineZoneDeletionReasonEncryptedDataReset,
+};
+
+API_DEPRECATED_WITH_REPLACEMENT("CKSyncEngineZoneDeletionReason", macos(14.0, 14.0), ios(17.0, 17.0), tvos(17.0, 17.0), watchos(10.0, 10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEngineZoneDeletionType) {
+    CKSyncEngineZoneDeletionTypeDeleted,
+    CKSyncEngineZoneDeletionTypeUserDeleted,
+    CKSyncEngineZoneDeletionTypeEncryptedDataReset,
+};
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFetchedZoneDeletion : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, copy) CKRecordZoneID *zoneID;
+@property (nonatomic, readonly) CKSyncEngineZoneDeletionType type API_DEPRECATED_WITH_REPLACEMENT("reason", macos(14.0, 14.0), ios(17.0, 17.0), tvos(17.0, 17.0), watchos(10.0, 10.0));
+@property (nonatomic, readonly) CKSyncEngineZoneDeletionReason reason;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineFailedRecordSave : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, strong) CKRecord *record;
+@property (nonatomic, readonly, strong) NSError *error;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+NS_SWIFT_SENDABLE
+CK_SUBCLASSING_RESTRICTED
+@interface CKSyncEngineFailedZoneSave : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, strong) CKRecordZone *recordZone;
+@property (nonatomic, readonly, strong) NSError *error;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineRecordZoneChangeBatch.h	2023-05-19 21:55:44
@@ -0,0 +1,67 @@
+//
+//  CKSyncEngineRecordZoneChangeBatch.h
+//  CloudKit
+//
+//  Copyright © 2022 Apple Inc. All rights reserved.
+//
+
+@class CKRecord, CKRecordID, CKRecordZoneID;
+
+#import <CloudKit/CKDefines.h>
+#import <CloudKit/CKSyncEngineState.h>
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// A batch of record zone changes that `CKSyncEngine` will send to the server in a single request.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineRecordZoneChangeBatch : NSObject
+
+/// Creates a batch of record zone changes according to a list of pending changes.
+///
+/// This will iterate over the pending changes in order and add them to the batch until it reaches the max batch size.
+///
+/// When it sees a pending save, it will ask the record provider for the actual `CKRecord` to send to the server.
+/// If you return `nil` from the record provider, this will skip to the next pending change.
+///
+/// This will return `nil` if there are no pending changes to send.
+- (nullable instancetype)initWithPendingChanges:(NSArray<CKSyncEnginePendingRecordZoneChange *> *)pendingChanges
+                                 recordProvider:(CKRecord * _Nullable (NS_SWIFT_SENDABLE NS_NOESCAPE ^)(CKRecordID *recordID))recordProvider;
+
+
+/// Creates a batch of record zone changes to send to the server with a specific set of changes.
+///
+/// If you'd like to construct your own custom batches of changes to send to the server, you can do so with this initializer.
+///
+/// ## Batch size limitations
+///
+/// When creating your own batches, you need to consider batch size limitations.
+/// There is a maximum count and size of records that can be sent to the server in a single batch.
+/// If you supply too many changes, or if the total size of the records is too large, then you might get a ``CKErrorLimitExceeded``.
+///
+/// > Tip: These batch size limitations are handled automatically by the ``initWithPendingChanges:recordProvider:`` initializer.
+- (instancetype)initWithRecordsToSave:(nullable NSArray<CKRecord *> *)recordsToSave
+                    recordIDsToDelete:(nullable NSArray<CKRecordID *> *)recordIDsToDelete
+                         atomicByZone:(BOOL)atomicByZone;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// The records to save to the server.
+@property (atomic, readonly) NSArray<CKRecord *> *recordsToSave;
+
+/// The IDs of the records to delete from the server.
+@property (atomic, readonly) NSArray<CKRecordID *> *recordIDsToDelete;
+
+/// If set to true, the sync engine will modify these records atomically by zone.
+///
+/// If this is true, and if any record change fails, then any other changes from that zone in this batch will also fail with ``CKErrorBatchRequestFailed``.
+///
+/// Records that exist in different zones will not be modified together atomically.
+@property (atomic, assign) BOOL atomicByZone;
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h	1969-12-31 19:00:00
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSyncEngineState.h	2023-05-19 22:21:00
@@ -0,0 +1,181 @@
+//
+//  CKSyncEngineState.h
+//  CloudKit
+//
+//  Copyright © 2018 Apple Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <CloudKit/CKDefines.h>
+
+@class CKRecordID, CKRecordZone, CKRecordZoneID, CKSyncEnginePendingRecordZoneChange, CKSyncEnginePendingDatabaseChange;
+
+NS_HEADER_AUDIT_BEGIN(nullability, sendability)
+
+/// An object that tracks some state required for proper and efficient operation of `CKSyncEngine`.
+///
+/// `CKSyncEngine` needs to track several things in order to properly sync.
+/// For example, it needs to remember the last server change tokens for your database and zones.
+/// It also needs to keep track of things like the last known user record ID and other various pieces of state.
+///
+/// A lot of this state is hidden internally, but some of it you can control.
+///
+/// ## Pending changes
+///
+/// One of the main things you can control is the list of pending changes to send to the server.
+/// You can control these by calling functions like ``addPendingDatabaseChanges:`` and  ``addPendingRecordZoneChanges:``.
+/// When you add new pending changes, the sync engine will automatically schedule a task to sync with the server.
+///
+/// ## State serialization
+///
+/// `CKSyncEngine` will occasionally update its state in the background.
+/// When it updates its state, your delegate will receive a ``CKSyncEngineStateUpdateEvent``.
+///
+/// This event will contain a ``CKSyncEngineStateSerialization``, which you should persist locally.
+/// The next time your process launches, you initialize your sync engine with the last state serialization you received.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineState : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+/// A list of record changes that need to be sent to the server.
+///
+/// `CKSyncEngine` provides the convenience of tracking your pending record zone changes.
+/// When the user makes some changes that need to be sent to the server, you can track them in this list.
+/// Then, you can use this list when creating your next `CKSyncEngineRecordZoneChangeBatch` in your `CKSyncEngineDelegate`.
+///
+/// The sync engine will ensure consistency and deduplicate these pending changes under the hood.
+/// For example, if you add a pending save for record A, then record B, then record A again, this will result in a list of `[saveRecordA, saveRecordB]`.
+/// Similarly, if you add a pending save for record A, then add a pending delete for the same record A, this will result in a single pending change of `[deleteRecordA]`.
+///
+/// The sync engine will manage this list while it sends changes to the server.
+/// For example, when it successfully saves a record, it will remove that change from this list.
+/// If it fails to send a change due to some retryable error (e.g. a network failure), it will keep that change in this list.
+///
+/// If you'd prefer to track pending changes yourself, you can use `hasPendingUntrackedChanges` instead.
+@property (atomic, readonly, copy) NSArray<CKSyncEnginePendingRecordZoneChange *> *pendingRecordZoneChanges;
+
+/// A list of database changes that need to be sent to the server, similar to `pendingRecordZoneChanges`.
+@property (atomic, readonly, copy) NSArray<CKSyncEnginePendingDatabaseChange *> *pendingDatabaseChanges;
+
+/// This represents whether or not you have pending changes to send to the server that aren't tracked in `pendingRecordZoneChanges`.
+/// This is useful if you want to track pending changes in your own local database instead of the sync engine state.
+///
+/// When this property is set, the sync engine will automatically schedule a sync.
+/// When the sync task runs, it will ask your delegate for pending changes in `nextRecordZoneChangeBatch`.
+@property (atomic, assign) BOOL hasPendingUntrackedChanges;
+
+/// Adds to the list of pending record zone changes.
+///
+/// When you add a new pending change, the sync engine will automatically schedule a sync task.
+///
+/// The sync engine will ensure consistency and deduplicate these changes under the hood.
+- (void)addPendingRecordZoneChanges:(NSArray<CKSyncEnginePendingRecordZoneChange *> *)changes NS_SWIFT_NAME(add(pendingRecordZoneChanges:));
+
+/// Removes from the list of pending record zone changes.
+- (void)removePendingRecordZoneChanges:(NSArray<CKSyncEnginePendingRecordZoneChange *> *)changes NS_SWIFT_NAME(remove(pendingRecordZoneChanges:));
+
+/// Adds to the list of pending database changes.
+///
+/// When you add a new pending change, the sync engine will automatically schedule a sync task.
+///
+/// The sync engine will ensure consistency and deduplicate these changes under the hood.
+- (void)addPendingDatabaseChanges:(NSArray<CKSyncEnginePendingDatabaseChange *> *)changes NS_SWIFT_NAME(add(pendingDatabaseChanges:));
+
+/// Removes from the list of pending database changes.
+- (void)removePendingDatabaseChanges:(NSArray<CKSyncEnginePendingDatabaseChange *> *)changes NS_SWIFT_NAME(remove(pendingDatabaseChanges:));
+
+@end
+
+/// A serialized representation of a ``CKSyncEngineState``.
+///
+/// This will be passed to your delegate via ``CKSyncEngineStateUpdateEvent``.
+/// You should use `NSSecureCoding` to persist this locally alongside your other data and use it the next time you initialize your sync engine.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEngineStateSerialization : NSObject <NSSecureCoding>
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEnginePendingRecordZoneChangeType) {
+    CKSyncEnginePendingRecordZoneChangeTypeSave,
+    CKSyncEnginePendingRecordZoneChangeTypeDelete,
+};
+
+/// A change in a record zone that needs to be sent to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEnginePendingRecordZoneChange : NSObject
+
+- (instancetype)initWithRecordID:(CKRecordID *)recordID
+                            type:(CKSyncEnginePendingRecordZoneChangeType)type NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(_:type:));
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, copy) CKRecordID *recordID;
+@property (nonatomic, readonly) CKSyncEnginePendingRecordZoneChangeType type;
+
+@end
+
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+typedef NS_ENUM(NSInteger, CKSyncEnginePendingDatabaseChangeType) {
+    CKSyncEnginePendingDatabaseChangeTypeSave,
+    CKSyncEnginePendingDatabaseChangeTypeDelete,
+};
+
+/// A change in a database that needs to be sent to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+// This class should not be subclassed. If it is, Sendable may no longer apply.
+NS_SWIFT_SENDABLE
+@interface CKSyncEnginePendingDatabaseChange : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, readonly, copy) CKRecordZoneID *zoneID;
+@property (nonatomic, readonly) CKSyncEnginePendingDatabaseChangeType type;
+
+@end
+
+/// A zone save that needs to be sent to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEnginePendingZoneSave : CKSyncEnginePendingDatabaseChange
+
+- (instancetype)initWithZone:(CKRecordZone *)zone NS_SWIFT_NAME(init(_:));
+
+@property (nonatomic, readonly, copy) CKRecordZone *zone;
+
+@end
+
+/// A zone delete that needs to be sent to the server.
+API_AVAILABLE(macos(14.0), ios(17.0), tvos(17.0), watchos(10.0))
+NS_REFINED_FOR_SWIFT
+CK_SUBCLASSING_RESTRICTED
+NS_SWIFT_SENDABLE
+@interface CKSyncEnginePendingZoneDelete : CKSyncEnginePendingDatabaseChange
+
+- (instancetype)initWithZoneID:(CKRecordZoneID *)zoneID NS_SWIFT_NAME(init(_:));
+
+@end
+
+NS_HEADER_AUDIT_END(nullability, sendability)
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSystemSharingUIObserver.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSystemSharingUIObserver.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSystemSharingUIObserver.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKSystemSharingUIObserver.h	2023-05-19 21:55:44
@@ -15,7 +15,8 @@
 
 API_AVAILABLE(macos(13.0), ios(16.0))
 API_UNAVAILABLE(tvos, watchos)
-NS_SWIFT_SENDABLE // This is a partial lie, it's only available on iOS 16.4 and later: 103448861
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
+// NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4)
 @interface CKSystemSharingUIObserver : NSObject
 
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentity.h	2023-05-19 21:55:44
@@ -7,11 +7,14 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 @class CKRecordID, CKUserIdentityLookupInfo;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKUserIdentity : NSObject <NSSecureCoding, NSCopying>
 /*! Use @c CKDiscoverUserIdentitiesOperation or @c CKFetchShareParticipantsOperation to create a @c CKUserIdentity */
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h	2023-03-09 23:53:29
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CKUserIdentityLookupInfo.h	2023-05-19 21:55:44
@@ -7,11 +7,14 @@
 
 #import <Foundation/Foundation.h>
 
+#import <CloudKit/CKDefines.h>
+
 @class CKRecordID;
 
 NS_HEADER_AUDIT_BEGIN(nullability, sendability)
 
 API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+CK_SUBCLASSING_DEPRECATED // should not be subclassed, or Sendable may no longer apply
 // NS_SWIFT_SENDABLE on macos(13.3), macCatalyst(16.4), ios(16.4), tvos(16.4), watchos(9.4)
 @interface CKUserIdentityLookupInfo : NSObject <NSSecureCoding, NSCopying>
 - (instancetype)init NS_UNAVAILABLE;
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes	2023-03-04 13:37:50
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.apinotes	2023-05-19 22:09:39
@@ -279,6 +279,16 @@
 Globals:
 - Name: CKQueryOperationMaximumResults
   SwiftName: CKQueryOperation.maximumResults
+- Name: CKRecordRecordIDKey
+  SwiftPrivate: true
+- Name: CKRecordCreatorUserRecordIDKey
+  SwiftPrivate: true
+- Name: CKRecordCreationDateKey
+  SwiftPrivate: true
+- Name: CKRecordLastModifiedUserRecordIDKey
+  SwiftPrivate: true
+- Name: CKRecordModificationDateKey
+  SwiftPrivate: true
 - Name: CKRecordParentKey
   SwiftPrivate: true
 - Name: CKRecordShareKey
diff -ruN /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h
--- /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2023-03-04 20:15:14
+++ /Applications/Xcode_15.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CloudKit.framework/Headers/CloudKit.h	2023-05-19 21:55:41
@@ -57,3 +57,10 @@
 #import <CloudKit/NSItemProvider+CKSharingSupport.h>
 #import <CloudKit/CKAllowedSharingOptions.h>
 #import <CloudKit/CKSystemSharingUIObserver.h>
+
+#pragma mark - Sync Engine
+#import <CloudKit/CKSyncEngine.h>
+#import <CloudKit/CKSyncEngineConfiguration.h>
+#import <CloudKit/CKSyncEngineEvent.h>
+#import <CloudKit/CKSyncEngineRecordZoneChangeBatch.h>
+#import <CloudKit/CKSyncEngineState.h>
Clone this wiki locally