cdk_ffi/types/
nostr_backup.rs1use cdk::wallet::{
4 BackupOptions as CdkBackupOptions, BackupResult as CdkBackupResult,
5 RestoreOptions as CdkRestoreOptions, RestoreResult as CdkRestoreResult,
6};
7
8use super::MintUrl;
9
10#[derive(Debug, Clone, Default, uniffi::Record)]
12pub struct BackupOptions {
13 pub client: Option<String>,
15}
16
17impl From<BackupOptions> for CdkBackupOptions {
18 fn from(options: BackupOptions) -> Self {
19 let mut opts = CdkBackupOptions::new();
20 if let Some(client) = options.client {
21 opts = opts.client(client);
22 }
23 opts
24 }
25}
26
27#[derive(Debug, Clone, uniffi::Record)]
29pub struct RestoreOptions {
30 pub timeout_secs: u64,
32}
33
34impl Default for RestoreOptions {
35 fn default() -> Self {
36 Self { timeout_secs: 10 }
37 }
38}
39
40impl From<RestoreOptions> for CdkRestoreOptions {
41 fn from(options: RestoreOptions) -> Self {
42 CdkRestoreOptions::new().timeout(std::time::Duration::from_secs(options.timeout_secs))
43 }
44}
45
46#[derive(Debug, Clone, uniffi::Record)]
48pub struct BackupResult {
49 pub event_id: String,
51 pub public_key: String,
53 pub mint_count: u64,
55}
56
57impl From<CdkBackupResult> for BackupResult {
58 fn from(result: CdkBackupResult) -> Self {
59 Self {
60 event_id: result.event_id.to_hex(),
61 public_key: result.public_key.to_hex(),
62 mint_count: result.mint_count as u64,
63 }
64 }
65}
66
67#[derive(Debug, Clone, uniffi::Record)]
69pub struct RestoreResult {
70 pub backup: MintBackup,
72 pub mint_count: u64,
74 pub mints_added: u64,
76}
77
78impl From<CdkRestoreResult> for RestoreResult {
79 fn from(result: CdkRestoreResult) -> Self {
80 Self {
81 backup: result.backup.into(),
82 mint_count: result.mint_count as u64,
83 mints_added: result.mints_added as u64,
84 }
85 }
86}
87
88#[derive(Debug, Clone, uniffi::Record)]
90pub struct MintBackup {
91 pub mints: Vec<MintUrl>,
93 pub timestamp: u64,
95}
96
97impl From<cdk::nuts::nut27::MintBackup> for MintBackup {
98 fn from(backup: cdk::nuts::nut27::MintBackup) -> Self {
99 Self {
100 mints: backup.mints.into_iter().map(|m| m.into()).collect(),
101 timestamp: backup.timestamp,
102 }
103 }
104}