use solana_program::{keccak::Hash, pubkey, pubkey::Pubkey};
pub const START_AT: i64 = 1713880800;
pub const END_AT: i64 = 1871647200;
pub const INITIAL_REWARD_RATE: u64 = 10 * 10u64.pow(3u32);
pub const INITIAL_DIFFICULTY: Hash = Hash::new_from_array([
0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
]);
pub const TOKEN_DECIMALS: u8 = 8;
pub const ONE_MARS: u64 = 10u64.pow(TOKEN_DECIMALS as u32);
pub const TEN_MARS: u64 = ONE_MARS.saturating_mul(10);
pub const EPOCH_DURATION: i64 = 60;
pub const TARGET_EPOCH_REWARDS: u64 = TEN_MARS;
pub const MAX_EPOCH_REWARDS: u64 = TEN_MARS.saturating_mul(2);
pub const BUS_EPOCH_REWARDS: u64 = MAX_EPOCH_REWARDS.saturating_div(BUS_COUNT as u64);
pub const BUS_COUNT: usize = 8;
pub const SMOOTHING_FACTOR: u64 = 2;
static_assertions::const_assert!(
(MAX_EPOCH_REWARDS / BUS_COUNT as u64) * BUS_COUNT as u64 == MAX_EPOCH_REWARDS
);
pub const BUS: &[u8] = b"bus";
pub const METADATA: &[u8] = b"metadata";
pub const MINT: &[u8] = b"mint";
pub const PROOF: &[u8] = b"proof";
pub const TREASURY: &[u8] = b"treasury";
pub const METADATA_NAME: &str = "Mars";
pub const METADATA_SYMBOL: &str = "MARS";
pub const METADATA_URI: &str = "https://github.com/miraland-labs/resources/blob/main/metadata/mars.json";
pub const MINT_NOISE: [u8; 16] = [
105, 170, 164, 162, 145, 155, 145, 127, 141, 171, 117, 156, 115, 141, 162, 163,
];
pub const BUS_ADDRESSES: [Pubkey; BUS_COUNT] = [
pubkey!("6ZcZsUKTv19iFXSnpqjPXzE7joCsEeNpTC5oArFPXzQG"),
pubkey!("5jNbJehucBoCov1RkyHJQfMNrjSFG7LYZF79hvjDp4u5"),
pubkey!("Ctsj8HbZFe8oqbx3GRfxgz9g1RyTKHeh92UcsabUK6so"),
pubkey!("HKo6bDCzHyfYtBtbYeDXs1x3yvDzBWU5EpxhjBWxJB97"),
pubkey!("82BDDgQnQeFLjyP1mSpPHRPJdEGkiiZtBqEvjFxYL44W"),
pubkey!("CqacmEv1yENenKrZBUPV8LQZrje8ZiBdr8Y3MsEaS3QQ"),
pubkey!("Gw4ZkcJkiiLWbqR1qnu2YHg4TsfaEbgUE2Ky721cY1Rv"),
pubkey!("DkwXmEda41smeoQiztKopXMQjMW5QYLggddqLUz1Hpck"),
];
pub const METADATA_ADDRESS: Pubkey = pubkey!("CC8Awvao6Ls5VjREyH78DGPh3SmdjdDZJxTmfsqZmsbJ");
pub const MINT_ADDRESS: Pubkey = pubkey!("7RAV5UPRTzxn46kLeA8MiJsdNy9VKc5fip8FWEgTpTHh");
pub const TREASURY_ADDRESS: Pubkey = pubkey!("Dk13Cdjnjz2pxbsXbvzJiA2bUSMdsHU7Vf2G8yRGQvwC");