spacejam_service/vm/
transfer.rs1use crate::{Gas, ServiceId, Vec};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, PartialEq, Eq, Clone, Default, Serialize, Deserialize)]
8pub struct DeferredTransfer {
9 pub sender: ServiceId,
11
12 pub recipient: ServiceId,
14
15 pub amount: u64,
17
18 pub memo: Vec<u8>,
20
21 pub gas_limit: Gas,
23}
24
25impl DeferredTransfer {
26 pub fn select(transfers: &[DeferredTransfer], dest: ServiceId) -> Vec<DeferredTransfer> {
28 let mut transfers = transfers.to_vec();
29 transfers.sort_by_key(|t| t.sender);
30 transfers
31 .iter()
32 .filter(|t| t.recipient == dest)
33 .cloned()
34 .collect()
35 }
36}