interface Point : Type -> Typeto_affine : Point p => p -> (Integer, Integer)generator : Point p => pinfinity : Point p => pbits : Point p => Natmodulus : Point p => Integerorder : Point p => Integerpoint_add : Point p => p -> p -> pmul : Point p => Integer -> p -> pencode : Point p => p -> List Bits8decode : Point p => List Bits8 -> Maybe pdata ECDSASignature : Type -> TypeMkSignature : Point p => p -> (Integer, Integer) -> ECDSASignature pecdsa_sign : (Point p, MonadRandom m) => Integer -> Integer -> m (ECDSASignature p)ecdsa_verify : Integer -> ECDSASignature p -> Bool