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

use crate::*;

extern_protocol!(
    #[cfg(feature = "UIPickerView")]
    pub unsafe trait UIPickerViewAccessibilityDelegate:
        UIPickerViewDelegate + IsMainThreadOnly
    {
        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityLabelForComponent:)]
        unsafe fn pickerView_accessibilityLabelForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityHintForComponent:)]
        unsafe fn pickerView_accessibilityHintForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityUserInputLabelsForComponent:)]
        unsafe fn pickerView_accessibilityUserInputLabelsForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Retained<NSArray<NSString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityAttributedLabelForComponent:)]
        unsafe fn pickerView_accessibilityAttributedLabelForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Option<Retained<NSAttributedString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityAttributedHintForComponent:)]
        unsafe fn pickerView_accessibilityAttributedHintForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Option<Retained<NSAttributedString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other pickerView:accessibilityAttributedUserInputLabelsForComponent:)]
        unsafe fn pickerView_accessibilityAttributedUserInputLabelsForComponent(
            &self,
            picker_view: &UIPickerView,
            component: NSInteger,
        ) -> Retained<NSArray<NSAttributedString>>;
    }

    #[cfg(feature = "UIPickerView")]
    unsafe impl ProtocolType for dyn UIPickerViewAccessibilityDelegate {}
);

extern_protocol!(
    #[cfg(feature = "UIScrollView")]
    pub unsafe trait UIScrollViewAccessibilityDelegate:
        UIScrollViewDelegate + IsMainThreadOnly
    {
        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other accessibilityScrollStatusForScrollView:)]
        unsafe fn accessibilityScrollStatusForScrollView(
            &self,
            scroll_view: &UIScrollView,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "UIResponder", feature = "UIView"))]
        #[optional]
        #[method_id(@__retain_semantics Other accessibilityAttributedScrollStatusForScrollView:)]
        unsafe fn accessibilityAttributedScrollStatusForScrollView(
            &self,
            scroll_view: &UIScrollView,
        ) -> Option<Retained<NSAttributedString>>;
    }

    #[cfg(feature = "UIScrollView")]
    unsafe impl ProtocolType for dyn UIScrollViewAccessibilityDelegate {}
);

extern_methods!(
    /// UIAccessibilityInvertColors
    #[cfg(all(feature = "UIResponder", feature = "UIView"))]
    unsafe impl UIView {
        #[method(accessibilityIgnoresInvertColors)]
        pub unsafe fn accessibilityIgnoresInvertColors(&self) -> bool;

        #[method(setAccessibilityIgnoresInvertColors:)]
        pub unsafe fn setAccessibilityIgnoresInvertColors(
            &self,
            accessibility_ignores_invert_colors: bool,
        );
    }
);

extern_methods!(
    /// UIAccessibility
    #[cfg(feature = "UIColor")]
    unsafe impl UIColor {
        #[method_id(@__retain_semantics Other accessibilityName)]
        pub unsafe fn accessibilityName(&self) -> Retained<NSString>;
    }
);
