{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
module Cardano.CLI.EraBased.Script.Certificate.Read
( readCertificateScriptWitness
, readCertificateScriptWitnesses
)
where
import Cardano.Api (File (..))
import Cardano.Api qualified as Api
import Cardano.Api.Experimental
import Cardano.Api.Experimental qualified as Exp
import Cardano.Api.Ledger qualified as L
import Cardano.Api.Plutus (AnyPlutusScriptVersion (..), ToLedgerPlutusLanguage)
import Cardano.CLI.Compatible.Exception
import Cardano.CLI.EraBased.Script.Read.Common
import Cardano.CLI.EraBased.Script.Type
import Cardano.CLI.Orphan ()
import Cardano.CLI.Read
import Cardano.CLI.Type.Common (CertificateFile)
import Cardano.Ledger.Core qualified as L
import Cardano.Ledger.Plutus.Language qualified as L
import Cardano.Ledger.Plutus.Language qualified as Plutus
readCertificateScriptWitness
:: forall era e
. IsEra era
=> ScriptRequirements Exp.CertItem
-> CIO e (AnyWitness (LedgerEra era))
readCertificateScriptWitness :: forall era e.
IsEra era =>
ScriptRequirements 'CertItem -> CIO e (AnyWitness (LedgerEra era))
readCertificateScriptWitness (OnDiskSimpleScript File ScriptInAnyLang 'In
scriptFp) = do
let sFp :: FilePath
sFp = File ScriptInAnyLang 'In -> FilePath
forall content (direction :: FileDirection).
File content direction -> FilePath
unFile File ScriptInAnyLang 'In
scriptFp
Script SimpleScript'
s <-
FilePath -> CIO e (Script SimpleScript')
forall e. FilePath -> CIO e (Script SimpleScript')
readFileSimpleScript FilePath
sFp
let SimpleScript (LedgerEra era)
nativeScript :: SimpleScript (LedgerEra era) = Era era -> Script SimpleScript' -> SimpleScript (LedgerEra era)
forall era.
Era era -> Script SimpleScript' -> SimpleScript (LedgerEra era)
convertTotimelock Era era
forall era. IsEra era => Era era
useEra Script SimpleScript'
s
AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era)))
-> AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a b. (a -> b) -> a -> b
$
SimpleScriptOrReferenceInput (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall era. SimpleScriptOrReferenceInput era -> AnyWitness era
AnySimpleScriptWitness (SimpleScriptOrReferenceInput (LedgerEra era)
-> AnyWitness (LedgerEra era))
-> SimpleScriptOrReferenceInput (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
SimpleScript (LedgerEra era)
-> SimpleScriptOrReferenceInput (LedgerEra era)
forall era. SimpleScript era -> SimpleScriptOrReferenceInput era
SScript SimpleScript (LedgerEra era)
nativeScript
readCertificateScriptWitness
( OnDiskPlutusScript
(OnDiskPlutusScriptCliArgs File ScriptInAnyLang 'In
scriptFp NoScriptDatum
OptionalDatum 'CertItem
Exp.NoScriptDatumAllowed ScriptDataOrFile
redeemerFile ExecutionUnits
execUnits)
) = do
let plutusScriptFp :: FilePath
plutusScriptFp = File ScriptInAnyLang 'In -> FilePath
forall content (direction :: FileDirection).
File content direction -> FilePath
unFile File ScriptInAnyLang 'In
scriptFp
AnyPlutusScript PlutusScriptVersion lang
sVer PlutusScript lang
apiScript <-
FilePath -> CIO e AnyPlutusScript
forall e. FilePath -> CIO e AnyPlutusScript
readFilePlutusScript FilePath
plutusScriptFp
let lang :: SLanguage (ToLedgerPlutusLanguage lang)
lang = PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang)
forall lang.
PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang)
toPlutusSLanguage PlutusScriptVersion lang
sVer
PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
script <- Era era
-> PlutusScriptVersion lang
-> PlutusScript lang
-> CIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
forall era lang e.
Era era
-> PlutusScriptVersion lang
-> PlutusScript lang
-> CIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
decodePlutusScript Era era
forall era. IsEra era => Era era
useEra PlutusScriptVersion lang
sVer PlutusScript lang
apiScript
HashableScriptData
redeemer <-
ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
ExceptT e IO a -> m a
fromExceptTCli (ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData)
-> ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData
forall a b. (a -> b) -> a -> b
$
ScriptDataOrFile -> ExceptT ScriptDataError IO HashableScriptData
forall (m :: * -> *).
MonadIO m =>
ScriptDataOrFile -> ExceptT ScriptDataError m HashableScriptData
readScriptDataOrFile ScriptDataOrFile
redeemerFile
AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era)))
-> AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a b. (a -> b) -> a -> b
$
PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
PlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era))
-> PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
SLanguage (ToLedgerPlutusLanguage lang)
-> PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
-> PlutusScriptDatum (ToLedgerPlutusLanguage lang) Any
-> HashableScriptData
-> ExecutionUnits
-> PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
forall (lang :: Language) era (purpose :: PlutusScriptPurpose).
SLanguage lang
-> PlutusScriptOrReferenceInput lang era
-> PlutusScriptDatum lang purpose
-> HashableScriptData
-> ExecutionUnits
-> PlutusScriptWitness lang purpose era
PlutusScriptWitness
SLanguage (ToLedgerPlutusLanguage lang)
lang
PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
script
PlutusScriptDatum (ToLedgerPlutusLanguage lang) Any
forall (lang :: Language) (purpose :: PlutusScriptPurpose).
PlutusScriptDatum lang purpose
NoScriptDatum
HashableScriptData
redeemer
ExecutionUnits
execUnits
readCertificateScriptWitness
( PlutusReferenceScript
( PlutusRefScriptCliArgs
TxIn
refInput
(AnyPlutusScriptVersion PlutusScriptVersion lang
sVer)
NoScriptDatum
OptionalDatum 'CertItem
Exp.NoScriptDatumAllowed
NoPolicyId
MintPolicyId 'CertItem
NoPolicyId
ScriptDataOrFile
redeemerFile
ExecutionUnits
execUnits
)
) = do
let lang :: SLanguage (ToLedgerPlutusLanguage lang)
lang = PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang)
forall lang.
PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang)
toPlutusSLanguage PlutusScriptVersion lang
sVer
HashableScriptData
redeemer <-
ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
ExceptT e IO a -> m a
fromExceptTCli (ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData)
-> ExceptT ScriptDataError IO HashableScriptData
-> RIO e HashableScriptData
forall a b. (a -> b) -> a -> b
$
ScriptDataOrFile -> ExceptT ScriptDataError IO HashableScriptData
forall (m :: * -> *).
MonadIO m =>
ScriptDataOrFile -> ExceptT ScriptDataError m HashableScriptData
readScriptDataOrFile ScriptDataOrFile
redeemerFile
AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era)))
-> AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a b. (a -> b) -> a -> b
$
PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
PlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era))
-> PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall a b. (a -> b) -> a -> b
$
SLanguage (ToLedgerPlutusLanguage lang)
-> PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
-> PlutusScriptDatum (ToLedgerPlutusLanguage lang) Any
-> HashableScriptData
-> ExecutionUnits
-> PlutusScriptWitness
(ToLedgerPlutusLanguage lang) Any (LedgerEra era)
forall (lang :: Language) era (purpose :: PlutusScriptPurpose).
SLanguage lang
-> PlutusScriptOrReferenceInput lang era
-> PlutusScriptDatum lang purpose
-> HashableScriptData
-> ExecutionUnits
-> PlutusScriptWitness lang purpose era
PlutusScriptWitness
SLanguage (ToLedgerPlutusLanguage lang)
lang
(TxIn
-> PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
forall (lang :: Language) era.
TxIn -> PlutusScriptOrReferenceInput lang era
PReferenceScript TxIn
refInput)
PlutusScriptDatum (ToLedgerPlutusLanguage lang) Any
forall (lang :: Language) (purpose :: PlutusScriptPurpose).
PlutusScriptDatum lang purpose
NoScriptDatum
HashableScriptData
redeemer
ExecutionUnits
execUnits
readCertificateScriptWitness (SimpleReferenceScript (SimpleRefScriptArgs TxIn
refTxin NoPolicyId
MintPolicyId 'CertItem
NoPolicyId)) =
AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyWitness (LedgerEra era) -> RIO e (AnyWitness (LedgerEra era)))
-> (SimpleScriptOrReferenceInput (LedgerEra era)
-> AnyWitness (LedgerEra era))
-> SimpleScriptOrReferenceInput (LedgerEra era)
-> RIO e (AnyWitness (LedgerEra era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SimpleScriptOrReferenceInput (LedgerEra era)
-> AnyWitness (LedgerEra era)
forall era. SimpleScriptOrReferenceInput era -> AnyWitness era
AnySimpleScriptWitness (SimpleScriptOrReferenceInput (LedgerEra era)
-> RIO e (AnyWitness (LedgerEra era)))
-> SimpleScriptOrReferenceInput (LedgerEra era)
-> RIO e (AnyWitness (LedgerEra era))
forall a b. (a -> b) -> a -> b
$ TxIn -> SimpleScriptOrReferenceInput (LedgerEra era)
forall era. TxIn -> SimpleScriptOrReferenceInput era
SReferenceScript TxIn
refTxin
decodePlutusScript
:: forall era lang e
. Era era
-> Api.PlutusScriptVersion lang
-> Api.PlutusScript lang
-> CIO e (PlutusScriptOrReferenceInput (ToLedgerPlutusLanguage lang) (LedgerEra era))
decodePlutusScript :: forall era lang e.
Era era
-> PlutusScriptVersion lang
-> PlutusScript lang
-> CIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
decodePlutusScript Era era
era PlutusScriptVersion lang
sVer (Api.PlutusScriptSerialised ShortByteString
script) = PlutusScriptVersion lang
-> (PlutusLanguage (ToLedgerPlutusLanguage lang) =>
RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)))
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
forall lang a.
PlutusScriptVersion lang
-> (PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
obtainConstraints PlutusScriptVersion lang
sVer ((PlutusLanguage (ToLedgerPlutusLanguage lang) =>
RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)))
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)))
-> (PlutusLanguage (ToLedgerPlutusLanguage lang) =>
RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)))
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
forall a b. (a -> b) -> a -> b
$ do
let runnableScriptBs :: Plutus (ToLedgerPlutusLanguage lang)
runnableScriptBs = PlutusBinary -> Plutus (ToLedgerPlutusLanguage lang)
forall (l :: Language). PlutusBinary -> Plutus l
L.Plutus (PlutusBinary -> Plutus (ToLedgerPlutusLanguage lang))
-> PlutusBinary -> Plutus (ToLedgerPlutusLanguage lang)
forall a b. (a -> b) -> a -> b
$ ShortByteString -> PlutusBinary
L.PlutusBinary ShortByteString
script
PlutusRunnable (ToLedgerPlutusLanguage lang)
plutusRunnable <-
Either
ScriptDecodeError (PlutusRunnable (ToLedgerPlutusLanguage lang))
-> RIO e (PlutusRunnable (ToLedgerPlutusLanguage lang))
forall e (m :: * -> *) a.
(HasCallStack, MonadIO m, Show e, Typeable e, Error e) =>
Either e a -> m a
fromEitherCli (Either
ScriptDecodeError (PlutusRunnable (ToLedgerPlutusLanguage lang))
-> RIO e (PlutusRunnable (ToLedgerPlutusLanguage lang)))
-> Either
ScriptDecodeError (PlutusRunnable (ToLedgerPlutusLanguage lang))
-> RIO e (PlutusRunnable (ToLedgerPlutusLanguage lang))
forall a b. (a -> b) -> a -> b
$
Version
-> Plutus (ToLedgerPlutusLanguage lang)
-> Either
ScriptDecodeError (PlutusRunnable (ToLedgerPlutusLanguage lang))
forall (l :: Language).
PlutusLanguage l =>
Version -> Plutus l -> Either ScriptDecodeError (PlutusRunnable l)
Plutus.decodePlutusRunnable
(Era era -> Version
forall era. Era era -> Version
getVersion Era era
era)
Plutus (ToLedgerPlutusLanguage lang)
runnableScriptBs
PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)))
-> PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
-> RIO
e
(PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era))
forall a b. (a -> b) -> a -> b
$ PlutusScriptInEra (ToLedgerPlutusLanguage lang) (LedgerEra era)
-> PlutusScriptOrReferenceInput
(ToLedgerPlutusLanguage lang) (LedgerEra era)
forall (lang :: Language) era.
PlutusScriptInEra lang era -> PlutusScriptOrReferenceInput lang era
PScript (PlutusRunnable (ToLedgerPlutusLanguage lang)
-> PlutusScriptInEra (ToLedgerPlutusLanguage lang) (LedgerEra era)
forall (lang :: Language) era.
PlutusRunnable lang -> PlutusScriptInEra lang era
PlutusScriptInEra PlutusRunnable (ToLedgerPlutusLanguage lang)
plutusRunnable)
obtainConstraints
:: Api.PlutusScriptVersion lang
-> (L.PlutusLanguage (ToLedgerPlutusLanguage lang) => a)
-> a
obtainConstraints :: forall lang a.
PlutusScriptVersion lang
-> (PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
obtainConstraints PlutusScriptVersion lang
v =
case PlutusScriptVersion lang
v of
PlutusScriptVersion lang
Api.PlutusScriptV1 -> a -> a
(PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
forall a. a -> a
id
PlutusScriptVersion lang
Api.PlutusScriptV2 -> a -> a
(PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
forall a. a -> a
id
PlutusScriptVersion lang
Api.PlutusScriptV3 -> a -> a
(PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
forall a. a -> a
id
PlutusScriptVersion lang
Api.PlutusScriptV4 -> a -> a
(PlutusLanguage (ToLedgerPlutusLanguage lang) => a) -> a
forall a. a -> a
id
getVersion :: forall era. Era era -> L.Version
getVersion :: forall era. Era era -> Version
getVersion Era era
e = Era era -> (EraCommonConstraints era => Version) -> Version
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
e ((EraCommonConstraints era => Version) -> Version)
-> (EraCommonConstraints era => Version) -> Version
forall a b. (a -> b) -> a -> b
$ forall era. Era era => Version
L.eraProtVerLow @(LedgerEra era)
convertTotimelock
:: forall era
. Era era
-> Api.Script Api.SimpleScript'
-> SimpleScript (LedgerEra era)
convertTotimelock :: forall era.
Era era -> Script SimpleScript' -> SimpleScript (LedgerEra era)
convertTotimelock Era era
era (Api.SimpleScript SimpleScript
s) =
let NativeScript (LedgerEra era)
native :: L.NativeScript (LedgerEra era) = Era era
-> (EraCommonConstraints era => NativeScript (LedgerEra era))
-> NativeScript (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => NativeScript (LedgerEra era))
-> NativeScript (LedgerEra era))
-> (EraCommonConstraints era => NativeScript (LedgerEra era))
-> NativeScript (LedgerEra era)
forall a b. (a -> b) -> a -> b
$ SimpleScript -> NativeScript (LedgerEra era)
forall era.
(AllegraEraScript era, NativeScript era ~ Timelock era) =>
SimpleScript -> NativeScript era
Api.toAllegraTimelock SimpleScript
s
in Era era
-> (EraCommonConstraints era => SimpleScript (LedgerEra era))
-> SimpleScript (LedgerEra era)
forall era a. Era era -> (EraCommonConstraints era => a) -> a
obtainCommonConstraints Era era
era ((EraCommonConstraints era => SimpleScript (LedgerEra era))
-> SimpleScript (LedgerEra era))
-> (EraCommonConstraints era => SimpleScript (LedgerEra era))
-> SimpleScript (LedgerEra era)
forall a b. (a -> b) -> a -> b
$ NativeScript (LedgerEra era) -> SimpleScript (LedgerEra era)
forall era. EraScript era => NativeScript era -> SimpleScript era
SimpleScript NativeScript (LedgerEra era)
native
readCertificateScriptWitnesses
:: IsEra era
=> [(CertificateFile, Maybe (ScriptRequirements Exp.CertItem))]
-> CIO e [(CertificateFile, AnyWitness (LedgerEra era))]
readCertificateScriptWitnesses :: forall era e.
IsEra era =>
[(CertificateFile, Maybe (ScriptRequirements 'CertItem))]
-> CIO e [(CertificateFile, AnyWitness (LedgerEra era))]
readCertificateScriptWitnesses =
((CertificateFile, Maybe (ScriptRequirements 'CertItem))
-> RIO e (CertificateFile, AnyWitness (LedgerEra era)))
-> [(CertificateFile, Maybe (ScriptRequirements 'CertItem))]
-> RIO e [(CertificateFile, AnyWitness (LedgerEra era))]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM
( \(CertificateFile
vFile, Maybe (ScriptRequirements 'CertItem)
mCert) -> do
case Maybe (ScriptRequirements 'CertItem)
mCert of
Maybe (ScriptRequirements 'CertItem)
Nothing -> (CertificateFile, AnyWitness (LedgerEra era))
-> RIO e (CertificateFile, AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (CertificateFile
vFile, AnyWitness (LedgerEra era)
forall era. AnyWitness era
AnyKeyWitnessPlaceholder)
Just ScriptRequirements 'CertItem
cert -> do
AnyWitness (LedgerEra era)
sWit <- ScriptRequirements 'CertItem -> CIO e (AnyWitness (LedgerEra era))
forall era e.
IsEra era =>
ScriptRequirements 'CertItem -> CIO e (AnyWitness (LedgerEra era))
readCertificateScriptWitness ScriptRequirements 'CertItem
cert
(CertificateFile, AnyWitness (LedgerEra era))
-> RIO e (CertificateFile, AnyWitness (LedgerEra era))
forall a. a -> RIO e a
forall (m :: * -> *) a. Monad m => a -> m a
return (CertificateFile
vFile, AnyWitness (LedgerEra era)
sWit)
)