//
//  CKModifyRecordZonesOperation.h
//  CloudKit
//
//  Copyright (c) 2014 Apple Inc. All rights reserved.
//

#import <CloudKit/CKDatabaseOperation.h>

NS_ASSUME_NONNULL_BEGIN
NS_CLASS_AVAILABLE(10_10, 8_0)
@interface CKModifyRecordZonesOperation : CKDatabaseOperation

- (instancetype)init NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithRecordZonesToSave:(nullable NSArray <CKRecordZone *> *)recordZonesToSave recordZoneIDsToDelete:(nullable NSArray <CKRecordZoneID *> *)recordZoneIDsToDelete;

@property (nonatomic, copy, nullable) NSArray <CKRecordZone *> *recordZonesToSave;
@property (nonatomic, copy, nullable) NSArray <CKRecordZoneID *> *recordZoneIDsToDelete;

/*  This block is called when the operation completes.
 The [NSOperation completionBlock] will also be called if both are set.
 If the error is CKErrorPartialFailure, the error's userInfo dictionary contains
 a dictionary of recordZoneIDs to errors keyed off of CKPartialErrorsByItemIDKey.
 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.
 */
@property (nonatomic, copy, nullable) void (^modifyRecordZonesCompletionBlock)(NSArray <CKRecordZone *> * __nullable savedRecordZones, NSArray <CKRecordZoneID *> * __nullable deletedRecordZoneIDs, NSError * __nullable operationError);

@end
NS_ASSUME_NONNULL_END
