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 oracle_tip: u64,       // 8 bytes — tip paid to oracle (0 if none)
59    pub timestamp: i64,        // 8 bytes
60    pub seller: Pubkey,        // 32 bytes
61    pub is_expired: u8,        // 1 byte - 1 if expired, 0 if manual release
62    pub _padding: [u8; 7],     // 7 bytes padding
63}
64
65#[repr(C)]
66#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
67pub struct PaymentRefundedEvent {
68    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
69    pub mint: Pubkey,          // 32 bytes
70    pub amount: u64,           // 8 bytes
71    pub oracle_tip: u64,       // 8 bytes — tip deducted from refund (0 if none)
72    pub timestamp: i64,        // 8 bytes
73    pub buyer: Pubkey,         // 32 bytes
74}
75
76#[repr(C)]
77#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
78pub struct PaymentExpiredEvent {
79    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
80    pub mint: Pubkey,          // 32 bytes
81    pub amount: u64,           // 8 bytes
82    pub timestamp: i64,        // 8 bytes
83    pub buyer: Pubkey,         // 32 bytes
84    pub seller: Pubkey,        // 32 bytes
85}
86
87#[repr(C)]
88#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
89pub struct PaymentClosedEvent {
90    pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
91    pub timestamp: i64,        // 8 bytes
92    pub closer: Pubkey,        // 32 bytes
93}
94
95// Payment Management Events
96#[repr(C)]
97#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
98pub struct PaymentTTLExtendedEvent {
99    pub payment_uid: [u8; 32],   // 32 bytes - payment unique identifier
100    pub additional_seconds: i64, // 8 bytes
101    pub new_expires_at: i64,     // 8 bytes
102    pub timestamp: i64,          // 8 bytes
103    pub buyer: Pubkey,           // 32 bytes
104}
105
106// Escrow Management Events
107#[repr(C)]
108#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
109pub struct EscrowCreatedEvent {
110    pub timestamp: i64,          // 8 bytes
111    pub escrow: Pubkey,          // 32 bytes
112    pub mint: Pubkey,            // 32 bytes
113    pub authority: Pubkey,       // 32 bytes
114    pub min_payment_amount: u64, // 8 bytes
115    pub max_payment_amount: u64, // 8 bytes
116    pub fee_bps: u16,            // 2 bytes
117    pub paused: u8,              // 1 byte
118    // Total: 8+32+32+32+8+8+2+1 = 123 bytes, need 5 bytes padding for 128-byte alignment
119    pub _padding: [u8; 5], // 5 bytes padding
120}
121
122#[repr(C)]
123#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
124pub struct EscrowClosedEvent {
125    pub timestamp: i64, // 8 bytes
126    pub escrow: Pubkey, // 32 bytes
127    pub mint: Pubkey,   // 32 bytes
128    pub authority: Pubkey, // 32 bytes
129                        // Total: 8+32+32+32 = 104 bytes (already 8-byte aligned)
130}
131
132#[repr(C)]
133#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
134pub struct EscrowSettingsUpdatedEvent {
135    pub escrow: Pubkey,          // 32 bytes
136    pub mint: Pubkey,            // 32 bytes
137    pub authority: Pubkey,       // 32 bytes
138    pub min_payment_amount: u64, // 8 bytes
139    pub max_payment_amount: u64, // 8 bytes
140    pub min_fee_amount: u64,     // 8 bytes
141    pub timestamp: i64,          // 8 bytes
142    pub new_fee_bps: u16,        // 2 bytes
143    // Total: 32+32+32+8+8+8+8+2 = 130 bytes, need 6 bytes padding for 136-byte alignment
144    pub _padding: [u8; 6], // 6 bytes padding
145}
146
147#[repr(C)]
148#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
149pub struct EscrowPausedEvent {
150    pub escrow: Pubkey,    // 32 bytes
151    pub mint: Pubkey,      // 32 bytes
152    pub authority: Pubkey, // 32 bytes
153    pub timestamp: i64,    // 8 bytes
154    pub paused: u8,        // 1 byte
155    // Total: 32+32+32+8+1 = 105 bytes, need 7 bytes padding for 112-byte alignment
156    pub _padding: [u8; 7], // 7 bytes padding
157}
158
159// Bank Management Events
160#[repr(C)]
161#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
162pub struct BankInitializedEvent {
163    pub timestamp: i64,    // 8 bytes
164    pub bank: Pubkey,      // 32 bytes
165    pub authority: Pubkey, // 32 bytes
166    pub fee_bps: u16,      // 2 bytes
167    // Total: 8+32+32+2 = 74 bytes, need 6 bytes padding for 80-byte alignment
168    pub _padding: [u8; 6], // 6 bytes padding
169}
170
171#[repr(C)]
172#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
173pub struct AuthorityUpdatedEvent {
174    pub timestamp: i64,        // 8 bytes
175    pub bank: Pubkey,          // 32 bytes
176    pub old_authority: Pubkey, // 32 bytes
177    pub new_authority: Pubkey, // 32 bytes
178                               // Total: 8+32+32+32 = 104 bytes (already 8-byte aligned)
179}
180
181#[repr(C)]
182#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
183pub struct FeesWithdrawnEvent {
184    pub timestamp: i64, // 8 bytes
185    pub amount: u64,    // 8 bytes
186    pub escrow: Pubkey, // 32 bytes
187    pub mint: Pubkey,   // 32 bytes
188    pub authority: Pubkey, // 32 bytes
189                        // Total: 8+8+32+32+32 = 112 bytes (already 8-byte aligned)
190}
191
192// Event Macros
193event!(PaymentCreatedWithFundEvent);
194event!(PaymentOracleConfirmedEvent);
195event!(PaymentFundedEvent);
196event!(PaymentReleasedEvent);
197event!(PaymentRefundedEvent);
198event!(PaymentExpiredEvent);
199event!(PaymentClosedEvent);
200event!(PaymentTTLExtendedEvent);
201event!(EscrowCreatedEvent);
202event!(EscrowClosedEvent);
203event!(EscrowSettingsUpdatedEvent);
204event!(EscrowPausedEvent);
205event!(BankInitializedEvent);
206event!(AuthorityUpdatedEvent);
207event!(FeesWithdrawnEvent);
208event!(DeliverySubmittedEvent);