use alloy::primitives::{Address, address};
pub const ANVIL_TEMPO_CHAIN_ID: u64 = 31337;
pub const TEMPO_CHAIN_IDS: [u64; 5] = [4217, 42431, 31318, 1337, ANVIL_TEMPO_CHAIN_ID];
pub fn is_tempo_chain_id(chain_id: u64) -> bool {
TEMPO_CHAIN_IDS.contains(&chain_id)
}
pub const TIP20_PREFIX: [u8; 12] = [0x20, 0xc0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub fn is_tip20_address(token: Address) -> bool {
token.as_slice().starts_with(&TIP20_PREFIX)
}
pub const TIP20_FACTORY: Address = address!("20Fc000000000000000000000000000000000000");
pub const TIP_FEE_MANAGER: Address = address!("feEC000000000000000000000000000000000000");
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub struct TempoTokens {
pub path_usd: Address,
pub alpha_usd: Address,
pub beta_usd: Address,
pub theta_usd: Address,
pub ousd: Address,
}
pub const TEMPO_TOKENS: TempoTokens = TempoTokens {
path_usd: address!("20C0000000000000000000000000000000000000"),
alpha_usd: address!("20C0000000000000000000000000000000000001"),
beta_usd: address!("20C0000000000000000000000000000000000002"),
theta_usd: address!("20C0000000000000000000000000000000000003"),
ousd: address!("20c0000000000000000000006a37DA5C996874BE"),
};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn tip20_prefix() {
assert!(is_tip20_address(TEMPO_TOKENS.path_usd));
assert!(is_tip20_address(TEMPO_TOKENS.ousd));
assert!(!is_tip20_address(TIP20_FACTORY));
assert!(!is_tip20_address(address!("833589fCD6eDb6E08f4c7C32D4f71b54bdA02913")));
assert!(is_tempo_chain_id(42431) && is_tempo_chain_id(31337) && !is_tempo_chain_id(31338));
}
}