use std::fs::File;
use flate2::write::GzEncoder;
use crate::{
Time, Val,
channel_system::{Action, Event},
};
pub type TraceWriter = GzEncoder<File>;
pub trait Tracer {
const EXTENSION: &str;
type ModelData;
fn init(writer: TraceWriter, data: &Self::ModelData) -> Self;
fn trace(
&mut self,
data: &Self::ModelData,
action: Action,
event: &Event,
time: Time,
ports: &[Vec<Val>],
);
}