use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
pub unsafe trait GCDevicePhysicalInputState: NSObjectProtocol {
#[cfg(feature = "GCDevice")]
#[method_id(@__retain_semantics Other device)]
unsafe fn device(&self) -> Option<Id<ProtocolObject<dyn GCDevice>>>;
#[method(lastEventTimestamp)]
unsafe fn lastEventTimestamp(&self) -> NSTimeInterval;
#[method(lastEventLatency)]
unsafe fn lastEventLatency(&self) -> NSTimeInterval;
#[cfg(all(feature = "GCInputNames", feature = "GCPhysicalInputElement"))]
#[method_id(@__retain_semantics Other elements)]
unsafe fn elements(
&self,
) -> Id<
GCPhysicalInputElementCollection<NSString, ProtocolObject<dyn GCPhysicalInputElement>>,
>;
#[cfg(all(
feature = "GCButtonElement",
feature = "GCInputNames",
feature = "GCPhysicalInputElement"
))]
#[method_id(@__retain_semantics Other buttons)]
unsafe fn buttons(
&self,
) -> Id<GCPhysicalInputElementCollection<NSString, ProtocolObject<dyn GCButtonElement>>>;
#[cfg(all(
feature = "GCAxisElement",
feature = "GCInputNames",
feature = "GCPhysicalInputElement"
))]
#[method_id(@__retain_semantics Other axes)]
unsafe fn axes(
&self,
) -> Id<GCPhysicalInputElementCollection<NSString, ProtocolObject<dyn GCAxisElement>>>;
#[cfg(all(
feature = "GCInputNames",
feature = "GCPhysicalInputElement",
feature = "GCSwitchElement"
))]
#[method_id(@__retain_semantics Other switches)]
unsafe fn switches(
&self,
) -> Id<GCPhysicalInputElementCollection<NSString, ProtocolObject<dyn GCSwitchElement>>>;
#[cfg(all(
feature = "GCDirectionPadElement",
feature = "GCInputNames",
feature = "GCPhysicalInputElement"
))]
#[method_id(@__retain_semantics Other dpads)]
unsafe fn dpads(
&self,
) -> Id<GCPhysicalInputElementCollection<NSString, ProtocolObject<dyn GCDirectionPadElement>>>;
#[cfg(feature = "GCPhysicalInputElement")]
#[method_id(@__retain_semantics Other objectForKeyedSubscript:)]
unsafe fn objectForKeyedSubscript(
&self,
key: &NSString,
) -> Option<Id<ProtocolObject<dyn GCPhysicalInputElement>>>;
}
unsafe impl ProtocolType for dyn GCDevicePhysicalInputState {}
);