objc2-health-kit 0.3.2

Bindings to the HealthKit framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

/// The possible statuses of a logged HKMedicationDoseEvent
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkmedicationdoseeventlogstatus?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HKMedicationDoseEventLogStatus(pub NSInteger);
impl HKMedicationDoseEventLogStatus {
    #[doc(alias = "HKMedicationDoseEventLogStatusNotInteracted")]
    pub const NotInteracted: Self = Self(1);
    #[doc(alias = "HKMedicationDoseEventLogStatusNotificationNotSent")]
    pub const NotificationNotSent: Self = Self(2);
    #[doc(alias = "HKMedicationDoseEventLogStatusSnoozed")]
    pub const Snoozed: Self = Self(3);
    #[doc(alias = "HKMedicationDoseEventLogStatusTaken")]
    pub const Taken: Self = Self(4);
    #[doc(alias = "HKMedicationDoseEventLogStatusSkipped")]
    pub const Skipped: Self = Self(5);
    #[doc(alias = "HKMedicationDoseEventLogStatusNotLogged")]
    pub const NotLogged: Self = Self(6);
}

unsafe impl Encode for HKMedicationDoseEventLogStatus {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for HKMedicationDoseEventLogStatus {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// The kind of schedule used to log this dose event.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkmedicationdoseeventscheduletype?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HKMedicationDoseEventScheduleType(pub NSInteger);
impl HKMedicationDoseEventScheduleType {
    #[doc(alias = "HKMedicationDoseEventScheduleTypeAsNeeded")]
    pub const AsNeeded: Self = Self(1);
    #[doc(alias = "HKMedicationDoseEventScheduleTypeSchedule")]
    pub const Schedule: Self = Self(2);
}

unsafe impl Encode for HKMedicationDoseEventScheduleType {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for HKMedicationDoseEventScheduleType {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkmedicationdoseevent?language=objc)
    #[unsafe(super(HKSample, HKObject, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(all(feature = "HKObject", feature = "HKSample"))]
    pub struct HKMedicationDoseEvent;
);

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
unsafe impl Send for HKMedicationDoseEvent {}

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
unsafe impl Sync for HKMedicationDoseEvent {}

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
extern_conformance!(
    unsafe impl NSCoding for HKMedicationDoseEvent {}
);

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
extern_conformance!(
    unsafe impl NSCopying for HKMedicationDoseEvent {}
);

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
unsafe impl CopyingHelper for HKMedicationDoseEvent {
    type Result = Self;
}

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
extern_conformance!(
    unsafe impl NSObjectProtocol for HKMedicationDoseEvent {}
);

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
extern_conformance!(
    unsafe impl NSSecureCoding for HKMedicationDoseEvent {}
);

#[cfg(all(feature = "HKObject", feature = "HKSample"))]
impl HKMedicationDoseEvent {
    extern_methods!(
        #[cfg(feature = "HKObjectType")]
        /// The data type of the HKMedicationDoseEvent object.
        #[unsafe(method(medicationDoseEventType))]
        #[unsafe(method_family = none)]
        pub unsafe fn medicationDoseEventType(&self) -> Retained<HKMedicationDoseEventType>;

        /// The impetus behind the dose event.
        ///
        /// HKMedicationDoseEventScheduleTypeAsNeeded for doses logged as needed, and HKMedicationDoseEventScheduleTypeSchedule for doses logged from a scheduled event.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(scheduleType))]
        #[unsafe(method_family = none)]
        pub unsafe fn scheduleType(&self) -> HKMedicationDoseEventScheduleType;

        #[cfg(feature = "HKHealthConceptIdentifier")]
        /// A unique identifier of the medication concept for which the dose event was created for, used to relate the dose event to the backing HKMedicationConcept object.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(medicationConceptIdentifier))]
        #[unsafe(method_family = none)]
        pub unsafe fn medicationConceptIdentifier(&self) -> Retained<HKHealthConceptIdentifier>;

        /// The time that the medication dose was supposed to be taken.
        ///
        /// Always non-null for scheduled medication dose events, always null for as needed dose events.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(scheduledDate))]
        #[unsafe(method_family = none)]
        pub unsafe fn scheduledDate(&self) -> Option<Retained<NSDate>>;

        /// The dose quantity a user is expected to take per the user's schedule.
        ///
        /// Always non-null for scheduled medication dose events, always null for as needed dose events.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(scheduledDoseQuantity))]
        #[unsafe(method_family = none)]
        pub unsafe fn scheduledDoseQuantity(&self) -> Option<Retained<NSNumber>>;

        /// The dose quantity the user indicates has actually been taken.
        ///
        /// For scheduled dose events, defaults to the scheduledDoseQuantity, when logged from a reminder. For as needed dose events, defaults to 1 in the medication tracking experience, but can be edited by the user at any time.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(doseQuantity))]
        #[unsafe(method_family = none)]
        pub unsafe fn doseQuantity(&self) -> Option<Retained<NSNumber>>;

        /// The log status of HKMedicationDoseEvent sample.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(logStatus))]
        #[unsafe(method_family = none)]
        pub unsafe fn logStatus(&self) -> HKMedicationDoseEventLogStatus;

        #[cfg(feature = "HKUnit")]
        /// The unit that the associated medication had associated at time the user logged the dose event.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(unit))]
        #[unsafe(method_family = none)]
        pub unsafe fn unit(&self) -> Retained<HKUnit>;

        #[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>;
    );
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathstatus?language=objc)
    pub static HKPredicateKeyPathStatus: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathlogorigin?language=objc)
    pub static HKPredicateKeyPathLogOrigin: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathscheduleddate?language=objc)
    pub static HKPredicateKeyPathScheduledDate: &'static NSString;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkpredicatekeypathmedicationconceptidentifier?language=objc)
    pub static HKPredicateKeyPathMedicationConceptIdentifier: &'static NSString;
}