use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[cfg(feature = "VNTypes")]
pub type VNHumanHandPoseObservationJointName = VNRecognizedPointKey;
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameWrist:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameThumbCMC:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameThumbMP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameThumbIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameThumbTip:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameIndexMCP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameIndexPIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameIndexDIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameIndexTip:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameMiddleMCP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameMiddlePIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameMiddleDIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameMiddleTip:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameRingMCP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameRingPIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameRingDIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameRingTip:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameLittleMCP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameLittlePIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameLittleDIP:
        &'static VNHumanHandPoseObservationJointName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointNameLittleTip:
        &'static VNHumanHandPoseObservationJointName;
}
#[cfg(feature = "VNTypes")]
pub type VNHumanHandPoseObservationJointsGroupName = VNRecognizedPointGroupKey;
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameThumb:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameIndexFinger:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameMiddleFinger:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameRingFinger:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameLittleFinger:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern "C" {
    #[cfg(feature = "VNTypes")]
    pub static VNHumanHandPoseObservationJointsGroupNameAll:
        &'static VNHumanHandPoseObservationJointsGroupName;
}
extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "VNObservation")]
    pub struct VNHumanHandPoseObservation;
    #[cfg(feature = "VNObservation")]
    unsafe impl ClassType for VNHumanHandPoseObservation {
        #[inherits(VNObservation, NSObject)]
        type Super = VNRecognizedPointsObservation;
        type Mutability = InteriorMutable;
    }
);
#[cfg(feature = "VNObservation")]
unsafe impl NSCoding for VNHumanHandPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSCopying for VNHumanHandPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSObjectProtocol for VNHumanHandPoseObservation {}
#[cfg(feature = "VNObservation")]
unsafe impl NSSecureCoding for VNHumanHandPoseObservation {}
#[cfg(all(feature = "VNObservation", feature = "VNRequestRevisionProviding"))]
unsafe impl VNRequestRevisionProviding for VNHumanHandPoseObservation {}
extern_methods!(
    #[cfg(feature = "VNObservation")]
    unsafe impl VNHumanHandPoseObservation {
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other availableJointNames)]
        pub unsafe fn availableJointNames(
            &self,
        ) -> Retained<NSArray<VNHumanHandPoseObservationJointName>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other availableJointsGroupNames)]
        pub unsafe fn availableJointsGroupNames(
            &self,
        ) -> Retained<NSArray<VNHumanHandPoseObservationJointsGroupName>>;
        #[cfg(all(
            feature = "VNDetectedPoint",
            feature = "VNGeometry",
            feature = "VNTypes"
        ))]
        #[method_id(@__retain_semantics Other recognizedPointForJointName:error:_)]
        pub unsafe fn recognizedPointForJointName_error(
            &self,
            joint_name: &VNHumanHandPoseObservationJointName,
        ) -> 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: &VNHumanHandPoseObservationJointsGroupName,
        ) -> Result<
            Retained<NSDictionary<VNHumanHandPoseObservationJointName, VNRecognizedPoint>>,
            Retained<NSError>,
        >;
        #[cfg(feature = "VNTypes")]
        #[method(chirality)]
        pub unsafe fn chirality(&self) -> VNChirality;
    }
);
extern_methods!(
    #[cfg(feature = "VNObservation")]
    unsafe impl VNHumanHandPoseObservation {
        #[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 VNDetectHumanHandPoseRequest;
    #[cfg(feature = "VNRequest")]
    unsafe impl ClassType for VNDetectHumanHandPoseRequest {
        #[inherits(VNRequest, NSObject)]
        type Super = VNImageBasedRequest;
        type Mutability = InteriorMutable;
    }
);
#[cfg(feature = "VNRequest")]
unsafe impl NSCopying for VNDetectHumanHandPoseRequest {}
#[cfg(feature = "VNRequest")]
unsafe impl NSObjectProtocol for VNDetectHumanHandPoseRequest {}
extern_methods!(
    #[cfg(feature = "VNRequest")]
    unsafe impl VNDetectHumanHandPoseRequest {
        #[cfg(feature = "VNTypes")]
        #[deprecated]
        #[method_id(@__retain_semantics Other supportedJointNamesForRevision:error:_)]
        pub unsafe fn supportedJointNamesForRevision_error(
            revision: NSUInteger,
        ) -> Result<Retained<NSArray<VNHumanHandPoseObservationJointName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other supportedJointNamesAndReturnError:_)]
        pub unsafe fn supportedJointNamesAndReturnError(
            &self,
        ) -> Result<Retained<NSArray<VNHumanHandPoseObservationJointName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[deprecated]
        #[method_id(@__retain_semantics Other supportedJointsGroupNamesForRevision:error:_)]
        pub unsafe fn supportedJointsGroupNamesForRevision_error(
            revision: NSUInteger,
        ) -> Result<Retained<NSArray<VNHumanHandPoseObservationJointsGroupName>>, Retained<NSError>>;
        #[cfg(feature = "VNTypes")]
        #[method_id(@__retain_semantics Other supportedJointsGroupNamesAndReturnError:_)]
        pub unsafe fn supportedJointsGroupNamesAndReturnError(
            &self,
        ) -> Result<Retained<NSArray<VNHumanHandPoseObservationJointsGroupName>>, Retained<NSError>>;
        #[method(maximumHandCount)]
        pub unsafe fn maximumHandCount(&self) -> NSUInteger;
        #[method(setMaximumHandCount:)]
        pub unsafe fn setMaximumHandCount(&self, maximum_hand_count: NSUInteger);
        #[cfg(feature = "VNObservation")]
        #[method_id(@__retain_semantics Other results)]
        pub unsafe fn results(&self) -> Option<Retained<NSArray<VNHumanHandPoseObservation>>>;
    }
);
extern_methods!(
    #[cfg(feature = "VNRequest")]
    unsafe impl VNDetectHumanHandPoseRequest {
        #[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 VNDetectHumanHandPoseRequest {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Retained<Self>;
    }
);
pub static VNDetectHumanHandPoseRequestRevision1: NSUInteger = 1;