use core::ffi::*;
use core::ptr::NonNull;
#[cfg(feature = "dispatch2")]
use dispatch2::*;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ENStatus(pub NSInteger);
impl ENStatus {
#[doc(alias = "ENStatusUnknown")]
pub const Unknown: Self = Self(0);
#[doc(alias = "ENStatusActive")]
pub const Active: Self = Self(1);
#[doc(alias = "ENStatusDisabled")]
pub const Disabled: Self = Self(2);
#[doc(alias = "ENStatusBluetoothOff")]
pub const BluetoothOff: Self = Self(3);
#[doc(alias = "ENStatusRestricted")]
pub const Restricted: Self = Self(4);
#[doc(alias = "ENStatusPaused")]
pub const Paused: Self = Self(5);
#[doc(alias = "ENStatusUnauthorized")]
pub const Unauthorized: Self = Self(6);
}
unsafe impl Encode for ENStatus {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for ENStatus {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct ENActivityFlags(pub u32);
bitflags::bitflags! {
impl ENActivityFlags: u32 {
#[doc(alias = "ENActivityFlagsReserved1")]
const Reserved1 = 1<<0;
#[doc(alias = "ENActivityFlagsReserved2")]
const Reserved2 = 1<<1;
#[doc(alias = "ENActivityFlagsPeriodicRun")]
const PeriodicRun = 1<<2;
#[doc(alias = "ENActivityFlagsPreAuthorizedKeyReleaseNotificationTapped")]
const PreAuthorizedKeyReleaseNotificationTapped = 1<<3;
}
}
unsafe impl Encode for ENActivityFlags {
const ENCODING: Encoding = u32::ENCODING;
}
unsafe impl RefEncode for ENActivityFlags {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "block2")]
pub type ENActivityHandler = *mut block2::DynBlock<dyn Fn(ENActivityFlags)>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
pub type ENGetDiagnosisKeysHandler =
*mut block2::DynBlock<dyn Fn(*mut NSArray<ENTemporaryExposureKey>, *mut NSError)>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
pub type ENDetectExposuresHandler =
*mut block2::DynBlock<dyn Fn(*mut ENExposureDetectionSummary, *mut NSError)>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
pub type ENDiagnosisKeysAvailableHandler =
*mut block2::DynBlock<dyn Fn(NonNull<NSArray<ENTemporaryExposureKey>>)>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
pub type ENGetExposureInfoHandler =
*mut block2::DynBlock<dyn Fn(*mut NSArray<ENExposureInfo>, *mut NSError)>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
pub type ENGetExposureWindowsHandler =
*mut block2::DynBlock<dyn Fn(*mut NSArray<ENExposureWindow>, *mut NSError)>;
#[cfg(feature = "block2")]
pub type ENGetUserTraveledHandler = *mut block2::DynBlock<dyn Fn(Bool, *mut NSError)>;
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct ENManager;
);
extern_conformance!(
unsafe impl NSObjectProtocol for ENManager {}
);
impl ENManager {
extern_methods!(
#[cfg(feature = "block2")]
#[unsafe(method(activityHandler))]
#[unsafe(method_family = none)]
pub unsafe fn activityHandler(&self) -> ENActivityHandler;
#[cfg(feature = "block2")]
#[unsafe(method(setActivityHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn setActivityHandler(&self, activity_handler: ENActivityHandler);
#[cfg(feature = "dispatch2")]
#[unsafe(method(dispatchQueue))]
#[unsafe(method_family = none)]
pub unsafe fn dispatchQueue(&self) -> Retained<DispatchQueue>;
#[cfg(feature = "dispatch2")]
#[unsafe(method(setDispatchQueue:))]
#[unsafe(method_family = none)]
pub unsafe fn setDispatchQueue(&self, dispatch_queue: &DispatchQueue);
#[unsafe(method(exposureNotificationStatus))]
#[unsafe(method_family = none)]
pub unsafe fn exposureNotificationStatus(&self) -> ENStatus;
#[cfg(feature = "dispatch2")]
#[unsafe(method(invalidationHandler))]
#[unsafe(method_family = none)]
pub unsafe fn invalidationHandler(&self) -> dispatch_block_t;
#[cfg(feature = "dispatch2")]
#[unsafe(method(setInvalidationHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn setInvalidationHandler(&self, invalidation_handler: dispatch_block_t);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(activateWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn activateWithCompletionHandler(&self, completion_handler: ENErrorHandler);
#[unsafe(method(invalidate))]
#[unsafe(method_family = none)]
pub unsafe fn invalidate(&self);
#[cfg(feature = "block2")]
#[unsafe(method(getUserTraveledWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getUserTraveledWithCompletionHandler(
&self,
completion_handler: ENGetUserTraveledHandler,
);
#[cfg(feature = "ENCommon")]
#[unsafe(method(authorizationStatus))]
#[unsafe(method_family = none)]
pub unsafe fn authorizationStatus() -> ENAuthorizationStatus;
#[unsafe(method(exposureNotificationEnabled))]
#[unsafe(method_family = none)]
pub unsafe fn exposureNotificationEnabled(&self) -> bool;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(setExposureNotificationEnabled:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn setExposureNotificationEnabled_completionHandler(
&self,
enabled: bool,
completion_handler: ENErrorHandler,
);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(detectExposuresWithConfiguration:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn detectExposuresWithConfiguration_completionHandler(
&self,
configuration: &ENExposureConfiguration,
completion_handler: ENDetectExposuresHandler,
) -> Retained<NSProgress>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(detectExposuresWithConfiguration:diagnosisKeyURLs:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn detectExposuresWithConfiguration_diagnosisKeyURLs_completionHandler(
&self,
configuration: &ENExposureConfiguration,
diagnosis_key_ur_ls: &NSArray<NSURL>,
completion_handler: ENDetectExposuresHandler,
) -> Retained<NSProgress>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[deprecated = "Use getExposureWindowsFromSummary, if needed."]
#[unsafe(method(getExposureInfoFromSummary:userExplanation:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getExposureInfoFromSummary_userExplanation_completionHandler(
&self,
summary: &ENExposureDetectionSummary,
user_explanation: &NSString,
completion_handler: ENGetExposureInfoHandler,
) -> Retained<NSProgress>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(getExposureWindowsFromSummary:completionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getExposureWindowsFromSummary_completionHandler(
&self,
summary: &ENExposureDetectionSummary,
completion_handler: ENGetExposureWindowsHandler,
) -> Retained<NSProgress>;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(getDiagnosisKeysWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getDiagnosisKeysWithCompletionHandler(
&self,
completion_handler: ENGetDiagnosisKeysHandler,
);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(getTestDiagnosisKeysWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn getTestDiagnosisKeysWithCompletionHandler(
&self,
completion_handler: ENGetDiagnosisKeysHandler,
);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(diagnosisKeysAvailableHandler))]
#[unsafe(method_family = none)]
pub unsafe fn diagnosisKeysAvailableHandler(&self) -> ENDiagnosisKeysAvailableHandler;
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(setDiagnosisKeysAvailableHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn setDiagnosisKeysAvailableHandler(
&self,
diagnosis_keys_available_handler: ENDiagnosisKeysAvailableHandler,
);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(preAuthorizeDiagnosisKeysWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn preAuthorizeDiagnosisKeysWithCompletionHandler(
&self,
completion_handler: ENErrorHandler,
);
#[cfg(all(feature = "ENCommon", feature = "block2"))]
#[unsafe(method(requestPreAuthorizedDiagnosisKeysWithCompletionHandler:))]
#[unsafe(method_family = none)]
pub unsafe fn requestPreAuthorizedDiagnosisKeysWithCompletionHandler(
&self,
completion_handler: ENErrorHandler,
);
);
}
impl ENManager {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub unsafe fn new() -> Retained<Self>;
);
}