cleveland-0.2.0: src/Hedgehog/Gen/Tezos/Address.hs
-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA
-- | Address in Tezos.
module Hedgehog.Gen.Tezos.Address
( genAddress
, genContractAddress
, genKeyAddress
) where
import Hedgehog (MonadGen)
import Hedgehog.Gen qualified as Gen
import Hedgehog.Range qualified as Range
import Hedgehog.Gen.Tezos.Crypto (genKeyHash)
import Morley.Tezos.Address (Address(..))
import Morley.Tezos.Crypto
genAddress :: MonadGen m => m Address
genAddress = Gen.choice [genKeyAddress, genContractAddress]
genKeyAddress :: MonadGen m => m Address
genKeyAddress = KeyAddress <$> genKeyHash
genContractAddress :: MonadGen m => m Address
genContractAddress = ContractAddress . Hash HashContract <$> Gen.bytes (Range.singleton 20)