import type { _NSData } from "../Foundation/NSData.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSNumber } from "../Foundation/NSNumber.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _MTRDeviceController } from "./MTRDeviceController.js";
import type { _MTRMetrics } from "./MTRMetrics.js";
import type { _MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams, _MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams } from "./MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams.js";
import type { _MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams, _MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams } from "./MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams.js";
import type { _MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams, _MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams } from "./MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams.js";
import type { _MTROTASoftwareUpdateProviderClusterQueryImageParams, _MTROtaSoftwareUpdateProviderClusterQueryImageParams } from "./MTROtaSoftwareUpdateProviderClusterQueryImageParams.js";
import type { _MTROTASoftwareUpdateProviderClusterQueryImageResponseParams, _MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams } from "./MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams.js";
export interface _MTROTAProviderDelegate {
    /**
     * Notify the delegate when the query image command is received from some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric. If completion is passed a non-nil error, that will be converted into an error response to the client. Otherwise it must have a non-nil data, which will be returned to the client. When providing an OTA image, the imageURI in the MTROTASoftwareUpdateProviderClusterQueryImageResponseParams must be set to the file designator of the image. The completion will create the right BDX URI from that file designator, as needed. The file designator returned here via imageURI will be the same as the file designator passed to handleBDXTransferSessionBeginForNodeID:controller:fileDesignator:offset:completion:.
     */
    handleQueryImageForNodeID$controller$params$completion$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROTASoftwareUpdateProviderClusterQueryImageParams, completion: ((data: _MTROTASoftwareUpdateProviderClusterQueryImageResponseParams, error: _NSError) => void) | null): void;
    handleQueryImageForNodeID$controller$params$completionHandler$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROtaSoftwareUpdateProviderClusterQueryImageParams, completionHandler: ((data: _MTROtaSoftwareUpdateProviderClusterQueryImageResponseParams, error: _NSError) => void) | null): void;
    /**
     * Notify the delegate when the apply update request command is received from some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric. If completion is passed a non-nil error, that will be converted into an error response to the client. Otherwise it must have a non-nil data, which will be returned to the client.
     */
    handleApplyUpdateRequestForNodeID$controller$params$completion$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams, completion: ((data: _MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams, error: _NSError) => void) | null): void;
    handleApplyUpdateRequestForNodeID$controller$params$completionHandler$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROtaSoftwareUpdateProviderClusterApplyUpdateRequestParams, completionHandler: ((data: _MTROtaSoftwareUpdateProviderClusterApplyUpdateResponseParams, error: _NSError) => void) | null): void;
    /**
     * Notify the delegate when the notify update applied command is received from some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric. If completion is passed a non-nil error, that will be converted into an error response to the client. Otherwise a success response will be sent.
     */
    handleNotifyUpdateAppliedForNodeID$controller$params$completion$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams, completion: (arg0: _NSError) => void): void;
    handleNotifyUpdateAppliedForNodeID$controller$params$completionHandler$?(nodeID: _NSNumber, controller: _MTRDeviceController, params: _MTROtaSoftwareUpdateProviderClusterNotifyUpdateAppliedParams, completionHandler: (arg0: _NSError) => void): void;
    /**
     * Notify the delegate when a BDX Session starts for some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric.
     */
    handleBDXTransferSessionBeginForNodeID$controller$fileDesignator$offset$completion$?(nodeID: _NSNumber, controller: _MTRDeviceController, fileDesignator: _NSString, offset: _NSNumber, completion: (arg0: _NSError) => void): void;
    handleBDXTransferSessionBeginForNodeID$controller$fileDesignator$offset$completionHandler$?(nodeID: _NSNumber, controller: _MTRDeviceController, fileDesignator: _NSString, offset: _NSNumber, completionHandler: (arg0: _NSError) => void): void;
    /**
     * Notify the delegate when a BDX Session ends for some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric.
     */
    handleBDXTransferSessionEndForNodeID$controller$metrics$error$?(nodeID: _NSNumber, controller: _MTRDeviceController, metrics: _MTRMetrics, error: _NSError | null): void;
    handleBDXTransferSessionEndForNodeID$controller$error$?(nodeID: _NSNumber, controller: _MTRDeviceController, error: _NSError | null): void;
    /**
     * Notify the delegate when a BDX Query message has been received for some node. The controller identifies the fabric the node is on, and the nodeID identifies the node within that fabric. The data passed to the completion must be of size blockSize, unless it's the last block of data. In that case, it may be smaller than blockSize, and isEOF must be set to YES.
     */
    handleBDXQueryForNodeID$controller$blockSize$blockIndex$bytesToSkip$completion$?(nodeID: _NSNumber, controller: _MTRDeviceController, blockSize: _NSNumber, blockIndex: _NSNumber, bytesToSkip: _NSNumber, completion: ((data: _NSData, isEOF: boolean) => void) | null): void;
    handleBDXQueryForNodeID$controller$blockSize$blockIndex$bytesToSkip$completionHandler$?(nodeID: _NSNumber, controller: _MTRDeviceController, blockSize: _NSNumber, blockIndex: _NSNumber, bytesToSkip: _NSNumber, completionHandler: ((data: _NSData, isEOF: boolean) => void) | null): void;
}
