use core::ffi::*;
use objc2::__framework_prelude::*;
use crate::*;
extern_protocol!(
pub unsafe trait GKStrategist: NSObjectProtocol {
#[cfg(feature = "GKGameModel")]
#[unsafe(method(gameModel))]
#[unsafe(method_family = none)]
unsafe fn gameModel(&self) -> Option<Retained<ProtocolObject<dyn GKGameModel>>>;
#[cfg(feature = "GKGameModel")]
#[unsafe(method(setGameModel:))]
#[unsafe(method_family = none)]
unsafe fn setGameModel(&self, game_model: Option<&ProtocolObject<dyn GKGameModel>>);
#[cfg(feature = "GKRandomSource")]
#[unsafe(method(randomSource))]
#[unsafe(method_family = none)]
unsafe fn randomSource(&self) -> Option<Retained<ProtocolObject<dyn GKRandom>>>;
#[cfg(feature = "GKRandomSource")]
#[unsafe(method(setRandomSource:))]
#[unsafe(method_family = none)]
unsafe fn setRandomSource(&self, random_source: Option<&ProtocolObject<dyn GKRandom>>);
#[cfg(feature = "GKGameModel")]
#[unsafe(method(bestMoveForActivePlayer))]
#[unsafe(method_family = none)]
unsafe fn bestMoveForActivePlayer(
&self,
) -> Option<Retained<ProtocolObject<dyn GKGameModelUpdate>>>;
}
);