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

use crate::*;

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct UIBarAppearance;

    unsafe impl ClassType for UIBarAppearance {
        type Super = NSObject;
        type Mutability = MainThreadOnly;
    }
);

unsafe impl NSCoding for UIBarAppearance {}

unsafe impl NSCopying for UIBarAppearance {}

unsafe impl NSObjectProtocol for UIBarAppearance {}

unsafe impl NSSecureCoding for UIBarAppearance {}

extern_methods!(
    unsafe impl UIBarAppearance {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[cfg(feature = "UIDevice")]
        #[method_id(@__retain_semantics Init initWithIdiom:)]
        pub unsafe fn initWithIdiom(
            this: Allocated<Self>,
            idiom: UIUserInterfaceIdiom,
        ) -> Retained<Self>;

        #[cfg(feature = "UIDevice")]
        #[method(idiom)]
        pub unsafe fn idiom(&self) -> UIUserInterfaceIdiom;

        #[method_id(@__retain_semantics Init initWithBarAppearance:)]
        pub unsafe fn initWithBarAppearance(
            this: Allocated<Self>,
            bar_appearance: &UIBarAppearance,
        ) -> Retained<Self>;

        #[method_id(@__retain_semantics Init initWithCoder:)]
        pub unsafe fn initWithCoder(this: Allocated<Self>, coder: &NSCoder) -> Retained<Self>;

        #[method_id(@__retain_semantics CopyOrMutCopy copy)]
        pub unsafe fn copy(&self) -> Retained<Self>;

        #[method(configureWithDefaultBackground)]
        pub unsafe fn configureWithDefaultBackground(&self);

        #[method(configureWithOpaqueBackground)]
        pub unsafe fn configureWithOpaqueBackground(&self);

        #[method(configureWithTransparentBackground)]
        pub unsafe fn configureWithTransparentBackground(&self);

        #[cfg(all(feature = "UIBlurEffect", feature = "UIVisualEffect"))]
        #[method_id(@__retain_semantics Other backgroundEffect)]
        pub unsafe fn backgroundEffect(&self) -> Option<Retained<UIBlurEffect>>;

        #[cfg(all(feature = "UIBlurEffect", feature = "UIVisualEffect"))]
        #[method(setBackgroundEffect:)]
        pub unsafe fn setBackgroundEffect(&self, background_effect: Option<&UIBlurEffect>);

        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other backgroundColor)]
        pub unsafe fn backgroundColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setBackgroundColor:)]
        pub unsafe fn setBackgroundColor(&self, background_color: Option<&UIColor>);

        #[cfg(feature = "UIImage")]
        #[method_id(@__retain_semantics Other backgroundImage)]
        pub unsafe fn backgroundImage(&self) -> Option<Retained<UIImage>>;

        #[cfg(feature = "UIImage")]
        #[method(setBackgroundImage:)]
        pub unsafe fn setBackgroundImage(&self, background_image: Option<&UIImage>);

        #[cfg(feature = "UIView")]
        #[method(backgroundImageContentMode)]
        pub unsafe fn backgroundImageContentMode(&self) -> UIViewContentMode;

        #[cfg(feature = "UIView")]
        #[method(setBackgroundImageContentMode:)]
        pub unsafe fn setBackgroundImageContentMode(
            &self,
            background_image_content_mode: UIViewContentMode,
        );

        #[cfg(feature = "UIColor")]
        #[method_id(@__retain_semantics Other shadowColor)]
        pub unsafe fn shadowColor(&self) -> Option<Retained<UIColor>>;

        #[cfg(feature = "UIColor")]
        #[method(setShadowColor:)]
        pub unsafe fn setShadowColor(&self, shadow_color: Option<&UIColor>);

        #[cfg(feature = "UIImage")]
        #[method_id(@__retain_semantics Other shadowImage)]
        pub unsafe fn shadowImage(&self) -> Option<Retained<UIImage>>;

        #[cfg(feature = "UIImage")]
        #[method(setShadowImage:)]
        pub unsafe fn setShadowImage(&self, shadow_image: Option<&UIImage>);
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl UIBarAppearance {
        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
    }
);
