{-# 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 genesisVkHash <- VerificationKeyOrHashOrFile GenesisKey -> CIO e (Hash GenesisKey) forall keyrole e. Key keyrole => VerificationKeyOrHashOrFile keyrole -> CIO e (Hash keyrole) readVerificationKeyOrHashOrTextEnvFile VerificationKeyOrHashOrFile GenesisKey genVkOrHashOrFp genesisDelVkHash <- readVerificationKeyOrHashOrTextEnvFile genDelVkOrHashOrFp vrfVkHash <- readVerificationKeyOrHashOrFile vrfVkOrHashOrFp let genKeyDelegCert = Hash GenesisKey -> Hash GenesisDelegateKey -> Hash VrfKey -> Certificate (ShelleyLedgerEra BabbageEra) makeGenesisKeyDelegationCertificate Hash GenesisKey genesisVkHash Hash GenesisDelegateKey genesisDelVkHash Hash VrfKey vrfVkHash fromEitherIOCli @(FileError ()) $ writeLazyByteStringFile oFp $ textEnvelopeToJSON (Just genKeyDelegCertDesc) genKeyDelegCert where genKeyDelegCertDesc :: TextEnvelopeDescr genKeyDelegCertDesc :: TextEnvelopeDescr genKeyDelegCertDesc = TextEnvelopeDescr "Genesis Key Delegation Certificate"