use serde::{Deserialize, Serialize};
use steel::*;
pub enum BucksEvent {
Wrap = 0,
Unwrap = 1,
Claim = 2,
Rebalance = 3,
Checkpoint = 4,
ProtocolInit = 5,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct WrapEvent {
pub disc: u64,
pub user: Pubkey,
pub mint: Pubkey,
pub protocol_id: u64,
pub usdc_amount: u64,
pub stable_amount: u64,
pub shares_minted: u64,
pub ts: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct UnwrapEvent {
pub disc: u64,
pub user: Pubkey,
pub mint: Pubkey,
pub protocol_id: u64,
pub stable_amount: u64,
pub usdc_amount: u64,
pub shares_burned: u64,
pub ts: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct ClaimEvent {
pub disc: u64,
pub creator: Pubkey,
pub mint: Pubkey,
pub usdc_amount: u64,
pub platform_fee: u64,
pub ts: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct RebalanceEvent {
pub disc: u64,
pub from_protocol: u64,
pub to_protocol: u64,
pub usdc_amount: u64,
pub ts: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct CheckpointEvent {
pub disc: u64,
pub protocol_id: u64,
pub exchange_rate: u64,
pub usdc_value: u64,
pub ts: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq, Pod, Zeroable, Serialize, Deserialize)]
pub struct ProtocolInitEvent {
pub disc: u64,
pub protocol_id: u64,
pub name: [u8; 32],
pub ts: i64,
}
event!(WrapEvent);
event!(UnwrapEvent);
event!(ClaimEvent);
event!(RebalanceEvent);
event!(CheckpointEvent);
event!(ProtocolInitEvent);