fedimint_dummy_common/
lib.rs1#![deny(clippy::pedantic)]
2#![allow(clippy::missing_panics_doc)]
3#![allow(clippy::module_name_repetitions)]
4#![allow(clippy::must_use_candidate)]
5
6use std::fmt;
7
8use config::DummyClientConfig;
9use fedimint_core::core::{Decoder, ModuleInstanceId, ModuleKind};
10use fedimint_core::encoding::{Decodable, Encodable};
11use fedimint_core::module::{AmountUnit, CommonModuleInit, ModuleCommon, ModuleConsensusVersion};
12use fedimint_core::secp256k1::PublicKey;
13use fedimint_core::{Amount, plugin_types_trait_impl_common};
14use serde::{Deserialize, Serialize};
15use thiserror::Error;
16
17pub mod config;
21
22pub const KIND: ModuleKind = ModuleKind::from_static_str("dummy");
24
25pub const MODULE_CONSENSUS_VERSION: ModuleConsensusVersion = ModuleConsensusVersion::new(2, 0);
27
28#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize, Encodable, Decodable)]
30pub struct DummyConsensusItem;
31
32#[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, Encodable, Decodable)]
34pub struct DummyInput {
35 pub amount: Amount,
36 pub unit: AmountUnit,
37 pub pub_key: PublicKey,
39}
40
41#[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, Encodable, Decodable)]
43pub struct DummyOutput {
44 pub amount: Amount,
45 pub unit: AmountUnit,
46}
47
48#[derive(Debug, Clone, Eq, PartialEq, Hash, Deserialize, Serialize, Encodable, Decodable)]
50pub struct DummyOutputOutcome;
51
52#[derive(Debug, Clone, Eq, PartialEq, Hash, Error, Encodable, Decodable)]
54pub enum DummyInputError {
55 #[error("Not enough funds")]
56 NotEnoughFunds,
57}
58
59#[derive(Debug, Clone, Eq, PartialEq, Hash, Error, Encodable, Decodable)]
61pub enum DummyOutputError {}
62
63pub struct DummyModuleTypes;
65
66plugin_types_trait_impl_common!(
68 KIND,
69 DummyModuleTypes,
70 DummyClientConfig,
71 DummyInput,
72 DummyOutput,
73 DummyOutputOutcome,
74 DummyConsensusItem,
75 DummyInputError,
76 DummyOutputError
77);
78
79#[derive(Debug)]
80pub struct DummyCommonInit;
81
82impl CommonModuleInit for DummyCommonInit {
83 const CONSENSUS_VERSION: ModuleConsensusVersion = MODULE_CONSENSUS_VERSION;
84 const KIND: ModuleKind = KIND;
85
86 type ClientConfig = DummyClientConfig;
87
88 fn decoder() -> Decoder {
89 DummyModuleTypes::decoder_builder().build()
90 }
91}
92
93impl fmt::Display for DummyClientConfig {
94 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
95 write!(f, "DummyClientConfig")
96 }
97}
98impl fmt::Display for DummyInput {
99 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
100 write!(f, "DummyInput {}", self.amount)
101 }
102}
103
104impl fmt::Display for DummyOutput {
105 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
106 write!(f, "DummyOutput {}", self.amount)
107 }
108}
109
110impl fmt::Display for DummyOutputOutcome {
111 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
112 write!(f, "DummyOutputOutcome")
113 }
114}
115
116impl fmt::Display for DummyConsensusItem {
117 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
118 write!(f, "DummyConsensusItem")
119 }
120}