import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _NSUUID } from "../Foundation/NSUUID.js";
import type { NSFileProviderDomainIdentifier } from "./NSFileProviderDomainIdentifier.js";
import type { NSFileProviderDomainTestingModes } from "./NSFileProviderDomainTestingModes.js";
import type { NSFileProviderKnownFolders } from "./NSFileProviderKnownFolders.js";
export declare class _NSFileProviderDomain extends _NSObject {
    static alloc(): _NSFileProviderDomain;
    static new(): _NSFileProviderDomain;
    init(): _NSFileProviderDomain;
    /**
     * Initialize a new non-replicated NSFileProviderDomain The extension will be implementing NSFileProviderExtension. The file provider extension implementation can pick any @c identifier as it sees fit to identify the group of items. The identifier must not contain any characters from this set: [/:] @param displayName a user visible string representing the group of items the file provider extension is using. @param pathRelativeToDocumentStorage a path relative to @c NSFileProviderExtension.documentStorageURL.
     */
    initWithIdentifier$displayName$pathRelativeToDocumentStorage$(identifier: NSFileProviderDomainIdentifier, displayName: _NSString, pathRelativeToDocumentStorage: _NSString): _NSFileProviderDomain;
    /**
     * Initialize a new replicated NSFileProviderDomain The extension will be implementing NSFileProviderReplicatedExtension. The file provider extension implementation can pick any @c identifier as it sees fit to identify the group of items. The identifier must not contain any characters from this set: [/:] In order to migrate a non-replicated domain to a replicated one, implementers have to make sure that they do not use the default domain, and then call +[NSFileProviderManager addDomain:completionHandler:] using the NSFileProviderDomain object returned by that init method. A domain with a specific identifier can be added multiple times; subsequent adds will update the properties of the existing domain. If a replicated domain is added "on top" of a non-replicated domain, the domain will be migrated to be replicated; existing bookmarks will remain valid, but the (externally visible) location of items will change to reflect the replicated location. It is not possible to migrate the default domain in this manner (since the default domain can not be added). It is recommended to migrate usage of the default domain to a domain with an explicit identifier instead. @param displayName a user visible string representing the group of items the file provider extension is using.
     */
    initWithIdentifier$displayName$(identifier: NSFileProviderDomainIdentifier, displayName: _NSString): _NSFileProviderDomain;
    /**
     * Initialize a new replicated NSFileProviderDomain on a specific volume. If a volumeURL is specified, and that volume is eligible, the domain will be located on this volume. The URL is used to designate a volume but doesn't influence where on this volume is the domain going to be stored. In order to avoid domainID collisions between volumes, the NSFileProviderDomainIdentifier of external domains are generated randomly by FileProvider. The provider should therefore use the userInfo to associate all necessary information to map the created object to the corresponding account. The userInfo will be persisted on the volume where the domain was created. If that is an external volume, the userInfo can be used on other devices to assist in setting up the domain on those devices. See the`NSFileProviderExternalVolumeHandling` protocol for more details.
     */
    initWithDisplayName$userInfo$volumeURL$(displayName: _NSString, userInfo: _NSDictionary, volumeURL: _NSURL | null): _NSFileProviderDomain;
    /** The identifier - as provided by the file provider extension. */
    identifier(): NSFileProviderDomainIdentifier;
    /** The display name shown by the system to represent this domain. */
    displayName(): _NSString;
    /**
     * The path relative to the document storage of the file provider extension. Files belonging to this domains should be stored under this path.
     */
    pathRelativeToDocumentStorage(): _NSString;
    /**
     * If set, the domain is present, but disconnected from its extension. In this state, the user continues to be able to browse the domain's contents, but the extension doesn't receive updates on modifications to the files, nor is it consulted to update folder's contents. The disconnected state can be modified on an existing domain via the disconnectWithReason method on NSFileProviderManager.
     */
    disconnected(): boolean;
    /**
     * If user has disabled this domain from Files.app on iOS or System Settings on macOS, this will be set to NO.
     */
    userEnabled(): boolean;
    /**
     * If this domain is not user visible. Typically, this can be used for dry-run migration. The files are still on disk though.
     */
    hidden(): boolean;
    setHidden$(value: boolean): void;
    /**
     * If the domain is a replicated domain. If set to YES, it means the domain is replicated. By default, on macOS, the value will always be YES. On iOS, it will depend on the way the NSFileProviderDomain object is contructed. Calling -[NSFileProviderDomain initWithIdentifier:displayName:] will initialize a replicated domain. -[NSFileProviderDomain initWithIdentifier:displayName:pathRelativeToDocumentStorage:] will initialize a non-replicated domain. To know whether a domain is replicated or not, users are advised to rely on the output of +[NSFileProviderManager getDomainsForProviderIdentifier:completionHandler:]
     */
    replicated(): boolean;
    /**
     * Testing modes. Testing modes are exposed as a means for the provider to have more control over the system in a testing environment. Enabling a testing mode alters the behavior of the system and enables some APIs for that mode. A process must have the com.apple.developer.fileprovider.testing-mode entitlement in order to configure a domain with non-empty testing modes.
     */
    testingModes(): NSFileProviderDomainTestingModes;
    setTestingModes$(value: NSFileProviderDomainTestingModes): void;
    /**
     * Identity of the backing store of the domain on the system. This property only applies for extensions that implement NSFileProviderReplicatedExtension. This provides an identifier that uniquely identifies the backing store used by the system for the domain. When this identifier has changed, the system has dropped its backing store and is building a new one. The system may decide to rebuild its backing store if it got corrupted. The backing store can also be rebuilt as a response to the provider calling `-[NSFileProviderManager reimportItemsBelowItemWithIdentifier:completionHandler:]`. It is guaranteed that calling reimport on the root item will cause the backing store to be rebuilt, but the system can also decide to do so when reimport is called on other items. When rebuilding the backing store, the system will invalidate any extension instance associated to that domain. As a consequence, the identity of the backing store associated with that domain is guaranteed to be stable for the lifetime of the NSFileProviderReplicatedExtension instance.
     */
    backingStoreIdentity(): _NSData | null;
    /**
     * Whether the domain supports syncing the trash. The system supports syncing a trash folder (NSFileProviderTrashContainerItemIdentifier) to the extension. On iOS, this is surfaced to the user as "Recently Deleted" in the Files app. On macOS, this is surfaced to the user as the Trash in Finder. If the domain is configured with supportsSyncingTrash=YES, the system will reparent trashed files (which were located in the extension's domain) to NSFileProviderTrashContainerItemIdentifier. If the domain is configured with supportsSyncingTrash=NO, the system will decide how to handle the trashing operation (not guaranteed by API contract). This property is only applicable for NSFileProviderReplicatedExtension-based domains. This property defaults to YES.
     */
    supportsSyncingTrash(): boolean;
    setSupportsSyncingTrash$(value: boolean): void;
    volumeUUID(): _NSUUID | null;
    /**
     * A dictionary set by the client app. Keys must be strings, values must be [String, Number, Date, Data]
     */
    userInfo(): _NSDictionary | null;
    setUserInfo$(value: _NSDictionary | null): void;
    /** List of known folders that are currently replicated by this domain. */
    replicatedKnownFolders(): NSFileProviderKnownFolders;
    /** List known folders that can be replicated by this domain. */
    supportedKnownFolders(): NSFileProviderKnownFolders;
    setSupportedKnownFolders$(value: NSFileProviderKnownFolders): void;
    /**
     * Whether the system should use this domain's `NSFileProviderSearching` implementation to support search experiences. Defaults to NO.
     */
    supportsStringSearchRequest(): boolean;
    setSupportsStringSearchRequest$(value: boolean): void;
}
