whisky-csl 1.0.13

Wrapper around the cardano-serialization-lib for easier transaction building, heavily inspired by cardano-cli APIs
Documentation
use whisky_common::{TxBuilderBody, TxParsable, TxTester, UTxO, UtxoInput, WError};

use crate::WhiskyCSL;

use super::CSLParser;

impl TxParsable for WhiskyCSL {
    fn parse(&mut self, tx_hex: &str, resolved_utxos: &[UTxO]) -> Result<(), WError> {
        let mut parser = CSLParser::new();
        parser.parse(tx_hex, resolved_utxos)?;
        self.parser = parser;
        Ok(())
    }

    fn get_required_inputs(&mut self, tx_hex: &str) -> Result<Vec<UtxoInput>, WError> {
        let required_inputs = CSLParser::extract_all_required_utxo_input(tx_hex)
            .map_err(WError::from_err("WhiskyCSL - get_required_inputs"))?;
        Ok(required_inputs)
    }

    fn get_builder_body(&self) -> TxBuilderBody {
        self.parser.tx_body.clone()
    }

    fn get_builder_body_without_change(&self) -> TxBuilderBody {
        let mut tx_body = self.parser.tx_body.clone();
        let outputs = self.parser.csl_tx_body.outputs();
        let outputs_len = outputs.len();
        if outputs_len > 0 {
            tx_body.outputs.pop();
        }
        tx_body
    }

    fn to_tester(&self) -> TxTester {
        TxTester::new(&self.parser.tx_body)
    }
}