cleveland-0.1.0: src/Hedgehog/Gen/Tezos/Crypto/Timelock.hs
-- SPDX-FileCopyrightText: 2021 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ
module Hedgehog.Gen.Tezos.Crypto.Timelock
( genChestAndKey
, genChestAndKeyWithParams
, genTLTime
) where
import Hedgehog (MonadGen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Morley.Tezos.Crypto.Timelock
genChestAndKey :: MonadGen m => m (Chest, ChestKey)
genChestAndKey = fst <$> genChestAndKeyWithParams Nothing
genTLTime :: MonadGen m => m TLTime
genTLTime = unsafeMkTLTime <$> Gen.word64 (Range.linear 1000 10000)
genChestAndKeyWithParams
:: MonadGen m
=> Maybe TLTime
-> m ((Chest, ChestKey), (ByteString, TLTime))
genChestAndKeyWithParams mbtime = do
seed <- Gen.enumBounded
payload <- Gen.bytes (Range.linear 1 1024)
time <- maybe genTLTime pure mbtime
let (chest, key) = createChestAndChestKeyFromSeed seed payload time
pure ((chest, key), (payload, time))