use spacetimedb_lib::Identity;
use spacetimedb_sats::de::Deserialize;
use spacetimedb_sats::hash::Hash;
use spacetimedb_sats::ser::Serialize;
use crate::address::Address;
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct IdentityEmail {
pub identity: Identity,
pub email: String,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct EnergyBalance {
pub identity: Identity,
pub balance: i128,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct Database {
pub id: u64,
pub address: Address,
pub identity: Identity,
pub host_type: HostType,
pub num_replicas: u32,
pub program_bytes_address: Hash,
pub publisher_address: Option<Address>,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct DatabaseStatus {
pub state: String,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct DatabaseInstance {
pub id: u64,
pub database_id: u64,
pub node_id: u64,
pub leader: bool,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct DatabaseInstanceStatus {
pub state: String,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Node {
pub id: u64,
pub unschedulable: bool,
pub advertise_addr: Option<String>,
}
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct NodeStatus {
pub state: String,
}
#[derive(
Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize, strum::EnumString, strum::AsRefStr,
)]
#[strum(serialize_all = "lowercase")]
#[repr(i32)]
pub enum HostType {
Wasm = 0,
}