whisky_pallas/wrapper/transaction_body/
proposal_procedure.rs

1use pallas::ledger::primitives::{conway::ProposalProcedure as PallasProposalProcedure, Fragment};
2
3use crate::wrapper::transaction_body::{reward_account::RewardAccount, Anchor, GovAction};
4
5#[derive(Debug, PartialEq, Eq, Clone)]
6pub struct ProposalProcedure {
7    pub inner: PallasProposalProcedure,
8}
9
10impl ProposalProcedure {
11    pub fn new(
12        deposit: u64,
13        reward_account: RewardAccount,
14        gov_action: GovAction,
15        anchor: Anchor,
16    ) -> Result<Self, String> {
17        Ok(Self {
18            inner: PallasProposalProcedure {
19                deposit,
20                reward_account: reward_account.inner,
21                gov_action: gov_action.inner,
22                anchor: anchor.inner,
23            },
24        })
25    }
26
27    pub fn encode(&self) -> String {
28        hex::encode(
29            self.inner
30                .encode_fragment()
31                .expect("encoding failed at ProposalProcedure"),
32        )
33    }
34
35    pub fn decode_bytes(bytes: &[u8]) -> Result<Self, String> {
36        let inner = PallasProposalProcedure::decode_fragment(&bytes)
37            .map_err(|e| format!("Fragment decode error: {}", e.to_string()))?;
38        Ok(Self { inner })
39    }
40}