dpp/voting/vote_polls/
mod.rs

1#[cfg(feature = "json-conversion")]
2use crate::serialization::JsonConvertible;
3#[cfg(feature = "value-conversion")]
4use crate::serialization::ValueConvertible;
5use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll;
6use crate::ProtocolError;
7use bincode::{Decode, Encode};
8use derive_more::From;
9use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize};
10use platform_value::Identifier;
11#[cfg(feature = "serde-conversion")]
12use serde::{Deserialize, Serialize};
13use std::fmt;
14
15pub mod contested_document_resource_vote_poll;
16
17#[cfg_attr(
18    all(feature = "json-conversion", feature = "serde-conversion"),
19    derive(JsonConvertible)
20)]
21#[derive(Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, From)]
22#[cfg_attr(
23    feature = "serde-conversion",
24    derive(Serialize, Deserialize),
25    serde(tag = "type", content = "data", rename_all = "camelCase")
26)]
27#[cfg_attr(feature = "value-conversion", derive(ValueConvertible))]
28#[platform_serialize(unversioned)]
29#[platform_serialize(limit = 100000)]
30pub enum VotePoll {
31    ContestedDocumentResourceVotePoll(ContestedDocumentResourceVotePoll),
32}
33
34impl fmt::Display for VotePoll {
35    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
36        match self {
37            VotePoll::ContestedDocumentResourceVotePoll(poll) => {
38                write!(f, "ContestedDocumentResourceVotePoll({})", poll)
39            }
40        }
41    }
42}
43
44impl Default for VotePoll {
45    fn default() -> Self {
46        ContestedDocumentResourceVotePoll::default().into()
47    }
48}
49
50impl VotePoll {
51    pub fn specialized_balance_id(&self) -> Result<Option<Identifier>, ProtocolError> {
52        match self {
53            VotePoll::ContestedDocumentResourceVotePoll(contested_document_resource_vote_poll) => {
54                Ok(Some(
55                    contested_document_resource_vote_poll.specialized_balance_id()?,
56                ))
57            }
58        }
59    }
60
61    pub fn unique_id(&self) -> Result<Identifier, ProtocolError> {
62        match self {
63            VotePoll::ContestedDocumentResourceVotePoll(contested_document_resource_vote_poll) => {
64                contested_document_resource_vote_poll.unique_id()
65            }
66        }
67    }
68}