use tokio::sync::mpsc::Sender;
use tonic::Status;
use crate::cli::EtcdConfig;
use crate::etcdpb::etcdserverpb::{DeleteRangeRequest, PutRequest, TxnRequest, WatchResponse};
rust_i18n::i18n!("locales");
pub mod etcdpb;
pub mod cli;
pub mod cluster;
mod srv;
pub mod queue;
pub mod kv;
mod peer;
const LP: &'static str = "[etcd] ";
pub type WatchSender = Sender<Result<WatchResponse, Status>>;
#[derive(Clone)]
pub enum EtcdEvents {
Data(KvEvent),
Mgmt(EtcdMgmtEvent),
}
#[derive(Clone, Debug)]
pub enum EtcdMgmtEvent {
Config(EtcdConfig),
#[cfg(feature = "tracer")]
Tracer(Option<opentelemetry_sdk::trace::SdkTracer>),
Stop,
Restart,
Pause(u16)
}
#[derive(Clone)]
pub enum KvEvent {
Put(PutRequest),
Delete(DeleteRangeRequest),
Txn(TxnRequest),
}