use anyhow::{Context, Result, anyhow};
use hex;
use hex::FromHex;
use pallas_primitives::{
BoundedBytes, Fragment,
alonzo::{Constr, MaybeIndefArray, PlutusData},
};
pub fn create_mint_redeemer(label: String) -> Result<Vec<u8>> {
let mut label_hex: String = hex::encode(label);
label_hex.truncate(30);
let lb: Vec<u8> = Vec::from_hex(&label_hex).context("Invalid hex string")?;
let d: PlutusData = PlutusData::BoundedBytes(BoundedBytes::from(lb));
d.encode_fragment()
.map_err(|e| anyhow!("Failed to encode PlutusData fragment: {e}"))
}
pub fn create_spend_redeemer(z: String, g_r: String, pkh: String) -> Result<Vec<u8>> {
let zb: Vec<u8> = Vec::from_hex(z).context("Invalid hex string")?;
let grb: Vec<u8> = Vec::from_hex(g_r).context("Invalid hex string")?;
let pkhb: Vec<u8> = Vec::from_hex(pkh).context("Invalid hex string")?;
let d: PlutusData = PlutusData::Constr(Constr {
tag: 121,
any_constructor: None,
fields: MaybeIndefArray::Indef(vec![
PlutusData::BoundedBytes(BoundedBytes::from(zb)),
PlutusData::BoundedBytes(BoundedBytes::from(grb)),
PlutusData::BoundedBytes(BoundedBytes::from(pkhb)),
]),
});
d.encode_fragment()
.map_err(|e| anyhow!("Failed to encode PlutusData fragment: {e}"))
}