use crate::traits::{CurveAffine, CurveExtended, CurveGroup};
pub trait WeierstrassCurve:
CurveGroup + Into<<Self as CurveGroup>::Extended> + From<<Self as CurveGroup>::Extended>
{
const PARAM_B: Self::Range;
const PARAM_3B: Self::Range;
}
pub trait WeierstrassAffine: WeierstrassCurve + CurveAffine {
type Projective: WeierstrassProjective<Range = Self::Range>;
fn to_projective(self) -> Self::Projective;
}
pub trait WeierstrassProjective: WeierstrassCurve + CurveExtended {
fn new(x: Self::Range, y: Self::Range, z: Self::Range) -> Self;
}