hal_elements/
lib.rs

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/// Known Elements networks.
19#[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
43/// Get JSON-able objects that describe the type.
44pub trait GetInfo<T: ::serde::Serialize> {
45	/// Get a description of this object given the network of interest.
46	fn get_info(&self, network: Network) -> T;
47}