{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}

module Cardano.CLI.Byron.Delegation
  ( serialiseDelegationCert
  , serialiseByronWitness
  )
where

import Cardano.Api.Byron hiding (delegateVK)
import Cardano.Api.Serialise.Raw

import Cardano.Prelude (canonicalEncodePretty)

import Prelude hiding ((.))

import Control.Category
import Data.ByteString (ByteString)
import Data.ByteString.Lazy qualified as LB

serialiseDelegationCert :: Certificate -> ByteString
serialiseDelegationCert :: Certificate -> ByteString
serialiseDelegationCert = LazyByteString -> ByteString
LB.toStrict (LazyByteString -> ByteString)
-> (Certificate -> LazyByteString) -> Certificate -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. Certificate -> LazyByteString
forall a. ToJSON Identity a => a -> LazyByteString
canonicalEncodePretty

serialiseByronWitness :: SomeByronSigningKey -> ByteString
serialiseByronWitness :: SomeByronSigningKey -> ByteString
serialiseByronWitness SomeByronSigningKey
sk =
  case SomeByronSigningKey
sk of
    AByronSigningKeyLegacy SigningKey ByronKeyLegacy
bSkey -> SigningKey ByronKeyLegacy -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes SigningKey ByronKeyLegacy
bSkey
    AByronSigningKey SigningKey ByronKey
legBKey -> SigningKey ByronKey -> ByteString
forall a. SerialiseAsRawBytes a => a -> ByteString
serialiseToRawBytes SigningKey ByronKey
legBKey