{-# LANGUAGE EmptyCase #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TupleSections #-} module Cardano.Api.Experimental.Tx.Internal.Certificate ( Certificate (..) , mkTxCertificates , convertToOldApiCertificate , convertToNewCertificate ) where import Cardano.Api.Address qualified as Api import Cardano.Api.Certificate.Internal qualified as Api import Cardano.Api.Era.Internal.Eon.Convert import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards import Cardano.Api.Era.Internal.Eon.ShelleyToBabbageEra qualified as Api import Cardano.Api.Experimental.Era import Cardano.Api.Experimental.Plutus.Internal.Script qualified as Exp import Cardano.Api.Experimental.Plutus.Internal.ScriptWitness qualified as Exp import Cardano.Api.Experimental.Simple.Script qualified as Exp import Cardano.Api.Experimental.Tx.Internal.AnyWitness import Cardano.Api.Ledger qualified as L import Cardano.Api.Plutus.Internal.Script import Cardano.Api.Plutus.Internal.Script qualified as Api import Cardano.Api.Tx.Internal.Body (TxCertificates (..)) import Cardano.Api.Tx.Internal.Body qualified as Api import Cardano.Ledger.Allegra.Scripts qualified as L import Cardano.Ledger.Plutus.Language qualified as L import Cardano.Ledger.Plutus.Language qualified as Plutus import GHC.IsList data Certificate era where Certificate :: L.TxCert era -> Certificate era convertToOldApiCertificate :: Era era -> Certificate (LedgerEra era) -> Api.Certificate era convertToOldApiCertificate :: forall era. Era era -> Certificate (LedgerEra era) -> Certificate era convertToOldApiCertificate Era era ConwayEra (Certificate TxCert (LedgerEra era) cert) = ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era forall era. Typeable era => ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era Api.ConwayCertificate ConwayEraOnwards era ConwayEraOnwards ConwayEra ConwayEraOnwardsConway TxCert (LedgerEra era) ConwayTxCert (ShelleyLedgerEra era) cert convertToNewCertificate :: Era era -> Api.Certificate era -> Certificate (LedgerEra era) convertToNewCertificate :: forall era. Era era -> Certificate era -> Certificate (LedgerEra era) convertToNewCertificate Era era ConwayEra (Api.ConwayCertificate ConwayEraOnwards era _ ConwayTxCert (ShelleyLedgerEra era) cert) = TxCert ConwayEra -> Certificate ConwayEra forall era. TxCert era -> Certificate era Certificate TxCert ConwayEra ConwayTxCert (ShelleyLedgerEra era) cert convertToNewCertificate Era era ConwayEra (Api.ShelleyRelatedCertificate ShelleyToBabbageEra era sToBab ShelleyTxCert (ShelleyLedgerEra era) _) = case ShelleyToBabbageEra era ShelleyToBabbageEra ConwayEra sToBab :: Api.ShelleyToBabbageEra ConwayEra of {} mkTxCertificates :: forall era . IsEra era => [(Certificate (LedgerEra era), AnyWitness (LedgerEra era))] -> Api.TxCertificates Api.BuildTx era mkTxCertificates :: forall era. IsEra era => [(Certificate (LedgerEra era), AnyWitness (LedgerEra era))] -> TxCertificates BuildTx era mkTxCertificates [] = TxCertificates BuildTx era forall build era. TxCertificates build era TxCertificatesNone mkTxCertificates [(Certificate (LedgerEra era), AnyWitness (LedgerEra era))] certs = ShelleyBasedEra era -> OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) -> TxCertificates BuildTx era forall era build. ShelleyBasedEra era -> OMap (Certificate era) (BuildTxWith build (Maybe (StakeCredential, Witness WitCtxStake era))) -> TxCertificates build era TxCertificates (Era era -> ShelleyBasedEra era forall era. Era era -> ShelleyBasedEra era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era era forall era. IsEra era => Era era useEra) (OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) -> TxCertificates BuildTx era) -> OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) -> TxCertificates BuildTx era forall a b. (a -> b) -> a -> b $ [Item (OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))))] -> OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) forall l. IsList l => [Item l] -> l fromList ([Item (OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))))] -> OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)))) -> [Item (OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))))] -> OMap (Certificate era) (BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) forall a b. (a -> b) -> a -> b $ ((Certificate (LedgerEra era), AnyWitness (LedgerEra era)) -> (Certificate era, BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)))) -> [(Certificate (LedgerEra era), AnyWitness (LedgerEra era))] -> [(Certificate era, BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)))] forall a b. (a -> b) -> [a] -> [b] map (Era era -> (Certificate (LedgerEra era), AnyWitness (LedgerEra era)) -> (Certificate era, BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) forall era. Era era -> (Certificate (LedgerEra era), AnyWitness (LedgerEra era)) -> (Certificate era, BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) getStakeCred Era era forall era. IsEra era => Era era useEra) [(Certificate (LedgerEra era), AnyWitness (LedgerEra era))] certs where getStakeCred :: Era era -> (Certificate (LedgerEra era), AnyWitness (LedgerEra era)) -> ( Api.Certificate era , Api.BuildTxWith Api.BuildTx (Maybe (Api.StakeCredential, Api.Witness Api.WitCtxStake era)) ) getStakeCred :: forall era. Era era -> (Certificate (LedgerEra era), AnyWitness (LedgerEra era)) -> (Certificate era, BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) getStakeCred Era era ConwayEra (Certificate TxCert (LedgerEra era) cert, AnyWitness (LedgerEra era) AnyKeyWitnessPlaceholder) = (ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era forall era. Typeable era => ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era Api.ConwayCertificate (Era era -> ConwayEraOnwards era forall era. Era era -> ConwayEraOnwards era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era era Era ConwayEra ConwayEra) TxCert (LedgerEra era) ConwayTxCert (ShelleyLedgerEra era) cert, Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)) forall a. a -> BuildTxWith BuildTx a Api.BuildTxWith Maybe (StakeCredential, Witness WitCtxStake era) forall a. Maybe a Nothing) getStakeCred Era era ConwayEra (Certificate TxCert (LedgerEra era) cert, AnySimpleScriptWitness SimpleScriptOrReferenceInput (LedgerEra era) ss) = let oldApiCert :: Certificate ConwayEra oldApiCert = ConwayEraOnwards ConwayEra -> ConwayTxCert (ShelleyLedgerEra ConwayEra) -> Certificate ConwayEra forall era. Typeable era => ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era Api.ConwayCertificate (Era ConwayEra -> ConwayEraOnwards ConwayEra forall era. Era era -> ConwayEraOnwards era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era ConwayEra ConwayEra) TxCert (LedgerEra era) ConwayTxCert (ShelleyLedgerEra ConwayEra) cert mStakeCred :: Maybe StakeCredential mStakeCred = Certificate ConwayEra -> Maybe StakeCredential forall era. Certificate era -> Maybe StakeCredential Api.selectStakeCredentialWitness Certificate ConwayEra oldApiCert wit :: Witness WitCtxStake ConwayEra wit = ScriptWitnessInCtx WitCtxStake -> ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra forall witctx era. ScriptWitnessInCtx witctx -> ScriptWitness witctx era -> Witness witctx era Api.ScriptWitness ScriptWitnessInCtx WitCtxStake Api.ScriptWitnessForStakeAddr (ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra) -> ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra forall a b. (a -> b) -> a -> b $ Era ConwayEra -> SimpleScriptOrReferenceInput (LedgerEra ConwayEra) -> ScriptWitness WitCtxStake ConwayEra forall era. AllegraEraScript (LedgerEra era) => Era era -> SimpleScriptOrReferenceInput (LedgerEra era) -> ScriptWitness WitCtxStake era newToOldSimpleScriptWitness Era ConwayEra ConwayEra SimpleScriptOrReferenceInput (LedgerEra era) SimpleScriptOrReferenceInput (LedgerEra ConwayEra) ss in ( Certificate era Certificate ConwayEra oldApiCert , Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)) forall a. a -> BuildTxWith BuildTx a forall (f :: * -> *) a. Applicative f => a -> f a pure (Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) -> Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)) forall a b. (a -> b) -> a -> b $ (,Witness WitCtxStake ConwayEra wit) (StakeCredential -> (StakeCredential, Witness WitCtxStake era)) -> Maybe StakeCredential -> Maybe (StakeCredential, Witness WitCtxStake era) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe StakeCredential mStakeCred ) getStakeCred Era era ConwayEra (Certificate TxCert (LedgerEra era) cert, AnyPlutusScriptWitness PlutusScriptWitness lang purpose (LedgerEra era) psw) = let oldApiCert :: Certificate ConwayEra oldApiCert = ConwayEraOnwards ConwayEra -> ConwayTxCert (ShelleyLedgerEra ConwayEra) -> Certificate ConwayEra forall era. Typeable era => ConwayEraOnwards era -> ConwayTxCert (ShelleyLedgerEra era) -> Certificate era Api.ConwayCertificate (Era ConwayEra -> ConwayEraOnwards ConwayEra forall era. Era era -> ConwayEraOnwards era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era ConwayEra ConwayEra) TxCert (LedgerEra era) ConwayTxCert (ShelleyLedgerEra ConwayEra) cert mStakeCred :: Maybe StakeCredential mStakeCred = Certificate ConwayEra -> Maybe StakeCredential forall era. Certificate era -> Maybe StakeCredential Api.selectStakeCredentialWitness Certificate ConwayEra oldApiCert wit :: Witness WitCtxStake ConwayEra wit = ScriptWitnessInCtx WitCtxStake -> ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra forall witctx era. ScriptWitnessInCtx witctx -> ScriptWitness witctx era -> Witness witctx era Api.ScriptWitness ScriptWitnessInCtx WitCtxStake Api.ScriptWitnessForStakeAddr (ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra) -> ScriptWitness WitCtxStake ConwayEra -> Witness WitCtxStake ConwayEra forall a b. (a -> b) -> a -> b $ Era ConwayEra -> PlutusScriptWitness lang purpose (LedgerEra ConwayEra) -> ScriptWitness WitCtxStake ConwayEra forall era (lang :: Language) (purpose :: PlutusScriptPurpose). Era era -> PlutusScriptWitness lang purpose (LedgerEra era) -> ScriptWitness WitCtxStake era newToOldPlutusCertificateScriptWitness Era ConwayEra ConwayEra PlutusScriptWitness lang purpose (LedgerEra era) PlutusScriptWitness lang purpose (LedgerEra ConwayEra) psw in ( Certificate era Certificate ConwayEra oldApiCert , Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)) forall a. a -> BuildTxWith BuildTx a forall (f :: * -> *) a. Applicative f => a -> f a pure (Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era))) -> Maybe (StakeCredential, Witness WitCtxStake era) -> BuildTxWith BuildTx (Maybe (StakeCredential, Witness WitCtxStake era)) forall a b. (a -> b) -> a -> b $ (,Witness WitCtxStake ConwayEra wit) (StakeCredential -> (StakeCredential, Witness WitCtxStake era)) -> Maybe StakeCredential -> Maybe (StakeCredential, Witness WitCtxStake era) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe StakeCredential mStakeCred ) newToOldSimpleScriptWitness :: L.AllegraEraScript (LedgerEra era) => Era era -> Exp.SimpleScriptOrReferenceInput (LedgerEra era) -> Api.ScriptWitness Api.WitCtxStake era newToOldSimpleScriptWitness :: forall era. AllegraEraScript (LedgerEra era) => Era era -> SimpleScriptOrReferenceInput (LedgerEra era) -> ScriptWitness WitCtxStake era newToOldSimpleScriptWitness Era era era SimpleScriptOrReferenceInput (LedgerEra era) simple = case SimpleScriptOrReferenceInput (LedgerEra era) simple of Exp.SScript (Exp.SimpleScript NativeScript (LedgerEra era) script) -> ScriptLanguageInEra SimpleScript' era -> SimpleScriptOrReferenceInput SimpleScript' -> ScriptWitness WitCtxStake era forall era witctx. ScriptLanguageInEra SimpleScript' era -> SimpleScriptOrReferenceInput SimpleScript' -> ScriptWitness witctx era Api.SimpleScriptWitness (ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era forall era. ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era sbeToSimpleScriptLanguageInEra (ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era) -> ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era forall a b. (a -> b) -> a -> b $ Era era -> ShelleyBasedEra era forall era. Era era -> ShelleyBasedEra era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era era era) (SimpleScript -> SimpleScriptOrReferenceInput SimpleScript' forall lang. SimpleScript -> SimpleScriptOrReferenceInput lang Api.SScript (SimpleScript -> SimpleScriptOrReferenceInput SimpleScript') -> SimpleScript -> SimpleScriptOrReferenceInput SimpleScript' forall a b. (a -> b) -> a -> b $ NativeScript (LedgerEra era) -> SimpleScript forall era. AllegraEraScript era => NativeScript era -> SimpleScript fromAllegraTimelock NativeScript (LedgerEra era) script) Exp.SReferenceScript TxIn inp -> ScriptLanguageInEra SimpleScript' era -> SimpleScriptOrReferenceInput SimpleScript' -> ScriptWitness WitCtxStake era forall era witctx. ScriptLanguageInEra SimpleScript' era -> SimpleScriptOrReferenceInput SimpleScript' -> ScriptWitness witctx era Api.SimpleScriptWitness (ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era forall era. ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era sbeToSimpleScriptLanguageInEra (ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era) -> ShelleyBasedEra era -> ScriptLanguageInEra SimpleScript' era forall a b. (a -> b) -> a -> b $ Era era -> ShelleyBasedEra era forall era. Era era -> ShelleyBasedEra era forall a (f :: a -> *) (g :: a -> *) (era :: a). Convert f g => f era -> g era convert Era era era) (TxIn -> SimpleScriptOrReferenceInput SimpleScript' forall lang. TxIn -> SimpleScriptOrReferenceInput lang Api.SReferenceScript TxIn inp) newToOldPlutusCertificateScriptWitness :: Era era -> Exp.PlutusScriptWitness lang purpose (LedgerEra era) -> Api.ScriptWitness Api.WitCtxStake era newToOldPlutusCertificateScriptWitness :: forall era (lang :: Language) (purpose :: PlutusScriptPurpose). Era era -> PlutusScriptWitness lang purpose (LedgerEra era) -> ScriptWitness WitCtxStake era newToOldPlutusCertificateScriptWitness Era era ConwayEra (Exp.PlutusScriptWitness SLanguage lang Plutus.SPlutusV1 PlutusScriptOrReferenceInput lang (LedgerEra era) scriptOrRef PlutusScriptDatum lang purpose _ ScriptRedeemer redeemer ExecutionUnits execUnits) = ScriptLanguageInEra PlutusScriptV1 era -> PlutusScriptVersion PlutusScriptV1 -> PlutusScriptOrReferenceInput PlutusScriptV1 -> ScriptDatum WitCtxStake -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxStake era forall lang era witctx. IsPlutusScriptLanguage lang => ScriptLanguageInEra lang era -> PlutusScriptVersion lang -> PlutusScriptOrReferenceInput lang -> ScriptDatum witctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness witctx era Api.PlutusScriptWitness ScriptLanguageInEra PlutusScriptV1 era ScriptLanguageInEra PlutusScriptV1 ConwayEra Api.PlutusScriptV1InConway PlutusScriptVersion PlutusScriptV1 Api.PlutusScriptV1 (Era ConwayEra -> PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) -> PlutusScriptOrReferenceInput PlutusScriptV1 forall era (lang :: Language) oldlang. Era era -> PlutusScriptOrReferenceInput lang (LedgerEra era) -> PlutusScriptOrReferenceInput oldlang newToOldPlutusScriptOrReferenceInput Era ConwayEra ConwayEra PlutusScriptOrReferenceInput lang (LedgerEra era) PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) scriptOrRef) ScriptDatum WitCtxStake Api.NoScriptDatumForStake ScriptRedeemer redeemer ExecutionUnits execUnits newToOldPlutusCertificateScriptWitness Era era ConwayEra (Exp.PlutusScriptWitness SLanguage lang Plutus.SPlutusV2 PlutusScriptOrReferenceInput lang (LedgerEra era) scriptOrRef PlutusScriptDatum lang purpose _ ScriptRedeemer redeemer ExecutionUnits execUnits) = ScriptLanguageInEra PlutusScriptV2 era -> PlutusScriptVersion PlutusScriptV2 -> PlutusScriptOrReferenceInput PlutusScriptV2 -> ScriptDatum WitCtxStake -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxStake era forall lang era witctx. IsPlutusScriptLanguage lang => ScriptLanguageInEra lang era -> PlutusScriptVersion lang -> PlutusScriptOrReferenceInput lang -> ScriptDatum witctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness witctx era Api.PlutusScriptWitness ScriptLanguageInEra PlutusScriptV2 era ScriptLanguageInEra PlutusScriptV2 ConwayEra Api.PlutusScriptV2InConway PlutusScriptVersion PlutusScriptV2 Api.PlutusScriptV2 (Era ConwayEra -> PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) -> PlutusScriptOrReferenceInput PlutusScriptV2 forall era (lang :: Language) oldlang. Era era -> PlutusScriptOrReferenceInput lang (LedgerEra era) -> PlutusScriptOrReferenceInput oldlang newToOldPlutusScriptOrReferenceInput Era ConwayEra ConwayEra PlutusScriptOrReferenceInput lang (LedgerEra era) PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) scriptOrRef) ScriptDatum WitCtxStake Api.NoScriptDatumForStake ScriptRedeemer redeemer ExecutionUnits execUnits newToOldPlutusCertificateScriptWitness Era era ConwayEra (Exp.PlutusScriptWitness SLanguage lang Plutus.SPlutusV3 PlutusScriptOrReferenceInput lang (LedgerEra era) scriptOrRef PlutusScriptDatum lang purpose _ ScriptRedeemer redeemer ExecutionUnits execUnits) = ScriptLanguageInEra PlutusScriptV3 era -> PlutusScriptVersion PlutusScriptV3 -> PlutusScriptOrReferenceInput PlutusScriptV3 -> ScriptDatum WitCtxStake -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness WitCtxStake era forall lang era witctx. IsPlutusScriptLanguage lang => ScriptLanguageInEra lang era -> PlutusScriptVersion lang -> PlutusScriptOrReferenceInput lang -> ScriptDatum witctx -> ScriptRedeemer -> ExecutionUnits -> ScriptWitness witctx era Api.PlutusScriptWitness ScriptLanguageInEra PlutusScriptV3 era ScriptLanguageInEra PlutusScriptV3 ConwayEra Api.PlutusScriptV3InConway PlutusScriptVersion PlutusScriptV3 Api.PlutusScriptV3 (Era ConwayEra -> PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) -> PlutusScriptOrReferenceInput PlutusScriptV3 forall era (lang :: Language) oldlang. Era era -> PlutusScriptOrReferenceInput lang (LedgerEra era) -> PlutusScriptOrReferenceInput oldlang newToOldPlutusScriptOrReferenceInput Era ConwayEra ConwayEra PlutusScriptOrReferenceInput lang (LedgerEra era) PlutusScriptOrReferenceInput lang (LedgerEra ConwayEra) scriptOrRef) ScriptDatum WitCtxStake Api.NoScriptDatumForStake ScriptRedeemer redeemer ExecutionUnits execUnits newToOldPlutusScriptOrReferenceInput :: Era era -> Exp.PlutusScriptOrReferenceInput lang (LedgerEra era) -> Api.PlutusScriptOrReferenceInput oldlang newToOldPlutusScriptOrReferenceInput :: forall era (lang :: Language) oldlang. Era era -> PlutusScriptOrReferenceInput lang (LedgerEra era) -> PlutusScriptOrReferenceInput oldlang newToOldPlutusScriptOrReferenceInput Era era ConwayEra (Exp.PReferenceScript TxIn txin) = TxIn -> PlutusScriptOrReferenceInput oldlang forall lang. TxIn -> PlutusScriptOrReferenceInput lang Api.PReferenceScript TxIn txin newToOldPlutusScriptOrReferenceInput Era era ConwayEra (Exp.PScript (Exp.PlutusScriptInEra PlutusRunnable lang plutusRunnable)) = let oldScript :: ShortByteString oldScript = PlutusBinary -> ShortByteString L.unPlutusBinary (PlutusBinary -> ShortByteString) -> (Plutus lang -> PlutusBinary) -> Plutus lang -> ShortByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . Plutus lang -> PlutusBinary forall (l :: Language). Plutus l -> PlutusBinary L.plutusBinary (Plutus lang -> ShortByteString) -> Plutus lang -> ShortByteString forall a b. (a -> b) -> a -> b $ PlutusRunnable lang -> Plutus lang forall (l :: Language). PlutusRunnable l -> Plutus l L.plutusFromRunnable PlutusRunnable lang plutusRunnable in PlutusScript oldlang -> PlutusScriptOrReferenceInput oldlang forall lang. PlutusScript lang -> PlutusScriptOrReferenceInput lang Api.PScript (PlutusScript oldlang -> PlutusScriptOrReferenceInput oldlang) -> PlutusScript oldlang -> PlutusScriptOrReferenceInput oldlang forall a b. (a -> b) -> a -> b $ ShortByteString -> PlutusScript oldlang forall lang. ShortByteString -> PlutusScript lang Api.PlutusScriptSerialised ShortByteString oldScript