iota_sdk/
error.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5use iota_types::base_types::{IotaAddress, TransactionDigest};
6use thiserror::Error;
7
8pub use crate::json_rpc_error::Error as JsonRpcError;
9
10pub type IotaRpcResult<T = ()> = Result<T, Error>;
11
12#[derive(Error, Debug)]
13pub enum Error {
14    #[error(transparent)]
15    Rpc(#[from] jsonrpsee::core::ClientError),
16    #[error(transparent)]
17    BcsSerialization(#[from] bcs::Error),
18    #[error("Subscription error: {0}")]
19    Subscription(String),
20    #[error("Failed to confirm tx status for {0:?} within {1} seconds.")]
21    FailToConfirmTransactionStatus(TransactionDigest, u64),
22    #[error("Data error: {0}")]
23    Data(String),
24    #[error(
25        "Client/Server api version mismatch, client api version: {client_version}, server api version: {server_version}"
26    )]
27    ServerVersionMismatch {
28        client_version: String,
29        server_version: String,
30    },
31    #[error("Insufficient funds for address [{address}], requested amount: {amount}")]
32    InsufficientFunds { address: IotaAddress, amount: u128 },
33    #[error(transparent)]
34    Json(#[from] serde_json::Error),
35}