#![no_std]
#![allow(incomplete_features)]
#![feature(generic_const_exprs)]
use cryptix_field::group::AbelianGroup;
pub trait CurvePoint: AbelianGroup {
const GENERATOR: Self;
type MulScalar;
fn scalar_mul(self, k: Self::MulScalar) -> Self;
fn double(self) -> Self;
fn at_inf(&self) -> bool;
fn on_curve(&self) -> bool;
fn normalize(self) -> Self;
fn mont_form(self) -> Self;
fn mont_rdc(self) -> Self;
}