1use iota_types::base_types::ObjectID;
5use serde::{Deserialize, Serialize};
6
7#[derive(thiserror::Error, Debug, Serialize, Deserialize, Clone, Eq, PartialEq)]
8pub enum IotaNamesError {
9 #[error("Domain length {0} exceeds maximum length {1}")]
10 DomainLengthExceeded(usize, usize),
11 #[error("Label length {0} outside of valid range [{1}, {2}]")]
12 InvalidLabelLength(usize, usize, usize),
13 #[error("Hyphens are not allowed as first or last character of a label")]
14 HyphensAsFirstOrLastLabelChar,
15 #[error(
16 "Only lowercase letters, numbers, and hyphens are allowed as label characters. Got \'{0}\' at position {1}"
17 )]
18 InvalidLabelChar(char, usize),
19 #[error("Domain must contain at least two labels, TLD and SLD")]
20 NotEnoughLabels,
21 #[error("Domain must include only one separator")]
22 InvalidSeparator,
23 #[error("Name has expired")]
24 NameExpired,
25 #[error("Malformed object for {0}")]
26 MalformedObject(ObjectID),
27 #[error("Invalid TLD {0}")]
28 InvalidTld(String),
29}