iota_names/
error.rs

1// Copyright (c) 2025 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4use 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}