use serde::{Deserialize, Serialize};
/// Declaration of a new operation in the registry.
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub struct OpDeclaration {
/// The canonical name of the operation.
pub name: String,
/// The number of inputs the operation takes.
pub arity: usize,
/// Types of the inputs.
pub inputs: Vec<String>,
/// Type of the output.
pub output: String,
/// Names of algebraic laws this operation claims to satisfy.
pub declared_laws: Vec<String>,
/// The identifier for the reference CPU implementation.
pub reference_impl_id: String,
}