dpp/voting/vote_polls/
mod.rs1#[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}