use openraft_macros::add_async_trait;
use openraft_macros::since;
use crate::OptionalSend;
use crate::OptionalSync;
use crate::RaftTypeConfig;
use crate::errors::RPCError;
use crate::network::RPCOption;
use crate::raft::message::TransferLeaderRequest;
use crate::raft::message::TransferLeaderResponse;
#[add_async_trait]
pub trait NetTransferLeader<C>: OptionalSend + OptionalSync + 'static
where C: RaftTypeConfig
{
#[since(version = "0.10.0", change = "returns TransferLeaderResponse")]
async fn transfer_leader(
&mut self,
req: TransferLeaderRequest<C>,
option: RPCOption,
) -> Result<TransferLeaderResponse<C>, RPCError<C>>;
}