use crate::AnyaResult;
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct TokenomicsConfig {
pub enabled: bool,
pub base_reward_rate: f64,
pub minimum_stake: u64,
}
impl Default for TokenomicsConfig {
fn default() -> Self {
Self {
enabled: true,
base_reward_rate: 0.05,
minimum_stake: 100,
}
}
}
pub struct TokenomicsEngine {
config: TokenomicsConfig,
}
impl TokenomicsEngine {
pub fn new(config: TokenomicsConfig) -> AnyaResult<Arc<Self>> {
Ok(Arc::new(Self { config }))
}
pub async fn setup(config: TokenomicsConfig) -> AnyaResult<Arc<Self>> {
Ok(Arc::new(Self { config }))
}
pub fn calculate_rewards(&self, stake_amount: u64, days: u32) -> f64 {
if !self.config.enabled || stake_amount < self.config.minimum_stake {
return 0.0;
}
let reward_rate = self.config.base_reward_rate;
let stake = stake_amount as f64;
let time = days as f64 / 365.0;
stake * reward_rate * time
}
}