whisky_csl/tx_parser/
parsable.rs1use whisky_common::{TxBuilderBody, TxParsable, TxTester, UTxO, UtxoInput, WError};
2
3use crate::WhiskyCSL;
4
5use super::CSLParser;
6
7impl TxParsable for WhiskyCSL {
8 fn parse(&mut self, tx_hex: &str, resolved_utxos: &[UTxO]) -> Result<(), WError> {
9 let mut parser = CSLParser::new();
10 parser.parse(tx_hex, resolved_utxos)?;
11 self.parser = parser;
12 Ok(())
13 }
14
15 fn get_required_inputs(&mut self, tx_hex: &str) -> Result<Vec<UtxoInput>, WError> {
16 let required_inputs = CSLParser::extract_all_required_utxo_input(tx_hex)
17 .map_err(WError::from_err("WhiskyCSL - get_required_inputs"))?;
18 Ok(required_inputs)
19 }
20
21 fn get_builder_body(&self) -> TxBuilderBody {
22 self.parser.tx_body.clone()
23 }
24
25 fn get_builder_body_without_change(&self) -> TxBuilderBody {
26 let mut tx_body = self.parser.tx_body.clone();
27 let outputs = self.parser.csl_tx_body.outputs();
28 let outputs_len = outputs.len();
29 if outputs_len > 0 {
30 tx_body.outputs.pop();
31 }
32 tx_body
33 }
34
35 fn to_tester(&self) -> TxTester {
36 TxTester::new(&self.parser.tx_body)
37 }
38}