package constants

import (
	"fmt"
	"math/big"

	"github.com/iden3/go-iden3-crypto/ff"
)

// Q is the order of the integer field (Zq) that fits inside the SNARK.
var Q *big.Int
var QE *ff.Element

// Zero is 0.
var Zero *big.Int

// One is 1.
var One *big.Int

// MinusOne is -1.
var MinusOne *big.Int

func init() {
	Zero = big.NewInt(0)
	One = big.NewInt(1)
	MinusOne = big.NewInt(-1)

	qString := "21888242871839275222246405745257275088548364400416034343698204186575808495617"
	var ok bool
	Q, ok = new(big.Int).SetString(qString, 10)
	if !ok {
		panic(fmt.Sprintf("Bad base 10 string %s", qString))
	}
}