use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
pub type UIConfigurationStateCustomKey = NSString;
extern_protocol!(
pub unsafe trait UIConfigurationState:
NSObjectProtocol + NSCopying + NSSecureCoding + MainThreadOnly
{
#[cfg(feature = "UITraitCollection")]
#[unsafe(method(initWithTraitCollection:))]
#[unsafe(method_family = init)]
fn initWithTraitCollection(
this: Allocated<Self>,
trait_collection: &UITraitCollection,
) -> Retained<Self>;
#[cfg(feature = "UITraitCollection")]
#[unsafe(method(traitCollection))]
#[unsafe(method_family = none)]
fn traitCollection(&self) -> Retained<UITraitCollection>;
#[cfg(feature = "UITraitCollection")]
#[unsafe(method(setTraitCollection:))]
#[unsafe(method_family = none)]
fn setTraitCollection(&self, trait_collection: &UITraitCollection);
#[unsafe(method(customStateForKey:))]
#[unsafe(method_family = none)]
fn customStateForKey(
&self,
key: &UIConfigurationStateCustomKey,
) -> Option<Retained<AnyObject>>;
#[unsafe(method(setCustomState:forKey:))]
#[unsafe(method_family = none)]
unsafe fn setCustomState_forKey(
&self,
custom_state: Option<&AnyObject>,
key: &UIConfigurationStateCustomKey,
);
#[unsafe(method(objectForKeyedSubscript:))]
#[unsafe(method_family = none)]
fn objectForKeyedSubscript(
&self,
key: &UIConfigurationStateCustomKey,
) -> Option<Retained<AnyObject>>;
#[unsafe(method(setObject:forKeyedSubscript:))]
#[unsafe(method_family = none)]
unsafe fn setObject_forKeyedSubscript(
&self,
obj: Option<&AnyObject>,
key: &UIConfigurationStateCustomKey,
);
}
);