import type { _OSSystemExtensionProperties } from "./OSSystemExtensionProperties.js";
import type { _OSSystemExtensionRequest } from "./OSSystemExtensionRequest.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { OSSystemExtensionReplacementAction } from "./OSSystemExtensionReplacementAction.js";
import type { OSSystemExtensionRequestResult } from "./OSSystemExtensionRequestResult.js";
export interface _OSSystemExtensionRequestDelegate {
    /**
     * Called when the target extension bundle identifier is already activated. The delegate will receive this callback when an activation request encounters an existing extension with the same team and bundle identifiers but with different version identifiers. The delegate must make a decision on whether or not to replace the existing extension. The request that encountered the conflict The NSBundle of the existing extension The NSBundle of the extension matching the bundle identifier of the request A replacement action indicating the desired outcome of the conflict This method is invoked if the `CFBundleVersion` or `CFBundleShortVersionString` identifiers of the target and existing extension differ. If the local system has System Extension developer mode enabled, this callback will always fire when an existing extension is found, regardless of version identifiers. Returning OSSystemExtensionReplacementActionAbortRequest will trigger a callback to `request:didFailWithError:` with the OSSystemExtensionErrorRequestCanceled error code.
     */
    request$actionForReplacingExtension$withExtension$?(request: _OSSystemExtensionRequest, existing: _OSSystemExtensionProperties, ext: _OSSystemExtensionProperties): OSSystemExtensionReplacementAction;
    /**
     * Called when the target extension requires user approval to be activated. Activating an extension may require explicit user approval in order to proceed. For example, this can occur when the user has never previously approved this extension. If approval is necessary, this callback will be triggered and the activation request will remain pending until user approves, or until the application exits.
     */
    requestNeedsUserApproval$?(request: _OSSystemExtensionRequest): void;
    /**
     * Called when the target extension request has completed. Successful results can come with additional information regarding the manner in which they were completed. See the OSSystemExtensionRequestResult documentation for more information. Additional result information from the completed request. If the request completes with the `OSSystemExtensionRequestWillCompleteAfterReboot` result, then the extension will not be active until after the next reboot. Upon reboot, a given extension will be in the state dictated by the most recently processed request.
     */
    request$didFinishWithResult$?(request: _OSSystemExtensionRequest, result: OSSystemExtensionRequestResult): void;
    /** Called when the target extension request failed. */
    request$didFailWithError$?(request: _OSSystemExtensionRequest, error: _NSError): void;
    /**
     * Called request for properties has completed. Returns an array of OSSystemExtensionProperties matching the requested bundle identifier.
     */
    request$foundProperties$?(request: _OSSystemExtensionRequest, properties: _NSArray): void;
}
