//! 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)]
    #[cfg(feature = "NSTouchBarItem")]
    pub struct NSGroupTouchBarItem;

    #[cfg(feature = "NSTouchBarItem")]
    unsafe impl ClassType for NSGroupTouchBarItem {
        #[inherits(NSObject)]
        type Super = NSTouchBarItem;
        type Mutability = MainThreadOnly;
    }
);

#[cfg(feature = "NSTouchBarItem")]
unsafe impl NSCoding for NSGroupTouchBarItem {}

#[cfg(feature = "NSTouchBarItem")]
unsafe impl NSObjectProtocol for NSGroupTouchBarItem {}

extern_methods!(
    #[cfg(feature = "NSTouchBarItem")]
    unsafe impl NSGroupTouchBarItem {
        #[method_id(@__retain_semantics Other groupItemWithIdentifier:items:)]
        pub unsafe fn groupItemWithIdentifier_items(
            identifier: &NSTouchBarItemIdentifier,
            items: &NSArray<NSTouchBarItem>,
            mtm: MainThreadMarker,
        ) -> Retained<Self>;

        #[cfg(feature = "NSUserInterfaceCompression")]
        #[method_id(@__retain_semantics Other groupItemWithIdentifier:items:allowedCompressionOptions:)]
        pub unsafe fn groupItemWithIdentifier_items_allowedCompressionOptions(
            identifier: &NSTouchBarItemIdentifier,
            items: &NSArray<NSTouchBarItem>,
            allowed_compression_options: &NSUserInterfaceCompressionOptions,
            mtm: MainThreadMarker,
        ) -> Retained<Self>;

        #[method_id(@__retain_semantics Other alertStyleGroupItemWithIdentifier:)]
        pub unsafe fn alertStyleGroupItemWithIdentifier(
            identifier: &NSTouchBarItemIdentifier,
            mtm: MainThreadMarker,
        ) -> Retained<Self>;

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

        #[cfg(feature = "NSTouchBar")]
        #[method(setGroupTouchBar:)]
        pub unsafe fn setGroupTouchBar(&self, group_touch_bar: &NSTouchBar);

        #[method_id(@__retain_semantics Other customizationLabel)]
        pub unsafe fn customizationLabel(&self) -> Retained<NSString>;

        #[method(setCustomizationLabel:)]
        pub unsafe fn setCustomizationLabel(&self, customization_label: Option<&NSString>);

        #[cfg(feature = "NSUserInterfaceLayout")]
        #[method(groupUserInterfaceLayoutDirection)]
        pub unsafe fn groupUserInterfaceLayoutDirection(&self) -> NSUserInterfaceLayoutDirection;

        #[cfg(feature = "NSUserInterfaceLayout")]
        #[method(setGroupUserInterfaceLayoutDirection:)]
        pub unsafe fn setGroupUserInterfaceLayoutDirection(
            &self,
            group_user_interface_layout_direction: NSUserInterfaceLayoutDirection,
        );

        #[method(prefersEqualWidths)]
        pub unsafe fn prefersEqualWidths(&self) -> bool;

        #[method(setPrefersEqualWidths:)]
        pub unsafe fn setPrefersEqualWidths(&self, prefers_equal_widths: bool);

        #[method(preferredItemWidth)]
        pub unsafe fn preferredItemWidth(&self) -> CGFloat;

        #[method(setPreferredItemWidth:)]
        pub unsafe fn setPreferredItemWidth(&self, preferred_item_width: CGFloat);

        #[cfg(feature = "NSUserInterfaceCompression")]
        #[method_id(@__retain_semantics Other effectiveCompressionOptions)]
        pub unsafe fn effectiveCompressionOptions(
            &self,
        ) -> Retained<NSUserInterfaceCompressionOptions>;

        #[cfg(feature = "NSUserInterfaceCompression")]
        #[method_id(@__retain_semantics Other prioritizedCompressionOptions)]
        pub unsafe fn prioritizedCompressionOptions(
            &self,
        ) -> Retained<NSArray<NSUserInterfaceCompressionOptions>>;

        #[cfg(feature = "NSUserInterfaceCompression")]
        #[method(setPrioritizedCompressionOptions:)]
        pub unsafe fn setPrioritizedCompressionOptions(
            &self,
            prioritized_compression_options: &NSArray<NSUserInterfaceCompressionOptions>,
        );
    }
);

extern_methods!(
    /// Methods declared on superclass `NSTouchBarItem`
    #[cfg(feature = "NSTouchBarItem")]
    unsafe impl NSGroupTouchBarItem {
        #[method_id(@__retain_semantics Init initWithIdentifier:)]
        pub unsafe fn initWithIdentifier(
            this: Allocated<Self>,
            identifier: &NSTouchBarItemIdentifier,
        ) -> Retained<Self>;

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

        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
    }
);

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