whisky_pallas/wrapper/transaction_body/
proposal_procedure.rs1use 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}