monero_interface/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![doc = include_str!("../README.md")]
3#![deny(missing_docs)]
4#![cfg_attr(not(feature = "std"), no_std)]
5
6use core::fmt::Debug;
7
8extern crate alloc;
9use alloc::string::String;
10
11mod provides_blockchain_meta;
12pub use provides_blockchain_meta::*;
13
14mod provides_transactions;
15pub use provides_transactions::*;
16
17pub(crate) mod provides_blockchain;
18pub use provides_blockchain::{ProvidesUnvalidatedBlockchain, ProvidesBlockchain};
19
20mod provides_outputs;
21pub use provides_outputs::*;
22
23mod provides_scannable_blocks;
24pub use provides_scannable_blocks::*;
25
26mod provides_decoys;
27pub use provides_decoys::*;
28
29mod provides_fee_rates;
30pub use provides_fee_rates::*;
31
32/// An error from the interface.
33#[derive(Clone, PartialEq, Eq, Debug, thiserror::Error)]
34pub enum InterfaceError {
35  /// An internal error.
36  #[error("internal error ({0})")]
37  InternalError(String),
38  /// An error with the interface.
39  #[error("interface error ({0})")]
40  InterfaceError(String),
41  /// The interface is invalid per the expected protocol and should be disconnected from.
42  #[error("invalid node ({0})")]
43  InvalidInterface(String),
44}
45
46/// A prelude of recommended imports to glob import.
47pub mod prelude {
48  pub use crate::{
49    InterfaceError, ProvidesBlockchainMeta, TransactionsError, ProvidesTransactions,
50    PublishTransactionError, PublishTransaction, ProvidesBlockchain, ProvidesOutputs,
51    ScannableBlock, ExpandToScannableBlock, ProvidesScannableBlocks, EvaluateUnlocked,
52    ProvidesDecoys, FeePriority, FeeRate, FeeError, ProvidesFeeRates,
53  };
54}