use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
pub unsafe trait CHHapticPatternPlayer: NSObjectProtocol {
#[unsafe(method(startAtTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn startAtTime_error(&self, time: NSTimeInterval) -> Result<(), Retained<NSError>>;
#[unsafe(method(stopAtTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn stopAtTime_error(&self, time: NSTimeInterval) -> Result<(), Retained<NSError>>;
#[cfg(feature = "CHHapticParameter")]
#[unsafe(method(sendParameters:atTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn sendParameters_atTime_error(
&self,
parameters: &NSArray<CHHapticDynamicParameter>,
time: NSTimeInterval,
) -> Result<(), Retained<NSError>>;
#[cfg(feature = "CHHapticParameter")]
#[unsafe(method(scheduleParameterCurve:atTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn scheduleParameterCurve_atTime_error(
&self,
parameter_curve: &CHHapticParameterCurve,
time: NSTimeInterval,
) -> Result<(), Retained<NSError>>;
#[unsafe(method(cancelAndReturnError:_))]
#[unsafe(method_family = none)]
unsafe fn cancelAndReturnError(&self) -> Result<(), Retained<NSError>>;
#[unsafe(method(isMuted))]
#[unsafe(method_family = none)]
unsafe fn isMuted(&self) -> bool;
#[unsafe(method(setIsMuted:))]
#[unsafe(method_family = none)]
unsafe fn setIsMuted(&self, is_muted: bool);
}
);
#[cfg(feature = "block2")]
pub type CHHapticAdvancedPatternPlayerCompletionHandler =
*mut block2::DynBlock<dyn Fn(*mut NSError)>;
extern_protocol!(
pub unsafe trait CHHapticAdvancedPatternPlayer: CHHapticPatternPlayer {
#[unsafe(method(pauseAtTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn pauseAtTime_error(&self, time: NSTimeInterval) -> Result<(), Retained<NSError>>;
#[unsafe(method(resumeAtTime:error:_))]
#[unsafe(method_family = none)]
unsafe fn resumeAtTime_error(&self, time: NSTimeInterval) -> Result<(), Retained<NSError>>;
#[unsafe(method(seekToOffset:error:_))]
#[unsafe(method_family = none)]
unsafe fn seekToOffset_error(
&self,
offset_time: NSTimeInterval,
) -> Result<(), Retained<NSError>>;
#[unsafe(method(loopEnabled))]
#[unsafe(method_family = none)]
unsafe fn loopEnabled(&self) -> bool;
#[unsafe(method(setLoopEnabled:))]
#[unsafe(method_family = none)]
unsafe fn setLoopEnabled(&self, loop_enabled: bool);
#[unsafe(method(loopEnd))]
#[unsafe(method_family = none)]
unsafe fn loopEnd(&self) -> NSTimeInterval;
#[unsafe(method(setLoopEnd:))]
#[unsafe(method_family = none)]
unsafe fn setLoopEnd(&self, loop_end: NSTimeInterval);
#[unsafe(method(playbackRate))]
#[unsafe(method_family = none)]
unsafe fn playbackRate(&self) -> c_float;
#[unsafe(method(setPlaybackRate:))]
#[unsafe(method_family = none)]
unsafe fn setPlaybackRate(&self, playback_rate: c_float);
#[unsafe(method(isMuted))]
#[unsafe(method_family = none)]
unsafe fn isMuted(&self) -> bool;
#[unsafe(method(setIsMuted:))]
#[unsafe(method_family = none)]
unsafe fn setIsMuted(&self, is_muted: bool);
#[cfg(feature = "block2")]
#[unsafe(method(completionHandler))]
#[unsafe(method_family = none)]
unsafe fn completionHandler(&self) -> CHHapticAdvancedPatternPlayerCompletionHandler;
#[cfg(feature = "block2")]
#[unsafe(method(setCompletionHandler:))]
#[unsafe(method_family = none)]
unsafe fn setCompletionHandler(
&self,
completion_handler: CHHapticAdvancedPatternPlayerCompletionHandler,
);
}
);