define_api_id!(0xaed6_0109_4f07_3c83, "ml-v4");
pub use super::ml_v1::FutureHandle;
use crate::FFIResult;
use bytemuck::Pod;
use bytemuck::Zeroable;
#[repr(C)]
#[derive(Copy, Clone, PartialEq, Debug, Pod, Zeroable)]
pub struct ProtocolConfig {
pub feature_count: u32,
pub action_count: u32,
pub hidden: u32,
pub alpha: f32,
pub use_terminal_masking: u32,
pub learning_rate_init: f32,
pub learning_rate_end: f32,
pub learning_rate_steps: u32,
pub batch_size: u32,
pub memory_min_size: u32,
pub memory_max_size: u32,
pub gamma: f32,
pub rollout_length: u32,
}
#[allow(clippy::too_many_arguments)]
#[ark_api_macros::ark_bindgen(imports = "ark-ml-v4")]
mod ml {
use super::*;
extern "C" {
pub fn start_training(
hive_url: &str,
hive_port: u32,
game_name: &str,
experiment_name: &str,
num_remote_workers: u32,
config: &str,
checkpoint: &str,
training_duration_in_seconds: u64,
protocol: &ProtocolConfig,
) -> FFIResult<FutureHandle>;
}
}
pub use ml::*;