Skip to main content

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