whisky_csl/tx_parser/
parsable.rs

1use whisky_common::{TxBuilderBody, TxParsable, TxTester, UTxO, 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_builder_body(&self) -> TxBuilderBody {
16        self.tx_builder_body.clone()
17    }
18
19    fn get_builder_body_without_change(&self) -> TxBuilderBody {
20        let mut tx_body = self.parser.tx_body.clone();
21        let outputs = self.parser.csl_tx_body.outputs();
22        let outputs_len = outputs.len();
23        if outputs_len > 0 {
24            tx_body.outputs.pop();
25        }
26        tx_body
27    }
28
29    fn to_tester(&self) -> TxTester {
30        TxTester::new(&self.parser.tx_body)
31    }
32}