Skip to main content

tempo_primitives/
lib.rs

1//! Tempo primitive types
2
3#![cfg_attr(not(feature = "std"), no_std)]
4#![cfg_attr(not(test), warn(unused_crate_dependencies))]
5#![cfg_attr(docsrs, feature(doc_cfg), allow(unexpected_cfgs))]
6
7pub use alloy_consensus::Header;
8
9mod address;
10pub use address::{MasterId, TempoAddressExt, UserTag, is_tip20_prefix};
11pub mod ed25519;
12
13pub mod transaction;
14pub use transaction::{
15    AASigned, MAX_WEBAUTHN_SIGNATURE_LENGTH, P256_SIGNATURE_LENGTH, SECP256K1_SIGNATURE_LENGTH,
16    SignatureType, TEMPO_GAS_PRICE_SCALING_FACTOR, TEMPO_TX_TYPE_ID, TempoSignature,
17    TempoTransaction, TempoTxEnvelope, TempoTxType, derive_p256_address,
18};
19
20mod header;
21pub use header::{TempoConsensusContext, TempoHeader};
22
23pub mod subblock;
24pub use subblock::{
25    RecoveredSubBlock, SignedSubBlock, SubBlock, SubBlockMetadata, SubBlockVersion,
26};
27
28extern crate alloc;
29
30use once_cell as _;
31
32/// Tempo block.
33pub type Block = alloy_consensus::Block<TempoTxEnvelope, TempoHeader>;
34
35/// Tempo block body.
36pub type BlockBody = alloy_consensus::BlockBody<TempoTxEnvelope, TempoHeader>;
37
38#[cfg(feature = "reth")]
39mod reth_compat;
40
41/// Tempo receipt.
42/// Implements reth trait bounds when the `reth` feature is enabled.
43#[cfg(feature = "reth")]
44pub use reth_compat::TempoReceipt;
45#[cfg(not(feature = "reth"))]
46pub type TempoReceipt<L = alloy_primitives::Log> = alloy_consensus::EthereumReceipt<TempoTxType, L>;
47
48/// Marker type for Tempo node primitives.
49/// Implements [`reth_primitives_traits::NodePrimitives`] when the `reth` feature is enabled.
50#[derive(Debug, Clone, Default, Eq, PartialEq)]
51#[non_exhaustive]
52pub struct TempoPrimitives;