{-# LANGUAGE DataKinds #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Cardano.CLI.EraBased.Governance.GenesisKeyDelegationCertificate.Run ( runGovernanceGenesisKeyDelegationCertificate ) where import Cardano.Api hiding (makeGenesisKeyDelegationCertificate) import Cardano.Api.Compatible.Certificate import Cardano.CLI.Compatible.Exception import Cardano.CLI.Type.Key runGovernanceGenesisKeyDelegationCertificate :: VerificationKeyOrHashOrFile GenesisKey -> VerificationKeyOrHashOrFile GenesisDelegateKey -> VerificationKeyOrHashOrFile VrfKey -> File () Out -> CIO e () runGovernanceGenesisKeyDelegationCertificate :: forall e. VerificationKeyOrHashOrFile GenesisKey -> VerificationKeyOrHashOrFile GenesisDelegateKey -> VerificationKeyOrHashOrFile VrfKey -> File () 'Out -> CIO e () runGovernanceGenesisKeyDelegationCertificate VerificationKeyOrHashOrFile GenesisKey genVkOrHashOrFp VerificationKeyOrHashOrFile GenesisDelegateKey genDelVkOrHashOrFp VerificationKeyOrHashOrFile VrfKey vrfVkOrHashOrFp File () 'Out oFp = do Hash GenesisKey genesisVkHash <- VerificationKeyOrHashOrFile GenesisKey -> CIO e (Hash GenesisKey) forall keyrole e. Key keyrole => VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole) readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile GenesisKey genVkOrHashOrFp Hash GenesisDelegateKey genesisDelVkHash <- VerificationKeyOrHashOrFile GenesisDelegateKey -> CIO e (Hash GenesisDelegateKey) forall keyrole e. Key keyrole => VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole) readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile GenesisDelegateKey genDelVkOrHashOrFp Hash VrfKey vrfVkHash <- VerificationKeyOrHashOrFile VrfKey -> CIO e (Hash VrfKey) forall keyrole e. (Key keyrole, SerialiseAsBech32 (VerificationKey keyrole)) => VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole) readVerificationKeyOrHashOrFile VerificationKeyOrHashOrFile VrfKey vrfVkOrHashOrFp let genKeyDelegCert :: Certificate (ShelleyLedgerEra BabbageEra) genKeyDelegCert = Hash GenesisKey -> Hash GenesisDelegateKey -> Hash VrfKey -> Certificate (ShelleyLedgerEra BabbageEra) makeGenesisKeyDelegationCertificate Hash GenesisKey genesisVkHash Hash GenesisDelegateKey genesisDelVkHash Hash VrfKey vrfVkHash forall e (m :: * -> *) a. (HasCallStack, MonadIO m, Show e, Typeable e, Error e) => IO (Either e a) -> m a fromEitherIOCli @(FileError ()) (IO (Either (FileError ()) ()) -> RIO e ()) -> IO (Either (FileError ()) ()) -> RIO e () forall a b. (a -> b) -> a -> b $ File () 'Out -> ByteString -> IO (Either (FileError ()) ()) forall (m :: * -> *) content e. MonadIO m => File content 'Out -> ByteString -> m (Either (FileError e) ()) writeLazyByteStringFile File () 'Out oFp (ByteString -> IO (Either (FileError ()) ())) -> ByteString -> IO (Either (FileError ()) ()) forall a b. (a -> b) -> a -> b $ Maybe TextEnvelopeDescr -> Certificate BabbageEra -> ByteString forall a. HasTextEnvelope a => Maybe TextEnvelopeDescr -> a -> ByteString textEnvelopeToJSON (TextEnvelopeDescr -> Maybe TextEnvelopeDescr forall a. a -> Maybe a Just TextEnvelopeDescr genKeyDelegCertDesc) Certificate (ShelleyLedgerEra BabbageEra) Certificate BabbageEra genKeyDelegCert where genKeyDelegCertDesc :: TextEnvelopeDescr genKeyDelegCertDesc :: TextEnvelopeDescr genKeyDelegCertDesc = TextEnvelopeDescr "Genesis Key Delegation Certificate"