-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

module Hedgehog.Gen.Tezos.Crypto.BLS12381
  ( genBls12381Fr
  , genBls12381G1
  , genBls12381G2
  ) where

import Hedgehog (MonadGen)
import Hedgehog.Gen qualified as Gen

import Morley.Tezos.Crypto.BLS12381
import Test.Cleveland.Util

genBls12381Fr :: MonadGen m => m Bls12381Fr
genBls12381Fr :: forall (m :: * -> *). MonadGen m => m Bls12381Fr
genBls12381Fr = m Bls12381Fr
forall (m :: * -> *) a. (MonadGen m, Enum a, Bounded a) => m a
Gen.enumBounded

genBls12381G1 :: MonadGen m => m Bls12381G1
genBls12381G1 :: forall (m :: * -> *). MonadGen m => m Bls12381G1
genBls12381G1 = (forall (n :: * -> *). MonadRandom n => n Bls12381G1)
-> m Bls12381G1
forall (m :: * -> *) a.
MonadGen m =>
(forall (n :: * -> *). MonadRandom n => n a) -> m a
genRandom forall a (m :: * -> *). (CurveObject a, MonadRandom m) => m a
forall (n :: * -> *). MonadRandom n => n Bls12381G1
generate

genBls12381G2 :: MonadGen m => m Bls12381G2
genBls12381G2 :: forall (m :: * -> *). MonadGen m => m Bls12381G2
genBls12381G2 = (forall (n :: * -> *). MonadRandom n => n Bls12381G2)
-> m Bls12381G2
forall (m :: * -> *) a.
MonadGen m =>
(forall (n :: * -> *). MonadRandom n => n a) -> m a
genRandom forall a (m :: * -> *). (CurveObject a, MonadRandom m) => m a
forall (n :: * -> *). MonadRandom n => n Bls12381G2
generate