use serde::{Deserialize, Serialize};
use std::collections::{HashMap, HashSet};
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct Config {
#[serde(default)]
pub isolated_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub exclude_features: HashSet<String>,
#[serde(default)]
pub include_features: HashSet<String>,
#[serde(default)]
pub only_features: HashSet<String>,
#[serde(default)]
pub skip_optional_dependencies: bool,
#[serde(default)]
pub exclude_packages: HashSet<String>,
#[serde(default)]
pub exclude_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub include_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub allow_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub no_empty_feature_set: bool,
#[serde(default)]
pub matrix: HashMap<String, serde_json::Value>,
#[serde(flatten)]
pub deprecated: DeprecatedConfig,
}
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct WorkspaceConfig {
#[serde(default)]
pub exclude_packages: HashSet<String>,
}
#[derive(Serialize, Deserialize, Default, Debug)]
pub struct DeprecatedConfig {
#[serde(default)]
pub skip_feature_sets: Vec<HashSet<String>>,
#[serde(default)]
pub denylist: HashSet<String>,
#[serde(default)]
pub exact_combinations: Vec<HashSet<String>>,
}