Skip to main content

universalsettle_api/
event.rs

1use steel::*;
2
3/// Event emitted when a settlement is processed.
4/// This enables off-chain monitoring and auditing of settlements.
5#[repr(C)]
6#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
7pub struct SettlementEvent {
8    pub payer: Pubkey,          // 32 bytes - Payer wallet address
9    pub resource_owner: Pubkey, // 32 bytes - Resource owner wallet address
10    pub amount: u64,            // 8 bytes - Total settlement amount
11    pub fee: u64,               // 8 bytes - Fee deducted
12    pub payout: u64,            // 8 bytes - Net payout to resource owner
13    pub token_mint: Pubkey,     // 32 bytes - Token mint (Pubkey::default() for SOL)
14    pub is_sol: u8,             // 1 byte - 1 for SOL, 0 for SPL token
15    pub _padding: [u8; 7],      // 7 bytes padding
16    pub timestamp: i64,         // 8 bytes - Unix timestamp
17}
18
19event!(SettlementEvent);
20
21#[repr(C)]
22#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
23pub struct FeeRateUpdatedEvent {
24    pub timestamp: i64,    // 8 bytes
25    pub old_fee_bps: u16,  // 2 bytes
26    pub new_fee_bps: u16,  // 2 bytes
27    pub _padding: [u8; 4], // Pad to 8 bytes for alignment
28}
29event!(FeeRateUpdatedEvent);