tempo_primitives/transaction/
mod.rs

1pub mod envelope;
2pub mod fee_token;
3pub mod key_authorization;
4pub mod tempo_transaction;
5pub mod tt_authorization;
6pub mod tt_signature;
7pub mod tt_signed;
8
9pub use tt_authorization::{MAGIC, RecoveredTempoAuthorization, TempoSignedAuthorization};
10// Re-export Authorization from alloy for convenience
11pub use tt_signature::{
12    KeychainSignature, PrimitiveSignature, TempoSignature, derive_p256_address,
13};
14
15pub use alloy_eips::eip7702::Authorization;
16pub use envelope::{TempoTxEnvelope, TempoTxType, TempoTypedTransaction};
17pub use fee_token::{FEE_TOKEN_TX_TYPE_ID, TxFeeToken};
18pub use key_authorization::{KeyAuthorization, SignedKeyAuthorization, TokenLimit};
19pub use tempo_transaction::{
20    Call, MAX_WEBAUTHN_SIGNATURE_LENGTH, P256_SIGNATURE_LENGTH, SECP256K1_SIGNATURE_LENGTH,
21    SignatureType, TEMPO_TX_TYPE_ID, TempoTransaction,
22};
23pub use tt_signed::AASigned;
24
25use alloy_primitives::{U256, uint};
26
27/// Factor by which we scale the gas price for gas spending calculations.
28pub const TEMPO_GAS_PRICE_SCALING_FACTOR: U256 = uint!(1_000_000_000_000_U256);
29
30/// Calculates gas balance spending with gas price scaled by [`TEMPO_GAS_PRICE_SCALING_FACTOR`].
31pub fn calc_gas_balance_spending(gas_limit: u64, gas_price: u128) -> U256 {
32    U256::from(gas_limit)
33        .saturating_mul(U256::from(gas_price))
34        .div_ceil(TEMPO_GAS_PRICE_SCALING_FACTOR)
35}