use actix::Message;
use calimero_primitives::context::ContextId;
use calimero_primitives::identity::PublicKey;
use tokio::sync::oneshot;
pub mod get_blob_bytes;
use get_blob_bytes::GetBlobBytesRequest;
#[derive(Clone, Debug)]
pub struct RegisterPendingSpecializedNodeInvite {
pub nonce: [u8; 32],
pub context_id: ContextId,
pub inviter_id: PublicKey,
}
#[derive(Clone, Debug)]
pub struct RemovePendingSpecializedNodeInvite {
pub nonce: [u8; 32],
}
#[derive(Debug, Message)]
#[rtype("()")]
pub enum NodeMessage {
GetBlobBytes {
request: GetBlobBytesRequest,
outcome: oneshot::Sender<<GetBlobBytesRequest as Message>::Result>,
},
RegisterPendingSpecializedNodeInvite {
request: RegisterPendingSpecializedNodeInvite,
},
RemovePendingSpecializedNodeInvite {
request: RemovePendingSpecializedNodeInvite,
},
ForwardNamespaceOpApplied { namespace_id: [u8; 32] },
GetSyncStatus {
context_id: ContextId,
outcome: oneshot::Sender<Option<crate::SyncStatusSnapshot>>,
},
GetMigrationStatusReports {
namespace_id: [u8; 32],
outcome: oneshot::Sender<std::collections::BTreeMap<PublicKey, MigrationStatusReport>>,
},
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct MigrationStatusReport {
pub schema_version: u32,
pub residue_auto: u64,
pub residue_identity: u64,
pub synced_up_to_hlc: u64,
pub reported_at: u64,
pub authored_remaining: u64,
}