{-# LANGUAGE DataKinds #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TupleSections #-}
module Cardano.CLI.Compatible.Transaction
( CompatibleTransactionCmds (..)
, CompatibleTransactionError (..)
, pAllCompatibleTransactionCommands
, renderCompatibleTransactionCmd
, runCompatibleTransactionCmd
)
where
import Cardano.Api
import Cardano.Api.Compatible
import Cardano.Api.Ledger hiding (TxIn, VotingProcedures)
import Cardano.Api.Shelley hiding (VotingProcedures)
import Cardano.CLI.Environment
import Cardano.CLI.EraBased.Options.Common hiding (pRefScriptFp, pTxOutDatum)
import Cardano.CLI.EraBased.Run.Transaction
import Cardano.CLI.Parser
import Cardano.CLI.Read
import Cardano.CLI.Types.Common
import Cardano.CLI.Types.Errors.BootstrapWitnessError
import Cardano.CLI.Types.Errors.TxCmdError
import Cardano.CLI.Types.Governance
import Data.Foldable
import Data.Function
import Data.Text (Text)
import Options.Applicative
import qualified Options.Applicative as Opt
pAllCompatibleTransactionCommands
:: EnvCli -> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pAllCompatibleTransactionCommands :: forall era.
EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pAllCompatibleTransactionCommands EnvCli
envCli ShelleyBasedEra era
sbe =
let allCommannds :: Parser (CompatibleTransactionCmds era)
allCommannds =
[Parser (CompatibleTransactionCmds era)]
-> Parser (CompatibleTransactionCmds era)
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
forall era.
EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransactionCommand EnvCli
envCli ShelleyBasedEra era
sbe
]
in String
-> ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era)
forall a. String -> ParserInfo a -> Parser a
subParser String
"transaction" (ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era))
-> ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era)
forall a b. (a -> b) -> a -> b
$
Parser (CompatibleTransactionCmds era)
-> InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era)
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info Parser (CompatibleTransactionCmds era)
allCommannds (InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era))
-> InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era)
forall a b. (a -> b) -> a -> b
$
String -> InfoMod (CompatibleTransactionCmds era)
forall a. String -> InfoMod a
Opt.progDesc String
"Transaction commands."
pCompatibleSignedTransactionCommand
:: EnvCli -> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransactionCommand :: forall era.
EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransactionCommand EnvCli
envCli ShelleyBasedEra era
sbe =
String
-> ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era)
forall a. String -> ParserInfo a -> Parser a
subParser String
"signed-transaction" (ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era))
-> ParserInfo (CompatibleTransactionCmds era)
-> Parser (CompatibleTransactionCmds era)
forall a b. (a -> b) -> a -> b
$
Parser (CompatibleTransactionCmds era)
-> InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era)
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
forall era.
EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransaction EnvCli
envCli ShelleyBasedEra era
sbe) (InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era))
-> InfoMod (CompatibleTransactionCmds era)
-> ParserInfo (CompatibleTransactionCmds era)
forall a b. (a -> b) -> a -> b
$
String -> InfoMod (CompatibleTransactionCmds era)
forall a. String -> InfoMod a
Opt.progDesc String
"Create a simple signed transaction."
pCompatibleSignedTransaction
:: EnvCli -> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransaction :: forall era.
EnvCli
-> ShelleyBasedEra era -> Parser (CompatibleTransactionCmds era)
pCompatibleSignedTransaction EnvCli
env ShelleyBasedEra era
sbe =
ShelleyBasedEra era
-> [TxIn]
-> [TxOutAnyEra]
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era
forall era.
ShelleyBasedEra era
-> [TxIn]
-> [TxOutAnyEra]
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era
CreateCompatibleSignedTransaction ShelleyBasedEra era
sbe
([TxIn]
-> [TxOutAnyEra]
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser [TxIn]
-> Parser
([TxOutAnyEra]
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser TxIn -> Parser [TxIn]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many Parser TxIn
pTxInOnly
Parser
([TxOutAnyEra]
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser [TxOutAnyEra]
-> Parser
(Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser TxOutAnyEra -> Parser [TxOutAnyEra]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many (ShelleyBasedEra era -> Parser TxOutAnyEra
forall era. ShelleyBasedEra era -> Parser TxOutAnyEra
pTxOutEraAware ShelleyBasedEra era
sbe)
Parser
(Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser
(Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
-> Parser
(Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> CardanoEra era
-> Parser (Maybe UpdateProposalFile)
-> Parser
(Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
forall (eon :: * -> *) (f :: * -> *) era a.
(Eon eon, ToCardanoEra f) =>
f era -> Parser a -> Parser (Maybe (Featured eon era a))
pFeatured (ShelleyBasedEra era -> CardanoEra era
forall era. ShelleyBasedEra era -> CardanoEra era
forall (eon :: * -> *) era.
ToCardanoEra eon =>
eon era -> CardanoEra era
toCardanoEra ShelleyBasedEra era
sbe) (Parser UpdateProposalFile -> Parser (Maybe UpdateProposalFile)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional Parser UpdateProposalFile
pUpdateProposalFile)
Parser
(Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser
(Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]))
-> Parser
([(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> CardanoEra era
-> Parser
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> Parser
(Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]))
forall (eon :: * -> *) (f :: * -> *) era a.
(Eon eon, ToCardanoEra f) =>
f era -> Parser a -> Parser (Maybe (Featured eon era a))
pFeatured (ShelleyBasedEra era -> CardanoEra era
forall era. ShelleyBasedEra era -> CardanoEra era
forall (eon :: * -> *) era.
ToCardanoEra eon =>
eon era -> CardanoEra era
toCardanoEra ShelleyBasedEra era
sbe) (Parser (ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> Parser
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many (ShelleyBasedEra era
-> BalanceTxExecUnits
-> Parser
(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
forall era.
ShelleyBasedEra era
-> BalanceTxExecUnits
-> Parser
(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
pProposalFile ShelleyBasedEra era
sbe BalanceTxExecUnits
ManualBalance))
Parser
([(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> [WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> Parser
([WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ShelleyBasedEra era
-> BalanceTxExecUnits
-> Parser [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
forall era.
ShelleyBasedEra era
-> BalanceTxExecUnits
-> Parser [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
pVoteFiles ShelleyBasedEra era
sbe BalanceTxExecUnits
ManualBalance
Parser
([WitnessSigningData]
-> Maybe NetworkId
-> Coin
-> File () 'Out
-> CompatibleTransactionCmds era)
-> Parser [WitnessSigningData]
-> Parser
(Maybe NetworkId
-> Coin -> File () 'Out -> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser WitnessSigningData -> Parser [WitnessSigningData]
forall a. Parser a -> Parser [a]
forall (f :: * -> *) a. Alternative f => f a -> f [a]
many Parser WitnessSigningData
pWitnessSigningData
Parser
(Maybe NetworkId
-> Coin -> File () 'Out -> CompatibleTransactionCmds era)
-> Parser (Maybe NetworkId)
-> Parser (Coin -> File () 'Out -> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser NetworkId -> Parser (Maybe NetworkId)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (EnvCli -> Parser NetworkId
pNetworkId EnvCli
env)
Parser (Coin -> File () 'Out -> CompatibleTransactionCmds era)
-> Parser Coin
-> Parser (File () 'Out -> CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser Coin
pTxFee
Parser (File () 'Out -> CompatibleTransactionCmds era)
-> Parser (File () 'Out) -> Parser (CompatibleTransactionCmds era)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser (File () 'Out)
forall content. Parser (File content 'Out)
pOutputFile
pTxInOnly :: Parser TxIn
pTxInOnly :: Parser TxIn
pTxInOnly =
ReadM TxIn -> Mod OptionFields TxIn -> Parser TxIn
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option
(Parser TxIn -> ReadM TxIn
forall a. Parser a -> ReadM a
readerFromParsecParser Parser TxIn
parseTxIn)
( String -> Mod OptionFields TxIn
forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"tx-in"
Mod OptionFields TxIn
-> Mod OptionFields TxIn -> Mod OptionFields TxIn
forall a. Semigroup a => a -> a -> a
<> String -> Mod OptionFields TxIn
forall (f :: * -> *) a. HasMetavar f => String -> Mod f a
Opt.metavar String
"TX-IN"
Mod OptionFields TxIn
-> Mod OptionFields TxIn -> Mod OptionFields TxIn
forall a. Semigroup a => a -> a -> a
<> String -> Mod OptionFields TxIn
forall (f :: * -> *) a. String -> Mod f a
Opt.help String
"TxId#TxIx"
)
pTxOutEraAware :: ShelleyBasedEra era -> Parser TxOutAnyEra
pTxOutEraAware :: forall era. ShelleyBasedEra era -> Parser TxOutAnyEra
pTxOutEraAware ShelleyBasedEra era
sbe =
ReadM (TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Parser
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option
(Parser (TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> ReadM (TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall a. Parser a -> ReadM a
readerFromParsecParser Parser (TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
parseTxOutAnyEra)
( String
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"tx-out"
Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall a. Semigroup a => a -> a -> a
<> String
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall (f :: * -> *) a. HasMetavar f => String -> Mod f a
Opt.metavar String
"ADDRESS VALUE"
Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall a. Semigroup a => a -> a -> a
<> String
-> Mod
OptionFields
(TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
forall (f :: * -> *) a. String -> Mod f a
Opt.help
String
"The transaction output as ADDRESS VALUE where ADDRESS is \
\the Bech32-encoded address followed by the value in \
\the multi-asset syntax (including simply Lovelace)."
)
Parser (TxOutDatumAnyEra -> ReferenceScriptAnyEra -> TxOutAnyEra)
-> Parser TxOutDatumAnyEra
-> Parser (ReferenceScriptAnyEra -> TxOutAnyEra)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ShelleyBasedEra era -> Parser TxOutDatumAnyEra
forall era. ShelleyBasedEra era -> Parser TxOutDatumAnyEra
pTxOutDatum ShelleyBasedEra era
sbe
Parser (ReferenceScriptAnyEra -> TxOutAnyEra)
-> Parser ReferenceScriptAnyEra -> Parser TxOutAnyEra
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ShelleyBasedEra era -> Parser ReferenceScriptAnyEra
forall era. ShelleyBasedEra era -> Parser ReferenceScriptAnyEra
pRefScriptFp ShelleyBasedEra era
sbe
pTxOutDatum :: ShelleyBasedEra era -> Parser TxOutDatumAnyEra
pTxOutDatum :: forall era. ShelleyBasedEra era -> Parser TxOutDatumAnyEra
pTxOutDatum =
(ShelleyToMaryEraConstraints era =>
ShelleyToMaryEra era -> Parser TxOutDatumAnyEra)
-> (AlonzoEraOnwardsConstraints era =>
AlonzoEraOnwards era -> Parser TxOutDatumAnyEra)
-> ShelleyBasedEra era
-> Parser TxOutDatumAnyEra
forall era a.
(ShelleyToMaryEraConstraints era => ShelleyToMaryEra era -> a)
-> (AlonzoEraOnwardsConstraints era => AlonzoEraOnwards era -> a)
-> ShelleyBasedEra era
-> a
caseShelleyToMaryOrAlonzoEraOnwards
(Parser TxOutDatumAnyEra
-> ShelleyToMaryEra era -> Parser TxOutDatumAnyEra
forall a b. a -> b -> a
const (Parser TxOutDatumAnyEra
-> ShelleyToMaryEra era -> Parser TxOutDatumAnyEra)
-> Parser TxOutDatumAnyEra
-> ShelleyToMaryEra era
-> Parser TxOutDatumAnyEra
forall a b. (a -> b) -> a -> b
$ TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure TxOutDatumAnyEra
TxOutDatumByNone)
( \case
AlonzoEraOnwards era
AlonzoEraOnwardsAlonzo ->
Parser TxOutDatumAnyEra
pAlonzoDatumFunctionality Parser TxOutDatumAnyEra
-> Parser TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. Parser a -> Parser a -> Parser a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure TxOutDatumAnyEra
TxOutDatumByNone
AlonzoEraOnwards era
AlonzoEraOnwardsBabbage ->
Parser TxOutDatumAnyEra
pBabbageDatumFunctionality Parser TxOutDatumAnyEra
-> Parser TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. Parser a -> Parser a -> Parser a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure TxOutDatumAnyEra
TxOutDatumByNone
AlonzoEraOnwards era
AlonzoEraOnwardsConway -> Parser TxOutDatumAnyEra
pConwayDatumFunctionality Parser TxOutDatumAnyEra
-> Parser TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. Parser a -> Parser a -> Parser a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> TxOutDatumAnyEra -> Parser TxOutDatumAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure TxOutDatumAnyEra
TxOutDatumByNone
)
where
pAlonzoDatumFunctionality :: Parser TxOutDatumAnyEra
pAlonzoDatumFunctionality =
[Parser TxOutDatumAnyEra] -> Parser TxOutDatumAnyEra
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ Parser TxOutDatumAnyEra
pTxOutDatumByHashOnly
, Parser TxOutDatumAnyEra
pTxOutDatumByHashOf
, Parser TxOutDatumAnyEra
pTxOutDatumByValue
]
pBabbageDatumFunctionality :: Parser TxOutDatumAnyEra
pBabbageDatumFunctionality =
[Parser TxOutDatumAnyEra] -> Parser TxOutDatumAnyEra
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ Parser TxOutDatumAnyEra
pAlonzoDatumFunctionality
, Parser TxOutDatumAnyEra
pTxOutInlineDatumByValue
]
pConwayDatumFunctionality :: Parser TxOutDatumAnyEra
pConwayDatumFunctionality = Parser TxOutDatumAnyEra
pBabbageDatumFunctionality
pTxOutDatumByHashOnly :: Parser TxOutDatumAnyEra
pTxOutDatumByHashOnly =
(Hash ScriptData -> TxOutDatumAnyEra)
-> Parser (Hash ScriptData) -> Parser TxOutDatumAnyEra
forall a b. (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Hash ScriptData -> TxOutDatumAnyEra
TxOutDatumByHashOnly (Parser (Hash ScriptData) -> Parser TxOutDatumAnyEra)
-> Parser (Hash ScriptData) -> Parser TxOutDatumAnyEra
forall a b. (a -> b) -> a -> b
$
ReadM (Hash ScriptData)
-> Mod OptionFields (Hash ScriptData) -> Parser (Hash ScriptData)
forall a. ReadM a -> Mod OptionFields a -> Parser a
Opt.option (Parser (Hash ScriptData) -> ReadM (Hash ScriptData)
forall a. Parser a -> ReadM a
readerFromParsecParser (Parser (Hash ScriptData) -> ReadM (Hash ScriptData))
-> Parser (Hash ScriptData) -> ReadM (Hash ScriptData)
forall a b. (a -> b) -> a -> b
$ AsType (Hash ScriptData) -> Parser (Hash ScriptData)
forall a.
SerialiseAsRawBytes (Hash a) =>
AsType (Hash a) -> Parser (Hash a)
parseHash (AsType ScriptData -> AsType (Hash ScriptData)
forall a. AsType a -> AsType (Hash a)
AsHash AsType ScriptData
AsScriptData)) (Mod OptionFields (Hash ScriptData) -> Parser (Hash ScriptData))
-> Mod OptionFields (Hash ScriptData) -> Parser (Hash ScriptData)
forall a b. (a -> b) -> a -> b
$
[Mod OptionFields (Hash ScriptData)]
-> Mod OptionFields (Hash ScriptData)
forall a. Monoid a => [a] -> a
mconcat
[ String -> Mod OptionFields (Hash ScriptData)
forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"tx-out-datum-hash"
, String -> Mod OptionFields (Hash ScriptData)
forall (f :: * -> *) a. HasMetavar f => String -> Mod f a
Opt.metavar String
"HASH"
, String -> Mod OptionFields (Hash ScriptData)
forall (f :: * -> *) a. String -> Mod f a
Opt.help (String -> Mod OptionFields (Hash ScriptData))
-> String -> Mod OptionFields (Hash ScriptData)
forall a b. (a -> b) -> a -> b
$
[String] -> String
forall a. Monoid a => [a] -> a
mconcat
[ String
"The script datum hash for this tx output, as "
, String
"the raw datum hash (in hex)."
]
]
pTxOutDatumByHashOf :: Parser TxOutDatumAnyEra
pTxOutDatumByHashOf =
ScriptDataOrFile -> TxOutDatumAnyEra
TxOutDatumByHashOf
(ScriptDataOrFile -> TxOutDatumAnyEra)
-> Parser ScriptDataOrFile -> Parser TxOutDatumAnyEra
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> String -> String -> Parser ScriptDataOrFile
pScriptDataOrFile
String
"tx-out-datum-hash"
String
"The script datum hash for this tx output, by hashing the script datum given here."
String
"The script datum hash for this tx output, by hashing the script datum in the file."
pTxOutDatumByValue :: Parser TxOutDatumAnyEra
pTxOutDatumByValue =
ScriptDataOrFile -> TxOutDatumAnyEra
TxOutDatumByValue
(ScriptDataOrFile -> TxOutDatumAnyEra)
-> Parser ScriptDataOrFile -> Parser TxOutDatumAnyEra
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> String -> String -> Parser ScriptDataOrFile
pScriptDataOrFile
String
"tx-out-datum-embed"
String
"The script datum to embed in the tx for this output, given here."
String
"The script datum to embed in the tx for this output, in the given file."
pTxOutInlineDatumByValue :: Parser TxOutDatumAnyEra
pTxOutInlineDatumByValue =
ScriptDataOrFile -> TxOutDatumAnyEra
TxOutInlineDatumByValue
(ScriptDataOrFile -> TxOutDatumAnyEra)
-> Parser ScriptDataOrFile -> Parser TxOutDatumAnyEra
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> String -> String -> Parser ScriptDataOrFile
pScriptDataOrFile
String
"tx-out-inline-datum"
String
"The script datum to embed in the tx output as an inline datum, given here."
String
"The script datum to embed in the tx output as an inline datum, in the given file."
pRefScriptFp :: ShelleyBasedEra era -> Parser ReferenceScriptAnyEra
pRefScriptFp :: forall era. ShelleyBasedEra era -> Parser ReferenceScriptAnyEra
pRefScriptFp =
(ShelleyToBabbageEraConstraints era =>
ShelleyToBabbageEra era -> Parser ReferenceScriptAnyEra)
-> (ConwayEraOnwardsConstraints era =>
ConwayEraOnwards era -> Parser ReferenceScriptAnyEra)
-> ShelleyBasedEra era
-> Parser ReferenceScriptAnyEra
forall era a.
(ShelleyToBabbageEraConstraints era =>
ShelleyToBabbageEra era -> a)
-> (ConwayEraOnwardsConstraints era => ConwayEraOnwards era -> a)
-> ShelleyBasedEra era
-> a
caseShelleyToBabbageOrConwayEraOnwards
(Parser ReferenceScriptAnyEra
-> ShelleyToBabbageEra era -> Parser ReferenceScriptAnyEra
forall a b. a -> b -> a
const (Parser ReferenceScriptAnyEra
-> ShelleyToBabbageEra era -> Parser ReferenceScriptAnyEra)
-> Parser ReferenceScriptAnyEra
-> ShelleyToBabbageEra era
-> Parser ReferenceScriptAnyEra
forall a b. (a -> b) -> a -> b
$ ReferenceScriptAnyEra -> Parser ReferenceScriptAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ReferenceScriptAnyEra
ReferenceScriptAnyEraNone)
( Parser ReferenceScriptAnyEra
-> ConwayEraOnwards era -> Parser ReferenceScriptAnyEra
forall a b. a -> b -> a
const (Parser ReferenceScriptAnyEra
-> ConwayEraOnwards era -> Parser ReferenceScriptAnyEra)
-> Parser ReferenceScriptAnyEra
-> ConwayEraOnwards era
-> Parser ReferenceScriptAnyEra
forall a b. (a -> b) -> a -> b
$
String -> ReferenceScriptAnyEra
ReferenceScriptAnyEra
(String -> ReferenceScriptAnyEra)
-> Parser String -> Parser ReferenceScriptAnyEra
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> String -> Parser String
parseFilePath String
"tx-out-reference-script-file" String
"Reference script input file."
Parser ReferenceScriptAnyEra
-> Parser ReferenceScriptAnyEra -> Parser ReferenceScriptAnyEra
forall a. Parser a -> Parser a -> Parser a
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> ReferenceScriptAnyEra -> Parser ReferenceScriptAnyEra
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ReferenceScriptAnyEra
ReferenceScriptAnyEraNone
)
data CompatibleTransactionCmds era
= CreateCompatibleSignedTransaction
(ShelleyBasedEra era)
[TxIn]
[TxOutAnyEra]
!(Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)))
!(Maybe (Featured ConwayEraOnwards era [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]))
![(VoteFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
[WitnessSigningData]
(Maybe NetworkId)
!Coin
!(File () Out)
renderCompatibleTransactionCmd :: CompatibleTransactionCmds era -> Text
renderCompatibleTransactionCmd :: forall era. CompatibleTransactionCmds era -> Text
renderCompatibleTransactionCmd CompatibleTransactionCmds era
_ = Text
""
data CompatibleTransactionError
= CompatibleTxOutError !TxCmdError
| CompatibleWitnessError !ReadWitnessSigningDataError
| CompatiblePParamsConversionError !ProtocolParametersConversionError
| CompatibleBootstrapWitnessError !BootstrapWitnessError
| forall err. Error err => CompatibleFileError (FileError err)
| CompatibleTxBodyError !TxBodyError
| CompatibleProposalError !ProposalError
| CompatibleVoteError !VoteError
| forall era. CompatibleVoteMergeError !(VotesMergingConflict era)
instance Error CompatibleTransactionError where
prettyError :: forall ann. CompatibleTransactionError -> Doc ann
prettyError = \case
CompatibleTxOutError TxCmdError
e -> TxCmdError -> Doc ann
forall ann. TxCmdError -> Doc ann
renderTxCmdError TxCmdError
e
CompatibleWitnessError ReadWitnessSigningDataError
e -> ReadWitnessSigningDataError -> Doc ann
forall ann. ReadWitnessSigningDataError -> Doc ann
renderReadWitnessSigningDataError ReadWitnessSigningDataError
e
CompatiblePParamsConversionError ProtocolParametersConversionError
e -> ProtocolParametersConversionError -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. ProtocolParametersConversionError -> Doc ann
prettyError ProtocolParametersConversionError
e
CompatibleBootstrapWitnessError BootstrapWitnessError
e -> BootstrapWitnessError -> Doc ann
forall ann. BootstrapWitnessError -> Doc ann
renderBootstrapWitnessError BootstrapWitnessError
e
CompatibleFileError FileError err
e -> FileError err -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. FileError err -> Doc ann
prettyError FileError err
e
CompatibleTxBodyError TxBodyError
e -> TxBodyError -> Doc ann
forall e ann. Error e => e -> Doc ann
forall ann. TxBodyError -> Doc ann
prettyError TxBodyError
e
CompatibleProposalError ProposalError
e -> ProposalError -> Doc ann
forall a ann. Show a => a -> Doc ann
pshow ProposalError
e
CompatibleVoteError VoteError
e -> VoteError -> Doc ann
forall a ann. Show a => a -> Doc ann
pshow VoteError
e
CompatibleVoteMergeError VotesMergingConflict era
e -> VotesMergingConflict era -> Doc ann
forall a ann. Show a => a -> Doc ann
pshow VotesMergingConflict era
e
runCompatibleTransactionCmd
:: CompatibleTransactionCmds era -> ExceptT CompatibleTransactionError IO ()
runCompatibleTransactionCmd :: forall era.
CompatibleTransactionCmds era
-> ExceptT CompatibleTransactionError IO ()
runCompatibleTransactionCmd
( CreateCompatibleSignedTransaction
ShelleyBasedEra era
sbe
[TxIn]
ins
[TxOutAnyEra]
outs
Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
mUpdateProposal
Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
mProposalProcedure
[(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
mVotes
[WitnessSigningData]
witnesses
Maybe NetworkId
mNetworkId
Coin
fee
File () 'Out
outputFp
) = do
[SomeSigningWitness]
sks <- (ReadWitnessSigningDataError -> CompatibleTransactionError)
-> ExceptT ReadWitnessSigningDataError IO [SomeSigningWitness]
-> ExceptT CompatibleTransactionError IO [SomeSigningWitness]
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT ReadWitnessSigningDataError -> CompatibleTransactionError
CompatibleWitnessError (ExceptT ReadWitnessSigningDataError IO [SomeSigningWitness]
-> ExceptT CompatibleTransactionError IO [SomeSigningWitness])
-> ExceptT ReadWitnessSigningDataError IO [SomeSigningWitness]
-> ExceptT CompatibleTransactionError IO [SomeSigningWitness]
forall a b. (a -> b) -> a -> b
$ (WitnessSigningData
-> ExceptT ReadWitnessSigningDataError IO SomeSigningWitness)
-> [WitnessSigningData]
-> ExceptT ReadWitnessSigningDataError IO [SomeSigningWitness]
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 (IO (Either ReadWitnessSigningDataError SomeSigningWitness)
-> ExceptT ReadWitnessSigningDataError IO SomeSigningWitness
forall (m :: * -> *) x a. m (Either x a) -> ExceptT x m a
newExceptT (IO (Either ReadWitnessSigningDataError SomeSigningWitness)
-> ExceptT ReadWitnessSigningDataError IO SomeSigningWitness)
-> (WitnessSigningData
-> IO (Either ReadWitnessSigningDataError SomeSigningWitness))
-> WitnessSigningData
-> ExceptT ReadWitnessSigningDataError IO SomeSigningWitness
forall b c a. (b -> c) -> (a -> b) -> a -> c
. WitnessSigningData
-> IO (Either ReadWitnessSigningDataError SomeSigningWitness)
readWitnessSigningData) [WitnessSigningData]
witnesses
[TxOut CtxTx era]
allOuts <- (TxCmdError -> CompatibleTransactionError)
-> ExceptT TxCmdError IO [TxOut CtxTx era]
-> ExceptT CompatibleTransactionError IO [TxOut CtxTx era]
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT TxCmdError -> CompatibleTransactionError
CompatibleTxOutError (ExceptT TxCmdError IO [TxOut CtxTx era]
-> ExceptT CompatibleTransactionError IO [TxOut CtxTx era])
-> ExceptT TxCmdError IO [TxOut CtxTx era]
-> ExceptT CompatibleTransactionError IO [TxOut CtxTx era]
forall a b. (a -> b) -> a -> b
$ (TxOutAnyEra -> ExceptT TxCmdError IO (TxOut CtxTx era))
-> [TxOutAnyEra] -> ExceptT TxCmdError IO [TxOut CtxTx 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 (ShelleyBasedEra era
-> TxOutAnyEra -> ExceptT TxCmdError IO (TxOut CtxTx era)
forall era.
ShelleyBasedEra era
-> TxOutAnyEra -> ExceptT TxCmdError IO (TxOut CtxTx era)
toTxOutInAnyEra ShelleyBasedEra era
sbe) [TxOutAnyEra]
outs
TxBody era
apiTxBody <-
(TxBodyError -> CompatibleTransactionError)
-> ExceptT TxBodyError IO (TxBody era)
-> ExceptT CompatibleTransactionError IO (TxBody era)
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT TxBodyError -> CompatibleTransactionError
CompatibleTxBodyError (ExceptT TxBodyError IO (TxBody era)
-> ExceptT CompatibleTransactionError IO (TxBody era))
-> ExceptT TxBodyError IO (TxBody era)
-> ExceptT CompatibleTransactionError IO (TxBody era)
forall a b. (a -> b) -> a -> b
$
Either TxBodyError (TxBody era)
-> ExceptT TxBodyError IO (TxBody era)
forall (m :: * -> *) x a. Monad m => Either x a -> ExceptT x m a
hoistEither (Either TxBodyError (TxBody era)
-> ExceptT TxBodyError IO (TxBody era))
-> Either TxBodyError (TxBody era)
-> ExceptT TxBodyError IO (TxBody era)
forall a b. (a -> b) -> a -> b
$
ShelleyBasedEra era
-> TxBodyContent BuildTx era -> Either TxBodyError (TxBody era)
forall era.
ShelleyBasedEra era
-> TxBodyContent BuildTx era -> Either TxBodyError (TxBody era)
createTransactionBody ShelleyBasedEra era
sbe (TxBodyContent BuildTx era -> Either TxBodyError (TxBody era))
-> TxBodyContent BuildTx era -> Either TxBodyError (TxBody era)
forall a b. (a -> b) -> a -> b
$
ShelleyBasedEra era -> TxBodyContent BuildTx era
forall era. ShelleyBasedEra era -> TxBodyContent BuildTx era
defaultTxBodyContent ShelleyBasedEra era
sbe
TxBodyContent BuildTx era
-> (TxBodyContent BuildTx era -> TxBodyContent BuildTx era)
-> TxBodyContent BuildTx era
forall a b. a -> (a -> b) -> b
& TxIns BuildTx era
-> TxBodyContent BuildTx era -> TxBodyContent BuildTx era
forall build era.
TxIns build era
-> TxBodyContent build era -> TxBodyContent build era
setTxIns ((TxIn -> (TxIn, BuildTxWith BuildTx (Witness WitCtxTxIn era)))
-> [TxIn] -> TxIns BuildTx era
forall a b. (a -> b) -> [a] -> [b]
map (,Witness WitCtxTxIn era
-> BuildTxWith BuildTx (Witness WitCtxTxIn era)
forall a. a -> BuildTxWith BuildTx a
BuildTxWith (KeyWitnessInCtx WitCtxTxIn -> Witness WitCtxTxIn era
forall witctx era. KeyWitnessInCtx witctx -> Witness witctx era
KeyWitness KeyWitnessInCtx WitCtxTxIn
KeyWitnessForSpending)) [TxIn]
ins)
TxBodyContent BuildTx era
-> (TxBodyContent BuildTx era -> TxBodyContent BuildTx era)
-> TxBodyContent BuildTx era
forall a b. a -> (a -> b) -> b
& [TxOut CtxTx era]
-> TxBodyContent BuildTx era -> TxBodyContent BuildTx era
forall era build.
[TxOut CtxTx era]
-> TxBodyContent build era -> TxBodyContent build era
setTxOuts [TxOut CtxTx era]
allOuts
TxBodyContent BuildTx era
-> (TxBodyContent BuildTx era -> TxBodyContent BuildTx era)
-> TxBodyContent BuildTx era
forall a b. a -> (a -> b) -> b
& TxFee era -> TxBodyContent BuildTx era -> TxBodyContent BuildTx era
forall era build.
TxFee era -> TxBodyContent build era -> TxBodyContent build era
setTxFee (ShelleyBasedEra era -> Coin -> TxFee era
forall era. ShelleyBasedEra era -> Coin -> TxFee era
TxFeeExplicit ShelleyBasedEra era
sbe Coin
fee)
let ([ShelleyBootstrapWitnessSigningKeyData]
sksByron, [ShelleyWitnessSigningKey]
sksShelley) = [ByronOrShelleyWitness]
-> ([ShelleyBootstrapWitnessSigningKeyData],
[ShelleyWitnessSigningKey])
partitionSomeWitnesses ([ByronOrShelleyWitness]
-> ([ShelleyBootstrapWitnessSigningKeyData],
[ShelleyWitnessSigningKey]))
-> [ByronOrShelleyWitness]
-> ([ShelleyBootstrapWitnessSigningKeyData],
[ShelleyWitnessSigningKey])
forall a b. (a -> b) -> a -> b
$ (SomeSigningWitness -> ByronOrShelleyWitness)
-> [SomeSigningWitness] -> [ByronOrShelleyWitness]
forall a b. (a -> b) -> [a] -> [b]
map SomeSigningWitness -> ByronOrShelleyWitness
categoriseSomeSigningWitness [SomeSigningWitness]
sks
[KeyWitness era]
byronWitnesses <-
(BootstrapWitnessError -> CompatibleTransactionError)
-> ExceptT BootstrapWitnessError IO [KeyWitness era]
-> ExceptT CompatibleTransactionError IO [KeyWitness era]
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT BootstrapWitnessError -> CompatibleTransactionError
CompatibleBootstrapWitnessError (ExceptT BootstrapWitnessError IO [KeyWitness era]
-> ExceptT CompatibleTransactionError IO [KeyWitness era])
-> ExceptT BootstrapWitnessError IO [KeyWitness era]
-> ExceptT CompatibleTransactionError IO [KeyWitness era]
forall a b. (a -> b) -> a -> b
$
Either BootstrapWitnessError [KeyWitness era]
-> ExceptT BootstrapWitnessError IO [KeyWitness era]
forall (m :: * -> *) x a. Monad m => Either x a -> ExceptT x m a
hoistEither (ShelleyBasedEra era
-> Maybe NetworkId
-> TxBody era
-> [ShelleyBootstrapWitnessSigningKeyData]
-> Either BootstrapWitnessError [KeyWitness era]
forall era.
ShelleyBasedEra era
-> Maybe NetworkId
-> TxBody era
-> [ShelleyBootstrapWitnessSigningKeyData]
-> Either BootstrapWitnessError [KeyWitness era]
mkShelleyBootstrapWitnesses ShelleyBasedEra era
sbe Maybe NetworkId
mNetworkId TxBody era
apiTxBody [ShelleyBootstrapWitnessSigningKeyData]
sksByron)
let newShelleyKeyWits :: [KeyWitness era]
newShelleyKeyWits = (ShelleyWitnessSigningKey -> KeyWitness era)
-> [ShelleyWitnessSigningKey] -> [KeyWitness era]
forall a b. (a -> b) -> [a] -> [b]
map (ShelleyBasedEra era
-> TxBody era -> ShelleyWitnessSigningKey -> KeyWitness era
forall era.
ShelleyBasedEra era
-> TxBody era -> ShelleyWitnessSigningKey -> KeyWitness era
makeShelleyKeyWitness ShelleyBasedEra era
sbe TxBody era
apiTxBody) [ShelleyWitnessSigningKey]
sksShelley
allKeyWits :: [KeyWitness era]
allKeyWits = [KeyWitness era]
newShelleyKeyWits [KeyWitness era] -> [KeyWitness era] -> [KeyWitness era]
forall a. [a] -> [a] -> [a]
++ [KeyWitness era]
byronWitnesses
(AnyProtocolUpdate era
protocolUpdates, AnyVote era
votes) <-
(ShelleyToBabbageEraConstraints era =>
ShelleyToBabbageEra era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era))
-> (ConwayEraOnwardsConstraints era =>
ConwayEraOnwards era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era))
-> ShelleyBasedEra era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
forall era a.
(ShelleyToBabbageEraConstraints era =>
ShelleyToBabbageEra era -> a)
-> (ConwayEraOnwardsConstraints era => ConwayEraOnwards era -> a)
-> ShelleyBasedEra era
-> a
caseShelleyToBabbageOrConwayEraOnwards
( ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
-> ShelleyToBabbageEra era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
forall a b. a -> b -> a
const (ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
-> ShelleyToBabbageEra era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era))
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
-> ShelleyToBabbageEra era
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
forall a b. (a -> b) -> a -> b
$ do
AnyProtocolUpdate era
prop <- ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
-> (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> Maybe
(Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyBasedEra era -> AnyProtocolUpdate era
forall era. ShelleyBasedEra era -> AnyProtocolUpdate era
NoPParamsUpdate ShelleyBasedEra era
sbe) Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall era.
Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readUpdateProposalFile Maybe (Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile))
mUpdateProposal
(AnyProtocolUpdate era, AnyVote era)
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
prop, AnyVote era
forall era. AnyVote era
NoVotes)
)
( \ConwayEraOnwards era
w -> do
AnyProtocolUpdate era
prop <- ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
-> (Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyBasedEra era -> AnyProtocolUpdate era
forall era. ShelleyBasedEra era -> AnyProtocolUpdate era
NoPParamsUpdate ShelleyBasedEra era
sbe) Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall era.
Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readProposalProcedureFile Maybe
(Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))])
mProposalProcedure
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
votesAndWits <- (VoteError -> CompatibleTransactionError)
-> ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> ExceptT
CompatibleTransactionError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT VoteError -> CompatibleTransactionError
CompatibleVoteError (ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> ExceptT
CompatibleTransactionError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
-> ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> ExceptT
CompatibleTransactionError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
forall a b. (a -> b) -> a -> b
$ IO
(Either
VoteError
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
-> ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
forall (m :: * -> *) x a. m (Either x a) -> ExceptT x m a
newExceptT (IO
(Either
VoteError
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
-> ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
-> IO
(Either
VoteError
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
-> ExceptT
VoteError
IO
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
forall a b. (a -> b) -> a -> b
$ ConwayEraOnwards era
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> IO
(Either
VoteError
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
forall era.
ConwayEraOnwards era
-> [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> IO
(Either
VoteError
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))])
readVotingProceduresFiles ConwayEraOnwards era
w [(VoteFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
mVotes
TxVotingProcedures BuildTx era
votingProcedures <-
(VotesMergingConflict era -> CompatibleTransactionError)
-> ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era)
-> ExceptT
CompatibleTransactionError IO (TxVotingProcedures BuildTx era)
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT VotesMergingConflict era -> CompatibleTransactionError
forall era. VotesMergingConflict era -> CompatibleTransactionError
CompatibleVoteMergeError (ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era)
-> ExceptT
CompatibleTransactionError IO (TxVotingProcedures BuildTx era))
-> ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era)
-> ExceptT
CompatibleTransactionError IO (TxVotingProcedures BuildTx era)
forall a b. (a -> b) -> a -> b
$ Either (VotesMergingConflict era) (TxVotingProcedures BuildTx era)
-> ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era)
forall (m :: * -> *) x a. Monad m => Either x a -> ExceptT x m a
hoistEither (Either (VotesMergingConflict era) (TxVotingProcedures BuildTx era)
-> ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era))
-> Either
(VotesMergingConflict era) (TxVotingProcedures BuildTx era)
-> ExceptT
(VotesMergingConflict era) IO (TxVotingProcedures BuildTx era)
forall a b. (a -> b) -> a -> b
$ [(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> Either
(VotesMergingConflict era) (TxVotingProcedures BuildTx era)
forall build era.
Applicative (BuildTxWith build) =>
[(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
-> Either (VotesMergingConflict era) (TxVotingProcedures build era)
mkTxVotingProcedures [(VotingProcedures era, Maybe (ScriptWitness WitCtxStake era))]
votesAndWits
(AnyProtocolUpdate era, AnyVote era)
-> ExceptT
CompatibleTransactionError IO (AnyProtocolUpdate era, AnyVote era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
prop, ConwayEraOnwards era
-> TxVotingProcedures BuildTx era -> AnyVote era
forall era.
ConwayEraOnwards era
-> TxVotingProcedures BuildTx era -> AnyVote era
VotingProcedures ConwayEraOnwards era
w TxVotingProcedures BuildTx era
votingProcedures)
)
ShelleyBasedEra era
sbe
Tx era
signedTx <-
(ProtocolParametersConversionError -> CompatibleTransactionError)
-> ExceptT ProtocolParametersConversionError IO (Tx era)
-> ExceptT CompatibleTransactionError IO (Tx era)
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT ProtocolParametersConversionError -> CompatibleTransactionError
CompatiblePParamsConversionError (ExceptT ProtocolParametersConversionError IO (Tx era)
-> ExceptT CompatibleTransactionError IO (Tx era))
-> (Either ProtocolParametersConversionError (Tx era)
-> ExceptT ProtocolParametersConversionError IO (Tx era))
-> Either ProtocolParametersConversionError (Tx era)
-> ExceptT CompatibleTransactionError IO (Tx era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Either ProtocolParametersConversionError (Tx era)
-> ExceptT ProtocolParametersConversionError IO (Tx era)
forall (m :: * -> *) x a. Monad m => Either x a -> ExceptT x m a
hoistEither (Either ProtocolParametersConversionError (Tx era)
-> ExceptT CompatibleTransactionError IO (Tx era))
-> Either ProtocolParametersConversionError (Tx era)
-> ExceptT CompatibleTransactionError IO (Tx era)
forall a b. (a -> b) -> a -> b
$
ShelleyBasedEra era
-> [TxIn]
-> [TxOut CtxTx era]
-> [KeyWitness era]
-> Coin
-> AnyProtocolUpdate era
-> AnyVote era
-> Either ProtocolParametersConversionError (Tx era)
forall era.
ShelleyBasedEra era
-> [TxIn]
-> [TxOut CtxTx era]
-> [KeyWitness era]
-> Coin
-> AnyProtocolUpdate era
-> AnyVote era
-> Either ProtocolParametersConversionError (Tx era)
createCompatibleSignedTx ShelleyBasedEra era
sbe [TxIn]
ins [TxOut CtxTx era]
allOuts [KeyWitness era]
allKeyWits Coin
fee AnyProtocolUpdate era
protocolUpdates AnyVote era
votes
(FileError () -> CompatibleTransactionError)
-> ExceptT (FileError ()) IO ()
-> ExceptT CompatibleTransactionError IO ()
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT FileError () -> CompatibleTransactionError
forall err.
Error err =>
FileError err -> CompatibleTransactionError
CompatibleFileError (ExceptT (FileError ()) IO ()
-> ExceptT CompatibleTransactionError IO ())
-> ExceptT (FileError ()) IO ()
-> ExceptT CompatibleTransactionError IO ()
forall a b. (a -> b) -> a -> b
$
IO (Either (FileError ()) ()) -> ExceptT (FileError ()) IO ()
forall (m :: * -> *) x a. m (Either x a) -> ExceptT x m a
newExceptT (IO (Either (FileError ()) ()) -> ExceptT (FileError ()) IO ())
-> IO (Either (FileError ()) ()) -> ExceptT (FileError ()) IO ()
forall a b. (a -> b) -> a -> b
$
ShelleyBasedEra era
-> File () 'Out -> Tx era -> IO (Either (FileError ()) ())
forall era content.
ShelleyBasedEra era
-> File content 'Out -> Tx era -> IO (Either (FileError ()) ())
writeTxFileTextEnvelopeCddl ShelleyBasedEra era
sbe File () 'Out
outputFp Tx era
signedTx
readUpdateProposalFile
:: Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readUpdateProposalFile :: forall era.
Featured ShelleyToBabbageEra era (Maybe UpdateProposalFile)
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readUpdateProposalFile (Featured ShelleyToBabbageEra era
sToB Maybe UpdateProposalFile
Nothing) =
AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyBasedEra era -> AnyProtocolUpdate era
forall era. ShelleyBasedEra era -> AnyProtocolUpdate era
NoPParamsUpdate (ShelleyBasedEra era -> AnyProtocolUpdate era)
-> ShelleyBasedEra era -> AnyProtocolUpdate era
forall a b. (a -> b) -> a -> b
$ ShelleyToBabbageEra era -> ShelleyBasedEra era
forall era. ShelleyToBabbageEra era -> ShelleyBasedEra era
forall a (f :: a -> *) (g :: a -> *) (era :: a).
Convert f g =>
f era -> g era
convert ShelleyToBabbageEra era
sToB
readUpdateProposalFile (Featured ShelleyToBabbageEra era
sToB (Just UpdateProposalFile
updateProposalFile)) = do
TxUpdateProposal era
prop <- (FileError TextEnvelopeError -> CompatibleTransactionError)
-> ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era)
-> ExceptT CompatibleTransactionError IO (TxUpdateProposal era)
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT FileError TextEnvelopeError -> CompatibleTransactionError
forall err.
Error err =>
FileError err -> CompatibleTransactionError
CompatibleFileError (ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era)
-> ExceptT CompatibleTransactionError IO (TxUpdateProposal era))
-> ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era)
-> ExceptT CompatibleTransactionError IO (TxUpdateProposal era)
forall a b. (a -> b) -> a -> b
$ ShelleyToBabbageEra era
-> UpdateProposalFile
-> ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era)
forall era.
ShelleyToBabbageEra era
-> UpdateProposalFile
-> ExceptT (FileError TextEnvelopeError) IO (TxUpdateProposal era)
readTxUpdateProposal ShelleyToBabbageEra era
sToB UpdateProposalFile
updateProposalFile
case TxUpdateProposal era
prop of
TxUpdateProposal era
TxUpdateProposalNone -> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyBasedEra era -> AnyProtocolUpdate era
forall era. ShelleyBasedEra era -> AnyProtocolUpdate era
NoPParamsUpdate (ShelleyBasedEra era -> AnyProtocolUpdate era)
-> ShelleyBasedEra era -> AnyProtocolUpdate era
forall a b. (a -> b) -> a -> b
$ ShelleyToBabbageEra era -> ShelleyBasedEra era
forall era. ShelleyToBabbageEra era -> ShelleyBasedEra era
forall a (f :: a -> *) (g :: a -> *) (era :: a).
Convert f g =>
f era -> g era
convert ShelleyToBabbageEra era
sToB
TxUpdateProposal ShelleyToBabbageEra era
_ UpdateProposal
proposal -> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyToBabbageEra era -> UpdateProposal -> AnyProtocolUpdate era
forall era.
ShelleyToBabbageEra era -> UpdateProposal -> AnyProtocolUpdate era
ProtocolUpdate ShelleyToBabbageEra era
sToB UpdateProposal
proposal
readProposalProcedureFile
:: Featured ConwayEraOnwards era [(ProposalFile In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readProposalProcedureFile :: forall era.
Featured
ConwayEraOnwards
era
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
readProposalProcedureFile (Featured ConwayEraOnwards era
cEraOnwards []) =
let sbe :: ShelleyBasedEra era
sbe = ConwayEraOnwards era -> ShelleyBasedEra era
forall era. ConwayEraOnwards era -> ShelleyBasedEra era
forall a (f :: a -> *) (g :: a -> *) (era :: a).
Convert f g =>
f era -> g era
convert ConwayEraOnwards era
cEraOnwards
in AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$ ShelleyBasedEra era -> AnyProtocolUpdate era
forall era. ShelleyBasedEra era -> AnyProtocolUpdate era
NoPParamsUpdate ShelleyBasedEra era
sbe
readProposalProcedureFile (Featured ConwayEraOnwards era
cEraOnwards [(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
proposals) = do
[(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
props <-
((ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> ExceptT
CompatibleTransactionError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> [(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
-> ExceptT
CompatibleTransactionError
IO
[(Proposal era, Maybe (ScriptWitness WitCtxStake 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
((ProposalError -> CompatibleTransactionError)
-> ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
-> ExceptT
CompatibleTransactionError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
forall (m :: * -> *) x y a.
Functor m =>
(x -> y) -> ExceptT x m a -> ExceptT y m a
firstExceptT ProposalError -> CompatibleTransactionError
CompatibleProposalError (ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
-> ExceptT
CompatibleTransactionError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> ((ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> (ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> ExceptT
CompatibleTransactionError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IO
(Either
ProposalError
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
forall (m :: * -> *) x a. m (Either x a) -> ExceptT x m a
newExceptT (IO
(Either
ProposalError
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
-> ((ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> IO
(Either
ProposalError
(Proposal era, Maybe (ScriptWitness WitCtxStake era))))
-> (ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> ExceptT
ProposalError
IO
(Proposal era, Maybe (ScriptWitness WitCtxStake era))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayEraOnwards era
-> (ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> IO
(Either
ProposalError
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
forall era.
ConwayEraOnwards era
-> (ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))
-> IO
(Either
ProposalError
(Proposal era, Maybe (ScriptWitness WitCtxStake era)))
readProposal ConwayEraOnwards era
cEraOnwards)
[(ProposalFile 'In, Maybe (ScriptWitnessFiles WitCtxStake))]
proposals
AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a. a -> ExceptT CompatibleTransactionError IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era))
-> AnyProtocolUpdate era
-> ExceptT CompatibleTransactionError IO (AnyProtocolUpdate era)
forall a b. (a -> b) -> a -> b
$
ConwayEraOnwards era
-> (ConwayEraOnwardsConstraints era => AnyProtocolUpdate era)
-> AnyProtocolUpdate era
forall era a.
ConwayEraOnwards era -> (ConwayEraOnwardsConstraints era => a) -> a
conwayEraOnwardsConstraints ConwayEraOnwards era
cEraOnwards ((ConwayEraOnwardsConstraints era => AnyProtocolUpdate era)
-> AnyProtocolUpdate era)
-> (ConwayEraOnwardsConstraints era => AnyProtocolUpdate era)
-> AnyProtocolUpdate era
forall a b. (a -> b) -> a -> b
$
ConwayEraOnwards era
-> TxProposalProcedures BuildTx era -> AnyProtocolUpdate era
forall era.
ConwayEraOnwards era
-> TxProposalProcedures BuildTx era -> AnyProtocolUpdate era
ProposalProcedures ConwayEraOnwards era
cEraOnwards (TxProposalProcedures BuildTx era -> AnyProtocolUpdate era)
-> TxProposalProcedures BuildTx era -> AnyProtocolUpdate era
forall a b. (a -> b) -> a -> b
$
[(ProposalProcedure (ShelleyLedgerEra era),
Maybe (ScriptWitness WitCtxStake era))]
-> TxProposalProcedures BuildTx era
forall era build.
(Applicative (BuildTxWith build), IsShelleyBasedEra era) =>
[(ProposalProcedure (ShelleyLedgerEra era),
Maybe (ScriptWitness WitCtxStake era))]
-> TxProposalProcedures build era
mkTxProposalProcedures [(ProposalProcedure (ShelleyLedgerEra era)
govProp, Maybe (ScriptWitness WitCtxStake era)
mScriptWit) | (Proposal ProposalProcedure (ShelleyLedgerEra era)
govProp, Maybe (ScriptWitness WitCtxStake era)
mScriptWit) <- [(Proposal era, Maybe (ScriptWitness WitCtxStake era))]
props]