use nv_core::{MonotonicTs, TrackId};
use nv_view::ViewEpoch;
use crate::track::{Track, TrackObservation};
pub trait TemporalAccess: Send + Sync {
fn view_epoch(&self) -> ViewEpoch;
fn track_count(&self) -> usize;
fn track_ids(&self) -> Vec<TrackId>;
fn get_track(&self, id: &TrackId) -> Option<&Track>;
fn recent_observations(&self, id: &TrackId) -> &[TrackObservation];
fn first_seen(&self, id: &TrackId) -> Option<MonotonicTs>;
fn last_seen(&self, id: &TrackId) -> Option<MonotonicTs>;
fn trajectory_point_count(&self, id: &TrackId) -> usize;
fn trajectory_segment_count(&self, id: &TrackId) -> usize;
}