1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use ergo_lib::chain;
use wasm_bindgen::prelude::*;
use crate::{
box_coll::ErgoBoxes, ergo_state_ctx::ErgoStateContext, secret_key::SecretKeys,
transaction::Transaction, transaction::UnsignedTransaction,
};
#[wasm_bindgen]
pub struct Wallet(ergo_lib::wallet::Wallet);
#[wasm_bindgen]
impl Wallet {
#[wasm_bindgen]
pub fn from_mnemonic(_mnemonic_phrase: &str, _mnemonic_pass: &str) -> Wallet {
todo!()
}
#[wasm_bindgen]
pub fn from_secrets(secret: &SecretKeys) -> Wallet {
Wallet(ergo_lib::wallet::Wallet::from_secrets(secret.into()))
}
#[wasm_bindgen]
pub fn sign_transaction(
&self,
_state_context: &ErgoStateContext,
tx: &UnsignedTransaction,
boxes_to_spend: &ErgoBoxes,
data_boxes: &ErgoBoxes,
) -> Result<Transaction, JsValue> {
let boxes_to_spend: Vec<chain::ergo_box::ErgoBox> = boxes_to_spend.clone().into();
let data_boxes: Vec<chain::ergo_box::ErgoBox> = data_boxes.clone().into();
let tx_context = ergo_lib::wallet::signing::TransactionContext {
spending_tx: tx.clone().into(),
boxes_to_spend,
data_boxes,
};
self.0
.sign_transaction(tx_context, &_state_context.clone().into())
.map_err(|e| JsValue::from_str(&format!("{}", e)))
.map(Transaction::from)
}
}