use super::{agreement::SectionAuth, relocation::RelocatePayload, section::NodeState};
use crate::messaging::SectionAuthorityProvider;
use bls::PublicKey as BlsPublicKey;
use secured_linked_list::SecuredLinkedList;
use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct JoinAsRelocatedRequest {
pub section_key: BlsPublicKey,
pub relocate_payload: Option<RelocatePayload>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
#[allow(clippy::large_enum_variant)]
pub enum JoinAsRelocatedResponse {
Retry(SectionAuthorityProvider),
Redirect(SectionAuthorityProvider),
Approval {
section_auth: SectionAuth<SectionAuthorityProvider>,
node_state: SectionAuth<NodeState>,
section_chain: SecuredLinkedList,
},
NodeNotReachable(SocketAddr),
}