//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/metal/nsdevicecertification?language=objc)
// NS_TYPED_ENUM
pub type NSDeviceCertification = NSInteger;

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/metal/nsdevicecertificationiphoneperformancegaming?language=objc)
    pub static NSDeviceCertificationiPhonePerformanceGaming: NSDeviceCertification;
}

/// [Apple's documentation](https://developer.apple.com/documentation/metal/nsprocessperformanceprofile?language=objc)
// NS_TYPED_ENUM
pub type NSProcessPerformanceProfile = NSInteger;

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/metal/nsprocessperformanceprofiledefault?language=objc)
    pub static NSProcessPerformanceProfileDefault: NSProcessPerformanceProfile;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/metal/nsprocessperformanceprofilesustained?language=objc)
    pub static NSProcessPerformanceProfileSustained: NSProcessPerformanceProfile;
}

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/metal/nsprocessinfoperformanceprofiledidchangenotification?language=objc)
    pub static NSProcessInfoPerformanceProfileDidChangeNotification:
        Option<&'static NSNotificationName>;
}

mod private_NSProcessInfoNSDeviceCertification {
    pub trait Sealed {}
}

/// Category "NSDeviceCertification" on [`NSProcessInfo`].
#[doc(alias = "NSDeviceCertification")]
pub unsafe trait NSProcessInfoNSDeviceCertification:
    ClassType + Sized + private_NSProcessInfoNSDeviceCertification::Sealed
{
    extern_methods!(
        #[unsafe(method(isDeviceCertifiedFor:))]
        #[unsafe(method_family = none)]
        fn isDeviceCertifiedFor(&self, performance_tier: NSDeviceCertification) -> bool;

        #[unsafe(method(hasPerformanceProfile:))]
        #[unsafe(method_family = none)]
        fn hasPerformanceProfile(&self, performance_profile: NSProcessPerformanceProfile) -> bool;
    );
}

impl private_NSProcessInfoNSDeviceCertification::Sealed for NSProcessInfo {}
unsafe impl NSProcessInfoNSDeviceCertification for NSProcessInfo {}
