1extern crate elements;
2extern crate hal;
3extern crate hex;
4extern crate serde;
5
6pub mod address;
7pub mod block;
8pub mod tx;
9
10pub mod confidential;
11
12pub use hal::HexBytes;
13pub use elements::bitcoin;
14
15use elements::AddressParams;
16use serde::{Deserialize, Serialize};
17
18#[derive(Clone, Copy, PartialEq, Eq, Debug, Deserialize, Serialize)]
20#[serde(rename_all = "lowercase")]
21pub enum Network {
22 ElementsRegtest,
23 Liquid,
24}
25
26impl Network {
27 pub fn from_params(params: &'static AddressParams) -> Option<Network> {
28 match params {
29 &AddressParams::ELEMENTS => Some(Network::ElementsRegtest),
30 &AddressParams::LIQUID => Some(Network::Liquid),
31 _ => None,
32 }
33 }
34
35 pub fn address_params(self) -> &'static AddressParams {
36 match self {
37 Network::ElementsRegtest => &AddressParams::ELEMENTS,
38 Network::Liquid => &AddressParams::LIQUID,
39 }
40 }
41}
42
43pub trait GetInfo<T: ::serde::Serialize> {
45 fn get_info(&self, network: Network) -> T;
47}