1use foundation_api::api::onboarding::OnboardingState;
5use foundation_api::backup::{
6 BackupShardResponse, CreateMagicBackupResult, PrimeMagicBackupStatusResponse, RestoreMagicBackupResult,
7 RestoreShardResponse, SeedFingerprint,
8};
9use foundation_api::bitcoin::{AccountUpdate, SignPsbt};
10use foundation_api::firmware::{FirmwareFetchEvent, FirmwareInstallEvent, FirmwareUpdateAvailable};
11use foundation_api::fx::{ExchangeRate, ExchangeRateHistory};
12use foundation_api::status::{EnvoyStatus, TimezoneResponse};
13
14use crate::{PairingEvent, SecurityCheckState, SendMessageError};
15
16#[derive(Debug, server::Message)]
17#[response(())]
18pub struct StartWithoutFilesystem;
19
20#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
21#[response(Result<(), SendMessageError>)]
22pub struct PublishPsbt {
23 pub transaction: foundation_api::bitcoin::BroadcastTransaction,
24}
25
26#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
27#[response(Result<(), SendMessageError>)]
28pub struct SendAccountUpdate {
29 pub account_id: String,
30 pub update: Vec<u8>,
31}
32
33#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
34#[response(Vec<u8>)]
35pub struct GetXidDocument;
36
37#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
38#[response(Result<Option<FirmwareUpdateAvailable>, SendMessageError>)]
39pub struct CheckFirmwareUpdate;
40
41#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
42#[response(Result<(), SendMessageError>)]
43pub struct StartFirmwareUpdate {
44 pub chunk_offset: Option<u64>,
45}
46
47#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
48#[response(Result<BackupShardResponse, SendMessageError>)]
49pub struct BackupShard {
50 pub shard: backup_shard::Shard,
51}
52
53#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
54#[response(Result<RestoreShardResponse, SendMessageError>)]
55pub struct RestoreShard {
56 pub seed_fingerprint: SeedFingerprint,
57 pub timestamp: u32,
58}
59
60#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
61#[response(Result<(), SendMessageError>)]
62pub struct NotifyOnboardingState {
63 pub state: OnboardingState,
64}
65#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
66#[response(Result<(), SendMessageError>)]
67pub struct NotifyFirmwareInstall {
68 pub event: FirmwareInstallEvent,
69}
70
71#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
72#[response(Result<bool, SendMessageError>)]
73pub struct EnvoyMagicBackupEnabled;
74
75#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
76#[response(Result<(), SendMessageError>)]
77pub struct SendMagicBackupEvent {
78 pub event: foundation_api::backup::CreateMagicBackupEvent,
79}
80
81#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
82#[response(Result<(), SendMessageError>)]
83pub struct SendRestoreMagicBackupResult {
84 pub result: RestoreMagicBackupResult,
85}
86
87#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
88#[response(CreateMagicBackupResult)]
89pub struct AwaitCreateMagicBackupResult;
90
91#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
92#[response(Result<(), SendMessageError>)]
93pub struct StartRestoreMagicBackup;
94
95#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
96#[response(Result<PrimeMagicBackupStatusResponse, SendMessageError>)]
97pub struct MagicBackupStatus;
98
99#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
103#[response(Result<(), SendMessageError>)]
104pub struct UnpairFromEnvoy;
105
106#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
107#[response(Result<(), SendMessageError>)]
108pub struct SendApplyPassphrase {
109 pub fingerprint: Option<String>,
110}
111
112#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
113#[response(Result<(), SendMessageError>)]
114pub struct SendPrimeMagicBackupEnabled {
115 pub enabled: bool,
116}
117
118#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
119#[response(Result<(), SendMessageError>)]
120pub struct SendPrimeFiatPreference {
121 pub currency_code: String,
122}
123
124#[derive(Debug, Clone, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
125#[response(Result<TimezoneResponse, SendMessageError>)]
126pub struct EnvoyTimezone;
127
128#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
133#[event(ExchangeRate)]
134pub struct SubscribeExchangeRate;
135
136#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
137#[event(FirmwareFetchEvent)]
138pub struct SubscribeFirmwareFetch;
139
140#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
141#[event(EnvoyStatus)]
142pub struct SubscribeEnvoyStatus;
143
144#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
145#[event(SignPsbt)]
146pub struct SubscribeSignPsbt;
147
148#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
149#[event(AccountUpdate)]
150pub struct SubscribeAccountUpdate;
151
152#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
153#[event(PairingEvent)]
154pub struct SubscribePairingEvent;
155
156#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
157#[event(OnboardingState)]
158pub struct SubscribeOnboardingState;
159
160#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
161#[event(SecurityCheckState)]
162pub struct SubscribeSecurityCheckState;
163
164#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
165#[event(SendAccountUpdate)]
166pub struct SubscribePublishedAccountUpdate;
167
168#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
169#[event(ExchangeRateHistory)]
170pub struct SubscribeExchangeRateHistory;
171
172#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
173#[event(foundation_api::backup::RestoreMagicBackupEvent)]
174pub struct SubscribeRestoreMagicBackup;
175
176#[derive(Debug, server::Message, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
177#[event(crate::ConnectionStatus)]
178pub struct SubscribeConnectionStatus;