///|
pub enum WindowError {
  WindowReversed
  WindowOutOfRange
} derive(Debug, Eq, Compare)

///|
/// A closed interval used for SLA windows and reporting periods.
pub struct DeadlineWindow {
  start : Date
  end : Date
}

///|
pub fn DeadlineWindow::new(
  start~ : Date,
  end~ : Date,
) -> Result[DeadlineWindow, WindowError] {
  if start > end {
    Err(WindowReversed)
  } else {
    Ok({ start, end })
  }
}