use super::block_context::{StarknetChainId, StarknetOsConfig};
use crate::utils::Address;
use cairo_vm::felt::{felt_str, Felt252};
use lazy_static::lazy_static;
use num_traits::Zero;
use std::collections::HashMap;
pub(crate) const L2_TO_L1_MSG_HEADER_SIZE: usize = 3;
pub(crate) const L1_TO_L2_MSG_HEADER_SIZE: usize = 5;
pub(crate) const DEPLOYMENT_INFO_SIZE: usize = 2;
pub(crate) const CONSUMED_MSG_TO_L2_N_TOPICS: usize = 3;
pub(crate) const LOG_MSG_TO_L1_N_TOPICS: usize = 2;
pub(crate) const N_DEFAULT_TOPICS: usize = 1; pub(crate) const CONSUMED_MSG_TO_L2_ENCODED_DATA_SIZE: usize =
(L1_TO_L2_MSG_HEADER_SIZE + 1) - CONSUMED_MSG_TO_L2_N_TOPICS;
lazy_static! {
pub(crate) static ref QUERY_VERSION_BASE: Felt252 =
felt_str!("340282366920938463463374607431768211456");
}
pub(crate) const LOG_MSG_TO_L1_ENCODED_DATA_SIZE: usize =
(L2_TO_L1_MSG_HEADER_SIZE + 1) - LOG_MSG_TO_L1_N_TOPICS;
pub(crate) const FEE_FACTOR: u128 = 1;
pub(crate) const N_STEPS_FEE_WEIGHT: f64 = 0.01;
pub(crate) const L1_HANDLER_VERSION: u64 = 0;
lazy_static! {
pub static ref SUPPORTED_VERSIONS: [Felt252; 6] = [
0.into(),
1.into(),
2.into(),
&0.into() | &QUERY_VERSION_BASE.clone(),
&1.into() | &QUERY_VERSION_BASE.clone(),
&2.into() | &QUERY_VERSION_BASE.clone(),
];
}
lazy_static! {
pub static ref DEFAULT_CAIRO_RESOURCE_FEE_WEIGHTS: HashMap<String, f64> =
HashMap::from([
("n_steps".to_string(), N_STEPS_FEE_WEIGHT),
("output_builtin".to_string(), 0.0),
("pedersen_builtin".to_string(), N_STEPS_FEE_WEIGHT * 32.0),
("range_check_builtin".to_string(), N_STEPS_FEE_WEIGHT * 16.0),
("ecdsa_builtin".to_string(), N_STEPS_FEE_WEIGHT * 2048.0),
("bitwise_builtin".to_string(), N_STEPS_FEE_WEIGHT * 64.0),
("ec_op_builtin".to_string(), N_STEPS_FEE_WEIGHT * 1024.0),
("poseidon_builtin".to_string(), N_STEPS_FEE_WEIGHT * 32.0),
("segment_arena_builtin".to_string(), N_STEPS_FEE_WEIGHT * 10.0),
("keccak_builtin".to_string(), N_STEPS_FEE_WEIGHT * 2048.0), ]);
pub static ref DEFAULT_SEQUENCER_ADDRESS: Address = Address(felt_str!(
"3711666a3506c99c9d78c4d4013409a87a962b7a0880a1c24af9fe193dafc01",
16
));
pub static ref DEFAULT_STARKNET_OS_CONFIG: StarknetOsConfig = StarknetOsConfig {
chain_id: StarknetChainId::TestNet.to_felt(),
fee_token_address: Address(felt_str!(
"4c07059285c2607d528a4c5220ef1f64d8f01273c23cfd9dec68759f61b544",
16
)),
gas_price: 0,
};
pub static ref DECLARE_VERSION: Felt252 = 2.into();
pub static ref TRANSACTION_VERSION: Felt252 = 1.into();
}
pub const DEFAULT_GAS_PRICE: u128 = 100_000_000_000; pub const DEFAULT_CONTRACT_STORAGE_COMMITMENT_TREE_HEIGHT: u64 = 251;
pub const DEFAULT_GLOBAL_STATE_COMMITMENT_TREE_HEIGHT: u64 = 251;
pub const DEFAULT_INVOKE_TX_MAX_N_STEPS: u64 = 1000000;
pub const DEFAULT_VALIDATE_MAX_N_STEPS: u64 = 1000000;
pub const STEP_GAS_COST: u128 = 100;
pub const INITIAL_GAS_COST: u128 = 10_u128.pow(8) * STEP_GAS_COST;
lazy_static! {
pub static ref CONSTRUCTOR_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("1159040026212278395030414237414753050475174923702621880048416706425641521556");
pub static ref DEFAULT_ENTRY_POINT_SELECTOR: Felt252 = Felt252::zero();
pub static ref EXECUTE_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("617075754465154585683856897856256838130216341506379215893724690153393808813");
pub static ref TRANSFER_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", 16);
pub static ref VALIDATE_DECLARE_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("1148189391774113786911959041662034419554430000171893651982484995704491697075");
pub static ref VALIDATE_DEPLOY_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("1554466106298962091002569854891683800203193677547440645928814916929210362005");
pub static ref TRANSFER_EVENT_SELECTOR: Felt252 =
felt_str!("271746229759260285552388728919865295615886751538523744128730118297934206697");
pub static ref VALIDATE_ENTRY_POINT_SELECTOR: Felt252 =
felt_str!("626969833899987279399947180575486623810258720106406659648356883742278317941");
pub static ref BLOCK_HASH_CONTRACT_ADDRESS: Address = Address(1.into());
}