Skip to main content

tempo_primitives/transaction/
mod.rs

1pub mod envelope;
2pub mod key_authorization;
3pub mod tempo_transaction;
4pub mod tt_authorization;
5pub mod tt_signature;
6pub mod tt_signed;
7
8pub use tt_authorization::{MAGIC, RecoveredTempoAuthorization, TempoSignedAuthorization};
9// Re-export Authorization from alloy for convenience
10pub use tt_signature::{
11    KeychainSignature, KeychainVersion, KeychainVersionError, PrimitiveSignature, TempoSignature,
12    derive_p256_address,
13};
14
15pub use alloy_eips::eip7702::Authorization;
16pub use envelope::{TIP20_PAYMENT_PREFIX, TempoTxEnvelope, TempoTxType, TempoTypedTransaction};
17pub use key_authorization::{
18    KeyAuthorization, KeyAuthorizationChainIdError, SignedKeyAuthorization, TokenLimit,
19};
20pub use tempo_transaction::{
21    Call, MAX_WEBAUTHN_SIGNATURE_LENGTH, P256_SIGNATURE_LENGTH, SECP256K1_SIGNATURE_LENGTH,
22    SignatureType, TEMPO_EXPIRING_NONCE_KEY, TEMPO_EXPIRING_NONCE_MAX_EXPIRY_SECS,
23    TEMPO_TX_TYPE_ID, TempoTransaction, validate_calls,
24};
25pub use tt_signed::AASigned;
26
27use alloy_primitives::{U256, uint};
28
29/// Scaling factor for converting gas prices (attodollars) to TIP-20 token amounts (microdollars).
30///
31/// This factor is 10^12, which converts from attodollars (10^-18 USD) to microdollars (10^-6 USD):
32/// - Gas prices are in attodollars at 10^-18 USD precision
33/// - TIP-20 tokens use 6 decimals (microdollars at 10^-6 USD precision)
34/// - Conversion: attodollars / 10^12 = microdollars
35pub const TEMPO_GAS_PRICE_SCALING_FACTOR: U256 = uint!(1_000_000_000_000_U256);
36
37/// Calculates gas balance spending in TIP-20 token units (microdollars).
38///
39/// Takes gas parameters in attodollars and converts to microdollars (TIP-20 token units).
40/// Formula: (gas_limit × gas_price) / 10^12 = microdollars
41pub fn calc_gas_balance_spending(gas_limit: u64, gas_price: u128) -> U256 {
42    U256::from(gas_limit)
43        .saturating_mul(U256::from(gas_price))
44        .div_ceil(TEMPO_GAS_PRICE_SCALING_FACTOR)
45}