Skip to content

FSKit macOS xcode16.0 b1

Rolf Bjarne Kvinge edited this page Jul 9, 2024 · 4 revisions

#FSKit.framework

Rolf

diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSClient.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSClient.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSClient.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSClient.h	2024-05-31 06:25:51
@@ -0,0 +1,36 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSClient.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSMessageConnection.h>
+#import <FSKit/FSModuleIdentity.h>
+#import <FSKit/FSResource.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * FSClient - client class for talking to fskitd
+ *
+ *      Creating an instance of this class will connect to fskitd
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSClient : NSObject
+
+/*
+ * ask fskitd for a list of installed extensions
+ *
+ *      Available in both asynchronous and synchronous versions
+ */
+-(void)installedExtensions:(void(^)(NSArray<FSModuleIdentity *> * _Nullable,
+                                    NSError * _Nullable))results FSKIT_API_AVAILABILITY_V1;
+
+-(void)installedExtensionsSync:(void(^)(NSArray<FSModuleIdentity *> * _Nullable,
+                                        NSError * _Nullable))results FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSContainer.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSContainer.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSContainer.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSContainer.h	2024-05-31 06:25:51
@@ -0,0 +1,67 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSContainer.h
+//  FSKit
+//
+
+//
+//  Common container-level protocols used by both Full-control and Unary Volume
+//  modules. The container-level operations needed to ADD support for either
+//  FSBlockDeviceResource or FSServerURLResource resources is the same for both
+//  module types. Those operations are defined here.
+//
+
+#import <Foundation/Foundation.h>
+
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSEntityIdentifier.h>
+#import <FSKit/FSResource.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @enum FSContainerState
+ * @brief State values for container state engine
+ * @description Containers start in the FSContainerNotReady state
+ * @constant FSContainerNotReady Container is not ready, errorState reports main issue
+ * @constant FSContainerBlocked Container prevented from transitioning to FSContainerReady due to error noted in errorState
+ * @constant FSContainerReady Container is ready to perform operations
+ * @constant FSContainerActive Container is active. Filesystem modification enabled
+ */
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(NSInteger, FSContainerState) {
+    // Container not ready
+    FSContainerNotReady = 0,
+    /*
+     Container prevented from transitioning from FSContainerNotReady to
+     FSContainerReady by a conceptually recoverable error. That error
+     which set in the errorState property
+     */
+    FSContainerBlocked,
+    // Container ready but inactive
+    FSContainerReady,
+    // Container active, one or more volumes are active
+    FSContainerActive
+};
+
+/** 
+ * @typedef FSContainerIdentifier
+ * @abstract Type identifying a container. Either a UUID or a UUID with additional differentiating bytes
+ * @discussion The identifier is a UUID at minimum. Some network protocols evaluate access based on
+ * the user ID given when connecting. Thus, if a computer connects to the same file server under two different user IDs, the
+ * computer is given two different item hierarchies. For such filesystems, the container identifier should be the UUID associated with
+ * the server followed by either 4 or 8 bytes of data to differentiate different connections
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSContainerIdentifier : FSEntityIdentifier
+
+/*
+ * For Unary file systems, the container identifier is the same
+ * as the volume identifier.
+ */
+@property (readonly)    FSVolumeIdentifier *volumeIdentifier;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSEntityIdentifier.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSEntityIdentifier.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSEntityIdentifier.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSEntityIdentifier.h	2024-05-31 06:25:52
@@ -0,0 +1,51 @@
+//
+//  Copyright (c) 2024 Apple Inc.  All rights reserved.
+//
+//  FSEntityIdentifier.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FSEntityIdentifier : NSObject <NSCopying, NSSecureCoding>
+
+- (instancetype)init;   // Generates a random UUID as the identifier
+
+- (instancetype)initWithUUID:(NSUUID *)uuid;
+- (instancetype)initWithUUID:(NSUUID *)uuid
+                        data:(NSData *)qualifier;
+- (instancetype)initWithUUID:(NSUUID *)uuid
+               byteQualifier:(const char * _Nonnull)bytes;
+- (instancetype)initWithUUID:(NSUUID *)uuid
+           longByteQualifier:(const char * _Nonnull)bytes;
+
++ (instancetype)identifier; // Generates a random UUID as the identifier
++ (instancetype)identifierWithUUID:(NSUUID *)uuid;
++ (instancetype)identifierWithUUID:(NSUUID *)uuid
+                              data:(NSData *)qualifier;
++ (instancetype)identifierWithUUID:(NSUUID *)uuid
+                     byteQualifier:(const char * _Nonnull)bytes;
++ (instancetype)identifierWithUUID:(NSUUID *)uuid
+                 longByteQualifier:(const char * _Nonnull)bytes;
+
+@property (retain)              NSUUID  *uuid;
+@property (retain, nullable)    NSData  *qual;
+
+- (instancetype)initWithBytes:(const char *)buffer
+                       length:(int)len
+__deprecated_msg("Use initWithUUID: or other initializers instead");
+
+@end
+
+@class FSContainerIdentifier;
+@class FSVolumeIdentifier;
+
+@interface NSUUID (FSEntityIdentifier)
+@property (copy, readonly)    FSContainerIdentifier *  fs_containerIdentifier;
+@property (copy, readonly)    FSEntityIdentifier    *  fs_entityIdentifier;
+@property (copy, readonly)    FSVolumeIdentifier    *  fs_volumeIdentifier;
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileDataBuffer.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileDataBuffer.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileDataBuffer.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileDataBuffer.h	2024-05-31 06:25:51
@@ -0,0 +1,42 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSFileDataBuffer.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * FSFileDataBuffer - wrapper object for a data buffer
+ *
+ *      This object class wraps data buffers, and behaves
+ * in a way similar to a uio in the kernel. The mutable sub
+ * class is writable.
+ */
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSFileDataBuffer : NSObject <NSSecureCoding>
+@property (readwrite) NSUInteger length FSKIT_API_AVAILABILITY_V1;
+
++(nullable instancetype)dataWithLength:(NSUInteger)length FSKIT_API_AVAILABILITY_V1;
+-(nullable instancetype)initWithLength:(NSUInteger)length FSKIT_API_AVAILABILITY_V1;
+
+-(const void * _Nullable)bytes NS_RETURNS_INNER_POINTER FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSMutableFileDataBuffer : FSFileDataBuffer
+
++(nullable instancetype)dataWithCapacity:(NSUInteger)capacity FSKIT_API_AVAILABILITY_V1;
+-(nullable instancetype)initWithCapacity:(NSUInteger)capacity FSKIT_API_AVAILABILITY_V1;
+-(NSUInteger) capacity FSKIT_API_AVAILABILITY_V1;
+-(void * _Nullable)mutableBytes FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileName.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileName.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileName.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileName.h	2024-05-31 06:25:51
@@ -0,0 +1,77 @@
+//
+//  FSFileName.h
+//  FSKit
+//
+//
+
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ @abstract FSFileName holds file names which may or may not be valid Unicode character sequences
+ @discussion FSKit uses FSFileName as the class to carry file names from the kernel to FSModules, and to carry
+  names back to the kernel as part of directory enumeration. In almost all cases, these names will be valid
+  UTF-8 sequences. There are only two cases in which an FSModule will receive an FSFileName object whose
+  contents are not valid UTF8. The first is a program passing erroneous data to a system call. An FSModule
+  should consider this case an error. The second case applies to a subset of FSModules. Some file system
+  formats consider file names to be an arbitrary "bag of bytes." These formats leave character encoding to
+  be set by the operating system. In these cases, lacking encoding information, the FSModule can only pass
+  back the names it finds on disk. The behavior of upper layers such as NSFileManager is unspecified. What
+  is required, though, is that the FSModule be able to lookup such names and use such names as the source
+  name of rename operations. The FSModule is also required to support all file names which are simple
+  derivatives of these names returned from directory enumeration. The required simple derivatives are
+  names such as those for an Apple Double file ("._Name") and editor backup file names.
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSFileName : NSObject <NSSecureCoding, NSCopying>
+
+/**
+ @property data this property will always return an NSData property containing the byte sequence of the file name.
+ */
+@property (readonly) NSData                 *data FSKIT_API_AVAILABILITY_V1;
+
+/**
+ @property string this property will return the file name as an NSString if the name is a valid UTF-8 byte sequence.
+ It will fail if the file name character sequence is not valid Unicode.
+ */
+@property (readonly, nullable) NSString     *string FSKIT_API_AVAILABILITY_V1;
+
+/**
+ @property debugdescription this property will return an NSString which is a lossy conversion of the file name
+ to an NSString. The exact details of this lossy conversion are subject to change.
+ */
+@property (readonly, copy)     NSString     *debugDescription FSKIT_API_AVAILABILITY_V1;
+
+- (instancetype)init NS_UNAVAILABLE;
+
+/**
+ @method initWithCString: initialize FSFileName with the NUL-terminated character sequence pointed to by name
+ */
+- (instancetype)initWithCString:(const char *)name FSKIT_API_AVAILABILITY_V1 NS_DESIGNATED_INITIALIZER NS_SWIFT_UNAVAILABLE("Use a data or string instead."); // NUL-terminated character sequence
+
+/**
+ @method initWithBytes:length: Initialize FSFileName with a copy of up to `length` characters of the sequence pointed to by bytes.
+         A NUL character encountered in the first `length` bytes will terminate the sequence.
+ */
+- (instancetype)initWithBytes:(const char *)bytes
+                       length:(NSUInteger)length FSKIT_API_AVAILABILITY_V1 NS_DESIGNATED_INITIALIZER NS_SWIFT_UNAVAILABLE("Use a data or string instead.");
+/**
+ @method initWithData: Initialize FSFileName with a copy of up to `name.length` characters of the sequence pointed to by name.bytes.
+         A NUL character encountered in the first `name.length` bytes will terminate the sequence.
+ */
+- (instancetype)initWithData:(NSData *)name FSKIT_API_AVAILABILITY_V1;
+/**
+ @method initWithString: Initialize FSFileName with a copy of the UTF-8 representation of the characters in `name`. In the unexpected circumstance where `name` contains a NUL character, it will termiante the character sequence.
+ */
+- (instancetype)initWithString:(NSString *)name FSKIT_API_AVAILABILITY_V1;
+
++ (instancetype)nameWithCString:(const char *)name FSKIT_API_AVAILABILITY_V1 NS_SWIFT_UNAVAILABLE("Use a data or string instead."); // NUL-terminated character sequence
++ (instancetype)nameWithBytes:(const char *)bytes
+                       length:(NSUInteger)length FSKIT_API_AVAILABILITY_V1 NS_SWIFT_UNAVAILABLE("Use a data or string instead.");
++ (instancetype)nameWithData:(NSData *)name FSKIT_API_AVAILABILITY_V1;
++ (instancetype)nameWithString:(NSString *)name FSKIT_API_AVAILABILITY_V1 ;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystem.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystem.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystem.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystem.h	2024-05-31 06:25:51
@@ -0,0 +1,40 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSFileSystem.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSFileSystemBase.h>
+#import <FSKit/FSTaskOptionsBundle.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * @class FSFileSystem
+ * @abstract base class for a "Full-feature" module
+ */
+FSKIT_API_UNAVAILABLE_V1
+@interface FSFileSystem : NSObject <FSFileSystemBase>
+
+@end
+
+#pragma mark - Operation @protocols
+
+FSKIT_API_UNAVAILABLE_V1
+@protocol FSFileSystemOperations <NSObject>
+
+@optional
+-(void)loadResource:(FSResource *)resource
+            options:(FSTaskOptionsBundle *)options
+       replyHandler:(void(^)(NSArray<FSVolume *> * _Nullable volumes,
+                             NSError * _Nullable error))reply FSKIT_API_UNAVAILABLE_V1;
+
+/// This method will be called after the main runloop has started and before the first message from fskitd has been received.
+@optional
+-(void)didFinishLaunching;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystemBase.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystemBase.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystemBase.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSFileSystemBase.h	2024-05-31 06:25:51
@@ -0,0 +1,56 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  FSFileSystemBase.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSVolume.h>
+#import <FSKit/FSContainer.h>
+
+@class FSBlockDeviceResource;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ FSFileSystemBase - functionality supplied by FSKit to filesystem implementations
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSFileSystemBase <NSObject>
+
+// Is there an overall error on the container, such as it needs authenticating?
+@property (strong, nullable)    NSError            *errorState FSKIT_API_AVAILABILITY_V1;
+
+@property                       FSContainerState    containerState FSKIT_API_AVAILABILITY_V1;
+
+/**
+ @method wipeResource:includingRanges:excludingRanges:replyHandler:
+ @brief Wipe existing file systems on the provided resource
+ @param resource FSBlockDeviceResource to be wiped
+ @param include set of ranges to additionally clear during wipefs processing.
+ @param exclude set of ranges to NOT clear duing wipefs processing.
+ @param reply Block with end status upon completion
+ @discussion wraps wipefs functionality from libutil. That functionality is described as:
+
+ The wipefs family of functions wipe existing file systems on a volume.  A DKIOCUNMAP ioctl is
+      sent to the device to invalidate all of its content.  Then zeroes are written to various
+      locations that are used by various file systems to recognize their content and mount their
+      volumes.  This is usually used by the newfs_* utilities before they create new file systems
+      on the volume, so that the existing file system will not be mounted accidentally after the
+      new file system is created.
+
+  NOTE: These routines do not overwrite all volume structures.  These routines do not securely
+      erase the previous content.  They only overwrite enough to make sure that the normal
+      utilities will no longer recognize any file system content.  It is possible that previous
+      file system content could be recovered by other means.
+ */
+-(void)wipeResource:(FSBlockDeviceResource * )resource
+    includingRanges:(NSIndexSet *)include
+    excludingRanges:(NSIndexSet *)exclude
+       replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSItem.h	2024-05-31 06:25:51
@@ -0,0 +1,136 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSItem.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(uint8_t, FSItemType) {
+    FSItemTypeUnknown   = 0,
+    FSItemTypeFile,
+    FSItemTypeDir,
+    FSItemTypeSymlink,
+    FSItemTypeFIFO,
+    FSItemTypeCharDev,
+    FSItemTypeBlockDev,
+    FSItemTypeSocket
+};
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSItemAttributes : NSObject <NSSecureCoding>
+
+-(void)reset;       // mark all attributes inactive
+
+@property (nonatomic)           uint32_t        uid;
+@property (nonatomic)           uint32_t        gid;
+@property (nonatomic)           uint32_t        mode;
+@property (nonatomic)           FSItemType      type;
+@property (nonatomic)           uint32_t        numLinks;
+@property (nonatomic)           uint32_t        bsdFlags;
+@property (nonatomic)           uint64_t        size;
+@property (nonatomic)           uint64_t        allocSize;
+@property (nonatomic)           uint64_t        fileid;
+@property (nonatomic)           uint64_t        parentid;
+@property (nonatomic)           bool            useKOIO;
+@property (nonatomic)           bool            supportsLimitedXAttrs;
+
+/* time values need to be modified by reference */
+-(void)modifyTime:(struct timespec *)tp;
+-(void)addedTime:(struct timespec *)tp;
+-(void)changeTime:(struct timespec *)tp;
+-(void)accessTime:(struct timespec *)tp;
+-(void)birthTime:(struct timespec *)tp;
+-(void)backupTime:(struct timespec *)tp;
+
+@property (nonatomic,readonly)  bool            uidIsActive;
+@property (nonatomic,readonly)  bool            gidIsActive;
+@property (nonatomic,readonly)  bool            modeIsActive;
+@property (nonatomic,readonly)  bool            typeIsActive;
+@property (nonatomic,readonly)  bool            numLinksIsActive;
+@property (nonatomic,readonly)  bool            bsdFlagsIsActive;
+@property (nonatomic,readonly)  bool            sizeIsActive;
+@property (nonatomic,readonly)  bool            allocSizeIsActive;
+@property (nonatomic,readonly)  bool            fileidIsActive;
+@property (nonatomic,readonly)  bool            parentidIsActive;
+@property (nonatomic,readonly)  bool            modifyTimeIsActive;
+@property (nonatomic,readonly)  bool            addedTimeIsActive;
+@property (nonatomic,readonly)  bool            changeTimeIsActive;
+@property (nonatomic,readonly)  bool            accessTimeIsActive;
+@property (nonatomic,readonly)  bool            birthTimeIsActive;
+@property (nonatomic,readonly)  bool            backupTimeIsActive;
+
+-(void)setModifyTime:(struct timespec *)tp;
+-(void)setAddedTime:(struct timespec *)tp;
+-(void)setChangeTime:(struct timespec *)tp;
+-(void)setAccessTime:(struct timespec *)tp;
+-(void)setBirthTime:(struct timespec *)tp;
+-(void)setBackupTime:(struct timespec *)tp;
+
+@end
+
+#pragma mark - Get/Set Item Attributes
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSItemSetAttributesRequest : FSItemAttributes
+
+@property (nonatomic)           bool            uidWasConsumed;
+@property (nonatomic)           bool            gidWasConsumed;
+@property (nonatomic)           bool            typeWasConsumed;
+@property (nonatomic)           bool            modeWasConsumed;
+@property (nonatomic)           bool            numLinksWasConsumed;
+@property (nonatomic)           bool            bsdFlagsWasConsumed;
+@property (nonatomic)           bool            sizeWasConsumed;
+@property (nonatomic)           bool            allocSizeWasConsumed;
+@property (nonatomic)           bool            fileidWasConsumed;
+@property (nonatomic)           bool            parentidWasConsumed;
+@property (nonatomic)           bool            accessTimeWasConsumed;
+@property (nonatomic)           bool            changeTimeWasConsumed;
+@property (nonatomic)           bool            modifyTimeWasConsumed;
+@property (nonatomic)           bool            addedTimeWasConsumed;
+@property (nonatomic)           bool            birthTimeWasConsumed;
+@property (nonatomic)           bool            backupTimeWasConsumed;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSItemGetAttributesRequest : NSObject <NSSecureCoding>
+
+@property (nonatomic)           bool            uidWanted;
+@property (nonatomic)           bool            gidWanted;
+@property (nonatomic)           bool            typeWanted;
+@property (nonatomic)           bool            modeWanted;
+@property (nonatomic)           bool            numLinksWanted;
+@property (nonatomic)           bool            bsdFlagsWanted;
+@property (nonatomic)           bool            sizeWanted;
+@property (nonatomic)           bool            allocSizeWanted;
+@property (nonatomic)           bool            fileidWanted;
+@property (nonatomic)           bool            parentidWanted;
+@property (nonatomic)           bool            accessTimeWanted;
+@property (nonatomic)           bool            changeTimeWanted;
+@property (nonatomic)           bool            modifyTimeWanted;
+@property (nonatomic)           bool            addedTimeWanted;
+@property (nonatomic)           bool            birthTimeWanted;
+@property (nonatomic)           bool            backupTimeWanted;
+
+@end
+
+#pragma mark - FSItem
+FSKIT_API_AVAILABILITY_V1
+@interface FSItem : NSObject
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSUnaryItem : FSItem
+
+@property (retain, readonly, nonatomic)  dispatch_queue_t    queue;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKit.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKit.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKit.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKit.h	2024-05-31 06:25:51
@@ -0,0 +1,46 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSKit.h
+//  FSKit
+//
+
+#ifndef FSKit_h
+#define FSKit_h
+
+#import <Foundation/Foundation.h>
+#import <os/log.h>
+
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSKitFunctions.h>
+#import <FSKit/FSKitTypes.h>
+
+//! Project version number for FSKit.
+FOUNDATION_EXPORT double FSKitVersionNumber;
+
+//! Project version string for FSKit.
+FOUNDATION_EXPORT const unsigned char FSKitVersionString[];
+
+
+// In this header, we import all the FSKit public headers
+#import <FSKit/FSClient.h>
+#import <FSKit/FSContainer.h>
+#import <FSKit/FSEntityIdentifier.h>
+#import <FSKit/FSFileDataBuffer.h>
+#import <FSKit/FSFileName.h>
+#import <FSKit/FSItem.h>
+#import <FSKit/FSKitConstants.h>
+#import <FSKit/FSKitUtils.h>
+#import <FSKit/FSMessageConnection.h>
+#import <FSKit/FSModuleIdentity.h>
+#import <FSKit/FSResource.h>
+#import <FSKit/FSTaskOptionsBundle.h>
+#import <FSKit/FSVolume.h>
+#import <FSKit/FSVolumeExtent.h>
+
+// These two are last as they depend on classes included above
+#import <FSKit/FSFileSystemBase.h>
+#import <FSKit/FSFileSystem.h>
+#import <FSKit/FSUnaryFileSystem.h>
+
+#endif /* FSKit_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitConstants.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitConstants.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitConstants.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitConstants.h	2024-05-31 06:25:51
@@ -0,0 +1,27 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSKitConstants.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+@class FSTaskOption;
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * FSKitConstants - a class used to define constatnts used in different parts of the code
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSKitConstants : NSObject
+
+@property (class, readonly, retain)    NSString *      moduleExtensionPointName FSKIT_API_AVAILABILITY_V1;
+
+@property (class, readonly, retain)    FSTaskOption *  forceLoadOption FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitDefines.h	2024-05-31 06:25:52
@@ -0,0 +1,42 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  Header.h
+//  FSKit
+//
+
+#ifndef FSKitDefines_h
+#define FSKitDefines_h
+
+#ifdef __cplusplus
+# define FS_EXTERN extern "C"
+#else
+# define FS_EXTERN extern
+#endif
+
+#ifndef FS_EXPORT
+# ifndef FS_SUPPORTED_VISIBILITY
+#  if FS_UNSUPPORTED_PLATFORM
+#   define FS_SUPPORTED_VISIBILITY
+#  else
+#   define FS_SUPPORTED_VISIBILITY __attribute__((visibility("default")))
+#  endif
+# endif
+#define FS_EXPORT FS_EXTERN FS_SUPPORTED_VISIBILITY
+#endif
+
+#ifndef FS_EXPORT_INTERNAL
+#define FS_EXPORT_INTERNAL FS_EXTERN __attribute__((visibility("internal")))
+#endif
+
+#ifndef FS_ALWAYS_EXPORT
+#define FS_ALWAYS_EXPORT FS_EXTERN __attribute__((visibility("default")))
+#endif
+
+// original API
+#define FSKIT_API_AVAILABILITY_V1 API_AVAILABLE(macos(14.0)) \
+    API_UNAVAILABLE(ios, visionos) API_UNAVAILABLE(watchos, tvos)
+// Unavailable in original API
+#define FSKIT_API_UNAVAILABLE_V1 API_UNAVAILABLE(macos, ios, visionos) API_UNAVAILABLE(watchos, tvos)
+
+#endif /* FSKitDefines_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitFunctions.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitFunctions.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitFunctions.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitFunctions.h	2024-05-31 06:25:51
@@ -0,0 +1,23 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  FSKitFunctions.h
+//  FSKit
+//
+
+#ifndef FSKitFunctions_h
+#define FSKitFunctions_h
+
+// C code in this header is meant to be bridged to our Swift module
+#import <Foundation/Foundation.h>
+#import <os/log.h>
+
+#import <FSKit/FSKitDefines.h>
+
+FOUNDATION_EXPORT os_log_t _Nonnull fskit_std_log(void) FSKIT_API_AVAILABILITY_V1;
+
+FOUNDATION_EXPORT NSError * _Nonnull fs_errorForPOSIXError(int) FSKIT_API_AVAILABILITY_V1;
+FOUNDATION_EXPORT NSError * _Nonnull fs_errorForMachError(int errorCode) FSKIT_API_AVAILABILITY_V1;
+FOUNDATION_EXPORT NSError * _Nonnull fs_errorForCocoaError(int errorCode) FSKIT_API_AVAILABILITY_V1;
+
+#endif /* FSKitFunctions_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitTypes.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitTypes.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitTypes.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitTypes.h	2024-05-31 06:25:51
@@ -0,0 +1,24 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  FSKitTypes.h
+//  FSKit
+//
+
+#ifndef FSKitTypes_h
+#define FSKitTypes_h
+
+
+/*
+ * FSTaskParameters - argument array of parameters for an operation
+ *
+ *  Directly maps to `argc`/`argv` passed to a command line tool. Consists
+ * of a sequence of strings formatted as per CLI arguments. Exact squence
+ * and syntax is left to the receiver, but two examples are:
+ *
+ *  "force"     =>  @[ @"--force" ]
+ *  "read only" =>  @[ @"-o", "rdonly" ]
+ */
+typedef NSArray <NSString *> *FSTaskParameters;
+
+#endif /* FSKitTypes_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitUtils.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitUtils.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitUtils.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSKitUtils.h	2024-05-31 06:25:51
@@ -0,0 +1,22 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  FSKitUtils.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSKitUtils : NSObject
+
++ (NSString *)stringWithFormatString:(NSString *)localizedFormat
+                              locale:(NSLocale *)locale
+                           arguments:(NSArray <NSObject *> *)arguments FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSMessageConnection.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSMessageConnection.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSMessageConnection.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSMessageConnection.h	2024-05-31 06:25:52
@@ -0,0 +1,116 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSMessageConnection.h
+//  FSTaskService
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Protocol to run FS task methods from a different process using FSMessageConnection  */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSTaskMessageOps
+
+/** @method logMessage
+    @abstract Logs given data, e.g. log a NSString to stdout, or log to a file.
+    @param str The string to log
+ */
+- (void)logMessage:(NSString *)str FSKIT_API_AVAILABILITY_V1;
+
+/** @method prompt
+    @abstract prompt the client for a response, the response string will be in the reply block
+    @param prompt The prompt string
+    @param reply The reply block containing the response string from the prompt
+ */
+- (void)prompt:(NSString *)prompt
+  replyHandler:(void (^)(NSString * _Nullable,
+                         NSError * _Nullable))reply FSKIT_API_AVAILABILITY_V1;
+
+/** @method promptTrueFalse
+    @abstract Similar to prompt method, but the response is a bool (handy for prompts like yes/no questions )
+    @param prompt The prompt string
+    @param reply The reply block containing the response boolean from the prompt
+ */
+- (void)promptTrueFalse:(NSString *)prompt
+           replyHandler:(void (^)(BOOL,
+                                  NSError * _Nullable))reply FSKIT_API_AVAILABILITY_V1;
+
+/** @method completed
+    @abstract This informs the client if our task is completed or not by the response block
+    @param error nil or error status
+    @param reply Reports status of sending message, or any error from logger.
+ */
+- (void)completed:(NSError * _Nullable)error
+     replyHandler:(void (^)(int ignore_me, NSError * _Nullable))reply FSKIT_API_AVAILABILITY_V1;
+
+@optional
+- (void)completed:(NSError * _Nullable)error
+            reply:(void (^)(int ignore_me, NSError * _Nullable))reply
+__deprecated_msg("Use completed:replyHandler: instead") FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/** This class allows an FSTask to pass log messages and completion information back to an initiating client. It also allows prompting for responses from a user. */
+FSKIT_API_AVAILABILITY_V1
+@interface FSMessageConnection :  NSObject<NSSecureCoding, FSTaskMessageOps>
+
+/** Client information about linguistic, cultural, and technological conventions for use in formatting data for presentation. */
+@property (readonly) NSLocale *locale FSKIT_API_AVAILABILITY_V1;
+
+/** @method connect
+    @abstract Establishes a new connection from an application or other process to our service.
+    @param reply Block to indicate about any errors.
+ */
+-(void)connect:(void (^)(NSError * _Nullable)) reply FSKIT_API_AVAILABILITY_V1;
+
+/** @method logLocalizedMessage:table:bundle:array
+    @abstract Logs a localized string from given string format, localization table, bundle
+    @param formatString The string to localize and log
+    @param tableName Localization table
+    @param bundle Bundle to find the localization table
+    @param array Array of arguments for the format string
+ */
+-(void)logLocalizedMessage:(NSString *)formatString
+                     table:(NSString *)tableName
+                    bundle:(NSBundle *)bundle
+                     array:(NSArray * _Nullable)array FSKIT_API_AVAILABILITY_V1;
+
+/** @method logLocalizedMessage:table:bundle:arguments
+    @abstract Logs a localized string from given string format, localization table, bundle, and arguments list.
+    @param formatString The string to localize and log
+    @param tableName Localization table
+    @param bundle Bundle to find the localization table
+    @param argList argument list
+ */
+-(void)logLocalizedMessage:(NSString *)formatString
+                     table:(NSString *)tableName
+                    bundle:(NSBundle *)bundle
+                 arguments:(va_list)argList FSKIT_API_AVAILABILITY_V1;
+
+/** @method logLocalizedMessage:table:bundle
+    @abstract Logs a localized string from given string format, localization table, bundle, and arguments list.
+    @param formatString The string to localize and log
+    @param tableName Localization table
+    @param bundle Bundle to find the localization table
+ */
+-(void)logLocalizedMessage:(NSString *)formatString
+                     table:(NSString *)tableName
+                    bundle:(NSBundle *)bundle, ... FSKIT_API_AVAILABILITY_V1;
+
+
+/** @method localizedMessage:table:bundle
+    @abstract Returns a localized message from given message, localization table, and bundle.
+    @param message The string to localize (can be a formatted string)
+    @param tableName Localization table
+    @param bundle Bundle to find the localization table
+ */
+-(NSString *)localizedMessage:(NSString *)message
+                        table:(NSString *)tableName
+                       bundle:(NSBundle *)bundle, ... FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSModuleIdentity.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSModuleIdentity.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSModuleIdentity.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSModuleIdentity.h	2024-05-31 06:25:51
@@ -0,0 +1,25 @@
+//
+//  Copyright (c) 2023 Apple Inc.  All rights reserved.
+//
+//  FSModuleIdentity.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** Represents a file system module identity */
+FSKIT_API_AVAILABILITY_V1
+@interface FSModuleIdentity : NSObject
+
+@property (readonly) NSString   *bundleIdentifier FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly) NSDictionary <NSString *,id>   *attributes FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly) NSURL      *url FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSResource.h	2024-05-31 06:25:51
@@ -0,0 +1,356 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSResource.h
+//  FSKit
+//
+
+#ifndef FSResource_h
+#define FSResource_h
+
+#import <Foundation/Foundation.h> // TAPI has occasionally NOT included this
+#import <FSKit/FSContainer.h>
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSKitTypes.h>
+#import <FSKit/FSMessageConnection.h>
+#import <FSKit/FSTaskOptionsBundle.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(int, FSMatchResult) {
+    // No match
+    FSMatchNotRecognized = 0,
+    // Probe recognizes this resource but is unable to use
+    FSMatchRecognized,
+    // Probe recognizes this resource and is ready to use, but in a limited capacity
+    FSMatchUsableButLimited,
+    // Probe recognizes this resource and is ready to use
+    FSMatchUsable,
+};
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(int, FSResourceKind) {
+    // generic
+    FSResourceKindGeneric = 0,
+    // Block Device
+    FSResourceKindBlockDevice,
+    // Path/catch-all
+    FSResourceKindPathURL,
+    // Server URL
+    FSResourceKindServerURL,
+};
+
+/**
+ * FSResource - Abstract resource used by file systems to contain or source the volume
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSResource : NSObject<NSSecureCoding>
+
+@property (readonly, nonatomic)            FSResourceKind  kind FSKIT_API_AVAILABILITY_V1;
+@property (nonatomic, setter=revoke:)      bool            revoked FSKIT_API_AVAILABILITY_V1;
+
++(instancetype _Nullable)dynamicCast:(id)candidate FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+#pragma mark - FSBlockDeviceRsource class and helpers
+
+typedef struct FSMetaReadahead_s {
+    off_t   offset;
+    size_t  length;
+} FSMetaReadahead;
+
+@interface FSKitMetaBlockRange : NSObject
+
+@property (readonly) off_t     startBlockOffset;
+@property (readonly) uint32_t  blockLength;
+@property (readonly) uint32_t  numOfBlocks;
+
+-(instancetype)initWithOffset:(off_t)startBlockOffset
+                  blockLength:(uint32_t)blockLength
+                  numOfBlocks:(uint32_t)numOfBlocks;
+
++(instancetype)rangeWithOffset:(off_t)startBlockOffset
+                   blockLength:(uint32_t)blockLength
+                   numOfBlocks:(uint32_t)numOfBlocks;
+
+@end
+
+/**
+ * FSBlockDeviceResource - FSResource representing a disk partition
+ *
+ *      Includes both names of the partition and file descriptor
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSBlockDeviceResource : FSResource
+
+-(instancetype _Nullable)initProxyForBSDName:(NSString *)bsdName FSKIT_API_AVAILABILITY_V1;
+-(instancetype _Nullable)initProxyForBSDName:(NSString *)bsdName
+                                    writable:(bool)isWritable FSKIT_API_AVAILABILITY_V1;
+
++(instancetype _Nullable)proxyResourceForBSDName:(NSString *)bsdName FSKIT_API_AVAILABILITY_V1;
+
++(instancetype _Nullable)proxyResourceForBSDName:(NSString *)bsdName
+                                        writable:(bool)writable FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly, strong)    NSString *      bsdName FSKIT_API_AVAILABILITY_V1;
+@property (readonly)            bool            writable FSKIT_API_AVAILABILITY_V1;
+@property (readonly)            NSUInteger      blockSize FSKIT_API_AVAILABILITY_V1;
+@property (readonly)            NSUInteger      blockCount FSKIT_API_AVAILABILITY_V1;
+@property (readonly)            NSUInteger      physicalBlockSize FSKIT_API_AVAILABILITY_V1;
+@property (nonatomic,setter=terminate:)
+                                bool            terminated FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * readInto:startingAt:length:replyHandler: - read data into a buffer
+ *
+ *      This method schedules a read from the resource. The data
+ * are read from offset parameter in the file into the buffer located
+ * at buffer. Up to nbytes bytes are read. To be successful, requests
+ * must conform to the transfer requirements of the underlying resource;
+ * disk drives typically require sector addressed operations of one or
+ * more sector aligned offsets.
+ *
+ *      error will be nil in case of no error, and non-nil in case of an
+ * error. In the case of no error, actuallyRead will report the number of
+ * bytes read.
+ *
+ *      reply may be called before readInto:startingAt:length:reply returns,
+ * such as when an error is immediately detected. Otherwise it will be called
+ * when the operation concludes.
+ * Note: No assumptions should be made about reply block execution with respect to return from the function.
+ */
+-(void)readInto:(void *)buffer
+     startingAt:(off_t)offset
+         length:(size_t)nbytes
+   replyHandler:(void(^)(size_t actuallyRead,
+                         NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousReadInto:startingAt:length:replyHandler: - synchronous read data into a buffer
+ *      This method does exactly what readInto:startingAt:length:reply: but in a synchronous way.
+ */
+-(void)synchronousReadInto:(void *)buffer
+                startingAt:(off_t)offset
+                    length:(size_t)nbytes
+              replyHandler:(void(^)(size_t actuallyRead,
+                                    NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * writeFrom:startingAt:length:reply: - write data from a buffer
+ *
+ *      This method schedules a write to the resource. The data
+ * are written to offset parameter in the file from the buffer located
+ * at buffer. Up to nbytes bytes are read. To be successful, requests
+ * must conform to the transfer requirements of the underlying resource;
+ * disk drives typically require sector addressed operations of one or
+ * more sector aligned offsets.
+ *
+ *      error will be nil in case of no error, and non-nil in case of an
+ * error. In the case of no error, actuallyWritten will report the number of
+ * bytes written.
+ *
+ *      reply may be called before writeFrom:startingAt:length:replyHandler returns,
+ * such as when an error is immediately detected. Otherwise it will be called
+ * when the operation concludes.
+ * Note: No assumptions should be made about reply block execution with respect to return from the function.
+ */
+-(void)writeFrom:(void *)buffer
+      startingAt:(off_t)offset
+          length:(size_t)nbytes
+    replyHandler:(void(^)(size_t actuallyWritten,
+                          NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousWriteFrom:startingAt:length:replyHandler: - synchronous write data from a buffer
+ *      This method does exactly what writeFrom:startingAt:length:reply: but in a synchronous way.
+ */
+-(void)synchronousWriteFrom:(void *)buffer
+                 startingAt:(off_t)offset
+                     length:(size_t)nbytes
+               replyHandler:(void(^)(size_t actuallyRead,
+                                     NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaReadInto:startingAt:length:reply: - synchronous read metadata data into a buffer
+ *
+ * This method schedules a metadata read from the resource. The data  are read from offset parameter in the file into the buffer located
+ * at buffer. Up to length bytes are read. To be successful, requests must conform to the transfer requirements of the underlying resource;
+ * disk drives typically require sector addressed operations of one or more sector aligned offsets.
+ *
+ * Error will be nil in case of no error, and non-nil in case of an error.
+ *
+ * Reply may be called before readInto:startingAt:length:reply returns, such as when an error is immediately detected.
+ * Otherwise it will be called when the operation concludes.
+ */
+-(void)synchronousMetaReadInto:(void *)buffer
+                    startingAt:(off_t)offset
+                        length:(size_t)length
+                  replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaReadInto:startingAt:length:readAheadExtents:readAheadCount:replyHandler: - synchronous read metadata data into a buffer with read ahead
+ */
+-(void)synchronousMetaReadInto:(void *)buffer
+                    startingAt:(off_t)offset
+                        length:(size_t)length
+              readAheadExtents:(FSMetaReadahead *)readAheadExtents
+                readAheadCount:(int)readAheadExtentsCount
+                  replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * metaWriteFrom:startingAt:length:replyHandler: - write metadata data from a buffer
+ *
+ * This method schedules a  metadata write to the resource. The data are written to offset parameter in the file from the buffer located
+ * at buffer. Up to length bytes are written. To be successful, requests must conform to the transfer requirements of the underlying resource;
+ * disk drives typically require sector addressed operations of one or more sector aligned offsets.
+ *
+ * Error will be nil in case of no error, and non-nil in case of an error. In the case of no error,
+ *
+ * Reply may be called before metaWriteFrom:startingAt:length:reply returns, such as when an error is immediately detected.
+ * Otherwise it will be called when the operation concludes.
+ * Note: No assumptions should be made about reply block execution with respect to return from the function.
+ */
+-(void)metaWriteFrom:(void *)buffer
+          startingAt:(off_t)offset
+              length:(size_t)length
+        replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaWriteFrom:startingAt:length:replyHandler: - synchronous metadata write data from a buffer
+ * This method does exactly what metaWriteFrom:startingAt:length:reply: but in a synchronous way.
+ */
+-(void)synchronousMetaWriteFrom:(void *)buffer
+                     startingAt:(off_t)offset
+                         length:(size_t)length
+                   replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousDelayedMetaWriteFrom:startingAt:length:replyHandler: - synchronous metadata delayed write data from a buffer
+ */
+-(void)synchronousDelayedMetaWriteFrom:(void *)buffer
+                            startingAt:(off_t)offset
+                                length:(size_t)length
+                          replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaFlushWithReplyHandler - synchronously flush the resource's buffer cache.
+ *
+ * This method schedules a flush to the resource. Any cached metadata operations is being written to the resource.
+ *
+ * Error will be nil in case of success, and non-nil in case of an error.
+ *
+ * Reply is called when an error is detected, or the method finishes its operation (returns).
+ */
+-(void)synchronousMetaFlushWithReplyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaClear:wait:replyHandler - synchronously clear the given ranges from our buffer cache
+ *
+ * This method clears (writes zeroes into) the given ranges in the resource's buffer cache.
+ *
+ * The 'wait' parameter indicates whether the clearing should be done using delayed writes.
+ *
+ * Error will be nil in case of success, and non-nil in case of an error.
+ *
+ * Reply is called when an error is detected, or the method finishes its operation (returns).
+ */
+-(void)synchronousMetaClear:(NSArray<FSKitMetaBlockRange *> *)rangesToClear
+                       wait:(bool)wait
+               replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * synchronousMetaClear:replyHandler - synchronously purge the given ranges from our buffer cache
+ *
+ * This method purges (removes) the given range from the resource's buffer cache.
+ *
+ * Error will be nil in case of success, and non-nil in case of an error.
+ *
+ * Reply is called when an error is detected, or the method finishes its operation (returns).
+ */
+-(void)synchronousMetaPurge:(NSArray<FSKitMetaBlockRange *> *)rangesToPurge
+               replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/**
+ * @brief Maintenance operations for a resource we can manage
+ *
+ * This protocol includes operations to check and possibly format a resource for an FSUnaryFilesystem.
+ * FSUnaryFilesystems for FSBlockDeviceResources must conform to this protocol, and ones for
+ * FSPathURLResources MAY conform to thei protocol.
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSManageableResourceSimpleMaintenanceOps <NSObject>
+
+@optional
+-(void)checkWithParameters:(FSTaskParameters)parameters
+                connection:(FSMessageConnection *)connection
+                    taskID:(NSUUID *)taskID
+              replyHandler:(void (^)(NSProgress * _Nullable progress, NSError * _Nullable err))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)formatWithParameters:(FSTaskParameters)parameters
+                 connection:(FSMessageConnection *)connection
+                     taskID:(NSUUID *)taskID
+               replyHandler:(void (^)(NSProgress * _Nullable progress, NSError * _Nullable err))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/**
+ * FSPathURLResource - FSResource representing a path
+ *
+ *      May be either a real file path (possibly security scoped URL)
+ * or an abstract path (a string starting with "file://")
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSPathURLResource : FSResource
+
+@property (readonly, strong)    NSURL *         url FSKIT_API_AVAILABILITY_V1;
+
++(instancetype _Nullable)resourceWithURL:(NSURL *)url FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/**
+ * @class FSProbeResult object holding result of a specific probe
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSProbeResult : NSObject <NSSecureCoding>
+
+@property (readonly)            FSMatchResult           result;
+@property (readonly, nullable)  NSString               *name;
+@property (readonly, nullable)  FSContainerIdentifier  *containerID;
+
++(instancetype _Nullable)resultWithResult:(FSMatchResult) result
+                                     name:(NSString * _Nullable)name
+                              containerID:(FSContainerIdentifier * _Nullable)containerUUID FSKIT_API_AVAILABILITY_V1;
+
+
+@end
+
+/**
+ * @protocol FSBlockDeviceOperations
+ * @abstract additional operations a container must support for block devices, also optional for PathURL resources
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSBlockDeviceOperations <NSObject>
+
+/**
+ * @method probeResource:replyHandler: - probe a resource
+ * @param resource FSResource to be probed
+ * @param reply completion block called with result
+ * @discussion Reports the result of probing the given resource.
+ */
+@optional
+-(void)probeResource:(FSResource *)resource
+        replyHandler:(void(^)(FSMatchResult result,
+                              NSString * _Nullable name,
+                              FSContainerIdentifier * _Nullable containerID,
+                              NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif /* FSResource_h */
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTaskOptionsBundle.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTaskOptionsBundle.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTaskOptionsBundle.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSTaskOptionsBundle.h	2024-05-31 06:25:51
@@ -0,0 +1,96 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSTaskOptionsBundle.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSKitTypes.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(uint8_t, FSTaskType) {
+    FSTaskCheck   = 0,
+    FSTaskFormat,
+    FSTaskActivate,
+};
+
+/*
+ * FSTaskOption - one option in an FSTaskOptionsBundle
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSTaskOption : NSObject<NSSecureCoding>
+
+-(         instancetype)init NS_UNAVAILABLE;
++(nullable instancetype)optionWithoutValue:(NSString *)option FSKIT_API_AVAILABILITY_V1;
+
++(nullable instancetype)option:(NSString *)option
+                         value:(NSString *)value FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly)            bool            hasValue FSKIT_API_AVAILABILITY_V1;
+@property (readonly, retain)    NSString *      option FSKIT_API_AVAILABILITY_V1;
+@property (readonly, retain)    NSString *      optionValue FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/*
+ * FSTaskOptionsBundle - CLI options passed to a CLI tool
+ *
+ *      This class wraps a number of options passed to a tool. The
+ * canonical example is that of command line options passed to one
+ * of the CLI tools (mount_XYZ, fsck_XYZ, newfs_XYZ), however the
+ * options may originate in a UI-app.
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSTaskOptionsBundle : NSObject<NSSecureCoding>
+
+/**
+ @method bundleForArguments:count:extension:operationType:errorHandler:
+ @abstract generates an FSTaskOptionsBundle corresponding to the suppiied command arguments
+ @discussion Uses getopt(3) or getopt_long(3) to process supplied arguments. Processing uses
+    the optstring supplied by the identified extension
+ @param argv
+    array of argument strings to process
+ @param argc
+    Count of argument strings to process
+ @param extensionID
+    Identifier of extension whose parameters are being processed
+ @param taskType
+    Type of operation (FSTaskCheck, FSTaskFormat)
+ @param errorHandler
+    Block to handle errors encountered during parsing. The error parameter
+    will describe the encountered error, If available, the option parameter will contain
+    the contents of the option encountering the error.
+ */
++(instancetype)bundleForArguments:(char * _Nonnull const [_Nonnull])argv
+                            count:(int)argc
+                        extension:(NSString *)extensionID
+                    operationType:(FSTaskType)taskType
+                     errorHandler:(void(^)(NSError *error, NSString * _Nullable option))errorHandler FSKIT_API_AVAILABILITY_V1;
+
+/**
+ @method resetOptionEnumeration
+ @abstract Reset option parsing to consider any future argv as a new set of arguments
+ @discussion Sets option processing state such that the next command option evalutation
+    starts fresh. This acton allows parsing multiple sets of arguments, or re-evaluating a set of arguments.
+ */
++(void)resetOptionEnumeration FSKIT_API_AVAILABILITY_V1;
+
+-(void)addOption:(FSTaskOption *)opt FSKIT_API_AVAILABILITY_V1;
+
+-(void)enumerateOptionsWithBlock:(void(^)(int ch, NSString * _Nullable optarg,
+                                          NSUInteger idx, BOOL *stop))block FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly, copy)  NSArray <FSTaskOption *> * options FSKIT_API_AVAILABILITY_V1;
+@property (readonly, copy)  FSTaskParameters    parameters;
+
+@end
+
+FS_EXPORT   NSString    *FSCheckOptionSyntaxKey;
+FS_EXPORT   NSString    *FSFormatOptionSyntaxKey;
+FS_EXPORT   NSString    *FSActivateOptionSyntaxKey;
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSUnaryFileSystem.h	2024-05-31 06:25:51
@@ -0,0 +1,43 @@
+//
+//  Copyright (c) 2022-2023 Apple Inc. All rights reserved.
+//
+//  FSUnaryFileSystem.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * FSUnaryFileSystem - base class for a "Simple" module
+ *
+ *      A "Simple" file system is characterized by two attributes:
+ *  1) One Resource <=> One Volume
+ *  2) FSKit offers a fair amount of infrastructure between incoming
+ *     requests and the requests to the volume object. Examples are
+ *     funneling all requests to one metadata operation queue, power
+ *     assertions, and sleep assertions
+ */
+FSKIT_API_AVAILABILITY_V1
+@interface FSUnaryFileSystem : NSObject <FSFileSystemBase>
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@protocol FSUnaryFileSystemOperations <NSObject>
+
+@optional
+-(void)loadResource:(FSResource *)resource
+            options:(FSTaskOptionsBundle *)options
+       replyHandler:(void (^)(FSVolume * _Nullable volume,
+                              NSError * _Nullable err))reply FSKIT_API_AVAILABILITY_V1;
+
+/// This method will be called after the main runloop has started and before the first message from fskitd has been received.
+@optional
+-(void)didFinishLoading FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolume.h	2024-05-31 06:25:51
@@ -0,0 +1,630 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSVolume.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSKitDefines.h>
+#import <FSKit/FSEntityIdentifier.h>
+#import <FSKit/FSFileDataBuffer.h>
+#import <FSKit/FSItem.h>
+#import <FSKit/FSTaskOptionsBundle.h>
+#import <FSKit/FSContainer.h>
+#import <FSKit/FSFileName.h>
+#import <FSKit/FSResource.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*
+ * FSVolumeIdentifier - data identfying a volume
+ *
+ *      For most volumes, these data are the bytes of the UUID
+ * identifying the volume. Network file systems may access the same
+ * underlying volume using different authentication credentials. As
+ * such, volume identifiers for those volumes add qualifying data indicative
+ * of the specific container.
+ */
+@interface FSVolumeIdentifier : FSEntityIdentifier
+@end
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(int, FSVolumeState) {
+    // Volume not ready
+    FSVolumeNotReady = 0,
+    // Volume is ready, can be verified, repaired, or mounted
+    FSVolumeReady,
+    // Volume is active, has been mounted
+    FSVolumeActive
+};
+
+FSKIT_API_AVAILABILITY_V1
+typedef int (^FSDirEntryPacker)(FSFileName * name, FSItemType itemType, uint64_t itemID,
+                                uint64_t nextCookie, FSItemAttributes * _Nullable itemAttributes, bool isLast);
+
+/**
+ FSKitAccessMask is a bitmask of access rights
+ */
+FSKIT_API_AVAILABILITY_V1
+typedef NS_OPTIONS(uint32_t, FSKitAccessMask) {
+    FSAccessReadData            = (1<<1),
+    FSAccessListDirectory       = FSAccessReadData,
+    FSAccessWriteData           = (1<<2),
+    FSAccessAddFile             = FSAccessWriteData,
+    FSAccessExecute             = (1<<3),
+    FSAccessSearch              = FSAccessExecute,
+    FSAccessDelete              = (1<<4),
+    FSAccessAppendData          = (1<<5),
+    FSAccessAddSubdirectory     = FSAccessAppendData,
+    FSAccessDeleteChild         = (1<<6),
+    FSAccessReadAttributes      = (1<<7),
+    FSAccessWriteAttributes     = (1<<8),
+    FSAccessReadExtAttributes   = (1<<9),
+    FSAccessWriteExtAttributes  = (1<<10),
+    FSAccessReadSecurity        = (1<<11),
+    FSAccessWriteSecurity       = (1<<12),
+    FSAccessTakeOwnership       = (1<<13),
+};
+
+/**
+ FSKitXattrCreateRequirementAndFlags - if the client only wants to create, only replace, or doesn't care
+
+ Also leaves space for future flags
+ */
+FSKIT_API_AVAILABILITY_V1
+typedef NS_OPTIONS(uint32_t, FSKitXattrCreateRequirementAndFlags) {
+    FSVolumeMustCreateXattr     = 0x0002,   /* set the value, fail if attr already exists */
+    FSVolumeMustReplaceXattr    = 0x0004,   /* set the value, fail if attr does not exist */
+    FSVolumeAlwaysSetXattr      = 0x0006,   /* set the value regardless of previous state */
+    FSVolumeDeleteXattr         = 0x0008,   /* delete the value, fail if attr does not exist */
+};
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_OPTIONS(uint32_t, FSKitBlockmapFlags) {
+    FSBlockmapRead          = 0x000100,
+    FSBlockmapWrite         = 0x000200,
+    FSBlockmapAsync         = 0x000400,
+    FSBlockmapNoCache       = 0x000800,
+    FSBlockmapFileIssued    = 0x001000,
+};
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_OPTIONS(uint32_t, FSKitPreallocateFlags) {
+    FSPreallocateAll        = 0x00000002,
+    FSPreallocateContig     = 0x00000004,
+    FSPreallocateFromEOF    = 0x00000010,
+    FSPreallocateFromVol    = 0x00000020,
+};
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSVolumeSupportedCapabilities : NSObject<NSSecureCoding>
+
+/** Supports persistent object identifiers and can look up file system objects by their IDs. */
+@property (nonatomic) bool supportsPersistentObjectIDs FSKIT_API_AVAILABILITY_V1;
+
+/** Supports symbolic links */
+@property (nonatomic) bool supportsSymLinks FSKIT_API_AVAILABILITY_V1;
+
+/** Supports hard links */
+@property (nonatomic) bool supportsHardLinks FSKIT_API_AVAILABILITY_V1;
+
+/** Supports a journal used to speed recovery in case of unplanned restart (such as a power outage or crash).  This does not necessarily mean the volume is actively using a journal. */
+@property (nonatomic) bool supportsJournal FSKIT_API_AVAILABILITY_V1;
+
+/** Supports active journal using a journal for speedy recovery after an unplanned restart.  */
+@property (nonatomic) bool supportsJournalActive FSKIT_API_AVAILABILITY_V1;
+
+/** Does not store reliable times for the root directory */
+@property (nonatomic) bool supportsNoRootTimes FSKIT_API_AVAILABILITY_V1;
+
+/** Supports sparse files, that is, files which can have 'holes' that have never been written to, and thus do not consume space on disk. */
+@property (nonatomic) bool supportsSparseFiles FSKIT_API_AVAILABILITY_V1;
+
+/** Supports zero runs, the volume keeps track of allocated but unwritten runs of a file so that it can substitute zeroes without actually writing zeroes to the media. */
+@property (nonatomic) bool supportsZeroRuns FSKIT_API_AVAILABILITY_V1;
+
+/** Supports case sensitive, treats upper and lower case characters in file and directory names as different. */
+@property (nonatomic) bool supportsCaseSensitive FSKIT_API_AVAILABILITY_V1;
+
+/** Supports preserving the case of file and directory names. */
+@property (nonatomic) bool supportsCasePreserving FSKIT_API_AVAILABILITY_V1;
+
+/** Supports fast statfs, hints to upper layers to indicate that statfs(2) is fast enough that its results need not be cached by the caller. */
+@property (nonatomic) bool supportsFastStatFS FSKIT_API_AVAILABILITY_V1;
+
+/** Supports file sizes larger than 4GB, and potentially up to 2TB */
+@property (nonatomic) bool supports2TBFiles FSKIT_API_AVAILABILITY_V1;
+
+/** Supports open deny modes (e.g., "open for read write, deny write"). */
+@property (nonatomic) bool supportsOpenDenyModes FSKIT_API_AVAILABILITY_V1;
+
+/** Supports the `UF_HIDDEN` file flag */
+@property (nonatomic) bool supportsHiddenFiles FSKIT_API_AVAILABILITY_V1;
+
+/** Does not support determining values for total data blocks, available blocks, or free blocks, as in f_blocks, f_bavail, and f_bfree in the struct statfs returned by statfs(2). */
+@property (nonatomic) bool supportsNoVolumeSizes FSKIT_API_AVAILABILITY_V1;
+
+/** Supports 64-bit object IDs, Uses object IDs that are 64-bit. */
+@property (nonatomic) bool supports64BitObjectIDs FSKIT_API_AVAILABILITY_V1;
+
+/** Supports document IDs (an ID which persists across object ID changes) for document revisions. */
+@property (nonatomic) bool supportsDocumentID FSKIT_API_AVAILABILITY_V1;
+
+/** Does not support setting the UF_IMMUTABLE flag */
+@property (nonatomic) bool supportsNoImmutableFiles FSKIT_API_AVAILABILITY_V1;
+
+/** Does not support setting file permissions */
+@property (nonatomic) bool supportsNoSettingFilePermissions FSKIT_API_AVAILABILITY_V1;
+
+/** Supports having multiple logical filesystems in a single "partition" which share space. */
+@property (nonatomic) bool supportsSharedSpace FSKIT_API_AVAILABILITY_V1;
+
+/** Supports having multiple logical filesystems which may be mounted and unmounted together and may present common filesystem identifier information. */
+@property (nonatomic) bool supportsVolumeGroups FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSVolumeDescription : NSObject <NSSecureCoding>
+
+@property (readonly, copy) FSVolumeIdentifier    *volumeID FSKIT_API_AVAILABILITY_V1;
+@property (readonly, copy) NSString              *volumeName FSKIT_API_AVAILABILITY_V1;
+@property (readonly)       FSVolumeState          volumeState FSKIT_API_AVAILABILITY_V1;
+
++ (instancetype)volumeDescriptionWithID:(FSVolumeIdentifier *)volID
+                                   name:(NSString *)volName
+                                  state:(FSVolumeState)volState FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSVolume : NSObject
+
+@property (strong) FSVolumeIdentifier    *volumeID FSKIT_API_AVAILABILITY_V1;
+
+@property (readonly, nonatomic) FSVolumeSupportedCapabilities *volumeSupportedCapabilities FSKIT_API_AVAILABILITY_V1;
+
+@property (strong) NSString              *volumeName FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * Volume state (not ready, ready, active)
+ */
+@property (nonatomic) FSVolumeState         volumeState FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * wasTerminated - set to true when the volume has been terminated
+ *
+ *      Technically a volume can still be active and terminated, which
+ * indicates its underlying resource(s) is/are gone but it is still
+ * active.
+ */
+@property (nonatomic) bool                  wasTerminated FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * pathConfUnlimited - value returned by pathconf limits when no limit is applied
+ *
+ *      Value is -1;
+ */
+@property (readonly,class)      int32_t     pathConfUnlimited FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * globalWorkQueue - global queue on which to do work
+ *
+ * If non-nil, work will be funneled to this queue for all operations other than rename
+ */
+@property (nullable,retain)     dispatch_queue_t    globalWorkQueue FSKIT_API_AVAILABILITY_V1;
+
+/**
+ * reanameWorkQueue - queue on which rename operations are dispatched
+ *
+ * If accessed without being set, will create a serial queue used for rename operations.
+ */
+@property (nonatomic,retain)    dispatch_queue_t    renameWorkQueue FSKIT_API_AVAILABILITY_V1;
+@end
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_OPTIONS(uint64_t, FSRenameItemOptions) {
+    FSRenameItemOptionReserved = 1          // Reserved for now
+};
+
+/*
+ * FSVolumePathConfOperations
+ *
+ *      This protocol gathers properties related to the pathfonf and fpathconf
+ * system calls. They are included in FSVolumeOperations and are gathered here as
+ * they behave differently than the operations added in FSVolumeOperations. These
+ * properties return the value imposed by the file sysem for the given property. For
+ * files, this value applies to the file. For directories, this value applies to
+ * all of the items in the directory.
+ *
+ *      Some values are booleans while other values are numeric. Numeric limits
+ * use -1 to represent no limit. The class property pathConfUnlimited returns this
+ * value. Boolean properties return 0 for false and -1 for true.
+ *
+ *      These properties have names taken from the pathconf(2) property names, with
+ * the leading underscore removed.
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumePathConfOperations <NSObject>
+
+// The maximum number of hard links to the object
+- (int32_t)PC_LINK_MAX FSKIT_API_AVAILABILITY_V1;
+
+// The maximum length of a component of a filename
+- (int32_t)PC_NAME_MAX FSKIT_API_AVAILABILITY_V1;
+
+// if TRUE, filesystem will reject chown(2) calls if not superuser
+- (int32_t)PC_CHOWN_RESTRICTED FSKIT_API_AVAILABILITY_V1;
+
+// If TRUE, filesystem will return ENAMETOOLONG if filename is longer then pcr_name_max
+- (int32_t)PC_NO_TRUNC FSKIT_API_AVAILABILITY_V1;
+
+// if TRUE, filesystem will ignore case when interpreting filenames
+- (int32_t)PC_CASE_SENSITIVE FSKIT_API_AVAILABILITY_V1;
+
+// if TURE, filesystem will preserve case of a filename during CREATE, MKDIR, RENAME, SYMFSKitNK operations
+- (int32_t)PC_CASE_PRESERVING FSKIT_API_AVAILABILITY_V1;
+
+// The number of bits used to store maximum extended attribute size in bytes
+- (int32_t)PC_XATTR_SIZE_BITS FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * The minimum number of bits needed to represent, as a SIGNED integer value,
+ * the maximum size of a regular file allowed in the specified directory.
+ *
+ *   Maximum file size (bytes)    Maximum (in hex)      Unsigned bits       Signed bits
+ *                      65,535              0xFFFF              16              17
+ *               2,147,483,647          0x7FFFFFFF              31              32
+ *               4,294,967,295          0xFFFFFFFF              32              33
+ *  18,446,744,073,709,551,615  0xFFFFFFFFFFFFFFFF              64              65
+ */
+- (int32_t)PC_FILESIZEBITS FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@interface FSKitStatfsResult : NSObject <NSSecureCoding>
+
+/** Block size, in bytes, of the file system */
+@property (readonly) uint64_t blockSize FSKIT_API_AVAILABILITY_V1;
+/** Optimal transfer block size */
+@property (readonly) uint64_t ioSize FSKIT_API_AVAILABILITY_V1;
+/** Total data blocks in file system */
+@property (readonly) uint64_t totalBlocks FSKIT_API_AVAILABILITY_V1;
+/** Free blocks avail to non-superuser */
+@property (readonly) uint64_t availableBlocks FSKIT_API_AVAILABILITY_V1;
+/** Free blocks in file system */
+@property (readonly) uint64_t freeBlocks FSKIT_API_AVAILABILITY_V1;
+/** Total size, in bytes, of the file system */
+@property (readonly) uint64_t totalBytes FSKIT_API_AVAILABILITY_V1;
+/** The amount of space available to users, in bytes, in the file system */
+@property (readonly) uint64_t availableBytes FSKIT_API_AVAILABILITY_V1;
+/** The amount of free space, in bytes, in the file system */
+@property (readonly) uint64_t freeBytes FSKIT_API_AVAILABILITY_V1;
+/** The total number of file slots in the file system */
+@property (readonly) uint64_t totalFiles FSKIT_API_AVAILABILITY_V1;
+/** The total number of free file slots in the file system */
+@property (readonly) uint64_t freeFiles FSKIT_API_AVAILABILITY_V1;
+/** FS sub-type (flavor) */
+@property (readonly) uint32_t fsSubType FSKIT_API_AVAILABILITY_V1;
+/** FS type name*/
+@property (readonly) NSString * fsTypeName FSKIT_API_AVAILABILITY_V1;
+
++ (instancetype)statFSWithBlockSize:(uint64_t)blockSize
+                             ioSize:(uint64_t)ioSize
+                        totalBlocks:(uint64_t)totalBlocks
+                    availableBlocks:(uint64_t)availableBlocks
+                         freeBlocks:(uint64_t)freeBlocks
+                         totalFiles:(uint64_t)totalFiles
+                          freeFiles:(uint64_t)freeFiles
+                          fsSubType:(uint32_t)fsSubType
+                         fsTypeName:(NSString *)fsTypeName FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeOperations <NSObject, FSVolumePathConfOperations>
+/*
+ * volumeStatistics - report FSKitStatfsResult data
+ */
+@property (readonly, nonatomic) FSKitStatfsResult * volumeStatistics FSKIT_API_AVAILABILITY_V1;
+
+
+/*
+ * setReady:forced:reply: - transition the volume to either the Ready or NotReady state
+ */
+-(void)setNewState:(FSVolumeState)wantedState
+            forced:(bool)forced
+      replyHandler:(void(^)(FSVolumeState newState, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+
+/*
+ * mount - some process is trying to mount this volume
+ */
+-(void)mount:(FSTaskOptionsBundle *)options
+replyHandler:(void(^)(FSItem * _Nullable rootItem, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * unmount - file system is being unmounted. All cached state should be cleaned and flushed.
+ * A hint is provided that the device may be gone (unexpected disconnect).
+ * If the device isn't noted as termianted, the volume should exit in a state which can be
+ * immediately mounted again.
+ *
+ * Implementation should check wasTerminated property to determine if i/o is safe
+ */
+-(void)unmount:(void(^)(void))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)synchronize:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)getItemAttributes:(FSItem *)item
+     requestedAttributes:(FSItemGetAttributesRequest *)desired
+            replyHandler:(void(^)(FSItemAttributes * _Nullable attributes, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)setItemAttributes:(FSItem *)item
+     requestedAttributes:(FSItemSetAttributesRequest *)newAttributes
+            replyHandler:(void(^)(FSItemAttributes * _Nullable attributes, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)lookupName:(FSFileName *)name
+      inDirectory:(FSItem *)directory
+     replyHandler:(void(^)(FSItem * _Nullable theItem, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/*
+ * Implementation should check wasTerminated property to determine if i/o is safe
+ */
+-(void)reclaim:(FSItem *)item
+  replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)readSymbolicLink:(FSItem *)item
+           replyHandler:(void(^)(FSFileName * _Nullable contents, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+// both directory and files vv
+-(void)createItemNamed:(FSFileName *)name
+                  type:(FSItemType)type
+           inDirectory:(FSItem *)directory
+            attributes:(FSItemSetAttributesRequest *)newAttributes
+          replyHandler:(void(^)(FSItem * _Nullable newItem,
+                                NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)createSymbolicLinkNamed:(FSFileName *)name
+                   inDirectory:(FSItem *)directory
+                    attributes:(FSItemSetAttributesRequest *)newAttributes
+                  linkContents:(NSData *)contents
+                  replyHandler:(void(^)(FSItem * _Nullable newItem,
+                                        NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)createLinkof:(FSItem *)item
+              named:(FSFileName *)name
+        inDirectory:(FSItem *)directory
+       replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)removeItem:(FSItem *)item
+            named:(FSFileName *)name
+    fromDirectory:(FSItem *)directory
+     replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/*
+ *
+ * Return EEXIST if we pass overItem nil but there is an item
+ *
+ * for overItem when present, removeItem semantics apply
+ *
+ */
+-(void)renameItem:(FSItem *)item
+      inDirectory:(FSItem *)sourceDirectory
+            named:(FSFileName *)sourceName
+      toDirectory:(FSItem *)destinationDirectory
+          newName:(FSFileName *)destinationName
+         overItem:(FSItem * _Nullable)overItem
+      withOptions:(FSRenameItemOptions)options
+     replyHandler:(void(^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+// Need to define initial cookie and initial verifier values
+-(void)enumerateDirectory:(FSItem *)directory
+         startingAtCookie:(uint64_t)cookie
+                 verifier:(uint64_t)verifier
+        provideAttributes:(bool)provideAttributes
+               attributes:(FSItemGetAttributesRequest * _Nullable)attributes
+               usingBlock:(FSDirEntryPacker)packer //??
+             replyHandler:(void(^)(uint64_t newVerifier,
+                                   NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+// things to make volume properties
+/*
+ * volUUID, volName, location, subType, typeName, CName, blockSize, ioSize,
+ * others
+ */
+
+-(void)activate:(FSTaskOptionsBundle *)options
+   replyHandler:(void (^)(FSItem * _Nullable rootItem,
+                          NSError * _Nullable err))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)deactivate:(NSUInteger)options
+     replyHandler:(void (^)(NSError * _Nullable err))reply FSKIT_API_AVAILABILITY_V1;
+
+@optional
+-(void)otherAttributeNamed:(FSFileName *)name
+                        of:(FSItem *)item
+              replyHandler:(void(^)(NSData * _Nullable data,
+                                    NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)setOtherAttributeNamed:(FSFileName *)name
+                           of:(FSItem *)item
+                         with:(NSData * _Nullable)newData
+                 replyHandler:(void(^)(NSData * _Nullable data,
+                                       NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeXattrOperations <NSObject>
+
+@optional
+@property bool xattrOperationsInhibited FSKIT_API_AVAILABILITY_V1;
+
+@required
+/**
+ xattrOf:named:requestID:replyHandler:
+ Get the specified extended attribute of theItem.
+ */
+- (void)xattrOf:(FSItem *)item
+          named:(FSFileName * _Nonnull)name
+   replyHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ setXattrOf:named:value:how:requestID:replyHandler:
+ Set the specified extended attribute of theItem.  If FSVolumeDeleteXattr is set
+ in how, the extended attribute is to be deleted. In this case, value will be nil
+ */
+- (void)setXattrOf:(FSItem *)item
+             named:(FSFileName * _Nonnull)name
+             value:(NSData * _Nullable)value
+               how:(FSKitXattrCreateRequirementAndFlags)how
+      replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ listXattrsOf:requestID:replyHandler:
+ Get the FSKitst extended attributes currently set on theItem.
+ Reply data is an array of strings.
+ */
+- (void)listXattrsOf:(FSItem *)item
+        replyHandler:(void (^)(NSArray <NSString *> * _Nullable value, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/**
+ * @protocol FSVolumeLimitedXattrOperations
+ * A protocol for volumes which only support a limited set of extended attributes.
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeLimitedXattrOperations <NSObject>
+
+@optional
+@property bool limitedXattrOperationsInhibited FSKIT_API_AVAILABILITY_V1;
+
+@required
+/**
+ * supportedXattrNamesOf:
+ * Returns an array of strings that specifies the Xattr names supported by the given item.
+ * If the given item does not support any Xattrs, nil should be returned.
+ */
+-(NSArray *)supportedXattrNamesOf:(FSItem *)item FSKIT_API_AVAILABILITY_V1;
+
+/**
+ xattrOf:named:requestID:replyHandler:
+ Get the specified extended attribute of theItem.
+ */
+-(void)xattrOf:(FSItem *)item
+         named:(FSFileName * _Nonnull)name
+  replyHandler:(void (^)(NSData * _Nullable value, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ setXattrOf:named:value:how:requestID:replyHandler:
+ Set the specified extended attribute of theItem.  If FSVolumeDeleteXattr is set
+ in how, the extended attribute is to be deleted. In this case, value will be nil
+ */
+-(void)setXattrOf:(FSItem *)item
+            named:(FSFileName * _Nonnull)name
+            value:(NSData * _Nullable)value
+              how:(FSKitXattrCreateRequirementAndFlags)how
+     replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ listXattrsOf:requestID:replyHandler:
+ Get the FSKitst extended attributes currently set on theItem.
+ Reply data is an array of strings.
+ */
+-(void)listXattrsOf:(FSItem *)item
+       replyHandler:(void (^)(NSArray <NSString *> * _Nullable value, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/*
+ * FSVolumeOpenCloseOperations - protocol for open/close
+ *
+ *      File systems which want to receive open and close calls for each
+ * item conform to this protocol. If this protocol is not implemented, the
+ * kernel layer is free to skip making such calls to the FSModule
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeOpenCloseOperations <NSObject>
+
+- (void)openItem:(FSItem *)item
+        withMode:(int)mode
+    replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+/**
+ closeItem:keepingMode:requestID:replyHandler: close a file access
+
+ mode is the set of mode flags (FREAD, FWRITE) to keep after this close. Upper layers
+ keep track of how many read-only, write-only, and read-write opens are active, and send
+ flags representing the still-open results.
+ */
+- (void)closeItem:(FSItem *)item
+      keepingMode:(int)mode
+     replyHandler:(void (^)(NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/*
+ * FSVolumeReadWriteOperations
+ *
+ *      Read and Write operations where we deliver data to/from the extension
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeReadWriteOperations <NSObject>
+
+-(void)readFromFile:(FSItem *)item
+             offset:(uint64_t)offset
+             length:(size_t)length
+             buffer:(FSMutableFileDataBuffer *)buffer
+       replyHandler:(void(^)(size_t actuallyRead, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+-(void)writeToFile:(FSItem *)item
+            offset:(uint64_t)offset
+            buffer:(NSData *)buffer
+      replyHandler:(void(^)(size_t actuallyWritten, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+// Document that both methods above need to return correct actually values even if returning an error
+
+@end
+
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeAccessCheckOperations <NSObject>
+
+- (void)checkAccessTo:(FSItem *)theItem
+      requestedAccess:(FSKitAccessMask)access
+         replyHandler:(void(^)(int result, NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/*
+ * FSVolumeCloneOperations
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeCloneOperations <NSObject>
+
+- (void)makeCloneOf:(FSItem *)sourceFile
+        inDirectory:(FSItem *)theDirectory
+              named:(FSFileName *)name
+         attributes:(FSItemSetAttributesRequest *)attrs
+         usingFlags:(uint32_t)flags
+       replyHandler:(void (^)(FSItem * _Nullable newItem,
+                              NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+/*
+ * FSVolumeRenameOperations
+ */
+FSKIT_API_AVAILABILITY_V1
+@protocol FSVolumeRenameOperations <NSObject>
+
+@property bool renameOperationsInhibited FSKIT_API_AVAILABILITY_V1;
+
+-(void)renameVolume:(FSFileName *)name
+       replyHandler:(void(^)(FSFileName *newName,
+                             NSError * _Nullable error))reply FSKIT_API_AVAILABILITY_V1;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeExtent.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeExtent.h
--- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeExtent.h	1970-01-01 01:00:00
+++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/FSKit.framework/Headers/FSVolumeExtent.h	2024-05-31 06:25:51
@@ -0,0 +1,76 @@
+//
+//  Copyright (c) 2022 Apple Inc. All rights reserved.
+//
+//  FSVolume.h
+//  FSKit
+//
+
+#import <Foundation/Foundation.h>
+#import <FSKit/FSVolume.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FSKIT_API_AVAILABILITY_V1
+typedef NS_ENUM(int, FSExtentType) {
+    FSExtentTypeData = 0,
+    FSExtentTypeZero = 1,
+};
+
+FSKIT_API_AVAILABILITY_V1
+typedef int (^FSExtentPacker)(FSBlockDeviceResource * resource, FSExtentType type,
+                              uint64_t logOffset, uint64_t phyOffset, uint32_t length);
+
+/*
+ * FSVolumeKernelOffloadedIOOperations - protocol of Kernel Offloaded IO operations
+ */
+@protocol FSVolumeKernelOffloadedIOOperations <NSObject>
+
+- (void)blockmapFile:(FSItem *)item
+               range:(NSRange)theRange
+             startIO:(boolean_t)starting
+               flags:(FSKitBlockmapFlags)flags
+         operationID:(uint64_t)operationID
+         usingPacker:(FSExtentPacker)packer
+        replyHandler:(void (^)(NSError * _Nullable error))reply;
+
+- (void)endIO:(FSItem *)item
+        range:(NSRange)originalRange
+       status:(int)ioStatus
+        flags:(FSKitBlockmapFlags)flags
+  operationID:(uint64_t)operationID
+ replyHandler:(void (^)(NSError * _Nullable error))reply;
+
+-(void)createItemNamed:(FSFileName *)name
+                  type:(FSItemType)type
+           inDirectory:(FSItem *)directory
+            attributes:(FSItemSetAttributesRequest *)newAttributes
+           usingPacker:(FSExtentPacker)packer
+          replyHandler:(void(^)(FSItem * _Nullable newItem,
+                                NSError * _Nullable error))reply;
+
+-(void)lookupName:(FSFileName *)name
+      inDirectory:(FSItem *)directory
+      usingPacker:(FSExtentPacker)packer
+     replyHandler:(void(^)(FSItem * _Nullable theItem,
+                           NSError * _Nullable error))reply;
+
+@end
+
+/*
+ * FSVolumePreallocOperations
+ */
+@protocol FSVolumePreallocateOperations <NSObject>
+
+@property bool preallocateOperationsInhibited;
+
+-(void)preallocate:(FSItem *)item
+            offset:(uint64_t)offset
+            length:(size_t)length
+             flags:(FSKitPreallocateFlags)flags
+       usingPacker:(FSExtentPacker)packer
+      replyHandler:(void(^)(size_t bytesAllocated,
+                            NSError * _Nullable error))reply;
+
+@end
+
+NS_ASSUME_NONNULL_END
Clone this wiki locally