1use 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}