amaru_kernel/cardano/
proposal_state.rs1use std::collections::BTreeMap;
16
17use crate::{Epoch, PoolId, Proposal, ProposalId, StakeCredential, Vote, cbor};
18
19#[derive(Debug)]
20pub struct ProposalState {
21 pub id: ProposalId,
22 pub procedure: Proposal,
23 pub proposed_in: Epoch,
24 pub expires_after: Epoch,
25 pub committee_votes: BTreeMap<StakeCredential, Vote>,
26 pub dreps_votes: BTreeMap<StakeCredential, Vote>,
27 pub pools_votes: BTreeMap<PoolId, Vote>,
28}
29
30impl<'b, C> cbor::decode::Decode<'b, C> for ProposalState {
31 fn decode(d: &mut cbor::Decoder<'b>, ctx: &mut C) -> Result<Self, cbor::decode::Error> {
32 d.array()?;
33 let id = d.decode_with(ctx)?;
34 let committee_votes = d.decode_with(ctx)?;
35 let dreps_votes = d.decode_with(ctx)?;
36 let pools_votes = d.decode_with(ctx)?;
37 let procedure = d.decode_with(ctx)?;
38 let proposed_in = d.decode_with(ctx)?;
39 let expires_after = d.decode_with(ctx)?;
40
41 Ok(ProposalState { id, procedure, proposed_in, expires_after, dreps_votes, pools_votes, committee_votes })
42 }
43}