use kizzasi_inference::{EngineConfig, InferenceEngine, ModelBuilder, ModelRegistry};
use scirs2_core::ndarray::Array1;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== Kizzasi Inference: Basic Example ===\n");
let mut registry = ModelRegistry::new();
let model_config = ModelBuilder::s4d()
.dims(1, 128, 10) .layers(4)
.state_dim(16)
.build();
registry.register("signal_predictor", model_config);
println!("Loading S4D model...");
let model = registry.create_model("signal_predictor")?;
let engine_config = EngineConfig::new(1, 10);
let mut engine = InferenceEngine::with_model(engine_config, model);
println!("Model loaded successfully!");
println!("Model info: {:?}\n", engine.model_info());
println!("=== Single-Step Prediction ===");
let input = Array1::from_vec(vec![0.5]);
println!("Input: {:?}", input);
let output = engine.step(&input)?;
println!("Output: {:?}", output);
println!("Step count: {}\n", engine.step_count());
println!("=== Multi-Step Rollout (10 steps) ===");
engine.reset();
let initial = Array1::from_vec(vec![0.3]);
let outputs = engine.rollout(&initial, 10)?;
println!("Generated {} predictions", outputs.len());
for (i, output) in outputs.iter().enumerate() {
println!("Step {}: {:?}", i + 1, output);
}
println!("\n=== Done ===");
Ok(())
}