#include <cuda_runtime.h>
#include "../../include/types.h"
#include <stdbool.h>

#ifndef _{{toUpper .Curve}}_G2CURVE_H
#define _{{toUpper .Curve}}_G2CURVE_H

#ifdef __cplusplus
extern "C" {
#endif

bool {{.Curve}}G2Eq(g2_projective_t* point1, g2_projective_t* point2);
void {{.Curve}}G2ToAffine(g2_projective_t* point, g2_affine_t* point_out);
void {{.Curve}}G2GenerateProjectivePoints(g2_projective_t* points, int size);
void {{.Curve}}G2GenerateAffinePoints(g2_affine_t* points, int size);
cudaError_t {{.Curve}}G2AffineConvertMontgomery(g2_affine_t* points, size_t n, bool is_into, DeviceContext* ctx);
cudaError_t {{.Curve}}G2ProjectiveConvertMontgomery(g2_projective_t* points, size_t n, bool is_into, DeviceContext* ctx);

#ifdef __cplusplus
}
#endif

#endif
