use crate::{BooleanTrait, FieldTrait, GroupTrait, ScalarTrait};
pub trait ToLowerBits {
type Boolean: BooleanTrait;
fn to_lower_bits_le(&self, k: usize) -> Vec<Self::Boolean>;
fn to_lower_bits_be(&self, k: usize) -> Vec<Self::Boolean>;
}
pub trait ToUpperBits {
type Boolean: BooleanTrait;
fn to_upper_bits_le(&self, k: usize) -> Vec<Self::Boolean>;
fn to_upper_bits_be(&self, k: usize) -> Vec<Self::Boolean>;
}
pub trait ToField {
type Field: FieldTrait;
fn to_field(&self) -> Self::Field;
}
pub trait ToFields {
type Field: FieldTrait;
fn to_fields(&self) -> Vec<Self::Field>;
}
pub trait ToFieldsRaw: ToFields {
fn to_fields_raw(&self) -> Vec<Self::Field>;
}
pub trait ToGroup {
type Group: GroupTrait<Self::Scalar>;
type Scalar: ScalarTrait;
fn to_group(&self) -> Self::Group;
}