import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _CKDatabase } from "./CKDatabase.js";
import type { _CKOperation } from "./CKOperation.js";
import type { _CKRecordID } from "./CKRecordID.js";
import type { _CKShare } from "./CKShare.js";
import type { _CKShareMetadata } from "./CKShareMetadata.js";
import type { _CKShareParticipant } from "./CKShareParticipant.js";
import type { _CKUserIdentity } from "./CKUserIdentity.js";
import type { CKAccountStatus } from "./CKAccountStatus.js";
import type { CKApplicationPermissionStatus } from "./CKApplicationPermissionStatus.js";
import type { CKApplicationPermissions } from "./CKApplicationPermissions.js";
import type { CKDatabaseScope } from "./CKDatabaseScope.js";
export declare class _CKContainer extends _NSObject {
    static alloc(): _CKContainer;
    static new(): _CKContainer;
    init(): _CKContainer;
    /**
     * @abstract Convenience method that uses the calling process' "iCloud.\(application-identifier)" as the container identifier @discussion application-identifier is the calling process' @c application-identifier entitlement on iOS / tvOS / watchOS. application-identifier is the calling process' @c com.apple.application-identifier entitlement on macOS. On all OSes, if an @c com.apple.developer.associated-application-identifier entitlement is present, its value will be preferred over the @c application-identifier variants.
     */
    static defaultContainer(): _CKContainer;
    /**
     * @abstract Obtain a CKContainer for the given containerIdentifier @discussion If the application is in production mode (aka, @c com.apple.developer.icloud-container-environment is set to Production in your entitlements plist, and you have no override in @c com.apple.developer.icloud-container-development-container-identifiers), then the production environment is used.
     */
    static containerWithIdentifier$(containerIdentifier: _NSString): _CKContainer;
    addOperation$(operation: _CKOperation): void;
    /**
     * @abstract Convenience methods @return a database that's pointer-equal to one of the above properties@enum
     */
    databaseWithDatabaseScope$(databaseScope: CKDatabaseScope): _CKDatabase;
    accountStatusWithCompletionHandler$(completionHandler: ((accountStatus: CKAccountStatus, error: _NSError) => void) | null): void;
    /**
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    statusForApplicationPermission$completionHandler$(applicationPermission: CKApplicationPermissions, completionHandler: (arg0: CKApplicationPermissionStatus, arg1: _NSError) => void): void;
    /**
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    requestApplicationPermission$completionHandler$(applicationPermission: CKApplicationPermissions, completionHandler: (arg0: CKApplicationPermissionStatus, arg1: _NSError) => void): void;
    /**
     * @discussion If there is no iCloud account configured, or if access is restricted, a @c CKErrorNotAuthenticated error will be returned. This work is treated as having @c NSQualityOfServiceUserInitiated quality of service.
     */
    fetchUserRecordIDWithCompletionHandler$(completionHandler: ((recordID: _CKRecordID, error: _NSError) => void) | null): void;
    /**
     * @abstract Fetches all user identities that match an entry in the user's contacts database. @discussion @c CKDiscoverAllUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this methods
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    discoverAllIdentitiesWithCompletionHandler$(completionHandler: ((userIdentities: _NSArray, error: _NSError) => void) | null): void;
    /**
     * @abstract Fetches the user identity that corresponds to the given email address. @discussion Only users who have opted-in to user discoverability will have their identities returned by this method. If a user with the inputted email exists in iCloud, but has not opted-in to user discoverability, this method completes with a nil @c userInfo. @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    discoverUserIdentityWithEmailAddress$completionHandler$(email: _NSString, completionHandler: ((_result: _CKUserIdentity, error: _NSError) => void) | null): void;
    /**
     * @abstract Fetches the user identity that corresponds to the given phone number. @discussion Only users who have opted-in to user discoverability will have their identities returned by this method. If a user with the inputted phone number exists in iCloud, but has not opted-in to user discoverability, this method completes with a nil @c userInfo. @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    discoverUserIdentityWithPhoneNumber$completionHandler$(phoneNumber: _NSString, completionHandler: ((_result: _CKUserIdentity, error: _NSError) => void) | null): void;
    /**
     * @abstract Fetches the user identity that corresponds to the given user record id. @discussion Only users who have opted-in to user discoverability will have their identities returned by this method. If a user has not opted-in to user discoverability, this method completes with a nil @c userInfo. @c CKDiscoverUserIdentitiesOperation is the more configurable, @c CKOperation -based alternative to this method
     * @deprecated No longer supported. Please see Sharing CloudKit Data with Other iCloud Users.
     */
    discoverUserIdentityWithUserRecordID$completionHandler$(userRecordID: _CKRecordID, completionHandler: ((_result: _CKUserIdentity, error: _NSError) => void) | null): void;
    /**
     * @abstract Fetches share participants matching the provided info. @discussion @c CKFetchShareParticipantsOperation is the more configurable, @c CKOperation -based alternative to these methods.
     */
    fetchShareParticipantWithEmailAddress$completionHandler$(emailAddress: _NSString, completionHandler: ((shareParticipant: _CKShareParticipant, error: _NSError) => void) | null): void;
    fetchShareParticipantWithPhoneNumber$completionHandler$(phoneNumber: _NSString, completionHandler: ((shareParticipant: _CKShareParticipant, error: _NSError) => void) | null): void;
    fetchShareParticipantWithUserRecordID$completionHandler$(userRecordID: _CKRecordID, completionHandler: ((shareParticipant: _CKShareParticipant, error: _NSError) => void) | null): void;
    fetchShareMetadataWithURL$completionHandler$(url: _NSURL, completionHandler: ((metadata: _CKShareMetadata, error: _NSError) => void) | null): void;
    acceptShareMetadata$completionHandler$(metadata: _CKShareMetadata, completionHandler: ((acceptedShare: _CKShare, error: _NSError) => void) | null): void;
    /**
     * @discussion Long lived CKOperations returned by this call must be started on an operation queue. Remember to set the callback blocks before starting the operation. If an operation has already completed against the server, and is subsequently resumed, that operation will replay all of its callbacks from the start of the operation, but the request will not be re-sent to the server. If a long lived operation is cancelled or finishes completely it is no longer returned by these calls.
     */
    fetchAllLongLivedOperationIDsWithCompletionHandler$(completionHandler: ((outstandingOperationIDs: _NSArray, error: _NSError) => void) | null): void;
    fetchLongLivedOperationWithID$completionHandler$(operationID: _NSString, completionHandler: ((_result: _CKOperation, error: _NSError) => void) | null): void;
    containerIdentifier(): _NSString | null;
    privateCloudDatabase(): _CKDatabase;
    publicCloudDatabase(): _CKDatabase;
    sharedCloudDatabase(): _CKDatabase;
}
