import type { _CKDatabaseOperation } from "./CKDatabaseOperation.js";
import type { _CKRecord } from "./CKRecord.js";
import type { _CKRecordID } from "./CKRecordID.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { CKRecordSavePolicy } from "./CKRecordSavePolicy.js";
export declare class _CKModifyRecordsOperation extends _CKDatabaseOperation {
    static alloc(): _CKModifyRecordsOperation;
    static new(): _CKModifyRecordsOperation;
    init(): _CKModifyRecordsOperation;
    initWithRecordsToSave$recordIDsToDelete$(records: _NSArray | null, recordIDs: _NSArray | null): _CKModifyRecordsOperation;
    recordsToSave(): _NSArray | null;
    setRecordsToSave$(value: _NSArray | null): void;
    recordIDsToDelete(): _NSArray | null;
    setRecordIDsToDelete$(value: _NSArray | null): void;
    /**
     * @abstract Determines what data is sent to the server and whether the save should succeed even if the record on the server has changed. @discussion: The default value is @c CKRecordSaveIfServerRecordUnchanged, which is the recommended value for regular use. A @c CKShare record is always treated as @c CKRecordSaveIfServerRecordUnchanged, regardless of the @c savePolicy specified.
     */
    savePolicy(): CKRecordSavePolicy;
    setSavePolicy$(value: CKRecordSavePolicy): void;
    /**
     * @discussion This property is kept by the server to identify the last known request from this client. Multiple requests from the client with the same change token will be ignored by the server.
     */
    clientChangeTokenData(): _NSData | null;
    setClientChangeTokenData$(value: _NSData | null): void;
    /**
     * @abstract Determines whether the batch should fail atomically or not. @discussion YES by default. Server-side write atomicity is only enforced on zones that have @c CKRecordZoneCapabilityAtomic. If @c isAtomic is YES, client-side checks are enforced regardless of the zone's capabilities. (For example, if a record is malformed, and cannot be sent to the server, the client will forcibly fail all other records-to-be-modified in that zone)
     */
    atomic(): boolean;
    setAtomic$(value: boolean): void;
    /**
     * @abstract Indicates the progress for each record. @discussion This method is called at least once with a progress of 1.0 for every record. Intermediate progress is only reported for records that contain assets. It is possible for progress to regress when a retry is automatically triggered. Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. This block may share mutable state with other blocks assigned to this operation, but any such mutable state should not be concurrently used outside of blocks assigned to this operation.
     */
    perRecordProgressBlock(): ((arg0: _CKRecord, arg1: number) => void) | null;
    setPerRecordProgressBlock$(value: ((arg0: _CKRecord, arg1: number) => void) | null): void;
    /**
     * @abstract Called on success or failure for each record. @discussion Will not be invoked if @c perRecordSaveBlock is set. Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. This block may share mutable state with other blocks assigned to this operation, but any such mutable state should not be concurrently used outside of blocks assigned to this operation.
     * @deprecated perRecordSaveBlock
     */
    perRecordCompletionBlock(): ((arg0: _CKRecord, arg1: _NSError) => void) | null;
    setPerRecordCompletionBlock$(value: ((arg0: _CKRecord, arg1: _NSError) => void) | null): void;
    /**
     * @abstract Called on success or failure of a record save @discussion Following a successful record save, this callback will be invoked with a nonnull @c record, and a nil @c error. Following a save failure due to a per-item error (@c CKErrorServerRecordChanged, for example), this callback will be invoked with a nil @c record, and a nonnull @c error Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. This block may share mutable state with other blocks assigned to this operation, but any such mutable state should not be concurrently used outside of blocks assigned to this operation.
     */
    perRecordSaveBlock(): ((arg0: _CKRecordID, arg1: _CKRecord, arg2: _NSError) => void) | null;
    setPerRecordSaveBlock$(value: ((arg0: _CKRecordID, arg1: _CKRecord, arg2: _NSError) => void) | null): void;
    /**
     * @abstract Called on success or failure of a record deletion Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. This block may share mutable state with other blocks assigned to this operation, but any such mutable state should not be concurrently used outside of blocks assigned to this operation.
     */
    perRecordDeleteBlock(): ((arg0: _CKRecordID, arg1: _NSError) => void) | null;
    setPerRecordDeleteBlock$(value: ((arg0: _CKRecordID, arg1: _NSError) => void) | null): void;
    /**
     * @abstract This block is called when the operation completes. @discussion The @code -[NSOperation completionBlock] @endcode will also be called if both are set. If the error is @c CKErrorPartialFailure, the error's userInfo dictionary contains a dictionary of recordIDs to errors keyed off of @c CKPartialErrorsByItemIDKey. @c savedRecords, @c deletedRecordIDs and any @c CKPartialErrorsByItemIDKey errors are repeats of the data sent back in previous @c perRecordSaveBlock and @c perRecordDeleteBlock invocations This call happens as soon as the server has seen all record changes, and may be invoked while the server is processing the side effects of those changes. Each @c CKOperation instance has a private serial queue. This queue is used for all callback block invocations. This block may share mutable state with other blocks assigned to this operation, but any such mutable state should not be concurrently used outside of blocks assigned to this operation.
     */
    modifyRecordsCompletionBlock(): ((arg0: _NSArray, arg1: _NSArray, arg2: _NSError) => void) | null;
    setModifyRecordsCompletionBlock$(value: ((arg0: _NSArray, arg1: _NSArray, arg2: _NSError) => void) | null): void;
}
