1use crate::FrameId;
2use crate::tree::transform::TransformId;
3use chrono::{DateTime, Utc};
4use thiserror::Error;
5
6#[derive(Error, Debug)]
7pub enum Error {
8 #[error(transparent)]
9 CoordsError(#[from] crate::coords::error::Error),
10
11 #[error("transform with id `{0}` not available")]
12 InvalidTransformId(TransformId),
13
14 #[error("invalid frame id `{0}`")]
15 InvalidFrameId(FrameId),
16
17 #[error("no transforms")]
18 NoTransforms(),
19
20 #[error("no transforms")]
21 ContainsDynamicTransform(),
22
23 #[error("duplicate timestamp `{0}`")]
24 DuplicateTimestamp(DateTime<Utc>),
25
26 #[error("no transform path found for `{0}`")]
27 NoTransformPath(TransformId),
28
29 #[error("multiple transform path found for `{0}`")]
30 MultipleTransformPaths(TransformId),
31
32 #[error("no timestamp")]
33 MissingTimestamp(),
34
35 #[error("transforms not sorted by timestamp")]
36 TransformsNotSortedByTime(),
37
38 #[error("transforms must be sorted strictly ascending by timestamp")]
39 TransformsNotSorted { transform_id: TransformId },
40
41 #[error("collision")]
42 ChannelTransformCollisions { transform_id: TransformId },
43}