iota_types/stardust/
error.rs

1// Copyright (c) 2024 IOTA Stiftung
2// SPDX-License-Identifier: Apache-2.0
3
4//! Error types pertaining to deserializing Stardust snapshots
5use std::convert::Infallible;
6
7use iota_stardust_sdk::types::block::output::FoundryId;
8use packable::error::UnknownTagError;
9use thiserror::Error;
10
11#[derive(Debug, Error)]
12pub enum StardustError {
13    #[error("unsupported Hornet snapshot version: expected {0}, got {1}")]
14    UnsupportedHornetSnapshotVersion(u8, u8),
15    #[error("invalid snapshot kind: {0}")]
16    InvalidHornetSnapshotKind(u8),
17    #[error("invalid Hornet genesis snapshot: milestone diff count must be 0, but was {0}")]
18    InvalidHornetGenesisSnapshot(u32),
19    #[error("block error: {0}")]
20    Block(#[from] iota_stardust_sdk::types::block::Error),
21    #[error("{0}")]
22    UnknownTag(#[from] UnknownTagError<u8>),
23    #[error(
24        "cannot convert `FoundryOutput` with `FoundryId` {foundry_id} to `NativeTokenPackageData`: {err}"
25    )]
26    FoundryConversionError {
27        foundry_id: FoundryId,
28        err: anyhow::Error,
29    },
30    #[error("framework packages path not found")]
31    FrameworkPackagesPathNotFound,
32    #[error(
33        "failed to derive valid move identifier from symbol `{symbol}`, invalid identifier: `{identifier}`"
34    )]
35    InvalidMoveIdentifierDerived { symbol: String, identifier: String },
36    #[error("melting tokens must not be greater than minted tokens")]
37    MeltingTokensMustNotBeGreaterThanMintedTokens,
38    #[error("circulating supply must not be greater than maximum supply")]
39    CirculatingSupplyMustNotBeGreaterThanMaximumSupply,
40    #[error("Hornet Stardust snapshot parameters not found")]
41    HornetSnapshotParametersNotFound,
42}
43
44impl From<Infallible> for StardustError {
45    fn from(_: Infallible) -> Self {
46        unreachable!()
47    }
48}