use steel::*;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct SnapshotUpdatedEvent {
pub epoch: u64,
pub merkle_root: [u8; 32],
pub timestamp: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct RewardClaimedEvent {
pub customer_wallet: Pubkey,
pub epoch: u64,
pub reward_amount: u64,
pub customer_reward_pool: u64,
pub activity_count: u32,
pub total_customer_activity: u32,
pub merkle_root: [u8; 32],
pub timestamp: i64,
pub participant_type: u8,
pub _padding: [u8; 7],
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
pub struct MetricsUpdatedEvent {
pub timestamp: i64,
pub weekly_active_users: u32,
pub weekly_activity_count: u32,
pub weekly_retention_rate: u16,
pub community_score: u16,
pub user_weight: u16,
pub activity_weight: u16,
pub retention_weight: u16,
pub customer_reward_share: u16,
pub merchant_reward_share: u16,
pub _padding: [u8; 2],
}
event!(SnapshotUpdatedEvent);
event!(RewardClaimedEvent);
event!(MetricsUpdatedEvent);