use invoance::models::{CreateTraceParams, GetTraceParams, IngestEventParams};
use invoance::InvoanceClient;
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = InvoanceClient::new()?;
let trace = client
.traces()
.create(CreateTraceParams {
label: "Onboarding run 2026-07".into(),
..Default::default()
})
.await?;
println!("trace_id = {}", trace.trace_id);
client
.events()
.ingest(IngestEventParams {
event_type: "onboarding.step".into(),
payload: json!({ "step": "kyc" }).as_object().unwrap().clone(),
trace_id: Some(trace.trace_id.clone()),
..Default::default()
})
.await?;
let detail = client
.traces()
.get(&trace.trace_id, GetTraceParams::default())
.await?;
println!(
"status = {}, events = {}",
detail.status,
detail.events.len()
);
let sealed = client.traces().seal(&trace.trace_id).await?;
println!("seal: {}", sealed.message);
Ok(())
}