sla_escrow_api/state/payment.rs
1use super::EscrowAccount;
2use steel::*;
3
4#[repr(C)]
5#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
6pub struct Payment {
7 pub payment_uid: [u8; 32], // 32 bytes - payment unique identifier
8 pub escrow: Pubkey, // 32 bytes
9 pub buyer: Pubkey, // 32 bytes
10 pub seller: Pubkey, // 32 bytes
11 pub mint: Pubkey, // 32 bytes
12 pub oracle_authority: Pubkey, // 32 bytes - oracle authority (Pubkey::default() for "None")
13 pub sla_hash: [u8; 32], // 32 bytes - hashed AI prompt / SLA requirements
14 pub delivery_hash: [u8; 32], // 32 bytes - hashed AI delivery payload
15 pub amount: u64, // 8 bytes
16
17 pub created_at: i64, // 8 bytes
18 pub expires_at: i64, // 8 bytes
19 pub closed_at: i64, // 8 bytes
20 pub delivery_timestamp: i64, // 8 bytes
21 pub state: u8, // 1 byte
22 pub resolution_state: u8, // 1 byte - 0: Pending, 1: Approved, 2: Rejected
23 pub _padding: [u8; 6], // 6 bytes padding for 8-byte alignment
24}
25
26account!(EscrowAccount, Payment);