1#![cfg_attr(docsrs, feature(doc_cfg))]
22#![cfg_attr(
23 docsrs,
24 doc(html_logo_url = "https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png")
25)]
26#![no_std]
27#![warn(missing_docs)]
28#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
29
30pub use bitcoin;
31mod balance;
32pub use balance::*;
33mod chain_data;
34pub use chain_data::*;
35pub mod indexed_tx_graph;
36pub use indexed_tx_graph::IndexedTxGraph;
37pub mod indexer;
38pub use indexer::spk_txout;
39pub use indexer::Indexer;
40pub mod local_chain;
41mod tx_data_traits;
42pub use tx_data_traits::*;
43pub mod tx_graph;
44pub use tx_graph::TxGraph;
45mod chain_oracle;
46pub use chain_oracle::*;
47mod canonical_iter;
48pub use canonical_iter::*;
49
50#[doc(hidden)]
51pub mod example_utils;
52
53#[cfg(feature = "miniscript")]
54pub use miniscript;
55#[cfg(feature = "miniscript")]
56mod descriptor_ext;
57#[cfg(feature = "miniscript")]
58pub use descriptor_ext::{DescriptorExt, DescriptorId};
59#[cfg(feature = "miniscript")]
60mod spk_iter;
61#[cfg(feature = "miniscript")]
62pub use indexer::keychain_txout;
63#[cfg(feature = "miniscript")]
64pub use spk_iter::*;
65#[cfg(feature = "rusqlite")]
66pub mod rusqlite_impl;
67
68pub extern crate bdk_core;
69pub use bdk_core::*;
70
71#[allow(unused_imports)]
72#[macro_use]
73extern crate alloc;
74#[cfg(feature = "rusqlite")]
75pub extern crate rusqlite;
76#[cfg(feature = "serde")]
77pub extern crate serde;
78
79#[cfg(feature = "std")]
80#[macro_use]
81extern crate std;
82
83pub struct Impl<T>(pub T);
85
86impl<T> Impl<T> {
87 pub fn into_inner(self) -> T {
89 self.0
90 }
91}
92
93impl<T> From<T> for Impl<T> {
94 fn from(value: T) -> Self {
95 Self(value)
96 }
97}
98
99impl<T> core::ops::Deref for Impl<T> {
100 type Target = T;
101
102 fn deref(&self) -> &Self::Target {
103 &self.0
104 }
105}