use std::collections::{HashMap, HashSet};
use tokio::sync::watch;
use vector_common::config::ComponentKey;
use vector_common::id::Inputs;
use vector_core::config::OutputId;
use vector_core::fanout;
#[derive(Debug, Clone, Hash, PartialEq, Eq)]
pub struct TapOutput {
pub output_id: OutputId,
pub component_kind: &'static str,
pub component_type: String,
}
#[derive(Debug, Default, Clone)]
pub struct TapResource {
pub outputs: HashMap<TapOutput, fanout::ControlChannel>,
pub inputs: HashMap<ComponentKey, Inputs<OutputId>>,
pub source_keys: Vec<String>,
pub sink_keys: Vec<String>,
pub removals: HashSet<ComponentKey>,
}
pub type WatchTx = watch::Sender<TapResource>;
pub type WatchRx = watch::Receiver<TapResource>;