Skip to main content

sla_escrow_api/
event.rs

1use steel::*;
2
3// Core Payment Events
4#[repr(C)]
5#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
6pub struct PaymentCreatedWithFundEvent {
7    pub payment_uid: [u8; 32],    // 32 bytes
8    pub sla_hash: [u8; 32],       // 32 bytes
9    pub escrow: Pubkey,           // 32 bytes
10    pub buyer: Pubkey,            // 32 bytes
11    pub seller: Pubkey,           // 32 bytes
12    pub mint: Pubkey,             // 32 bytes
13    pub oracle_authority: Pubkey, // 32 bytes
14    pub amount: u64,              // 8 bytes
15    pub expires_at: i64,          // 8 bytes
16    pub timestamp: i64,           // 8 bytes
17    pub state: u8,                // 1 byte
18    pub _padding: [u8; 7],        // 7 bytes padding
19}
20
21#[repr(C)]
22#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
23pub struct DeliverySubmittedEvent {
24    pub payment_uid: [u8; 32],   // 32 bytes
25    pub delivery_hash: [u8; 32], // 32 bytes
26    pub timestamp: i64,          // 8 bytes
27    pub seller: Pubkey,          // 32 bytes
28}
29
30#[repr(C)]
31#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
32pub struct PaymentOracleConfirmedEvent {
33    pub payment_uid: [u8; 32],    // 32 bytes - payment unique identifier
34    pub oracle_authority: Pubkey, // 32 bytes - oracle authority
35    pub delivery_hash: [u8; 32],  // 32 bytes
36    pub timestamp: i64,           // 8 bytes
37
38    pub resolution_state: u8, // 1 byte
39    pub _padding: [u8; 7],    // 7 bytes padding
40}
41
42#[repr(C)]
43#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
44pub struct PaymentFundedEvent {
45    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
46    pub mint: Pubkey,          // 32 bytes
47    pub amount: u64,           // 8 bytes
48    pub timestamp: i64,        // 8 bytes
49    pub buyer: Pubkey,         // 32 bytes
50}
51
52#[repr(C)]
53#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
54pub struct PaymentReleasedEvent {
55    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
56    pub mint: Pubkey,          // 32 bytes
57    pub amount: u64,           // 8 bytes
58    pub timestamp: i64,        // 8 bytes
59    pub seller: Pubkey,        // 32 bytes
60    pub is_expired: u8,        // 1 byte - 1 if expired, 0 if manual release
61    pub _padding: [u8; 7],     // 7 bytes padding
62}
63
64#[repr(C)]
65#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
66pub struct PaymentRefundedEvent {
67    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
68    pub mint: Pubkey,          // 32 bytes
69    pub amount: u64,           // 8 bytes
70    pub timestamp: i64,        // 8 bytes
71    pub buyer: Pubkey,         // 32 bytes
72}
73
74#[repr(C)]
75#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
76pub struct PaymentExpiredEvent {
77    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
78    pub mint: Pubkey,          // 32 bytes
79    pub amount: u64,           // 8 bytes
80    pub timestamp: i64,        // 8 bytes
81    pub buyer: Pubkey,         // 32 bytes
82    pub seller: Pubkey,        // 32 bytes
83}
84
85#[repr(C)]
86#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
87pub struct PaymentClosedEvent {
88    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
89    pub timestamp: i64,        // 8 bytes
90    pub closer: Pubkey,        // 32 bytes
91}
92
93// Payment Management Events
94#[repr(C)]
95#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
96pub struct PaymentTTLExtendedEvent {
97    pub payment_uid: [u8; 32],   // 32 bytes - payment unique identifier
98    pub additional_seconds: i64, // 8 bytes
99    pub new_expires_at: i64,     // 8 bytes
100    pub timestamp: i64,          // 8 bytes
101    pub buyer: Pubkey,           // 32 bytes
102}
103
104// Escrow Management Events
105#[repr(C)]
106#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
107pub struct EscrowCreatedEvent {
108    pub timestamp: i64,          // 8 bytes
109    pub escrow: Pubkey,          // 32 bytes
110    pub mint: Pubkey,            // 32 bytes
111    pub authority: Pubkey,       // 32 bytes
112    pub min_payment_amount: u64, // 8 bytes
113    pub max_payment_amount: u64, // 8 bytes
114    pub fee_bps: u16,            // 2 bytes
115    pub paused: u8,              // 1 byte
116    // Total: 8+32+32+32+8+8+2+1 = 123 bytes, need 5 bytes padding for 128-byte alignment
117    pub _padding: [u8; 5], // 5 bytes padding
118}
119
120#[repr(C)]
121#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
122pub struct EscrowClosedEvent {
123    pub timestamp: i64, // 8 bytes
124    pub escrow: Pubkey, // 32 bytes
125    pub mint: Pubkey,   // 32 bytes
126    pub authority: Pubkey, // 32 bytes
127                        // Total: 8+32+32+32 = 104 bytes (already 8-byte aligned)
128}
129
130#[repr(C)]
131#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
132pub struct EscrowSettingsUpdatedEvent {
133    pub escrow: Pubkey,          // 32 bytes
134    pub mint: Pubkey,            // 32 bytes
135    pub authority: Pubkey,       // 32 bytes
136    pub min_payment_amount: u64, // 8 bytes
137    pub max_payment_amount: u64, // 8 bytes
138    pub min_fee_amount: u64,     // 8 bytes
139    pub timestamp: i64,          // 8 bytes
140    pub new_fee_bps: u16,        // 2 bytes
141    // Total: 32+32+32+8+8+8+8+2 = 130 bytes, need 6 bytes padding for 136-byte alignment
142    pub _padding: [u8; 6], // 6 bytes padding
143}
144
145#[repr(C)]
146#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
147pub struct EscrowPausedEvent {
148    pub escrow: Pubkey,    // 32 bytes
149    pub mint: Pubkey,      // 32 bytes
150    pub authority: Pubkey, // 32 bytes
151    pub timestamp: i64,    // 8 bytes
152    pub paused: u8,        // 1 byte
153    // Total: 32+32+32+8+1 = 105 bytes, need 7 bytes padding for 112-byte alignment
154    pub _padding: [u8; 7], // 7 bytes padding
155}
156
157// Bank Management Events
158#[repr(C)]
159#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
160pub struct BankInitializedEvent {
161    pub timestamp: i64,    // 8 bytes
162    pub bank: Pubkey,      // 32 bytes
163    pub authority: Pubkey, // 32 bytes
164    pub fee_bps: u16,      // 2 bytes
165    // Total: 8+32+32+2 = 74 bytes, need 6 bytes padding for 80-byte alignment
166    pub _padding: [u8; 6], // 6 bytes padding
167}
168
169#[repr(C)]
170#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
171pub struct AuthorityUpdatedEvent {
172    pub timestamp: i64,        // 8 bytes
173    pub bank: Pubkey,          // 32 bytes
174    pub old_authority: Pubkey, // 32 bytes
175    pub new_authority: Pubkey, // 32 bytes
176                               // Total: 8+32+32+32 = 104 bytes (already 8-byte aligned)
177}
178
179#[repr(C)]
180#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
181pub struct FeesWithdrawnEvent {
182    pub timestamp: i64, // 8 bytes
183    pub amount: u64,    // 8 bytes
184    pub escrow: Pubkey, // 32 bytes
185    pub mint: Pubkey,   // 32 bytes
186    pub authority: Pubkey, // 32 bytes
187                        // Total: 8+8+32+32+32 = 112 bytes (already 8-byte aligned)
188}
189
190// Event Macros
191event!(PaymentCreatedWithFundEvent);
192event!(PaymentOracleConfirmedEvent);
193event!(PaymentFundedEvent);
194event!(PaymentReleasedEvent);
195event!(PaymentRefundedEvent);
196event!(PaymentExpiredEvent);
197event!(PaymentClosedEvent);
198event!(PaymentTTLExtendedEvent);
199event!(EscrowCreatedEvent);
200event!(EscrowClosedEvent);
201event!(EscrowSettingsUpdatedEvent);
202event!(EscrowPausedEvent);
203event!(BankInitializedEvent);
204event!(AuthorityUpdatedEvent);
205event!(FeesWithdrawnEvent);
206event!(DeliverySubmittedEvent);