import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _PHPersistentChangeFetchResult } from "./PHPersistentChangeFetchResult.js";
import type { _PHPersistentChangeToken } from "./PHPersistentChangeToken.js";
import type { _PHPhotoLibraryAvailabilityObserver } from "./PHPhotoLibraryAvailabilityObserver.js";
import type { _PHPhotoLibraryChangeObserver } from "./PHPhotoLibraryChangeObserver.js";
import type { PHAccessLevel } from "./PHAccessLevel.js";
import type { PHAuthorizationStatus } from "./PHAuthorizationStatus.js";
export declare class _PHPhotoLibrary extends _NSObject {
    static alloc(): _PHPhotoLibrary;
    static new(): _PHPhotoLibrary;
    init(): _PHPhotoLibrary;
    static sharedPhotoLibrary(): _PHPhotoLibrary;
    /**
     * Replaces \c +authorizationStatus to support add-only/read-write access level status
     * @deprecated +authorizationStatusForAccessLevel:
     */
    static authorizationStatusForAccessLevel$(accessLevel: PHAccessLevel): PHAuthorizationStatus;
    /** @deprecated +authorizationStatusForAccessLevel: */
    static requestAuthorizationForAccessLevel$handler$(accessLevel: PHAccessLevel, handler: (status: PHAuthorizationStatus) => void): void;
    /**
     * Deprecated and replaced by authorizationStatusForAccessLevel:, will return \c PHAuthorizationStatusAuthorized if the user has chosen limited photo library access
     * @deprecated +authorizationStatusForAccessLevel:
     */
    static authorizationStatus(): PHAuthorizationStatus;
    /** @deprecated +requestAuthorizationForAccessLevel:handler: */
    static requestAuthorization$(handler: (status: PHAuthorizationStatus) => void): void;
    registerAvailabilityObserver$(observer: _PHPhotoLibraryAvailabilityObserver): void;
    unregisterAvailabilityObserver$(observer: _PHPhotoLibraryAvailabilityObserver): void;
    /**
     * handlers are invoked on an arbitrary serial queue Nesting change requests will throw an exception
     */
    performChanges$completionHandler$(changeBlock: () => void, completionHandler: ((success: boolean, error: _NSError) => void) | null): void;
    performChangesAndWait$error$(changeBlock: () => void, error: NobjcObject | null): boolean;
    registerChangeObserver$(observer: _PHPhotoLibraryChangeObserver): void;
    unregisterChangeObserver$(observer: _PHPhotoLibraryChangeObserver): void;
    fetchPersistentChangesSinceToken$error$(token: _PHPersistentChangeToken, error: NobjcObject | null): _PHPersistentChangeFetchResult | null;
    /**
     * Returns a dictionary that maps each cloud identifier from the provided array to a PLLocalIdentifierMapping result containing the local identifier found for that cloud identifier. This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage. If the attempt to lookup a local identifier for a given cloud identifier fails, the error parameter will indicate the reason. The array of instances whose local identifiers are to being requested.
     */
    localIdentifierMappingsForCloudIdentifiers$(cloudIdentifiers: _NSArray): _NSDictionary;
    /**
     * Returns a dictionary that maps each local identifier from the provided array to a PLCloudIdentifierMapping result containing the cloud identifier found for that local identifier This method can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage. If the attempt to lookup a cloud identifier for a given local identifier fails, the error parameter will indicate the reason. The array of instances whose cloud identifiers are to being requested.
     * @deprecated -localIdentifierMappingsForCloudIdentifiers:
     */
    cloudIdentifierMappingsForLocalIdentifiers$(localIdentifiers: _NSArray): _NSDictionary;
    /**
     * DEPRECATED: These two methods can be very expensive so they should be used sparingly for batch lookup of all needed identifiers. Clients should work in terms of local identifiers and call these methods only once after loading from and before saving to persistent storage.
     * @deprecated -localIdentifierMappingsForCloudIdentifiers:
     */
    localIdentifiersForCloudIdentifiers$(cloudIdentifiers: _NSArray): _NSArray;
    /** @deprecated -cloudIdentifierMappingsForLocalIdentifiers: */
    cloudIdentifiersForLocalIdentifiers$(localIdentifiers: _NSArray): _NSArray;
    unavailabilityReason(): _NSError | null;
    currentChangeToken(): _PHPersistentChangeToken;
}
