use solana_program::pubkey::Pubkey;
use steel::*;
use super::MiracleAccount;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct Config {
pub last_reset_at: i64,
pub claim_rewards_threshold: u64,
pub oracle_authority: Pubkey,
pub community_targets: CommunityTargets,
pub activity_limits: ActivityLimits,
pub social_marketing: SocialMarketingConfig,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct CommunityTargets {
pub target_weekly_users: u32,
pub target_weekly_activity: u32,
pub target_retention_rate: u16,
pub _padding: [u8; 6],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct ActivityLimits {
pub max_customer_activity_per_epoch: u32,
pub max_merchant_activity_per_epoch: u32,
pub activity_cap_enabled: u8,
pub claim_cap_enabled: u8,
pub _padding: [u8; 6],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct SocialMarketingConfig {
pub rewards_pool: u64,
pub daily_limit_per_user: u32,
pub base_reward_per_post: u32,
pub oracle_authority: Pubkey,
}
account!(MiracleAccount, Config);