1use crate::result::err_check;
3use ceres_sandbox::Transaction as Inner;
4use serde::{Deserialize, Serialize};
5use wasm_bindgen::prelude::wasm_bindgen;
6
7fn hash(src: Vec<u8>) -> [u8; 32] {
9 let mut dest: [u8; 32] = [0; 32];
10 dest.copy_from_slice(&src);
11 dest
12}
13
14#[wasm_bindgen(typescript_custom_section)]
15const ITransaction: &'static str = r#"
16export interface ITransaction {
17 address: string;
18 balance: number;
19 caller: string;
20 minimum_balance: number;
21 now: string;
22 value_transferred: number;
23}
24"#;
25
26#[derive(Debug, Serialize, Deserialize)]
28pub struct Transaction {
29 pub address: String,
30 pub balance: u64,
31 pub caller: String,
32 pub minimum_balance: u64,
33 pub now: String,
34 pub value_transferred: u64,
35}
36
37impl From<Transaction> for Inner {
38 fn from(tx: Transaction) -> Inner {
39 Inner {
40 caller: hash(err_check(hex::decode(tx.caller))),
41 address: hash(err_check(hex::decode(tx.address))),
42 balance: tx.balance,
43 value_transferred: tx.value_transferred,
44 now: hash(err_check(hex::decode(tx.now))),
45 minimum_balance: tx.minimum_balance,
46 }
47 }
48}