electrum_client/
lib.rs

1#![warn(missing_docs)]
2
3//! This library provides an extendable Bitcoin-Electrum client that supports batch calls,
4//! notifications and multiple transport methods.
5//!
6//! By default this library is compiled with support for SSL servers using [`rustls`](https://docs.rs/rustls) and support for
7//! plaintext connections over a socks proxy, useful for Onion servers. Using different features,
8//! the SSL implementation can be removed or replaced with [`openssl`](https://docs.rs/openssl).
9//!
10//! A `minimal` configuration is also provided, which only includes the plaintext TCP client.
11//!
12//! # Example
13//!
14//! ```no_run
15//! use electrum_client::{Client, ElectrumApi};
16//!
17//! let mut client = Client::new("tcp://electrum.blockstream.info:50001")?;
18//! let response = client.server_features()?;
19//! # Ok::<(), electrum_client::Error>(())
20//! ```
21
22pub extern crate bitcoin;
23extern crate core;
24extern crate log;
25#[cfg(feature = "use-openssl")]
26extern crate openssl;
27#[cfg(all(
28    any(
29        feature = "default",
30        feature = "use-rustls",
31        feature = "use-rustls-ring"
32    ),
33    not(feature = "use-openssl")
34))]
35extern crate rustls;
36extern crate serde;
37extern crate serde_json;
38
39#[cfg(any(
40    feature = "default",
41    feature = "use-rustls",
42    feature = "use-rustls-ring"
43))]
44extern crate webpki_roots;
45
46#[cfg(any(feature = "default", feature = "proxy"))]
47extern crate byteorder;
48
49#[cfg(all(unix, any(feature = "default", feature = "proxy")))]
50extern crate libc;
51#[cfg(all(windows, any(feature = "default", feature = "proxy")))]
52extern crate winapi;
53
54#[cfg(any(feature = "default", feature = "proxy"))]
55pub mod socks;
56
57mod api;
58mod batch;
59
60#[cfg(any(
61    all(feature = "proxy", feature = "use-openssl"),
62    all(feature = "proxy", feature = "use-rustls"),
63    all(feature = "proxy", feature = "use-rustls-ring")
64))]
65pub mod client;
66
67mod config;
68
69pub mod raw_client;
70mod stream;
71mod types;
72pub mod utils;
73
74pub use api::ElectrumApi;
75pub use batch::Batch;
76#[cfg(any(
77    all(feature = "proxy", feature = "use-openssl"),
78    all(feature = "proxy", feature = "use-rustls"),
79    all(feature = "proxy", feature = "use-rustls-ring")
80))]
81pub use client::*;
82pub use config::{Config, ConfigBuilder, Socks5Config};
83pub use types::*;