ethers-rs/ethers-providers/src/lib.rs

37 lines
1011 B
Rust
Raw Normal View History

2020-06-10 08:58:27 +00:00
mod http;
pub use http::Provider as Http;
2020-06-10 08:58:27 +00:00
2020-05-26 10:24:19 +00:00
mod provider;
2020-05-26 09:52:15 +00:00
2020-05-28 16:34:06 +00:00
// ENS support
mod ens;
2020-05-27 11:32:44 +00:00
mod pending_transaction;
pub use pending_transaction::PendingTransaction;
mod stream;
pub use stream::FilterStream;
// re-export `StreamExt` so that consumers can call `next()` on the `FilterStream`
// without having to import futures themselves
pub use futures_util::StreamExt;
2020-05-26 09:52:15 +00:00
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use std::{error::Error, fmt::Debug};
2020-06-01 21:31:32 +00:00
pub use provider::{Provider, ProviderError};
2020-05-26 10:24:19 +00:00
2020-05-26 09:52:15 +00:00
#[async_trait]
2020-05-28 16:34:06 +00:00
/// Trait which must be implemented by data transports to be used with the Ethereum
/// JSON-RPC provider.
pub trait JsonRpcClient: Debug + Clone {
2020-05-28 16:34:06 +00:00
/// A JSON-RPC Error
2020-06-01 23:00:58 +00:00
type Error: Error + Into<ProviderError>;
2020-05-26 09:52:15 +00:00
2020-05-28 16:34:06 +00:00
/// Sends a request with the provided JSON-RPC and parameters serialized as JSON
async fn request<T, R>(&self, method: &str, params: T) -> Result<R, Self::Error>
where
T: Debug + Serialize + Send + Sync,
R: for<'a> Deserialize<'a>;
2020-05-26 09:37:31 +00:00
}