use serde::{Deserialize, Serialize};
use tracen_ir::{
AlertDefinition, CatalogEntryDefinition, CompatDefinition, DeriveDefinition,
EventPlansDefinition, ExternTsImportDefinition, FieldDefinition, HelperDefinition,
ImportDefinition, MetricDefinition, PackTypeDefinition, PlanningDefinition,
ReadModelDefinition, TrackerVersion, ViewDefinition,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrackerAst {
pub name: String,
pub version: TrackerVersion,
pub fields: Vec<FieldDefinition>,
pub derives: Vec<DeriveDefinition>,
pub metrics: Vec<MetricDefinition>,
pub alerts: Vec<AlertDefinition>,
pub planning: Option<PlanningDefinition>,
pub event_plans: Option<EventPlansDefinition>,
pub views: Vec<ViewDefinition>,
pub catalog: Vec<CatalogEntryDefinition>,
pub read_models: Vec<ReadModelDefinition>,
pub types: Vec<PackTypeDefinition>,
pub helpers: Vec<HelperDefinition>,
pub imports: Vec<ImportDefinition>,
pub extern_ts: Vec<ExternTsImportDefinition>,
pub compat: Option<CompatDefinition>,
}