terra_rust_api/
errors.rs

1#![allow(missing_docs)]
2
3use reqwest::StatusCode;
4use std::string::FromUtf8Error;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum TerraRustAPIError {
9    #[error("Reqwest HTTP(s) Error")]
10    ReqwestError(#[from] ::reqwest::Error),
11    #[error("Decimal Conversion Error")]
12    RustDecimal(#[from] ::rust_decimal::Error),
13    #[error("JSON Conversion Error")]
14    SerdeJson(#[from] ::serde_json::Error),
15    #[error(transparent)]
16    IOErr(#[from] ::std::io::Error),
17    #[error(transparent)]
18    ED25519(#[from] ::ed25519_dalek::ed25519::Error),
19    #[error(transparent)]
20    DecodeError(#[from] ::base64::DecodeError),
21    #[error(transparent)]
22    SubtleError(#[from] ::subtle_encoding::Error),
23    #[error(transparent)]
24    UTF8Error(#[from] FromUtf8Error),
25    #[error(transparent)]
26    BitCoinBip32(#[from] ::bitcoin::util::bip32::Error),
27    #[error(transparent)]
28    HexError(#[from] ::hex::FromHexError),
29    #[error(transparent)]
30    Secp256k1(#[from] ::secp256k1::Error),
31
32    #[error("Terra `{0}` CLI Error")]
33    Terra(String),
34    #[error("Terra `{0}` LCD - {1}")]
35    TerraLCDResponse(StatusCode, String),
36    #[error("Bech32 Decode Error")]
37    Bech32DecodeErr,
38    #[error("Bech32 Decode Error: Key Failed prefix {0} or length {1} Wanted:{2}/{3}")]
39    Bech32DecodeExpanded(String, usize, String, usize),
40    #[error("Mnemonic - Bad Phrase")]
41    Phrasing,
42    #[error("Mnemonic - Missing Phrase")]
43    MissingPhrase,
44    #[error("Bad Implementation. Missing Component")]
45    Implementation,
46    #[error("Unable to convert into public key `{key}`")]
47    Conversion {
48        key: String,
49        source: bitcoin::bech32::Error,
50    },
51    #[error("83 length-missing SECP256K1 prefix")]
52    ConversionSECP256k1,
53    #[error("82 length-missing ED25519 prefix")]
54    ConversionED25519,
55    #[error("Expected Key length of 82 or 83 length was {0}")]
56    ConversionLength(usize),
57    #[error("Expected Key length of 40 length was {0}")]
58    ConversionLengthED25519Hex(usize),
59    #[error("Expected ED25519 key of length 32 with a BECH32 ED25519 prefix of 5 chars - Len {0} - Hex {1}")]
60    ConversionPrefixED25519(usize, String),
61    #[error("Can't call Transactions without some gas rules")]
62    NoGasOpts,
63    #[error("Can't parse `{parse}` into a coin")]
64    CoinParseErrV { parse: String },
65    #[error("Can't parse `{0}` into a coin")]
66    CoinParseErr(String),
67    #[error("TX submit returned `{0}` - {1} '{2}'")]
68    TxResultError(usize, String, String),
69    #[error("No price found for Gas using denom {0}")]
70    GasPriceError(String),
71    #[error("Attempting to fetch validator set in parts, and failed Height mismatch {0} {1}")]
72    TendermintValidatorSet(u64, u64),
73    #[error("Transaction {0} not found after {1} attempts")]
74    TXNotFound(String, usize),
75    #[error("unknown Terra-Rust API error")]
76    Unknown,
77    #[error("Generic Error {0}")]
78    StdErr(String),
79}