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);