Browse Source

feat: multi unit for fake wallet

thesimplekid 7 months ago
parent
commit
48bff14444
2 changed files with 27 additions and 8 deletions
  1. 14 0
      crates/cdk-mintd/src/config.rs
  2. 13 8
      crates/cdk-mintd/src/main.rs

+ 14 - 0
crates/cdk-mintd/src/config.rs

@@ -45,6 +45,19 @@ pub struct Cln {
     pub rpc_path: PathBuf,
 }
 
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct FakeWallet {
+    pub supported_units: Vec<CurrencyUnit>,
+}
+
+impl Default for FakeWallet {
+    fn default() -> Self {
+        Self {
+            supported_units: vec![CurrencyUnit::Sat],
+        }
+    }
+}
+
 #[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
 #[serde(rename_all = "lowercase")]
 pub enum DatabaseEngine {
@@ -65,6 +78,7 @@ pub struct Settings {
     pub ln: Ln,
     pub cln: Option<Cln>,
     pub strike: Option<Strike>,
+    pub fake_wallet: Option<FakeWallet>,
     pub database: Database,
 }
 

+ 13 - 8
crates/cdk-mintd/src/main.rs

@@ -195,16 +195,21 @@ async fn main() -> anyhow::Result<()> {
             routers
         }
         LnBackend::FakeWallet => {
-            let ln_key = LnKey::new(CurrencyUnit::Sat, PaymentMethod::Bolt11);
+            let units = settings.fake_wallet.unwrap_or_default().supported_units;
 
-            let wallet = Arc::new(FakeWallet::new(
-                fee_reserve,
-                MintMeltSettings::default(),
-                MintMeltSettings::default(),
-            ));
+            for unit in units {
+                let ln_key = LnKey::new(unit, PaymentMethod::Bolt11);
 
-            ln_backends.insert(ln_key, wallet);
-            supported_units.insert(CurrencyUnit::Sat, (input_fee_ppk, 64));
+                let wallet = Arc::new(FakeWallet::new(
+                    fee_reserve.clone(),
+                    MintMeltSettings::default(),
+                    MintMeltSettings::default(),
+                ));
+
+                ln_backends.insert(ln_key, wallet);
+
+                supported_units.insert(unit, (input_fee_ppk, 64));
+            }
 
             vec![]
         }