ceres_browser/
ti.rs

1//! Type interfaces
2use crate::result::err_check;
3use ceres_sandbox::Transaction as Inner;
4use serde::{Deserialize, Serialize};
5use wasm_bindgen::prelude::wasm_bindgen;
6
7/// vector to hash
8fn 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/// Contract transaction
27#[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}