miden_client/rpc/
errors.rs1use alloc::string::{String, ToString};
2
3use miden_objects::{account::AccountId, note::NoteId, utils::DeserializationError, NoteError};
4use thiserror::Error;
5
6#[derive(Debug, Error)]
10pub enum RpcError {
11 #[error("rpc api response contained an update for a private account: {0}")]
12 AccountUpdateForPrivateAccountReceived(AccountId),
13 #[error("failed to connect to the api server: {0}")]
14 ConnectionError(String),
15 #[error("failed to deserialize rpc data: {0}")]
16 DeserializationError(String),
17 #[error("rpc api response missing an expected field: {0}")]
18 ExpectedDataMissing(String),
19 #[error("rpc api response is invalid: {0}")]
20 InvalidResponse(String),
21 #[error("note with id {0} was not found")]
22 NoteNotFound(NoteId),
23 #[error("rpc request failed for {0}: {1}")]
24 RequestError(String, String),
25}
26
27impl From<DeserializationError> for RpcError {
28 fn from(err: DeserializationError) -> Self {
29 Self::DeserializationError(err.to_string())
30 }
31}
32
33impl From<NoteError> for RpcError {
34 fn from(err: NoteError) -> Self {
35 Self::DeserializationError(err.to_string())
36 }
37}
38
39impl From<RpcConversionError> for RpcError {
40 fn from(err: RpcConversionError) -> Self {
41 Self::DeserializationError(err.to_string())
42 }
43}
44
45#[derive(Debug, Error)]
49pub enum RpcConversionError {
50 #[error("value is not in the range 0..modulus")]
51 NotAValidFelt,
52 #[error("invalid note type value")]
53 NoteTypeError(#[from] NoteError),
54 #[error("field `{field_name}` expected to be present in protobuf representation of {entity}")]
55 MissingFieldInProtobufRepresentation {
56 entity: &'static str,
57 field_name: &'static str,
58 },
59}