module Test.Cardano.Chain.Delegation.Example (
  exampleCertificates,
)
where

import Cardano.Chain.Delegation (Certificate, signCertificate)
import Cardano.Chain.Slotting (EpochNumber (..))
import Cardano.Crypto (ProtocolMagicId (..))
import Cardano.Prelude
import Data.List (zipWith4)
import Test.Cardano.Crypto.Example (exampleVerificationKeys, staticSafeSigners)

staticProtocolMagics :: [ProtocolMagicId]
staticProtocolMagics :: [ProtocolMagicId]
staticProtocolMagics = Word32 -> ProtocolMagicId
ProtocolMagicId forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Word32
0 .. Word32
5]

exampleCertificates :: [Certificate]
exampleCertificates :: [Certificate]
exampleCertificates =
  forall a b c d e.
(a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e]
zipWith4
    ProtocolMagicId
-> VerificationKey -> EpochNumber -> SafeSigner -> Certificate
signCertificate
    [ProtocolMagicId]
staticProtocolMagics
    (Int -> Int -> [VerificationKey]
exampleVerificationKeys Int
1 Int
6)
    [EpochNumber]
exampleEpochIndices
    [SafeSigner]
staticSafeSigners
  where
    exampleEpochIndices :: [EpochNumber]
exampleEpochIndices = Word64 -> EpochNumber
EpochNumber forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Word64
5, Word64
1, Word64
3, Word64
27, Word64
99, Word64
247]