#![no_std]
#![warn(missing_docs)]
#![warn(deprecated_in_future)]
#![doc(test(attr(warn(unused))))]
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
#[cfg(feature = "serde")]
#[macro_use]
pub extern crate serde;
#[cfg(feature = "arbitrary")]
pub extern crate arbitrary;
pub extern crate encoding;
#[cfg(feature = "hex")]
pub extern crate hex;
#[doc(hidden)]
pub mod _export {
pub mod _core {
pub use core::*;
}
}
mod hash_types;
pub mod block;
pub mod merkle_tree;
pub mod opcodes;
#[cfg(feature = "alloc")]
pub mod script;
pub mod transaction;
#[cfg(feature = "alloc")]
pub mod witness;
pub mod witness_version;
#[cfg(feature = "hex")]
mod hex_codec;
#[doc(inline)]
pub use units::{
amount::{self, Amount, SignedAmount},
block::{BlockHeight, BlockHeightInterval, BlockMtp, BlockMtpInterval},
fee_rate::{self, FeeRate},
locktime::{self, absolute, relative},
parse_int,
pow::{self, CompactTarget, Target, Work},
result::{self, NumOpResult},
sequence::{self, Sequence},
time::{self, BlockTime},
weight::{self, Weight},
};
#[deprecated(since = "1.0.0-rc.0", note = "use `BlockHeightInterval` instead")]
#[doc(hidden)]
pub type BlockInterval = BlockHeightInterval;
#[doc(inline)]
#[cfg(feature = "alloc")]
pub use self::{
block::{
Block, Checked as BlockChecked, Unchecked as BlockUnchecked, Validation as BlockValidation,
},
script::{
RedeemScript, RedeemScriptBuf, ScriptPubKey, ScriptPubKeyBuf, ScriptSig, ScriptSigBuf,
SignetBlockScript, SignetBlockScriptBuf, TapScript, TapScriptBuf, WitnessScript,
WitnessScriptBuf,
},
transaction::{Transaction, TxIn, TxOut},
witness::Witness,
};
#[doc(inline)]
pub use self::{
block::{BlockHash, Header as BlockHeader, Version as BlockVersion, WitnessCommitment},
transaction::{OutPoint, Txid, Version as TransactionVersion, Wtxid},
};
#[rustfmt::skip]
#[allow(unused_imports)]
mod prelude {
#[cfg(feature = "alloc")]
pub use alloc::collections::{BTreeMap, BTreeSet, btree_map, BinaryHeap};
#[cfg(feature = "alloc")]
pub use alloc::{string::{String, ToString}, vec::Vec, boxed::Box, borrow::{Borrow, BorrowMut, Cow, ToOwned}, slice, rc};
#[cfg(feature = "alloc")]
#[cfg(target_has_atomic = "ptr")]
pub use alloc::sync;
}
#[cfg(feature = "alloc")]
use encoding::Encoder;
#[cfg(feature = "alloc")]
use internals::array_vec::ArrayVec;
#[cfg(feature = "alloc")]
pub(crate) fn compact_size_encode(value: usize) -> ArrayVec<u8, 9> {
let encoder = encoding::CompactSizeEncoder::new(value);
ArrayVec::from_slice(encoder.current_chunk())
}
#[cfg(feature = "alloc")]
include!("../include/newtype.rs"); include!("../include/decoder_newtype.rs"); #[cfg(feature = "alloc")]
include!("../include/asref_push_bytes.rs");