use serde::{Deserialize, Serialize};
use super::identifiers::is_vendor_namespaced_identifier;
use super::metadata::Metadata;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SemanticAction {
pub id: String,
pub action: String,
pub target: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
}
pub const KNOWN_ACTIONS: &[&str] = &["dtcs:lowercase"];
#[must_use]
pub fn is_known_action(action: &str) -> bool {
KNOWN_ACTIONS.contains(&action) || is_vendor_namespaced_identifier(action)
}