use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyNose: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftEye: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightEye: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftEar: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightEar: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftShoulder: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightShoulder: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyNeck: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftElbow: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightElbow: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftWrist: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightWrist: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftHip: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightHip: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRoot: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftKnee: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightKnee: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyLeftAnkle: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkKeyRightAnkle: &'static VNRecognizedPointKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyFace: &'static VNRecognizedPointGroupKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyTorso: &'static VNRecognizedPointGroupKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyLeftArm: &'static VNRecognizedPointGroupKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyRightArm: &'static VNRecognizedPointGroupKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyLeftLeg: &'static VNRecognizedPointGroupKey;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNBodyLandmarkRegionKeyRightLeg: &'static VNRecognizedPointGroupKey;
}
#[cfg(feature = "VNTypes")]
pub type VNHumanBodyPoseObservationJointName = VNRecognizedPointKey;
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameNose:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftEye:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightEye:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftEar:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightEar:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftShoulder:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightShoulder:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameNeck:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftElbow:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightElbow:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftWrist:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightWrist:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftHip:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightHip:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRoot:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftKnee:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightKnee:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameLeftAnkle:
        &'static VNHumanBodyPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointNameRightAnkle:
        &'static VNHumanBodyPoseObservationJointName;
}
#[cfg(feature = "VNTypes")]
pub type VNHumanBodyPoseObservationJointsGroupName = VNRecognizedPointGroupKey;
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameFace:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameTorso:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameLeftArm:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameRightArm:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameLeftLeg:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameRightLeg:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanBodyPoseObservationJointsGroupNameAll:
        &'static VNHumanBodyPoseObservationJointsGroupName;
}
extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "VNObservation")]
    pub struct VNHumanBodyPoseObservation;
    #[cfg(feature = "VNObservation")]
    unsafe impl ClassType for VNHumanBodyPoseObservation {
        #[inherits(VNObservation, NSObject)]
        type Super = VNRecognizedPointsObservation;
        type Mutability = InteriorMutable;
    }
);
#[cfg(feature = "VNObservation")]
unsafe impl NSCoding for VNHumanBodyPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSCopying for VNHumanBodyPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSObjectProtocol for VNHumanBodyPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSSecureCoding for VNHumanBodyPoseObservation {}
#[cfg(all(feature = "VNObservation", feature = "VNRequestRevisionProviding"))]
unsafe impl VNRequestRevisionProviding for VNHumanBodyPoseObservation {}
extern_methods!(
    #[cfg(feature = "VNObservation")]
    unsafe impl VNHumanBodyPoseObservation {
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other availableJointNames)]
        pub unsafe fn availableJointNames(
            &self,
        ) -> Retained<NSArray<VNHumanBodyPoseObservationJointName>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other availableJointsGroupNames)]
        pub unsafe fn availableJointsGroupNames(
            &self,
        ) -> Retained<NSArray<VNHumanBodyPoseObservationJointsGroupName>>;
        #[cfg(all(
            feature = "VNDetectedPoint",
            feature = "VNGeometry",
            feature = "VNTypes"
        ))]
        #[method_id(@__retain_semantics Other recognizedPointForJointName:error:_)]
        pub unsafe fn recognizedPointForJointName_error(
            &self,
            joint_name: &VNHumanBodyPoseObservationJointName,
        ) -> Result<Retained<VNRecognizedPoint>, Retained<NSError>>;
        #[cfg(all(
            feature = "VNDetectedPoint",
            feature = "VNGeometry",
            feature = "VNTypes"
        ))]
        #[method_id(@__retain_semantics Other recognizedPointsForJointsGroupName:error:_)]
        pub unsafe fn recognizedPointsForJointsGroupName_error(
            &self,
            joints_group_name: &VNHumanBodyPoseObservationJointsGroupName,
        ) -> Result<
            Retained<NSDictionary<VNHumanBodyPoseObservationJointName, VNRecognizedPoint>>,
            Retained<NSError>,
        >;
    }
);
extern_methods!(
    #[cfg(feature = "VNObservation")]
    unsafe impl VNHumanBodyPoseObservation {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Retained<Self>;
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);
extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "VNRequest")]
    pub struct VNDetectHumanBodyPoseRequest;
    #[cfg(feature = "VNRequest")]
    unsafe impl ClassType for VNDetectHumanBodyPoseRequest {
        #[inherits(VNRequest, NSObject)]
        type Super = VNImageBasedRequest;
        type Mutability = InteriorMutable;
    }
);
#[cfg(feature = "VNRequest")]
unsafe impl NSCopying for VNDetectHumanBodyPoseRequest {}
#[cfg(feature = "VNRequest")]
unsafe impl NSObjectProtocol for VNDetectHumanBodyPoseRequest {}
extern_methods!(
    #[cfg(feature = "VNRequest")]
    unsafe impl VNDetectHumanBodyPoseRequest {
        #[cfg(feature = "VNTypes")]
        #[deprecated]
        #[method_id(@__retain_semantics Other supportedJointNamesForRevision:error:_)]
        pub unsafe fn supportedJointNamesForRevision_error(
            revision: NSUInteger,
        ) -> Result<Retained<NSArray<VNHumanBodyPoseObservationJointName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other supportedJointNamesAndReturnError:_)]
        pub unsafe fn supportedJointNamesAndReturnError(
            &self,
        ) -> Result<Retained<NSArray<VNHumanBodyPoseObservationJointName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[deprecated]
        #[method_id(@__retain_semantics Other supportedJointsGroupNamesForRevision:error:_)]
        pub unsafe fn supportedJointsGroupNamesForRevision_error(
            revision: NSUInteger,
        ) -> Result<Retained<NSArray<VNHumanBodyPoseObservationJointsGroupName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other supportedJointsGroupNamesAndReturnError:_)]
        pub unsafe fn supportedJointsGroupNamesAndReturnError(
            &self,
        ) -> Result<Retained<NSArray<VNHumanBodyPoseObservationJointsGroupName>>, Retained<NSError>>;
        #[cfg(feature = "VNObservation")]
        #[method_id(@__retain_semantics Other results)]
        pub unsafe fn results(&self) -> Option<Retained<NSArray<VNHumanBodyPoseObservation>>>;
    }
);
extern_methods!(
    #[cfg(feature = "VNRequest")]
    unsafe impl VNDetectHumanBodyPoseRequest {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
        #[cfg(feature = "block2")]
        #[method_id(@__retain_semantics Init initWithCompletionHandler:)]
        pub unsafe fn initWithCompletionHandler(
            this: Allocated<Self>,
            completion_handler: VNRequestCompletionHandler,
        ) -> Retained<Self>;
    }
);
extern_methods!(
    #[cfg(feature = "VNRequest")]
    unsafe impl VNDetectHumanBodyPoseRequest {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Retained<Self>;
    }
);
pub static VNDetectHumanBodyPoseRequestRevision1: NSUInteger = 1;