use core_utils::circuit::{Input, Plaintext};
use primitives::algebra::elliptic_curve::Curve;

pub fn is_input_really_input<C: Curve>(input_type: &Input<C>) -> bool {
    match input_type {
        Input::SecretPlaintext { .. } => true,
        Input::Share { .. } => true,
        Input::RandomShare { .. } => false,
        Input::Scalar(i) => matches!(i, Plaintext::Input(_)),
        Input::ScalarBatch(i) => matches!(i, Plaintext::Input(_)),
        Input::BaseField(i) => matches!(i, Plaintext::Input(_)),
        Input::BaseFieldBatch(i) => matches!(i, Plaintext::Input(_)),
        Input::Mersenne107(i) => matches!(i, Plaintext::Input(_)),
        Input::Mersenne107Batch(i) => matches!(i, Plaintext::Input(_)),
        Input::Bit(i) => matches!(i, Plaintext::Input(_)),
        Input::BitBatch(i) => matches!(i, Plaintext::Input(_)),
        Input::Point(i) => matches!(i, Plaintext::Input(_)),
        Input::PointBatch(i) => matches!(i, Plaintext::Input(_)),
    }
}
